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
|
---|