| 1 | EASEZF1 ;ALB/jap - Filing 1010EZ Data to Patient Database ; 8/11/05 1:50pm
 | 
|---|
| 2 |  ;;1.0;ENROLLMENT APPLICATION SYSTEM;**1,51,57,62**;Mar 15, 2001
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | F2(EASAPP,EASDFN) ;file to Patient record in #2
 | 
|---|
| 5 |  ;input EASDFN = ien to #2
 | 
|---|
| 6 |  N KEYIEN,FILE,SUBFILE,FLD,DATAKEY,MULTIPLE,SECT,QUES,SUBIEN,ACCEPT,EZDATA,PTDATA,LINK,EROOT,EAS,ERR,IENS,ARRAY,ELIGVER
 | 
|---|
| 7 |  N DIC,DIQ,DA,DR,X,Y
 | 
|---|
| 8 |  Q:'$G(EASDFN)
 | 
|---|
| 9 |  L +^DPT(EASDFN)
 | 
|---|
| 10 |  I '$G(EASVRSN) S EASVRSN=$$VERSION^EASEZU4(EASAPP)
 | 
|---|
| 11 |  S KEYIEN=0
 | 
|---|
| 12 |  F  S KEYIEN=$O(^TMP("EZDATA",$J,KEYIEN)) Q:'KEYIEN  D
 | 
|---|
| 13 |  .S LN=^TMP("EZDATA",$J,KEYIEN),FILE=$P(LN,U,1)
 | 
|---|
| 14 |  .Q:FILE'=2
 | 
|---|
| 15 |  .S SUBFILE=$P(LN,U,2),FLD=$P(LN,U,3),DATAKEY=$P(LN,U,4)
 | 
|---|
| 16 |  .S SECT=$P(DATAKEY,";",1),QUES=$P(DATAKEY,";",2)
 | 
|---|
| 17 |  .;call to suppress may be redundant
 | 
|---|
| 18 |  .Q:$$SUPPRESS^EASEZU4(EASAPP,DATAKEY,1,EASVRSN)
 | 
|---|
| 19 |  .;in file #2, multiple is always 1
 | 
|---|
| 20 |  .S MULTIPLE=1
 | 
|---|
| 21 |  .Q:'$D(^TMP("EZDATA",$J,KEYIEN,MULTIPLE,1))
 | 
|---|
| 22 |  .S X=$G(^TMP("EZTEMP",$J,SECT,MULTIPLE,QUES))
 | 
|---|
| 23 |  .Q:$P(X,U,1)'=KEYIEN
 | 
|---|
| 24 |  .S EZDATA=$P(X,U,2),ACCEPT=$P(X,U,3),SUBIEN=$P(X,U,4),PTDATA=$P(X,U,5)
 | 
|---|
| 25 |  .Q:EZDATA=""
 | 
|---|
| 26 |  .Q:'SUBIEN
 | 
|---|
| 27 |  .;special handling for Designee
 | 
|---|
| 28 |  .I FLD=.3405 S EZDATA=$S(EZDATA="NEXT OF KIN":"YES",1:"NO")
 | 
|---|
| 29 |  .;strip off code display from county
 | 
|---|
| 30 |  .I SECT="I",QUES="9E." S EZDATA=$P(EZDATA," (",1)
 | 
|---|
| 31 |  .;get file #2 ien; always same as EASDFN
 | 
|---|
| 32 |  .S LINK=EASDFN
 | 
|---|
| 33 |  .;don't continue if data item not accepted
 | 
|---|
| 34 |  .Q:ACCEPT<1
 | 
|---|
| 35 |  .;process subfile data elsewhere
 | 
|---|
| 36 |  .I SUBFILE=2.01 Q
 | 
|---|
| 37 |  .I SUBFILE=2.101 Q
 | 
|---|
| 38 |  .I SUBFILE=2.02 D F202^EASEZF1(SUBFILE,DATAKEY,EZDATA,SUBIEN,KEYIEN) Q
 | 
|---|
| 39 |  .I SUBFILE=2.06 D F206^EASEZF1(SUBFILE,DATAKEY,EZDATA,SUBIEN) Q
 | 
|---|
| 40 |  .;special conversion to file data to field #.328
 | 
|---|
| 41 |  .I FLD=.328 D
 | 
|---|
| 42 |  ..S X=$$UC^EASEZT1(EZDATA) I X="SSN" D
 | 
|---|
| 43 |  ...;allow SSN as Service Number only if field #.328 in patient record is null;
 | 
|---|
| 44 |  ...S PTSSN=$$GETANY^EASEZU1(EASAPP,EASDFN,SUBIEN)
 | 
|---|
| 45 |  ...I PTSSN="" S EZDATA="SS" Q
 | 
|---|
| 46 |  ...;otherwise Applicant SSN must match Patient SSN
 | 
|---|
| 47 |  ...S KK=$$KEY711^EASEZU1("APPLICANT SOCIAL SECURITY NUMBER")
 | 
|---|
| 48 |  ...S EZSSN=$P($G(^TMP("EZDATA",$J,KK,1,1)),U,1),EZSSN=$TR(EZSSN,"-","")
 | 
|---|
| 49 |  ...I EZSSN=PTSSN S EZDATA="SS" Q
 | 
|---|
| 50 |  ...S EZDATA="ssn"
 | 
|---|
| 51 |  ..K KK,PTSSN,EZSSN
 | 
|---|
| 52 |  .;special for fields #.092 & #.093
 | 
|---|
| 53 |  .I FILE=2,((FLD=.092)!(FLD=.093)) D FPOB(DATAKEY,EZDATA,SUBIEN,PTDATA) Q
 | 
|---|
| 54 |  .;don't need these lines after 672
 | 
|---|
| 55 |  .;special for field #.362
 | 
|---|
| 56 |  .;I FILE=2,FLD=.362,EASVRSN>5.99 I (EZDATA="Y")!(EZDATA="YES") S EZDATA="YES, RECEIVING MILITARY RETIREMENT IN LIEU OF VA COMPENSATION"
 | 
|---|
| 57 |  .Q:EZDATA=PTDATA
 | 
|---|
| 58 |  .;repeat check for verified eligibility;
 | 
|---|
| 59 |  .;do not file certain fields if eligibility verified
 | 
|---|
| 60 |  .K ARRAY
 | 
|---|
| 61 |  .S DA=EASDFN,DIC="^DPT(",DR=".3611;.3613",DIQ(0)="I",DIQ="ARRAY"
 | 
|---|
| 62 |  .D EN^DIQ1 K DA,DIC,DIQ,DR
 | 
|---|
| 63 |  .I $G(ARRAY(2,EASDFN,.3611,"I"))="V",$G(ARRAY(2,EASDFN,.3613,"I"))="H" S ELIGVER=1
 | 
|---|
| 64 |  .I FLD=.313,$G(ARRAY(2,EASDFN,.3611,"I"))="V" Q
 | 
|---|
| 65 |  .I $G(ELIGVER),((FLD=.301)!(FLD=.302)!(FLD=.36235)) Q
 | 
|---|
| 66 |  .;special for field #.32102 - Agent Orange Exposure . DATAKEY = I;14F
 | 
|---|
| 67 |  .I FLD=.32102 D F32102^EASEZF1A(EASAPP,EASDFN,EZDATA)
 | 
|---|
| 68 |  .;setup to call FM database server using EASDFN as file #2 record
 | 
|---|
| 69 |  .K EAS,ERR
 | 
|---|
| 70 |  .S IENS=EASDFN_","
 | 
|---|
| 71 |  .S EROOT="EAS("_EASAPP_")"
 | 
|---|
| 72 |  .D VAL^DIE(2,IENS,FLD,"F",EZDATA,,EROOT,"ERR")
 | 
|---|
| 73 |  .;try to resolve possible invalid input for free text fields due to length
 | 
|---|
| 74 |  .I $D(ERR) D RESOLVE
 | 
|---|
| 75 |  .I $D(ERR) D ERROR^EASEZF2("AP",MULTIPLE,.ERR,"LINK")
 | 
|---|
| 76 |  .;file to database if input is valid
 | 
|---|
| 77 |  .I '$D(ERR) D
 | 
|---|
| 78 |  ..;2/1/2001 - don't attempt to file Name, SSN, DOB; too many complications;
 | 
|---|
| 79 |  ..;  example: if system assigns pseudo-SSN to new patient, user could overwrite;
 | 
|---|
| 80 |  ..;  example: if applicant matched to existing patient, all critical identifying
 | 
|---|
| 81 |  ..;           data could be overwritten; could impact HEC as well
 | 
|---|
| 82 |  ..D FILE^DIE("S",EROOT,"ERR")
 | 
|---|
| 83 |  ..;set any replaced data into subfile #712.01 for audit
 | 
|---|
| 84 |  ..S ^EAS(712,EASAPP,10,SUBIEN,2)=PTDATA_U_LINK
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 |  L -^DPT(EASDFN)
 | 
|---|
| 87 |  Q
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 | RESOLVE ;try to resolve invalid input for free text fields only
 | 
|---|
| 90 |  ;see if mapped to free text field
 | 
|---|
| 91 |  N FDEF,FTYPE,MAX
 | 
|---|
| 92 |  I (SUBFILE=FILE)!(SUBFILE="") S FDEF=FILE
 | 
|---|
| 93 |  E  S FDEF=SUBFILE
 | 
|---|
| 94 |  S FTYPE=$$GET1^DID(FDEF,FLD,"","TYPE")
 | 
|---|
| 95 |  Q:FTYPE'="FREE TEXT"
 | 
|---|
| 96 |  S MAX=$$GET1^DID(FDEF,FLD,"","FIELD LENGTH")
 | 
|---|
| 97 |  S EZDATA=$E(EZDATA,1,MAX)
 | 
|---|
| 98 |  K ERR
 | 
|---|
| 99 |  D VAL^DIE(2,IENS,FLD,"F",EZDATA,,EROOT,"ERR")
 | 
|---|
| 100 |  ;if still sets ERR array then won't be filed to database
 | 
|---|
| 101 |  Q
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 | F202(SUBFILE,DATAKEY,EZDATA,SUBIEN,KEYIEN) ;add or edit subrecord in subfile #2.02
 | 
|---|
| 104 |  ;input SUBFILE = 2.02
 | 
|---|
| 105 |  ;      DATAKEY = data item identifier, e.g., I;4B.
 | 
|---|
| 106 |  ;      EZDATA  = in these cases, either "N(o)" or "Y(es)"
 | 
|---|
| 107 |  ;      SUBIEN  = subrecord # for data in #712/#10
 | 
|---|
| 108 |  ;      KEYIEN  = record # for data element in #711
 | 
|---|
| 109 |  N X,N,DATANM,EROOT,EAS,EIEN,ERR,FLD,IENS,EASARRAY,LINK,OUT,K1,K3
 | 
|---|
| 110 |  Q:EZDATA'["Y"
 | 
|---|
| 111 |  Q:SUBFILE'=2.02
 | 
|---|
| 112 |  ;covert data to corresponding file #10 pointer
 | 
|---|
| 113 |  S X=$$KEY711^EASEZU1(DATAKEY)
 | 
|---|
| 114 |  S K1=$P(X,U,1),DATANM=$P(X,U,2),K3=$P(X,U,3)
 | 
|---|
| 115 |  Q:(DATANM="")
 | 
|---|
| 116 |  Q:(K1'=KEYIEN)
 | 
|---|
| 117 |  Q:(K3'=DATAKEY)
 | 
|---|
| 118 |  S DATANM=$P(DATANM," - ",2),DATANM=$E(DATANM,1,30)
 | 
|---|
| 119 |  I DATANM["UNANSWERED" S DATANM="UNKNOWN BY PATIENT"
 | 
|---|
| 120 |  S EZDATA=$O(^DIC(10,"B",DATANM,0))
 | 
|---|
| 121 |  Q:EZDATA=""
 | 
|---|
| 122 |  D I202^EASEZI(EASDFN,.EASARRAY)
 | 
|---|
| 123 |  ;if matching race already exists, edit method only
 | 
|---|
| 124 |  S OUT=0,N=0 F  S N=$O(EASARRAY(N)) Q:'N  D
 | 
|---|
| 125 |  .Q:($P(EASARRAY(N),";",2)'=EZDATA)
 | 
|---|
| 126 |  .K EAS,ERR
 | 
|---|
| 127 |  .S IENS=EZDATA_","_EASDFN_","
 | 
|---|
| 128 |  .S EROOT="EAS("_EASAPP_")"
 | 
|---|
| 129 |  .S FLD=.02,EAS(EASAPP,SUBFILE,IENS,FLD)=1
 | 
|---|
| 130 |  .D FILE^DIE("S",EROOT,"ERR")
 | 
|---|
| 131 |  .S OUT=1
 | 
|---|
| 132 |  ;no matching race in patient record, add new subrecord
 | 
|---|
| 133 |  I 'OUT D
 | 
|---|
| 134 |  .K ERR
 | 
|---|
| 135 |  .S EROOT="EAS("_EASAPP_")"
 | 
|---|
| 136 |  .S IENS="+1,"_EASDFN_",",EIEN(1)=EZDATA
 | 
|---|
| 137 |  .S FLD=.01,EAS(EASAPP,SUBFILE,IENS,FLD)=EZDATA
 | 
|---|
| 138 |  .S FLD=.02,EAS(EASAPP,SUBFILE,IENS,FLD)=1
 | 
|---|
| 139 |  .D UPDATE^DIE("S",EROOT,"EIEN","ERR")
 | 
|---|
| 140 |  .I $D(ERR) D ERROR^EASEZF2("AP",1,.ERR,"LINK") Q
 | 
|---|
| 141 |  .S LINK=EASDFN_";"_EZDATA
 | 
|---|
| 142 |  .S ^EAS(712,EASAPP,10,SUBIEN,2)=U_LINK
 | 
|---|
| 143 |  Q
 | 
|---|
| 144 |  ;
 | 
|---|
| 145 | F206(SUBFILE,DATAKEY,EZDATA,SUBIEN) ;add subrecord in subfile #2.06 
 | 
|---|
| 146 |  ;input SUBFILE = 2.06
 | 
|---|
| 147 |  ;      DATAKEY = data item identifier, e.g., I;4A.
 | 
|---|
| 148 |  ;      EZDATA  = in these cases, either "N(o)" or "Y(es)"
 | 
|---|
| 149 |  N X,EROOT,EAS,EIEN,ERR,FLD,EASARRAY,IENS,LINK,PTDATA
 | 
|---|
| 150 |  Q:SUBFILE'=2.06
 | 
|---|
| 151 |  D I206^EASEZI(EASDFN,.EASARRAY)
 | 
|---|
| 152 |  S LINK=$P($G(EASARRAY(1)),";",2),PTDATA="" I LINK S PTDATA=$P(^DPT(EASDFN,.06,LINK,0),U,1)
 | 
|---|
| 153 |  I DATAKEY="I;4A." S EZDATA=$S(EZDATA["Y":"H",$E(EZDATA,1)="N":"N",1:"U") D
 | 
|---|
| 154 |  .S EROOT="EAS("_EASAPP_")"
 | 
|---|
| 155 |  .S IENS="+1,"_EASDFN_","
 | 
|---|
| 156 |  .S FLD=.01,EAS(EASAPP,SUBFILE,IENS,FLD)=EZDATA
 | 
|---|
| 157 |  .S FLD=.02,EAS(EASAPP,SUBFILE,IENS,FLD)="SELF IDENTIFICATION"
 | 
|---|
| 158 |  .D UPDATE^DIE("ES",EROOT,"EIEN","ERR")
 | 
|---|
| 159 |  .S LINK=EASDFN_";"_$G(EIEN(1))
 | 
|---|
| 160 |  .S ^EAS(712,EASAPP,10,SUBIEN,2)=PTDATA_U_LINK
 | 
|---|
| 161 |  Q
 | 
|---|
| 162 |  ;
 | 
|---|
| 163 | FPOB(DATAKEY,EZDATA,SUBIEN,PTDATA) ;add or edit pob city & state
 | 
|---|
| 164 |  ;input DATAKEY = data item identifier, either, I;8A. or I;8B.
 | 
|---|
| 165 |  ;      EZDATA  = free text if city or 
 | 
|---|
| 166 |  ;                state abbrv if state
 | 
|---|
| 167 |  ;filing for both city & state only done when datakey=I;8A.
 | 
|---|
| 168 |  N X,EROOT,EAS,EIEN,ERR,FLD,EASARRAY,IENS,LINK,SECT,QUES,XIEN,XDATA
 | 
|---|
| 169 |  Q:(DATAKEY'="I;8A.")
 | 
|---|
| 170 |  Q:(EZDATA="")
 | 
|---|
| 171 |  Q:(EZDATA=PTDATA)
 | 
|---|
| 172 |  ;file pob city
 | 
|---|
| 173 |  K EAS,ERR
 | 
|---|
| 174 |  S FLD=.092,LINK=EASDFN
 | 
|---|
| 175 |  S IENS=EASDFN_","
 | 
|---|
| 176 |  S EROOT="EAS("_EASAPP_")"
 | 
|---|
| 177 |  D VAL^DIE(2,IENS,FLD,"F",EZDATA,,EROOT,"ERR")
 | 
|---|
| 178 |  I $D(ERR) D RESOLVE
 | 
|---|
| 179 |  I $D(ERR) D ERROR^EASEZF2("AP",1,.ERR,"LINK") Q
 | 
|---|
| 180 |  D FILE^DIE("ES",EROOT,"ERR")
 | 
|---|
| 181 |  ;set any replaced data into subfile #712.01 for audit
 | 
|---|
| 182 |  S ^EAS(712,EASAPP,10,SUBIEN,2)=PTDATA_U_LINK
 | 
|---|
| 183 |  ;file pob state
 | 
|---|
| 184 |  S (EZDATA,XDATA)=""
 | 
|---|
| 185 |  S DATAKEY="I;8B.",SECT=$P(DATAKEY,";",1),QUES=$P(DATAKEY,";",2)
 | 
|---|
| 186 |  S X=$G(^TMP("EZTEMP",$J,SECT,1,QUES)),EZDATA=$P(X,U,2),XIEN=$P(X,U,4),XDATA=$P(X,U,5)
 | 
|---|
| 187 |  Q:(EZDATA="")
 | 
|---|
| 188 |  Q:(EZDATA=XDATA)
 | 
|---|
| 189 |  I (EZDATA["FOREIGN")!(EZDATA="FC")!(EZDATA="FG") S EZDATA="FOREIGN"
 | 
|---|
| 190 |  K EAS,ERR
 | 
|---|
| 191 |  S FLD=.093
 | 
|---|
| 192 |  S IENS=EASDFN_","
 | 
|---|
| 193 |  S EROOT="EAS("_EASAPP_")"
 | 
|---|
| 194 |  D VAL^DIE(2,IENS,FLD,"F",EZDATA,,EROOT,"ERR")
 | 
|---|
| 195 |  I $D(ERR) D ERROR^EASEZF2("AP",1,.ERR,"LINK") Q
 | 
|---|
| 196 |  D FILE^DIE("ES",EROOT,"ERR")
 | 
|---|
| 197 |  S ^EAS(712,EASAPP,10,XIEN,2)=XDATA_U_LINK
 | 
|---|
| 198 |  Q
 | 
|---|