1 | LRVER5 ;DALOI/CJS/DALOI/FHS - LAB ROUTINE DATA VERIFICATION ;2/7/91 12:04
|
---|
2 | ;;5.2;LAB SERVICE;**42,153,283,286**;Sep 27, 1994
|
---|
3 | ;
|
---|
4 | I $G(LRNDISP) D
|
---|
5 | . S LRNX=0
|
---|
6 | . N LRX F S LRNX=$O(LRORD(LRNX)) Q:LRNX<1 S LRX(LRORD(LRNX))=""
|
---|
7 | . S LRX=0 F S LRX=$O(LRSB(LRX)) Q:LRX<1 K:'$D(LRX(LRX)) LRSB(LRX),LRSA(LRX)
|
---|
8 | ;
|
---|
9 | ; Check for amended results that have arrived via an HL7 interface.
|
---|
10 | ; Only allow amended results to be verified during this session.
|
---|
11 | I $D(^LAH("LA7 AMENDED RESULTS",LRUID)) D
|
---|
12 | . S LRNX=0
|
---|
13 | . F S LRNX=$O(LRORD(LRNX)) Q:'LRNX I '$D(^LAH("LA7 AMENDED RESULTS",LRUID,LRORD(LRNX))) K LRORD(LRNX)
|
---|
14 | . S LRNX=0
|
---|
15 | . F S LRNX=$O(LRSB(LRNX)) Q:'LRNX I '$D(^LAH("LA7 AMENDED RESULTS",LRUID,LRNX)) K LRSB(LRNX),LRSA(LRNX)
|
---|
16 | ;
|
---|
17 | S LRNX=0,LRVRM=12
|
---|
18 | ;
|
---|
19 | V40 S LRNX=$O(LRORD(LRNX)) G V44:LRNX<1 D LRSUBS
|
---|
20 | ;
|
---|
21 | ; Check if changing performing lab.
|
---|
22 | I $P($G(LRSB(LRSB)),"^",9),'$$PLOK^LRVERA($P(LRSB(LRSB),"^",9),$G(LRDUZ(2)),DUZ(2),LRTS) G V40
|
---|
23 | ;
|
---|
24 | D V25
|
---|
25 | ;
|
---|
26 | V42 ;
|
---|
27 | ;
|
---|
28 | S (LRDL,SX,X)=$P($G(LRSB(LRSB)),U),LRDVF=0,LREDIT=0
|
---|
29 | S:X=""&(LRDV'="") X=LRDV,LRDVF=1 ; default value
|
---|
30 | S LRTEST=$P(^LAB(60,LRTS,0),U)
|
---|
31 | K LRNOVER(LRSB)
|
---|
32 | ;
|
---|
33 | Q42 ;
|
---|
34 | ;
|
---|
35 | ; Check for amended results that have arrived via an HL7 interface.
|
---|
36 | I $D(^LAH("LA7 AMENDED RESULTS",LRUID,LRSB)) D G:SX'=X!($G(LRAMEND(LRSB))) V45
|
---|
37 | . W !,LRTEST," " W:X'="" @LRFP
|
---|
38 | . D AMEND Q:$G(LRAMEND(LRSB))
|
---|
39 | . I SX=X W !,LRTEST," " W:X'="" @LRFP
|
---|
40 | ;
|
---|
41 | ; If entering results from a reference lab and not using normal/units
|
---|
42 | ; from file #60 then ask user for these values otherwise display
|
---|
43 | ; current file #60 values.
|
---|
44 | I $G(LRDUZ(2)),LRDUZ(2)'=DUZ(2) D
|
---|
45 | . I $G(^LAB(60,+LRTS,1,+$G(LRSPEC),.1)) D Q
|
---|
46 | . . D V25
|
---|
47 | . . W !!,"Current Ref Range: ",LRNG2,"-",LRNG3," Units: ",$P(LRNG,"^",7)
|
---|
48 | . . I LRNG4="",LRNG5="" Q
|
---|
49 | . . W !," Critical Low: ",LRNG4," Critical High: ",LRNG5
|
---|
50 | . N LRX,LRY
|
---|
51 | . D ASKPLNR,NORM
|
---|
52 | . S LRX=$P(LRNGS,"^",2,5),LRX=$TR(LRX,"^","!")
|
---|
53 | . S LRY=$P($G(LRSB(LRSB)),"^",5),$P(LRY,"!",2,5)=LRX
|
---|
54 | . S $P(LRSB(LRSB),"^",5)=LRY
|
---|
55 | ;
|
---|
56 | W !,LRTEST," " W:X'="" @LRFP
|
---|
57 | R "//",X:DTIME
|
---|
58 | I X'?.ANP W $C(7)," No Control Characters allowed." G V42
|
---|
59 | S:$L($G(SX))&(X="") X=SX,LRDVF=1
|
---|
60 | S LRDL=X I X=""&LRDVF S (LRD,X)=LRDV G V45
|
---|
61 | Q43 G V40:X="",V45:X'["^",V44:X="^",LROUT:X="^^"
|
---|
62 | ;
|
---|
63 | V43 S X=$P(X,U,2),DIC="^LAB(60,",DIC(0)="EOQZ" D ^DIC G:Y<1 Q42
|
---|
64 | S LRPLOC=$P(Y(0),U,5),LRSSQ=$P(LRPLOC,";",1),LRSB=$P(LRPLOC,";",2),LRTS=+Y
|
---|
65 | I LRSSQ="" W !,"Not in this group" G LROUT
|
---|
66 | I LRSS'=LRSSQ!'$D(^TMP("LR",$J,"TMP",LRSB)) W !,"Not in this group" G LROUT
|
---|
67 | S LRNX=0
|
---|
68 | F S LRNX=$O(LRORD(LRNX)) Q:LRNX<1 Q:LRSB=LRORD(LRNX)
|
---|
69 | I LRNX,LRSB=LRORD(LRNX) D LRSUBS,V25 G V42
|
---|
70 | ;
|
---|
71 | V44 K SX
|
---|
72 | D COM^LRVER4
|
---|
73 | S LRNUF=1 S:LRVF LRSA=1
|
---|
74 | Q
|
---|
75 | ;
|
---|
76 | V45 ;
|
---|
77 | K LRSKIP
|
---|
78 | I X="@" D G V46
|
---|
79 | . K:'$G(LRVF) ^LR(LRDFN,LRSS,LRIDT,LRSB)
|
---|
80 | . S X=$S($G(LRVF)&($D(LRSB(LRSB)))&('$D(LRM(LRSB))):"comment",$D(LRM(LRSB)):"pending",$D(LRSA(LRSB)):"canc",1:"")
|
---|
81 | . S $P(LRSB(LRSB),"^")=X,$P(LRSB(LRSB),"^",2)=""
|
---|
82 | ;
|
---|
83 | S LRXD=U_$P(^LAB(60,LRTS,0),U,12),LRXDP=LRXD_"0)",LRXDP=@LRXDP
|
---|
84 | X:'(X="*"!($E(X)="?")!(X="C")!(X="#")!(X="canc")!(X="pending")) $P(LRXDP,U,5,99)
|
---|
85 | I '$D(X)#2 D HELP G V42
|
---|
86 | I $D(X)#2,X["?" D HELP G:'($P(LRXDP,U,2)["S") V42
|
---|
87 | I $D(X)#2,$P(LRXDP,U,2)["S",X'="*",X'="#",X'="canc",X'="pending" D LRSET G:'$D(X)#2 V42
|
---|
88 | I $D(X)#2,X="C",$P(LRXDP,U,2)'["S" D COMP G V42
|
---|
89 | ;
|
---|
90 | V46 ;
|
---|
91 | G V42:'$D(X)#2
|
---|
92 | I LRVF,$D(LRSB(LRSB)),$D(LRSA(LRSB)) S LRSA(LRSB,1)=LRTEST
|
---|
93 | S X1=$S($D(^LR(LRDFN,LRSS,+LRLDT,LRSB)):$P(^(LRSB),U),1:"")
|
---|
94 | S:X="*" X="canc" S:X="#" X="comment"
|
---|
95 | ;
|
---|
96 | I '$G(LRAMEND(LRSB)) S LRFLG=""
|
---|
97 | S Y=0 X:LRDEL'="" LRDEL
|
---|
98 | I '$G(LRAMEND(LRSB)) D RANGE^LRVER4
|
---|
99 | ;
|
---|
100 | S:$P(X,U)="" $P(LRSB(LRSB),U)=""
|
---|
101 | I $P(X,U)'="" D
|
---|
102 | . S $P(LRSB(LRSB),U)=X,$P(LRSB(LRSB),U,2)=LRFLG
|
---|
103 | . S LRX=$$TMPSB^LRVER1(LRSB),LRY=$P(LRSB(LRSB),U,3)
|
---|
104 | . F I=1:1:$L(LRX,"!") I $P(LRY,"!",I)="" S $P(LRY,"!",I)=$P(LRX,"!",I)
|
---|
105 | . S $P(LRSB(LRSB),U,3)=LRY
|
---|
106 | . I $P($P(LRSB(LRSB),U,3),"!")="" D RONLT^LRVER3
|
---|
107 | . D
|
---|
108 | . . I '$D(LRSA(LRSB))#2 D Q
|
---|
109 | . . . S $P(LRSB(LRSB),U,4)=$S($G(LRDUZ):LRDUZ,1:$G(DUZ))
|
---|
110 | . . . S $P(LRSB(LRSB),U,9)=$S($G(LRDUZ(2)):LRDUZ(2),1:$G(DUZ(2)))
|
---|
111 | . . S:'$P(LRSB(LRSB),U,4) $P(LRSB(LRSB),U,4)=$S($G(LRDUZ):LRDUZ,1:$G(DUZ))
|
---|
112 | . S $P(LRSB(LRSB),U,5)=$TR(LRNGS,U,"!")
|
---|
113 | . S $P(LRSB(LRSB),U,9)=$S($G(LRDUZ(2)):LRDUZ(2),1:$G(DUZ(2)))
|
---|
114 | G:$D(LRNUF) V44 K LRNUF G V40:'$D(LRSKIP) S X=LRSKIP G Q43:X["^",V40
|
---|
115 | ;
|
---|
116 | ;
|
---|
117 | RANGE ;
|
---|
118 | S $P(LRSB(LRSB),"^")=X
|
---|
119 | ; If previous results from another laboratory then use normals and units
|
---|
120 | ; associated with those results.
|
---|
121 | D
|
---|
122 | . I $G(LRDUZ(2)),DUZ(2)'=LRDUZ(2) D PLNR^LRVR4 Q
|
---|
123 | . I $P(LRSB(LRSB),"^",9),DUZ(2)'=$P(LRSB(LRSB),"^",9) D PLNR^LRVR4
|
---|
124 | D RANGE^LRVER4
|
---|
125 | Q
|
---|
126 | ;
|
---|
127 | ;
|
---|
128 | LRSUBS ; From LRVR5
|
---|
129 | S LRSB=LRORD(LRNX),LRTS=$S($D(^TMP("LR",$J,"TMP",LRSB))#2:^(LRSB),1:0)
|
---|
130 | Q
|
---|
131 | ;
|
---|
132 | ;
|
---|
133 | LRSET ; from above and LRVR5
|
---|
134 | ;
|
---|
135 | N I,LRERR,RESULT
|
---|
136 | D CHK^DIE(63.04,LRSB,"EH",X,.RESULT,"LRERR")
|
---|
137 | ;
|
---|
138 | I RESULT'="^" S X=RESULT W " ",RESULT(0)
|
---|
139 | ;
|
---|
140 | I RESULT="^" D
|
---|
141 | . F I=1:1:LRERR("DIHELP") W !,LRERR("DIHELP",I)
|
---|
142 | . K X
|
---|
143 | ;
|
---|
144 | Q
|
---|
145 | ;
|
---|
146 | ;
|
---|
147 | COMP ; from LRVR5
|
---|
148 | S X="^%ET",@^%ZOSF("TRAP")
|
---|
149 | R !,"Enter your computation: ",C:DTIME
|
---|
150 | Q:"^"[C G CH:C="?"!(C["""") S C=$P(C," ",1)
|
---|
151 | S X="TRAP^LRVER5",@^%ZOSF("TRAP") D ^DIM S X="W "_C
|
---|
152 | I '$D(X)#2 W !,"Something's wrong with the syntax." G CH
|
---|
153 | F I=1:1:$L(C) I $E(C,I)?1A S I=.9 Q
|
---|
154 | G CH:I=.9,CH:C["/0",CH:C["\0" W !," equals ",@C G COMP
|
---|
155 | TRAP ;
|
---|
156 | W !!,"Error in your mathematical formular ",!
|
---|
157 | CH W !,"Enter for example: 5*2/4+1 and 3.5 will be returned [i.e. ((5*2)/4)+1=3.5]"
|
---|
158 | G COMP
|
---|
159 | ;
|
---|
160 | ;
|
---|
161 | V25 ; From LRVER4
|
---|
162 | N LRTX,LRX
|
---|
163 | S (LRDV,LRNG,LRDEL,LRNGS)=""
|
---|
164 | I '$D(^LAB(60,+LRTS,0))#2 Q
|
---|
165 | S LRX=+$P($P(^LAB(60,+LRTS,0),U,5),";",2)
|
---|
166 | S LRTX=$S($L($P(^LAB(60,+LRTS,0),U,5)):$O(^LAB(60,"C",$P(^LAB(60,+LRTS,0),U,5),0)),1:+LRTS)
|
---|
167 | S LRFP=$P(^LAB(60,LRTX,.1),U,3)
|
---|
168 | I LRFP="" S LRFP="$J(X,8)"
|
---|
169 | ;
|
---|
170 | ; Normal ranges, units, delta checks and default value
|
---|
171 | I $D(^LAB(60,LRTX,1,+$G(LRSPEC),0)) D
|
---|
172 | . S LRNG=^LAB(60,LRTX,1,+$G(LRSPEC),0)
|
---|
173 | . S LRDEL=$G(^LAB(62.1,+$P(LRNG,U,8),1))
|
---|
174 | . S LRDEL(1)=$G(^LAB(62.1,+$P(LRNG,U,8),2),"Q")
|
---|
175 | . S X2=$P(LRNG,U,9)
|
---|
176 | . S LRDV=$S('$D(LRSB(LRX)):$P(LRNG,U,10),1:"")
|
---|
177 | ;
|
---|
178 | ; When entering results from a reference lab check if flag to use normals/units from file 60.
|
---|
179 | I $G(LRDUZ(2)),LRDUZ(2)'=DUZ(2),'$G(^LAB(60,LRTX,1,+$G(LRSPEC),.1)) D PLNR^LRVR4
|
---|
180 | ;
|
---|
181 | NORM ;
|
---|
182 | I $G(SEX)="" S SEX="M"
|
---|
183 | I $G(AGE)="" S AGE=99
|
---|
184 | S LRNGS=LRNG
|
---|
185 | F LRX=2:1:5 D
|
---|
186 | . N LRY
|
---|
187 | . S LRY=$P(LRNG,"^",LRX)
|
---|
188 | . ; enclose in quotes if text or structured numeric
|
---|
189 | . I LRY'="",$E(LRY)?.(1A,1"<",1">") S LRY=$C(34)_LRY_$C(34)
|
---|
190 | . I LRY'="",$E(LRY)'=$C(34),LRY'?.N.1".".N S @("LRY"_"="_LRY)
|
---|
191 | . S $P(LRNG,"^",LRX)=LRY,$P(LRNGS,"^",LRX)=LRY,@("LRNG"_LRX)=LRY
|
---|
192 | Q
|
---|
193 | ;
|
---|
194 | ;
|
---|
195 | LROUT ;
|
---|
196 | K SX
|
---|
197 | S LROUT=1
|
---|
198 | Q
|
---|
199 | ;
|
---|
200 | ;
|
---|
201 | HELP W !," ??",$C(7) S LRXDH=LRXD_"3)"
|
---|
202 | W:$D(@LRXDH) " ",@LRXDH
|
---|
203 | W !,"Enter * to report ""canc"" for canceled."
|
---|
204 | W !,"Enter # to report ""comment""."
|
---|
205 | W:'($P(LRXDP,U,2)["S") !,"Enter C to enter calculate mode."
|
---|
206 | Q
|
---|
207 | ;
|
---|
208 | ;
|
---|
209 | AMEND ; Process amended results and prompt user
|
---|
210 | N LRANS,LRLL,LRSQ,LRROOT,LRX
|
---|
211 | ; flag to indicate if amended results have been extracted from LAH
|
---|
212 | S LRAMEND=0
|
---|
213 | ; save current value of X
|
---|
214 | S LRX=X
|
---|
215 | S LRROOT=$Q(^LAH("LA7 AMENDED RESULTS",LRUID,LRSB))
|
---|
216 | I LRROOT="" Q
|
---|
217 | I $QS(LRROOT,1)'="LA7 AMENDED RESULTS"!($QS(LRROOT,2)'=LRUID)!($QS(LRROOT,3)'=LRSB) Q
|
---|
218 | S LRLL=$QS(LRROOT,4),LRSQ=$QS(LRROOT,5)
|
---|
219 | I $D(^LAH(LRLL,1,LRSQ,LRSB)) D
|
---|
220 | . N DIR,DIRUT,DTOUT,DUOUT,LRJ,LRY,X,Y
|
---|
221 | . S LRY=^LAH(LRLL,1,LRSQ,LRSB)
|
---|
222 | . S DIR(0)="SOA^0:No;1:Yes;2:Keep but do not process",DIR("B")="Yes"
|
---|
223 | . S DIR("A",1)=" ",DIR("A",2)="Amended result: "_$P(LRY,"^")
|
---|
224 | . S DIR("A",2)=DIR("A",2)_" flag: "_$S($P(LRY,"^",2)'="":$P(LRY,"^",2),1:"None")
|
---|
225 | . S DIR("A",2)=DIR("A",2)_" units: "_$P($P(LRY,"^",5),"!",7)
|
---|
226 | . S DIR("A")="Accept amended results: "
|
---|
227 | . S DIR("?",1)="Answer with 0-No to not accept amended result and delete.",DIR("?",2)="1-Yes to process amended result.",DIR("?")="or 2-Keep which skips processing but leaves result for future processing."
|
---|
228 | . D ^DIR
|
---|
229 | . I $D(DIRUT) Q
|
---|
230 | . S LRANS=Y
|
---|
231 | . I LRANS=2 Q
|
---|
232 | . I LRANS=1 D
|
---|
233 | . . S LRX=$P(LRY,"^"),LRFLG=$P(LRY,"^",2),LRSB(LRSB)=LRY,LRJ=$P(LRY,"^",5)
|
---|
234 | . . F LRI=1,2,3,4,5,7,11,12 S $P(LRNG,"^",LRI)=$P(LRJ,"!",LRI)
|
---|
235 | . . S LRNGS=LRNG,(LRAMEND,LRAMEND(LRSB))=1
|
---|
236 | . . D LRSBCOM^LRVR4 ; also process any comments
|
---|
237 | . K ^LAH(LRLL,1,LRSQ,LRSB)
|
---|
238 | . K ^LAH("LA7 AMENDED RESULTS",LRUID,LRSB,LRLL,LRSQ)
|
---|
239 | . I +$O(^LAH(LRLL,1,LRSQ,1))<1 D ZAPALL^LRVR3(LRLL,LRSQ)
|
---|
240 | S X=LRX
|
---|
241 | Q
|
---|
242 | ;
|
---|
243 | ;
|
---|
244 | ASKPLNR ; Ask user for performing lab normal ranges and units when entering
|
---|
245 | ; manually and not using values from file #60.
|
---|
246 | N DA,DIR,DIROUT,DIRUT,DTOUT,DUOUT,LRI,LRJ,LRX,LRY,Y,X,Y
|
---|
247 | ;
|
---|
248 | S LRX=$P($G(LRSB(LRSB)),"^",5)
|
---|
249 | ;
|
---|
250 | W !!,"For test ",LRTEST
|
---|
251 | S DIR(0)="60.01,6"
|
---|
252 | I $P(LRX,"!",7)'="" S DIR("B")=$P(LRX,"!",7)
|
---|
253 | D ^DIR
|
---|
254 | I $D(DTOUT)!($D(DUOUT)) Q
|
---|
255 | ; Set units into component 7 of piece 5
|
---|
256 | S $P(LRX,"!",7)=Y,$P(LRSB(LRSB),"^",5)=LRX
|
---|
257 | ;
|
---|
258 | ; Ask normals - high/low and critical
|
---|
259 | K DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
|
---|
260 | F LRJ=1,2,3,4 D Q:$D(DTOUT)!($D(DUOUT))
|
---|
261 | . K DIR
|
---|
262 | . S DIR(0)="60.01,"_LRJ,LRI=LRJ+1
|
---|
263 | . I $P(LRX,"!",LRI)'="" D
|
---|
264 | . . S DIR("B")=$P(LRX,"!",LRI)
|
---|
265 | . . I $E(DIR("B"))=$C(34) Q
|
---|
266 | . . I DIR("B")'?.N.1".".N S DIR("B")=$C(34)_DIR("B")_$C(34) ; enclose in quotes if text
|
---|
267 | . D ^DIR
|
---|
268 | . I $D(DTOUT)!($D(DUOUT)) Q
|
---|
269 | . S $P(LRX,"!",LRI)=Y
|
---|
270 | ;
|
---|
271 | ; Ask user for normality in case user does not know high/low/critical.
|
---|
272 | S LRRFLAG(LRSB)=$$RFLAG^LRVERA($P($G(LRSB(LRSB)),"^",2))
|
---|
273 | ;
|
---|
274 | ; Update normal variable LRNG
|
---|
275 | I $P(LRX,"!")="" S $P(LRX,"!")=LRSPEC
|
---|
276 | F LRI=1,2,3,4,5,7 S $P(LRNG,"^",LRI)=$P(LRX,"!",LRI)
|
---|
277 | ;
|
---|
278 | Q
|
---|