| 1 | EASEZI ;ALB/jap - Database Inquiry & Record Finder for 1010EZ Processing ;10/12/00  13:08
 | 
|---|
| 2 |  ;;1.0;ENROLLMENT APPLICATION SYSTEM;**1,9,44,51,57**;Mar 15, 2001
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | DFN(EASAPP,EASDFN) ;match or add 1010EZ applicant to Patient file #2
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;input  
 | 
|---|
| 7 |  ;  EASAPP = application ien in file #712
 | 
|---|
| 8 |  ;output 
 | 
|---|
| 9 |  ;  EASDFN = valid ien in file #2; passed by reference
 | 
|---|
| 10 |  ;           OR -1 if no patient match made;
 | 
|---|
| 11 |  ;           note: this may be an existing patient or one newly created by user action
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  ;This entry point it used only for initial match of Applicant with Patient database.
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  N DFN,DGNEWPF,DGRPTOUT,EZDATA,KEY,NAME,SSN,DOB,SEX,KEYIEN,ACCEPT,ARRAY,RECD
 | 
|---|
| 16 |  N VETTYPE,NEW,TSSN,REM,N,X,DA,DR,DIE,DIC,DIQ,ALREADY,OUT,FILE,SUBFILE,FLD,ELIGVER,SVCVER,APPTVER
 | 
|---|
| 17 |  Q:'EASAPP
 | 
|---|
| 18 |  ;do not proceed if link to file #2 already established
 | 
|---|
| 19 |  S EASDFN=$P($G(^EAS(712,EASAPP,0)),U,10) Q:EASDFN
 | 
|---|
| 20 |  D FULL^VALM1 W @IOF
 | 
|---|
| 21 |  S EASEZNEW="",ELIGVER=0,SVCVER=0,APPTVER=0
 | 
|---|
| 22 |  S KEY=$$KEY711^EASEZU1("APPLICANT SEX")
 | 
|---|
| 23 |  S SEX=$P($$DATA712^EASEZU1(EASAPP,KEY),U,1),SEX=$S(SEX="M":"Male",SEX="F":"Female",1:"")
 | 
|---|
| 24 |  S DIQ="ARRAY",DIQ(0)="E",DA=EASAPP,DR="1;2;3;3.3",DIC=712 D EN^DIQ1
 | 
|---|
| 25 |  S NAME=$G(ARRAY(712,EASAPP,1,"E"))
 | 
|---|
| 26 |  S SSN=$P($G(ARRAY(712,EASAPP,2,"E")),"&",1)
 | 
|---|
| 27 |  S DOB=$P($G(ARRAY(712,EASAPP,2,"E")),"&",2)
 | 
|---|
| 28 |  S RECD=$G(ARRAY(712,EASAPP,3,"E"))
 | 
|---|
| 29 |  S VETTYPE=$G(ARRAY(712,EASAPP,3.3,"E"))
 | 
|---|
| 30 |  W !,"Applicant Data",?24,"Application #: ",EASAPP,?48,"Received: ",RECD,!
 | 
|---|
| 31 |  W !,"Name: ",NAME
 | 
|---|
| 32 |  W !,"SSN: ",SSN,?24,"DOB: ",DOB,?48,"Sex: ",SEX
 | 
|---|
| 33 |  W !,"Veteran Type: ",VETTYPE
 | 
|---|
| 34 |  W !!,"Enter Applicant data as prompted --"
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  ;Get Patient file (#2) IEN - DFN
 | 
|---|
| 37 |  D GETPAT^DGRPTU("",1,.DFN,.DGNEWPF)
 | 
|---|
| 38 |  Q:($G(DFN)'>0)
 | 
|---|
| 39 |  ;if DGNEWPF=1 then applicant has just been added to file #2 as new patient
 | 
|---|
| 40 |  S NEW=""
 | 
|---|
| 41 |  I DGNEWPF D
 | 
|---|
| 42 |  . S NEW=1
 | 
|---|
| 43 |  . ;add a remark to file #2 record to help keep track of new patients added by 1010EZ
 | 
|---|
| 44 |  . S REM="NEW PT. FROM ELECTRONIC 10-10EZ -- IN PROCESS"
 | 
|---|
| 45 |  . S DA=DFN,DIE="^DPT(",DR=".091///^S X=REM"
 | 
|---|
| 46 |  . D ^DIE
 | 
|---|
| 47 |  ;if seems to be not new, check remark field just to make sure
 | 
|---|
| 48 |  I NEW="" D
 | 
|---|
| 49 |  . S REM="NEW PT. FROM ELECTRONIC 10-10EZ -- IN PROCESS"
 | 
|---|
| 50 |  . I $P(^DPT(DFN,0),U,10)=REM S NEW=1
 | 
|---|
| 51 |  . S REM="New Patient record added by ELECTRONIC 10-10EZ."
 | 
|---|
| 52 |  . I $P(^DPT(DFN,0),U,10)=REM S NEW=1
 | 
|---|
| 53 |  ;MPI Query
 | 
|---|
| 54 |  S X="MPIFAPI" X ^%ZOSF("TEST")  D
 | 
|---|
| 55 |  . Q:'$T
 | 
|---|
| 56 |  . K MPIFRTN
 | 
|---|
| 57 |  . D MPIQ^MPIFAPI(DFN)
 | 
|---|
| 58 |  . K MPIFRTN,MPIQRYNM
 | 
|---|
| 59 |  ;check for an in-process application already linked to this DFN
 | 
|---|
| 60 |  S OUT=0,ALREADY=0 F  S ALREADY=$O(^EAS(712,"AC",DFN,ALREADY)) Q:'ALREADY  D  Q:OUT
 | 
|---|
| 61 |  . S FILDATE=$P($G(^EAS(712,ALREADY,2)),U,5)
 | 
|---|
| 62 |  . S CLSDATE=$P($G(^EAS(712,ALREADY,2)),U,9)
 | 
|---|
| 63 |  . I 'FILDATE,'CLSDATE S OUT=1 D
 | 
|---|
| 64 |  . . W !!?3,"Sorry... cannot link to selected Patient."
 | 
|---|
| 65 |  . . W !?3,"Application #"_ALREADY_" is already linked to this Patient,"
 | 
|---|
| 66 |  . . W !?3,"and is still in-process."
 | 
|---|
| 67 |  . . D PAUSE^VALM1 K FILDATE,CLSDATE
 | 
|---|
| 68 |  Q:OUT
 | 
|---|
| 69 |  D RESET^EASEZI1
 | 
|---|
| 70 |  Q
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 | I201(EASDFN,EASARRAY) ;retrieve ien(s) in subfile #2.01
 | 
|---|
| 73 |  ;input EASDFN    = ien to #2
 | 
|---|
| 74 |  ;output EASARRAY = ien(s) to #2.01
 | 
|---|
| 75 |  ;                  each array element = EASDFN;subfile_ien
 | 
|---|
| 76 |  ;
 | 
|---|
| 77 |  N N,IEN
 | 
|---|
| 78 |  S IEN=0,N=0 F  S IEN=$O(^DPT(EASDFN,.01,IEN)) Q:'IEN  S N=N+1,EASARRAY(N)=EASDFN_";"_IEN
 | 
|---|
| 79 |  Q
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 | I202(EASDFN,EASARRAY) ;retrieve ien(s) in subfile #2.02
 | 
|---|
| 82 |  ;input EASDFN    = ien to #2
 | 
|---|
| 83 |  ;output EASARRAY = ien(s) to #2.01
 | 
|---|
| 84 |  ;                  each array element = EASDFN;subfile_ien
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 |  N N,IEN
 | 
|---|
| 87 |  S IEN=0,N=0 F  S IEN=$O(^DPT(EASDFN,.02,IEN)) Q:'IEN  S N=N+1,EASARRAY(N)=EASDFN_";"_IEN
 | 
|---|
| 88 |  Q
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 | I206(EASDFN,EASARRAY) ;retrieve ien(s) in subfile #2.06
 | 
|---|
| 91 |  ;input EASDFN    = ien to #2
 | 
|---|
| 92 |  ;output EASARRAY = ien(s) to #2.01
 | 
|---|
| 93 |  ;                  each array element = EASDFN;subfile_ien
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 |  N N,IEN
 | 
|---|
| 96 |  S IEN=0,N=0 F  S IEN=$O(^DPT(EASDFN,.06,IEN)) Q:'IEN  S N=N+1,EASARRAY(N)=EASDFN_";"_IEN
 | 
|---|
| 97 |  Q
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 | I2101(EASDFN,EASARRAY) ;retrieve ien to subfile #2.101
 | 
|---|
| 100 |  ;input EASDFN    = ien to #2
 | 
|---|
| 101 |  ;output EASARRAY = most recent ien in #2.101;
 | 
|---|
| 102 |  ;                  array element = EASDFN;subfile_ien
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 |  N N,IEN,ARR,LAST
 | 
|---|
| 105 |  S IEN=0,N=0 F  S IEN=$O(^DPT(EASDFN,"DIS",IEN)) Q:'IEN  D
 | 
|---|
| 106 |  . S RDATE=$P(^DPT(EASDFN,"DIS",IEN,0),U,1),ARR(RDATE)=IEN
 | 
|---|
| 107 |  I $D(ARR) D
 | 
|---|
| 108 |  . S LAST=$O(ARR(999999999),-1),IEN=ARR(LAST)
 | 
|---|
| 109 |  . S EASARRAY(1)=EASDFN_";"_IEN
 | 
|---|
| 110 |  Q
 | 
|---|
| 111 |  ;
 | 
|---|
| 112 | I2711(EASDFN,EASARRAY) ;retrieve ien to file #27.11
 | 
|---|
| 113 |  ;input EASDFN    = ien to #2
 | 
|---|
| 114 |  ;output EASARRAY = current enrollment ien in #27.11;
 | 
|---|
| 115 |  ;                  array element = ien
 | 
|---|
| 116 |  N CUR
 | 
|---|
| 117 |  S CUR=$$FINDCUR^DGENA(+EASDFN)
 | 
|---|
| 118 |  S EASARRAY(1)=CUR
 | 
|---|
| 119 |  Q
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 | I408(EASDFN,EASAPP,EASARRAY) ;retrieve ien(s) to files #408.12,#408.13,#408.21,#408.22
 | 
|---|
| 122 |  ;
 | 
|---|
| 123 |  ;input EASDFN    = ien to #2
 | 
|---|
| 124 |  ;      EASAPP    = ien to #712
 | 
|---|
| 125 |  ;output EASARRAY = ien(s) to files; passed by reference
 | 
|---|
| 126 |  ;       array(408,"V",1) = ien_#408.12^ien_#408.13^ien_#408.21^ien#408.22 ;veteran data
 | 
|---|
| 127 |  ;       array(408,"S",1) = ien_#408.12^ien_#408.13^ien_#408.21^ien#408.22 ;spouse data
 | 
|---|
| 128 |  ;       array(408,"C",multiple) = ien_#408.12^ien_#408.13^ien_#408.21^ien#408.22 ;child data
 | 
|---|
| 129 |  ;   where ien_#408.13 = ien;global_root
 | 
|---|
| 130 |  ;
 | 
|---|
| 131 |  N CURINCYR,X,Y,DIC,DA,DR,DIQ,EAS,DEP,REL,IX,JX,KX,I13,SUB1,SUB2,INCYR,PT
 | 
|---|
| 132 |  ;
 | 
|---|
| 133 |  Q:'EASDFN
 | 
|---|
| 134 |  S Y=$P($G(^EAS(712,EASAPP,0)),U,6) I Y="" S Y=DT
 | 
|---|
| 135 |  S %F=5,X=$$FMTE^XLFDT(Y,%F),X=+$P(X,"/",3)-1,%DT="P" D ^%DT S CURINCYR=Y
 | 
|---|
| 136 |  ;find all associated 408 records, even if no actual income test
 | 
|---|
| 137 |  ; get #408.12, #408.13, #408.21, #408.22 iens
 | 
|---|
| 138 |  K EAS S DEP=0
 | 
|---|
| 139 |  S IX=0 F  S IX=$O(^DGPR(408.12,"B",EASDFN,IX)) Q:'IX  D
 | 
|---|
| 140 |  . S DIC=408.12,DA=IX,DIQ="EAS",DIQ(0)="I",DR=".02;.03" D EN^DIQ1
 | 
|---|
| 141 |  . S REL=$G(EAS(408.12,IX,.02,"I")),I13=$G(EAS(408.12,IX,.03,"I"))
 | 
|---|
| 142 |  . S (SUB1,SUB2)="" S:REL=1 SUB1="V",SUB2=1 S:REL=2 SUB1="S",SUB2=1 S:REL>2 SUB1="C",DEP=DEP+1,SUB2=DEP
 | 
|---|
| 143 |  . I SUB1]"" S EASARRAY(408,SUB1,SUB2)=IX_U_I13 D
 | 
|---|
| 144 |  . . S JX=$O(^DGMT(408.21,"C",IX,""),-1)
 | 
|---|
| 145 |  . . I JX D
 | 
|---|
| 146 |  . . . S DIC=408.21,DA=JX,DIQ="EAS",DIQ(0)="I",DR=".01;.02" D EN^DIQ1
 | 
|---|
| 147 |  . . . S INCYR=$G(EAS(408.21,JX,.01,"I")),PT=$G(EAS(408.21,JX,.02,"I"))
 | 
|---|
| 148 |  . . . Q:PT'=IX
 | 
|---|
| 149 |  . . . Q:(INCYR<CURINCYR)
 | 
|---|
| 150 |  . . . S KX=$O(^DGMT(408.22,"AIND",JX,0))
 | 
|---|
| 151 |  . . . S EASARRAY(408,SUB1,SUB2)=EASARRAY(408,SUB1,SUB2)_U_JX_U_KX
 | 
|---|
| 152 |  Q
 | 
|---|
| 153 |  ;
 | 
|---|
| 154 | I1275(IEN) ;get the active subrecord from subfile #408.1275
 | 
|---|
| 155 |  ;input     IEN = internal record number to file #408.12
 | 
|---|
| 156 |  ;output SUBIEN = internal record number for active subrecord,
 | 
|---|
| 157 |  ;                or -1 if invalid
 | 
|---|
| 158 |  N B,ACT,SUBIEN
 | 
|---|
| 159 |  I 'IEN Q -1
 | 
|---|
| 160 |  S SUBIEN=-1
 | 
|---|
| 161 |  S B=0 F  S B=$O(^DGPR(408.12,IEN,"E",B)) Q:'B  D
 | 
|---|
| 162 |  . S ACT=$P(^DGPR(408.12,IEN,"E",B,0),U,2)
 | 
|---|
| 163 |  . I ACT S SUBIEN=B
 | 
|---|
| 164 |  Q SUBIEN
 | 
|---|