1 | VEPER7SB ;RSL/DAOU HL7 EXTRACT FROM FILE SUBROUTINES; ; 8/23/05 11:30am
|
---|
2 | ;;1.0;VISTA EHR DOQ IT HL7 extraction using Clinical Reminders; 05/20/05 ;;Build 1
|
---|
3 | REGISTER ;Write REGISTER PATIENT Event segments
|
---|
4 | ;
|
---|
5 | I 'FHSC D FHS^VEPER7SG(SF,.FHSC,.BHSC,PROD,HL7DIR_HL7FN,FNMID)
|
---|
6 | I 'BHSC D BHS^VEPER7SG(SF,.BHSC,.MSHC)
|
---|
7 | D MSH^VEPER7SG("ZRG","Z01",SF,.MSHC)
|
---|
8 | D ZCR^VEPER7SG
|
---|
9 | D ZPP^VEPER7SG
|
---|
10 | D DG1^VEPER7SG
|
---|
11 | I ALERGY D ZL1^VEPER7SG
|
---|
12 | D ZPT^VEPER7SG
|
---|
13 | S %DT="T",X="N" D ^%DT
|
---|
14 | S $P(DOQREG(19904.4,DFN,TOPTYP),"^",TTP+1)=Y
|
---|
15 | ; ****** SET THIS BACK INTO THE GLOBAL HERE *******
|
---|
16 | Q
|
---|
17 | ;
|
---|
18 | ;
|
---|
19 | CANCEL ;Write CANCEL PATIENT Event segments
|
---|
20 | ;
|
---|
21 | I 'FHSC D FHS^VEPER7SG(SF,.FHSC,.BHSC,PROD,HL7DIR_HL7FN,FNMID)
|
---|
22 | I 'BHSC D BHS^VEPER7SG(SF,.BHSC,.MSHC)
|
---|
23 | D MSH^VEPER7SG("ZDL","Z02",SF,.MSHC)
|
---|
24 | D ZCR^VEPER7SG
|
---|
25 | D ZPP^VEPER7SG
|
---|
26 | S %DT="T",X="N" D ^%DT
|
---|
27 | S $P(DOQREG(19904.4,DFN,TOPTYP),"^",TTP+1)=Y
|
---|
28 | ; *** SET THIS BACK INTO THE GLOBAL HERE ********
|
---|
29 | Q
|
---|
30 | ;
|
---|
31 | ;
|
---|
32 | PTVISIT ;Write PATIENT VISIT Event Segments
|
---|
33 | ;
|
---|
34 | I 'FHSC D FHS^VEPER7SG(SF,.FHSC,.BHSC,PROD,HL7DIR_HL7FN,FNMID)
|
---|
35 | I 'BHSC D BHS^VEPER7SG(SF,.BHSC,.MSHC)
|
---|
36 | D MSH^VEPER7SG("ADT","A04",SF,.MSHC)
|
---|
37 | D ZCR^VEPER7SG
|
---|
38 | D PID^VEPER7SG
|
---|
39 | D PV1^VEPER7SG
|
---|
40 | ;
|
---|
41 | ;--- Observations have to be sent for several different files
|
---|
42 | ;- Files to be included are:
|
---|
43 | ;- V MEASUREMENT (9000010.01)
|
---|
44 | ;- V LAB (9000010.09) Tests and results
|
---|
45 | ;- V EXAM (9000010.13)
|
---|
46 | ;- V PATIENT EDUCATION (9000010.16)
|
---|
47 | ;- V HEALTH FACTORS (9000010.23) (May not need... vitals may be in V MEASUREMENT... if so, remove this part
|
---|
48 | ;-
|
---|
49 | ;- Series of loops to report these associated observations
|
---|
50 | ;-
|
---|
51 | N OBXC,OBX,OIEN,VOBX
|
---|
52 | S BVDATE=9999998-EDT,EVDATE=9999999-BDT,OBXC=0
|
---|
53 | S OBX="" F S OBX=$O(^AUPNVMEA("AA",DFN,OBX)) Q:OBX="" D
|
---|
54 | .S BVDATE=$O(^AUPNVMEA("AA",DFN,OBX,BVDATE)) Q:BVDATE=""!(BVDATE>EVDATE) D
|
---|
55 | ..S OIEN="" F S OIEN=$O(^AUPNVMEA("AA",DFN,OBX,BVDATE,OIEN)) Q:OIEN="" D
|
---|
56 | ...I $D(^TMP("VEPER7EX",$J,"MEA",DFN,OBX,BVDATE,OIEN)) Q ;Don't process a 2nd time
|
---|
57 | ...K VOBX D GETS^DIQ(9000010.01,OIEN_",","**","","VOBX")
|
---|
58 | ...D GETS^DIQ(9000010.01,OIEN_",",1201,"I","VOBX")
|
---|
59 | ...D OBX^VEPER7SG(.OBXC)
|
---|
60 | ...S ^TMP("VEPER7EX",$J,"MEA",DFN,OBX,BVDATE,OIEN)=""
|
---|
61 | ...K VOBX
|
---|
62 | S BVDATE=9999998-EDT
|
---|
63 | S OBX="" F S OBX=$O(^AUPNVLAB("AA",DFN,OBX)) Q:OBX="" D
|
---|
64 | .S BVDATE=$O(^AUPNVLAB("AA",DFN,OBX,BVDATE)) Q:BVDATE=""!(BVDATE>EVDATE) D
|
---|
65 | ..S OIEN="" F S OIEN=$O(^AUPNVLAB("AA",DFN,OBX,BVDATE,OIEN)) Q:OIEN="" D
|
---|
66 | ...I $D(^TMP("VEPER7EX",$J,"LAB",DFN,OBX,BVDATE,OIEN)) Q ;Don't process a 2nd time
|
---|
67 | ...K VOBX D GETS^DIQ(9000010.09,OIEN_",","**","","VOBX")
|
---|
68 | ...D GETS^DIQ(9000010.09,OIEN_",",1201,"I","VOBX")
|
---|
69 | ...D OBX^VEPER7SG(.OBXC)
|
---|
70 | ...S ^TMP("VEPER7EX",$J,"LAB",DFN,OBX,BVDATE,OIEN)=""
|
---|
71 | ...K VOBX
|
---|
72 | S BVDATE=9999998-EDT
|
---|
73 | S OBX="" F S OBX=$O(^AUPNVXAM("AA",DFN,OBX)) Q:OBX="" D
|
---|
74 | .S BVDATE=$O(^AUPNVXAM("AA",DFN,OBX,BVDATE)) Q:BVDATE=""!(BVDATE>EVDATE) D
|
---|
75 | ..S OIEN="" F S OIEN=$O(^AUPNVXAM("AA",DFN,OBX,BVDATE,OIEN)) Q:OIEN="" D
|
---|
76 | ...I $D(^TMP("VEPER7EX",$J,"XAM",DFN,OBX,BVDATE,OIEN)) Q ;Don't process a 2nd time
|
---|
77 | ...K VOBX D GETS^DIQ(9000010.13,OIEN_",","**","","VOBX")
|
---|
78 | ...D GETS^DIQ(9000010.13,OIEN_",",1201,"I","VOBX")
|
---|
79 | ...D OBX^VEPER7SG(.OBXC)
|
---|
80 | ...S ^TMP("VEPER7EX",$J,"XAM",DFN,OBX,BVDATE,OIEN)=""
|
---|
81 | ...K VOBX
|
---|
82 | S BVDATE=9999998-EDT
|
---|
83 | S OBX="" F S OBX=$O(^AUPNVPED("AA",DFN,OBX)) Q:OBX="" D
|
---|
84 | .S BVDATE=$O(^AUPNVPED("AA",DFN,OBX,BVDATE)) Q:BVDATE=""!(BVDATE>EVDATE) D
|
---|
85 | ..S OIEN="" F S OIEN=$O(^AUPNVPED("AA",DFN,OBX,BVDATE,OIEN)) Q:OIEN="" D
|
---|
86 | ...I $D(^TMP("VEPER7EX",$J,"PED",DFN,OBX,BVDATE,OIEN)) Q ;Don't process a 2nd time
|
---|
87 | ...K VOBX D GETS^DIQ(9000010.16,OIEN_",","**","","VOBX")
|
---|
88 | ...D GETS^DIQ(9000010.16,OIEN_",",1201,"I","VOBX")
|
---|
89 | ...D OBX^VEPER7SG(.OBXC)
|
---|
90 | ...S ^TMP("VEPER7EX",$J,"PED",DFN,OBX,BVDATE,OIEN)=""
|
---|
91 | ...K VOBX
|
---|
92 | S BVDATE=9999998-EDT
|
---|
93 | S OBX="" F S OBX=$O(^AUPNVHF("AA",DFN,OBX)) Q:OBX="" D
|
---|
94 | .S BVDATE=$O(^AUPNVHF("AA",DFN,OBX,BVDATE)) Q:BVDATE=""!(BVDATE>EVDATE) D
|
---|
95 | ..S OIEN="" F S OIEN=$O(^AUPNVHF("AA",DFN,OBX,BVDATE,OIEN)) Q:OIEN="" D
|
---|
96 | ...I $D(^TMP("VEPER7EX",$J,"HF",DFN,OBX,BVDATE,OIEN)) Q ;Don't process a 2nd time
|
---|
97 | ...K VOBX D GETS^DIQ(9000010.23,OIEN_",","**","","VOBX")
|
---|
98 | ...D GETS^DIQ(9000010.23,OIEN_",",1201,"I","VOBX")
|
---|
99 | ...D OBX^VEPER7SG(.OBXC)
|
---|
100 | ...S ^TMP("VEPER7EX",$J,"HF",DFN,OBX,BVDATE,OIEN)=""
|
---|
101 | ...K VOBX
|
---|
102 | ;
|
---|
103 | ;--- Process lab results...
|
---|
104 | ;
|
---|
105 | N LRDATA
|
---|
106 | K LRDATA I VEPER7PT(2,DFN,.09)'="" D GCPR^LA7QRY(VEPER7PT(2,DFN,.09),BDT,EDT_"^RAD","*","*",.LRDATA)
|
---|
107 | ;Loop through LRDATA to return Lab Results for DOQIT
|
---|
108 | ;
|
---|
109 | ;-- at this time, the array is unkown as to what it looks like. Will
|
---|
110 | ;- have to add this later when there's some lab data to process.
|
---|
111 | ;
|
---|
112 | ;
|
---|
113 | ;--- End of recording Observations ----
|
---|
114 | ;
|
---|
115 | D DG1^VEPER7SG
|
---|
116 | I ALERGY D ZL1^VEPER7SG
|
---|
117 | Q
|
---|
118 | ;
|
---|
119 | ;
|
---|
120 | CPTVISIT ;WRITE CANCEL PATIENT VISIT Event segments
|
---|
121 | ;
|
---|
122 | I 'FHSC D FHS^VEPER7SG(SF,.FHSC,.BHSC,PROD,HL7DIR_HL7FN,FNMID)
|
---|
123 | I 'BHSC D BHS^VEPER7SG(SF,.BHSC,.MSHC)
|
---|
124 | D MSH^VEPER7SG("ADT","A11",SF,.MSHC)
|
---|
125 | D ZCR^VEPER7SG
|
---|
126 | D PID^VEPER7SG
|
---|
127 | D PV1^VEPER7SG
|
---|
128 | Q
|
---|
129 | ;
|
---|
130 | UNSOLOM ;Write UNSOLICITED OBSERVATION Event segments
|
---|
131 | ;
|
---|
132 | I 'FHSC D FHS^VEPER7SG(SF,.FHSC,.BHSC,PROD,HL7DIR_HL7FN,FNMID)
|
---|
133 | I 'BHSC D BHS^VEPER7SG(SF,.BHSC,.MSHC)
|
---|
134 | D MSH^VEPER7SG("ORU","R01",SF,.MSHC)
|
---|
135 | D ZCR^VEPER7SG
|
---|
136 | D PID^VEPER7SG
|
---|
137 | D PV1^VEPER7SG
|
---|
138 | D ORC^VEPER7SG
|
---|
139 | D OBR^VEPER7SG
|
---|
140 | D OBX^VEPER7SG
|
---|
141 | Q
|
---|
142 | ;
|
---|
143 | ;
|
---|
144 | PXTRTOM ;Write PHARMACY/TREATMENT ORDER Event segments
|
---|
145 | ;
|
---|
146 | I 'FHSC D FHS^VEPER7SG(SF,.FHSC,.BHSC,PROD,HL7DIR_HL7FN,FNMID)
|
---|
147 | I 'BHSC D BHS^VEPER7SG(SF,.BHSC,.MSHC)
|
---|
148 | D MSH^VEPER7SG("OMP","O09",SF,.MSHC)
|
---|
149 | D ZCR^VEPER7SG
|
---|
150 | D PID^VEPER7SG
|
---|
151 | D PV1^VEPER7SG
|
---|
152 | D ORC^VEPER7SG
|
---|
153 | D RXO^VEPER7SG
|
---|
154 | Q
|
---|
155 | ;
|
---|
156 | ;
|
---|
157 | VAXMSG ;Write VACCINATION MESSAGE Event segments
|
---|
158 | ;
|
---|
159 | I 'FHSC D FHS^VEPER7SG(SF,.FHSC,.BHSC,PROD,HL7DIR_HL7FN,FNMID)
|
---|
160 | I 'BHSC D BHS^VEPER7SG(SF,.BHSC,.MSHC)
|
---|
161 | D MSH^VEPER7SG("VXU","V04",SV,.MSHC)
|
---|
162 | D ZCR^VEPER7SG
|
---|
163 | D PID^VEPER7SG
|
---|
164 | ;
|
---|
165 | ;
|
---|
166 | ;---- Fetch physician and clinic information
|
---|
167 | N PRIPHN,INST,PIEN
|
---|
168 | D GETS^DIQ(9000010.11,VIMMIEN_",",1202,"I","PRIPHN")
|
---|
169 | S PIEN=$G(PRIPHN(9000010.11,VIMMIEN_",",1204))_","
|
---|
170 | D GETS^DIQ(200,PIEN,"16;53.2","","INST")
|
---|
171 | I $G(INST(200,PIEN,16))="" S INST(200,PIEN,16)=SF
|
---|
172 | ;
|
---|
173 | ;
|
---|
174 | D ORC^VEPER7SG
|
---|
175 | D RXA^VEPER7SG(.RXAC)
|
---|
176 | Q
|
---|
177 | ;
|
---|
178 | ;
|
---|