1 | LRBEBAO ;DALOI/JAH/FHS - ORDERING AND RESULTING FOR OUTPATIENTS ;8/10/04
|
---|
2 | ;;5.2;LAB SERVICE;**291,359**;Sep 27, 1994
|
---|
3 | ;
|
---|
4 | ; This routine contains the subroutines that get the diagnosis pointers
|
---|
5 | ; and indicators at order entry and result verification for outpatient.
|
---|
6 | ;
|
---|
7 | ; Reference to EN^DDIOL supported by IA #10142
|
---|
8 | ; Reference to ^DIC supported by IA #10006
|
---|
9 | ; Reference to $$GET1^DIQ supported by IA #2056
|
---|
10 | ; Reference to ^DIR supported by IA #10026
|
---|
11 | ; Reference to ^ICD9 supported by IA #10082
|
---|
12 | ; Reference to ^DIC(9.4 supported by IA #10048
|
---|
13 | ; Reference to ^DIC(81.3 supported by IA #2816
|
---|
14 | ;
|
---|
15 | OPORD ; Outpatient Order Entry
|
---|
16 | ;
|
---|
17 | ; Input:
|
---|
18 | ; LRBEDFN - Patient's DFN (#2)
|
---|
19 | ; LRBESMP - Sample
|
---|
20 | ; LRBESPC - Specimen
|
---|
21 | ; LRBETST - Ordered Test
|
---|
22 | ; LRBEDGX - Pointer to Diagnosis (#80)
|
---|
23 | ; LRBEAR(LRBEDFN,"DOS") - Date of Service
|
---|
24 | ; LRBEAR(LRBEDFN,"PAT") - Patient DFN (#2)
|
---|
25 | ; LRBEAR(LRBEDFN,"POS") - Place of Service
|
---|
26 | ; LRBEAR(LRBEDFN,"ORDGX") - Ordering or Resulting Diagnosis
|
---|
27 | ; LRBEAR(LRBEDFN,"USR") - User
|
---|
28 | ; LRBEAR(LRBEDFN,"ORDPRO") - Ordering Provider
|
---|
29 | ; LRBEAR(LRBEDFN,"LRBEDGX",LRBESMP,LRBESPC,LRBETST,LRBEDGX)
|
---|
30 | ; Piece Desc
|
---|
31 | ; ----- ---------------------------------
|
---|
32 | ; 1 - Diagnosis
|
---|
33 | ; 2 - Unused (blank)
|
---|
34 | ; 3 - Textual Description of Diagnosis
|
---|
35 | ; 4 - Agent Orange
|
---|
36 | ; 5 - Ionizing Radiation
|
---|
37 | ; 6 - Service Connected Indicator
|
---|
38 | ; 7 - Environmental Contaminamts
|
---|
39 | ; 8 - MST (Military Sexual Tramua)
|
---|
40 | ; 9 - Head and Neck Cancer
|
---|
41 | ; 10 - Combat Veteran
|
---|
42 | ;
|
---|
43 | ; Output:
|
---|
44 | ; LRBEAR1(VISIT,TST,LRBEPOV)=LRBEDGX
|
---|
45 | ; VISIT - Pointer to VISIT (9000010) file
|
---|
46 | ; TST - Ordered Test
|
---|
47 | ; LRBEPOV - Pointer to V POV (#9000010.07) file
|
---|
48 | ; LRBEDGX - Pointer to Diagnosis (#80)
|
---|
49 | EN ;
|
---|
50 | D INIT
|
---|
51 | S SUB1="ENCOUNTER",SUB2="DX/PL",SUB3="PROVIDER"
|
---|
52 | S LRBEDFN="" F S LRBEDFN=$O(LRBEAR(LRBEDFN)) Q:LRBEDFN="" D
|
---|
53 | .S LRBETM=$S($P($G(LRBECDT),".",2):LRBECDT,$G(LRCDT):LRCDT,1:DT)
|
---|
54 | .S LRBETM=$$PCETM(LRBETM)
|
---|
55 | .S ^TMP("LRPXAPI",$J,SUB1,1,"ENC D/T")=LRBETM
|
---|
56 | .S ^TMP("LRPXAPI",$J,SUB1,1,"DSS ID")=LROOS
|
---|
57 | .S ^TMP("LRPXAPI",$J,SUB1,1,"HOS LOC")=$G(LRBEAR(LRBEDFN,"POS"))
|
---|
58 | .S ^TMP("LRPXAPI",$J,SUB1,1,"PATIENT")=$G(LRBEAR(LRBEDFN,"PAT"))
|
---|
59 | .S ^TMP("LRPXAPI",$J,SUB1,1,"SERVICE CATEGORY")="X"
|
---|
60 | .S ^TMP("LRPXAPI",$J,SUB1,1,"ENCOUNTER TYPE")="A"
|
---|
61 | .S ^TMP("LRPXAPI",$J,SUB3,1,"NAME")=$G(LRBEAR(LRBEDFN,"ORDPRO"))
|
---|
62 | .S ^TMP("LRPXAPI",$J,SUB3,1,"PRIMARY")=1
|
---|
63 | .I $G(LRBEAR(LRBEDFN,"DEL")) D
|
---|
64 | ..S ^TMP("LRPXAPI",$J,SUB1,1,"DELETE")=$G(LRBEAR(LRBEDFN,"DEL"))
|
---|
65 | .S LRBESMP=""
|
---|
66 | .F S LRBESMP=$O(LRBEAR(LRBEDFN,"LRBEDGX",LRBESMP)) Q:LRBESMP="" D
|
---|
67 | ..S LRBESPC=""
|
---|
68 | ..F S LRBESPC=+$O(LRBEAR(LRBEDFN,"LRBEDGX",LRBESMP,LRBESPC)) Q:LRBESPC<1 D
|
---|
69 | ...D OPWRK
|
---|
70 | Q
|
---|
71 | ;
|
---|
72 | OPWRK ; More Outpatient Work
|
---|
73 | N X,XX,B,BG,N,DX,LRBEDIA
|
---|
74 | ;get all primary (n=1) and secondary (n=2) dx
|
---|
75 | S LRBETST="" F S LRBETST=$O(LRBECPT(LRBETST)) Q:'LRBETST D
|
---|
76 | . S LRBETNUM=0 F S LRBETNUM=$O(LRBECPT(LRBETST,LRBETNUM)) Q:LRBETNUM<1 D
|
---|
77 | . . S LRBEDGX=""
|
---|
78 | . . F S LRBEDGX=$O(LRBEAR(LRBEDFN,"LRBEDGX",LRBESMP,LRBESPC,LRBETST,LRBEDGX)) Q:LRBEDGX="" D
|
---|
79 | . . . S LRBEPTDT=$G(LRBEAR(LRBEDFN,"LRBEDGX",LRBESMP,LRBESPC,LRBETST,LRBEDGX))
|
---|
80 | . . . S N=$S($P(LRBEPTDT,U,11):1,1:2),X=$P(LRBEPTDT,U,4,10)
|
---|
81 | . . . ;collapse indicators for same dx
|
---|
82 | . . . S XX=$G(DX(N,LRBEDGX))
|
---|
83 | . . . F B=1:1:7 I $P(XX,U,B)'=1,$P(X,U,B)'="" S $P(XX,U,B)=$P(X,U,B)
|
---|
84 | . . . S DX(N,LRBEDGX)=XX
|
---|
85 | ;set primary dx in PCE array
|
---|
86 | S LRBEDGX=""
|
---|
87 | F S LRBEDGX=$O(DX(1,LRBEDGX)) Q:LRBEDGX="" D
|
---|
88 | . S LRBEDIA=$G(LRBEDIA)+1,XX=DX(1,LRBEDGX)
|
---|
89 | . S ^TMP("LRPXAPI",$J,SUB2,LRBEDIA,"DIAGNOSIS")=LRBEDGX
|
---|
90 | . S ^TMP("LRPXAPI",$J,SUB2,LRBEDIA,"PRIMARY")=1
|
---|
91 | . F B=1:1:7 I $P(XX,U,B)'="" D
|
---|
92 | . . S BG=$$GETT(B)
|
---|
93 | . . I '$G(^TMP("LRPXAPI",$J,SUB2,LRBEDIA,BG)) S ^TMP("LRPXAPI",$J,SUB2,LRBEDIA,BG)=$P(XX,U,B)
|
---|
94 | . . ;collapse dx indicators into encounter node
|
---|
95 | . . I '$G(^TMP("LRPXAPI",$J,SUB1,1,$P(BG," ",2))) S ^TMP("LRPXAPI",$J,SUB1,1,$P(BG," ",2))=$P(XX,U,B)
|
---|
96 | ;set secondary dx in PCE array
|
---|
97 | S LRBEDGX=""
|
---|
98 | F S LRBEDGX=$O(DX(2,LRBEDGX)) Q:LRBEDGX="" D
|
---|
99 | . S LRBEDIA=$G(LRBEDIA)+1,XX=DX(2,LRBEDGX)
|
---|
100 | . S ^TMP("LRPXAPI",$J,SUB2,LRBEDIA,"DIAGNOSIS")=LRBEDGX
|
---|
101 | . F B=1:1:7 I $P(XX,U,B)'="" D
|
---|
102 | . . S BG=$$GETT(B)
|
---|
103 | . . I '$G(^TMP("LRPXAPI",$J,SUB2,LRBEDIA,BG)) S ^TMP("LRPXAPI",$J,SUB2,LRBEDIA,BG)=$P(XX,U,B)
|
---|
104 | . . ;collapse dx indicators into encounter node
|
---|
105 | . . I '$G(^TMP("LRPXAPI",$J,SUB1,1,$P(BG," ",2))) S ^TMP("LRPXAPI",$J,SUB1,1,$P(BG," ",2))=$P(XX,U,B)
|
---|
106 | Q
|
---|
107 | ;
|
---|
108 | GETT(X) ; Indicators for ^TMP
|
---|
109 | I '+X Q ""
|
---|
110 | Q "PL "_$S(X=1:"AO",X=2:"IR",X=3:"SC",X=4:"EC",X=5:"MST",X=6:"HNC",1:"CV")
|
---|
111 | ;
|
---|
112 | OPRES(LRBEAR,LRBEAR1,LRODT,LRSN,LRBEVST) ; Outpatient Final Resulting
|
---|
113 | ; Inputs:
|
---|
114 | ; LRBEDN - Data Number of Test in #63 field 400
|
---|
115 | ; LRBEAR(LRBEDFN,"VST") - Patient's Encounter Number #9000010
|
---|
116 | ; LRBEAR(LRBEDFN,"LRBEDGX",LRBEDN)
|
---|
117 | ; Piece Desc
|
---|
118 | ; 1 - Procedure (CPT)
|
---|
119 | ; 2 - Modifiers (Sub-delimited by "~")
|
---|
120 | ; 3 - Diagnosis
|
---|
121 | ; 4 - Diagnosis 2
|
---|
122 | ; 5 - Diagnosis 3
|
---|
123 | ; 6 - Diagnosis 4
|
---|
124 | ; 7 - Event D/T (DOS)
|
---|
125 | ; 8 - Encounter Provider
|
---|
126 | ; 9 - Ordering Provider
|
---|
127 | ; 10 - Quantity (Number of times procedure was performed)
|
---|
128 | ; 11 - Place of Service
|
---|
129 | ; Output:
|
---|
130 | ; LRBEAR1(VISIT,TST,LRBEPOV)=LRBEDGX
|
---|
131 | ; VISIT - Pointer to VISIT (9000010) file
|
---|
132 | ; TST - Ordered Test
|
---|
133 | ; LRBEPOV - Pointer to V POV (#9000010.07) file
|
---|
134 | ; LRBEDGX - Pointer to Diagnosis (#80)
|
---|
135 | ;
|
---|
136 | D INIT
|
---|
137 | N LRSWSTAT,LRSWDATE
|
---|
138 | S LRSWSTAT=$$SWSTAT^IBBAPI
|
---|
139 | S LRSWDATE=+$P(LRSWSTAT,U,2)
|
---|
140 | S LRSWSTAT=+$P(LRSWSTAT,U)
|
---|
141 | S SUB1="PROCEDURE"
|
---|
142 | I '$G(LRDBEDGX) D
|
---|
143 | . N LRX
|
---|
144 | . S (LRDBEDGX,LRX)=0
|
---|
145 | . F S LRX=$O(^LRO(69,LRODT,1,LRSN,2,LRX)) Q:LRX<1!($G(LRDBEDGX)) D
|
---|
146 | . . ;set a default diagnosis and sc/ei indicators
|
---|
147 | . . I $G(^LRO(69,LRODT,1,LRSN,2,LRX,2,1,0)) S LRDBEDGX=+^(0)
|
---|
148 | S LRBEDFN="" F S LRBEDFN=$O(LRBEAR(LRBEDFN)) Q:LRBEDFN="" D
|
---|
149 | . S LRI=0 F S LRI=$O(LRBEAR(LRBEDFN,"LRBEDGX",LRI)) Q:LRI<1 D
|
---|
150 | . . D OPWRK2
|
---|
151 | ;microbiology results sent to PCE in LRCAPPH1
|
---|
152 | I $P($G(^LRO(68,$G(LRAA),0)),U,2)'="MI" D SEND
|
---|
153 | Q
|
---|
154 | SEND ; Send if procedure is defined
|
---|
155 | N LRLNOW,LRVX,PXALOOK,PXUCV
|
---|
156 | I '$G(^TMP("LRPXAPI",$J,"PROCEDURE",1,"PROCEDURE")) G END
|
---|
157 | I $G(^XTMP("LRPCELOG",0)) D
|
---|
158 | . F S LRLNOW=$$NOW^XLFDT Q:'$D(^XTMP("LRPCELOG",1,LRLNOW))
|
---|
159 | . N LRACCX,LRUIDX
|
---|
160 | . S LRACCX=$G(LRACC),LRUIDX=$G(LRUID)
|
---|
161 | . M ^XTMP("LRPCELOG",2,LRLNOW)=^TMP("LRPXAPI",$J)
|
---|
162 | . S ^XTMP("LRPCELOG",2,LRLNOW,0)=LRACCX_U_LRUIDX
|
---|
163 | S LRVX=$$DATA2PCE^PXAPI(INROOT,LRPKG,SRC,.LRBEVSIT,USR,ERRDIS)
|
---|
164 | I $D(^XTMP("LRPCELOG",2,+$G(LRLNOW),0)) D
|
---|
165 | . S $P(^XTMP("LRPCELOG",2,+$G(LRLNOW),0),U,3,4)=LRVX_U_LRBEVSIT
|
---|
166 | . M ^XTMP("LRPCELOG",2,LRLNOW)=^TMP("LRPXAPI",$J)
|
---|
167 | I $G(LRBEVSIT) D SVST^LRBEBA3(LRBEVSIT,"PCE",LRODT,LRSN)
|
---|
168 | END K ^TMP("LRPXAPI",$J),LRBETNUM
|
---|
169 | Q
|
---|
170 | ;
|
---|
171 | OPWRK2 ; Outpatient Work Two
|
---|
172 | K LRBEPTDT
|
---|
173 | S LRBEDN=0 F S LRBEDN=+$O(LRBEAR(LRBEDFN,"LRBEDGX",LRI,LRBEDN)) Q:LRBEDN<1 D OPWRK3
|
---|
174 | Q
|
---|
175 | OPWRK3 ;
|
---|
176 | N JJ
|
---|
177 | S LRBEPTDT=$G(LRBEAR(LRBEDFN,"LRBEDGX",LRI,LRBEDN))
|
---|
178 | Q:'($L(LRBEPTDT))
|
---|
179 | I '$P(LRBEPTDT,U,3) D
|
---|
180 | .S $P(LRBEPTDT,U,3)=LRDBEDGX
|
---|
181 | .S JJ=$O(^TMP("LRPXAPI",$J,"DX/PL",99),-1)+1
|
---|
182 | .S ^TMP("LRPXAPI",$J,"DX/PL",JJ,"DIAGNOSIS")=LRDBEDGX
|
---|
183 | .I JJ=1 S ^TMP("LRPXAPI",$J,"DX/PL",JJ,"PRIMARY")=1
|
---|
184 | .E S ^TMP("LRPXAPI",$J,"DX/PL",JJ,"PRIMARY")=0
|
---|
185 | S LRBETNUM=$G(LRBETNUM)+1,LRBEIEN=LRSN_","_LRODT_","
|
---|
186 | I $P(LRBEPTDT,U,1)'="" D
|
---|
187 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"PROCEDURE")=$P(LRBEPTDT,U,1)
|
---|
188 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"QTY")=1
|
---|
189 | I $P(LRBEPTDT,U,2)'="" D
|
---|
190 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"MODIFIERS",$P(LRBEPTDT,U,2))=""
|
---|
191 | I $P(LRBEPTDT,U,3)'="" D
|
---|
192 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"DIAGNOSIS")=$P(LRBEPTDT,U,3)
|
---|
193 | I $P(LRBEPTDT,U,4)'="" D
|
---|
194 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"DIAGNOSIS 2")=$P(LRBEPTDT,U,4)
|
---|
195 | I $P(LRBEPTDT,U,5)'="" D
|
---|
196 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"DIAGNOSIS 3")=$P(LRBEPTDT,U,5)
|
---|
197 | I $P(LRBEPTDT,U,6)'="" D
|
---|
198 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"DIAGNOSIS 4")=$P(LRBEPTDT,U,6)
|
---|
199 | I $P(LRBEPTDT,U,7)'="" D
|
---|
200 | . N LRBETM S LRBETM=$P(LRBEPTDT,U,7)
|
---|
201 | . S LRBETM=$$PCETM(LRBETM)
|
---|
202 | . S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"EVENT D/T")=LRBETM
|
---|
203 | I $P(LRBEPTDT,U,8)'="" D
|
---|
204 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"ENC PROVIDER")=$P(LRBEPTDT,U,8)
|
---|
205 | I $P(LRBEPTDT,U,9)>0 D
|
---|
206 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"ORD PROVIDER")=$P(LRBEPTDT,U,9)
|
---|
207 | I $P(LRBEPTDT,U,10)'="" D
|
---|
208 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"QTY")=$P(LRBEPTDT,U,10)
|
---|
209 | I $P(LRBEPTDT,U,12)'="" D
|
---|
210 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"DIAGNOSIS 5")=$P(LRBEPTDT,U,12)
|
---|
211 | I $P(LRBEPTDT,U,13)'="" D
|
---|
212 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"DIAGNOSIS 6")=$P(LRBEPTDT,U,13)
|
---|
213 | I $P(LRBEPTDT,U,14)'="" D
|
---|
214 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"DIAGNOSIS 7")=$P(LRBEPTDT,U,14)
|
---|
215 | I $P(LRBEPTDT,U,15)'="" D
|
---|
216 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"DIAGNOSIS 8")=$P(LRBEPTDT,U,15)
|
---|
217 | I $P(LRBEPTDT,U,16)'="" D
|
---|
218 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"ORD REFERENCE")=$P(LRBEPTDT,U,16)
|
---|
219 | I LRSWSTAT,($P(LRBETM,".")'<LRSWDATE) D
|
---|
220 | .S ^TMP("LRPXAPI",$J,"PROCEDURE",LRBETNUM,"DEPARTMENT")=108
|
---|
221 | I $P(LRBEPTDT,U,20)'="" D
|
---|
222 | .S ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"QTY")=$P(LRBEPTDT,U,20)
|
---|
223 | I $G(^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"DIAGNOSIS"))=0 K ^TMP("LRPXAPI",$J,SUB1,LRBETNUM,"DIAGNOSIS")
|
---|
224 | Q
|
---|
225 | ;
|
---|
226 | INIT ;Setup PCE variables
|
---|
227 | S INROOT="^TMP(""LRPXAPI"",$J)"
|
---|
228 | I '$G(LRPKG) D Q:'$G(LRPKG)
|
---|
229 | . S X="LAB SERVICE",DIC="^DIC(9.4,",DIC(0)="Z" D ^DIC
|
---|
230 | . I Y S LRPKG=+Y
|
---|
231 | S SRC="LAB DATA",USR=DUZ,(LRBETNUM,ERRDIS)=0
|
---|
232 | K DIC
|
---|
233 | Q
|
---|
234 | PCETM(LRBETM) ;Return date/time without seconds
|
---|
235 | N PCETM
|
---|
236 | S LRBETM=$G(LRBETM)
|
---|
237 | Q:'LRBETM LRBETM
|
---|
238 | S PCETM=$E($P(LRBETM,".",2),1,4)
|
---|
239 | F Q:($L(PCETM)=4) S PCETM=PCETM_0
|
---|
240 | I PCETM>2359 S PCETM=2359
|
---|
241 | I $E(PCETM,3,4)>59 S PCETM=$E(PCETM,1,2)_59
|
---|
242 | I 'PCETM S PCETM="0001"
|
---|
243 | S $P(LRBETM,".",2)=PCETM
|
---|
244 | Q LRBETM
|
---|