Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: HBHCADM

HBHCADM.m

Go to the documentation of this file.
  1. HBHCADM ;LR VAMC(IRMS)/MJT - HBHC eval/admit data entry; Apr 29, 2021@07:55
  1. ;;1.0;HOSPITAL BASED HOME CARE;**2,6,8,16,24,25,32,35**;NOV 01, 1993;Build 1
  1. ;
  1. ; Reference to $$SINFO^ICDEX supported by ICR #5747
  1. ; Reference to ^DG(40.8 supported by ICR #7024
  1. ;
  1. ;This routine appears to have locking flaws in that there is no allowance for
  1. ;locking failure. Any flaws will be researched and addressed in a future patch.
  1. ;HBH*1.0*32 is following the pattern of how HBHCADM currently locks records.
  1. ;
  1. START ; Initialization
  1. ;Sites must have at least one parent site defined.
  1. I $O(^HBHC(631.9,1,1,"B",""))="" D Q
  1. . W !!,"No parent sites are defined at this facility."
  1. . W !,"Contact your HBPC Program Manager to define at least one"
  1. . W !,"parent site in option ""System Parameters Edit"".",!
  1. . N DIR
  1. . S DIR("A")="Press any key to continue",DIR(0)="FO"
  1. . D ^DIR
  1. S HBHCFORM=3
  1. ;Variable HBHCMFHS is set if this site is a
  1. ;sanctioned Medical Foster Home site.
  1. D MFHS^HBHCUTL3
  1. PROMPT ; Prompt user for patient name
  1. N HBHCHOSP
  1. S HBHCHOSP=$P(^HBHC(631.9,1,0),U,5)
  1. K DIC,HBHCFLG,HBHCPRCT S DIC="^HBHC(631,",DIC(0)="AELMQZ" D ^DIC
  1. G:Y=-1 EXIT
  1. S HBHCDFN=+Y,HBHCDPT=$P(Y,U,2),HBHCDPT0=^DPT(HBHCDPT,0),HBHCNOD0=Y(0)
  1. I $P(HBHCDPT0,U,9)'?9N W !!,"Patient has 'pseudo' social security number (SSN) on file. If patient was",!,"not chosen in error, contact MAS to correct the invalid SSN. Patient must",!,"have a valid SSN to be selected.",! H 3 G PROMPT
  1. S HBHCXMT3=$P($G(^HBHC(631,HBHCDFN,1)),U,17)
  1. I $P(^HBHC(631,HBHCDFN,0),U,40)]"" W $C(7),!!!,"*** Record contains Discharge data indicating a Complete Episode of Care ***",!! H 3
  1. I (HBHCXMT3]"")&(HBHCXMT3'="N") D FORMMSG^HBHCUTL1 G:$D(HBHCNHSP) EXIT G:HBHCPRCT'=1 PROMPT
  1. I $P(Y,U,3) S $P(^HBHC(631,HBHCDFN,1),U,17)="N",^HBHC(631,"AE","N",HBHCDFN)="" S HBHCBXRF="" F S HBHCBXRF=$O(^HBHC(631,"B",HBHCDPT,HBHCBXRF)) Q:(HBHCBXRF="")!(HBHCBXRF=HBHCDFN) D CHECK
  1. G:$D(HBHCFLG) PROMPT
  1. ;
  1. MFH ;HBH*1.0*32: first determine if an MFH patient
  1. ;Variable HBHCFMHS = does this site have Medical Foster Homes
  1. I $D(HBHCMFHS) D
  1. . N DIE,DA,DR,HBHCSAVY,HBHCMFHSTR,HBHCMFHX
  1. . ;preserving "Y" since will be killed downstream
  1. . M HBHCSAVY=Y
  1. . S DIE="^HBHC(631,",DA=HBHCDFN
  1. . S DR(2,631.01)=1,DR="K HBHCQ;88;S:X'=""Y"" Y=""@1"";89;90;@1;"
  1. . L +^HBHC(631,HBHCDFN):0 I $T D ^DIE
  1. . M Y=HBHCSAVY
  1. ;
  1. MFHNO ;Either the site does not have medical foster homes,
  1. ;or this patient is not in a medical foster home.
  1. ;In that case, the Parent Site prompt is presented.
  1. I $P($G(^HBHC(631,HBHCDFN,3)),"^")'="Y" D
  1. . ;This section called only if patient is not an MFH patient.
  1. . ;HBH*1.0*32: add PARENT SITE (#91) field
  1. . ;set a default if there is only one parent site defined
  1. . ;at this site
  1. . N HBHCPARN,HBHCSAVY
  1. . ;saving original value of Y since used further down by pre-HBH*1.0*32 code
  1. . M HBHCSAVY=Y
  1. . S HBHCPARN=$S($P(^HBHC(631.9,1,1,0),"^",4)=1:$O(^HBHC(631.9,1,1,"B","")),1:"")
  1. . I HBHCPARN]"" S HBHCPARN=$P(^DG(40.8,HBHCPARN,0),"^")
  1. . S DR="91//^S X=HBHCPARN"
  1. . S DIE="^HBHC(631,",DA=HBHCDFN
  1. . L +^HBHC(631,HBHCDFN):0 I $T D ^DIE L -^HBHC(631,HBHCDFN)
  1. . M Y=HBHCSAVY
  1. . ;end of HBH*1.0*32
  1. CONT ;end of MFH logic - continue with prompts, etc.
  1. ;Parent site is required if not a MFH patient.
  1. ;Parent site is not required for MFH patients since the MFH's parent site
  1. ;is retrieved for AITC transmissions.
  1. N HBHCQUIT
  1. S HBHCQUIT=1
  1. ;Is parent site defined - if yes, may continue with prompts.
  1. I $P($G(^HBHC(631,HBHCDFN,5)),"^")]"" S HBHCQUIT=0
  1. ;If no parent site and this is an MFH site, the patient needs to be defined
  1. ;as an MFH patient if there is no parent site in ^HBHC(631,HBHCDFN,5).
  1. I HBHCQUIT,$D(HBHCMFHS),$P($G(^HBHC(631,HBHCDFN,3)),"^")="Y" S HBHCQUIT=0
  1. Q:HBHCQUIT
  1. D DEMO
  1. K DIE S DIE="^HBHC(631,",DA=HBHCDFN,DIE("NO^")="OUTOK"
  1. ;added M code for Dx validation based on admission date
  1. ;added M code for Dx lookup instead of field 18
  1. S DR="K HBHCQ;17;2:5;D BIRTHYR^HBHCUTL1;7;D SEXRACE^HBHCUTL1;10:13;14;D ACTION^HBHCUTL;15;16"
  1. L +^HBHC(631,HBHCDFN):0 I $T D ^DIE
  1. I $D(Y)>0 G PROMPT
  1. ; For ICD-9 lookups, set key variables used by special lookup routine
  1. S ICDVDT=$P(^HBHC(631,DA,0),U,18)
  1. S ICDSYS=+$$SINFO^ICDEX("DIAG",ICDVDT)
  1. I ICDSYS=1 S ICDFMT=1
  1. I '$D(HBHCMFHS) D
  1. .S DR=$S(ICDSYS=1:"I $D(HBHCQ) K HBHCQ S Y=37;18;68;19:36;37:38;67",1:"I $D(HBHCQ) K HBHCQ S Y=37;D ADMDX^HBHCLKU1;68;19:36;37:38;67")
  1. I $D(HBHCMFHS) D
  1. .S DR=$S(ICDSYS=1:"I $D(HBHCQ) K HBHCQ S Y=37;18;68;19:36;37:38;67",1:"I $D(HBHCQ) K HBHCQ S Y=37;D ADMDX^HBHCLKU1;68;19:36;37:38;67")
  1. D ^DIE
  1. L -^HBHC(631,HBHCDFN) K ICDVDT,ICDSYS,ICDFMT G PROMPT
  1. W $C(7),!!,"Another user is editing this entry.",!! G PROMPT
  1. EXIT ; Exit module
  1. K DA,DIC,DIE,DIK,DR,HBHCAFLG,HBHCBXRF,HBHCCNTY,HBHCDFN,HBHCDPT,HBHCDPT0,HBHCEL,HBHCELGE,HBHCFLG,HBHCFORM,HBHCI,HBHCIEN,HBHCINFO,HBHCJ,HBHCMARE,HBHCMFHS,HBHCMS,HBHCNHSP,HBHCNOD0,HBHCPRCT,HBHCPS,HBHCPSRV,HBHCQ,HBHCRFLG,HBHCST
  1. K HBHCXMT3,HBHCWRD1,HBHCWRD2,HBHCWRD3,HBHCY0,HBHCZIP,VAEL,X,Y
  1. Q
  1. CHECK ; Check previous episode(s) of care for 'Reject' in Admit/Reject Action or Discharge Date to ensure completed episode of care before allowing another episode of care to be created
  1. Q:($P(^HBHC(631,HBHCBXRF,0),U,15)=2)!($P(^HBHC(631,HBHCBXRF,0),U,40)]"")
  1. W $C(7),!!,"Patient must be discharged from last episode of care before new episode",!,"can be entered. Current episode not created.",! H 3
  1. K DIK S DIK="^HBHC(631,",DA=HBHCDFN D ^DIK
  1. S HBHCFLG=1
  1. Q
  1. DEMO ; Obtain patient demographic info
  1. S (HBHCST,HBHCCNTY,HBHCZIP,HBHCEL,HBHCELGE,HBHCPS,HBHCPSRV,HBHCMS,HBHCMARE)=""
  1. I $D(^DPT(HBHCDPT,.11)) S HBHCINFO=^DPT(HBHCDPT,.11),HBHCCNTY=$P(HBHCINFO,U,7),HBHCZIP=$P(HBHCINFO,U,12),HBHCST=$P(HBHCINFO,U,5)
  1. S HBHCIEN="" S:HBHCST HBHCIEN=$O(^HBHC(631.8,"B",HBHCST,HBHCIEN)) S HBHCST=$S($G(HBHCIEN):HBHCIEN,1:"") ;p35
  1. I $D(^DPT(HBHCDPT,.36)) S DFN=HBHCDPT D ELIG^VADPT S HBHCEL=+VAEL(1),HBHCELGE=$S(HBHCEL=1:"01",HBHCEL=2:"02",HBHCEL=16:"02",HBHCEL=11:"03",HBHCEL=4:"04",1:"05") K DFN
  1. I $D(^DPT(HBHCDPT,.32)) S HBHCINFO=^DPT(HBHCDPT,.32),HBHCPS=$P(HBHCINFO,U,3),HBHCPSRV=$S(((HBHCPS>0)&(HBHCPS<9)):HBHCPS,HBHCPS=9:10,HBHCPS=121:11,1:"")
  1. S HBHCINFO=^DPT(HBHCDPT,0),HBHCMS=$P(HBHCINFO,U,5),HBHCMARE=$S(HBHCMS=1:4,HBHCMS=2:1,HBHCMS=4:2,HBHCMS=5:3,HBHCMS=6:5,1:"")
  1. I HBHCST]"" S:($P(HBHCNOD0,U,3)="")&($D(^HBHC(631.8,HBHCST,0))) $P(^HBHC(631,HBHCDFN,0),U,3)=HBHCST I (HBHCCNTY]"")&($P(HBHCNOD0,U,4)="") S:$D(^HBHC(631.8,HBHCST,0)) $P(^HBHC(631,HBHCDFN,0),U,4)=HBHCCNTY
  1. S:(HBHCZIP]"")&(($P(HBHCNOD0,U,5)="")!($P(HBHCNOD0,U,5)'?9N)) $P(^HBHC(631,HBHCDFN,0),U,5)=HBHCZIP
  1. S:(HBHCELGE]"")&($P(HBHCNOD0,U,6)="") $P(^HBHC(631,HBHCDFN,0),U,6)=HBHCELGE
  1. S:(HBHCPSRV]"")&($P(HBHCNOD0,U,8)="") $P(^HBHC(631,HBHCDFN,0),U,8)=HBHCPSRV
  1. S:(HBHCMARE]"")&($P(HBHCNOD0,U,11)="") $P(^HBHC(631,HBHCDFN,0),U,11)=HBHCMARE
  1. Q