1 | LAKDIFF ;DALOI/RWF - KEYBOARD DIFFERENTIAL COUNTER ;8/16/90 10:38
|
---|
2 | ;;5.2;AUTOMATED LAB INSTRUMENTS;**13,52**;Sep 27, 1994
|
---|
3 | ;
|
---|
4 | ; Cross link by id = accession
|
---|
5 | ;
|
---|
6 | LA1 ;
|
---|
7 | I '$D(LRPARAM) D ^LRPARAM
|
---|
8 | ;
|
---|
9 | D HOME^%ZIS
|
---|
10 | ;
|
---|
11 | S LANM=$T(+0),TSK=$O(^LAB(62.4,"C",LANM,0)),U="^"
|
---|
12 | I TSK<1 D Q
|
---|
13 | . W !,"Unable to find entry in AUTO INSTRUMENT file using ",LANM," as PROGRAM NAME"
|
---|
14 | . D QUIT
|
---|
15 | ;
|
---|
16 | W !!?20,"KEYPAD DIFF ENTRY",!!
|
---|
17 | ;
|
---|
18 | S LREND=0,LRTOP=$P(^LAB(69.9,1,1),U,1)
|
---|
19 | D ^LASET
|
---|
20 | I 'TSK D Q
|
---|
21 | . W $C(7),!!,"AUTO INSTRUMENT file is incompletly defined for the Keypad Diff."
|
---|
22 | . D QUIT
|
---|
23 | ;
|
---|
24 | I LALCT="N" D Q
|
---|
25 | . W $C(7),!!,"Field LOAD CHEM TESTS is configured incorrectly in AUTO INSTRUMENT File"
|
---|
26 | . W !,"Set it to either 'TC ARRAY' or 'TMP GLOBAL'."
|
---|
27 | . D QUIT
|
---|
28 | ;
|
---|
29 | K ^LA("LOCK",TSK)
|
---|
30 | ;
|
---|
31 | S DTIME=$$DTIME^XUP(DUZ)
|
---|
32 | S DT=$$DT^XLFDT
|
---|
33 | ;
|
---|
34 | D DISPLAY
|
---|
35 | I LREND D QUIT Q
|
---|
36 | ;
|
---|
37 | ; Select accession date to use
|
---|
38 | S LRAA=+$G(WL)
|
---|
39 | I LRAA<1 D QUIT Q
|
---|
40 | D ADATE^LRWU
|
---|
41 | I LREND D QUIT Q
|
---|
42 | ;
|
---|
43 | ; Get last accession used on this date if any
|
---|
44 | S LRAN=+$P($G(^LRO(68,LRAA,1,LRAD,2)),"^",4)
|
---|
45 | ;
|
---|
46 | I $P(LRPARAM,U,14),$P($G(^LRO(68,LRAA,0)),U,16) D ^LRCAPV
|
---|
47 | I LREND D QUIT Q
|
---|
48 | ;
|
---|
49 | D INT
|
---|
50 | ;
|
---|
51 | ; Setup screen and keyboard
|
---|
52 | S LAXGF=1 D PREP^XGF
|
---|
53 | ;
|
---|
54 | ; Set read terminator to <CR>. Otherwise problems in scroll&roll sections.
|
---|
55 | D INITKB^XGF($C(13))
|
---|
56 | ;
|
---|
57 | ; Turn on echo, cursor, keypad in numeric mode
|
---|
58 | X ^%ZOSF("EON") W IOCUON_IOKPNM
|
---|
59 | ;
|
---|
60 | ; Get code to erase entire display
|
---|
61 | S X="IOEDALL" D ENDR^%ZISS
|
---|
62 | ;
|
---|
63 | F D LA2 Q:LREND
|
---|
64 | D QUIT
|
---|
65 | ;
|
---|
66 | Q
|
---|
67 | ;
|
---|
68 | LA2 ;
|
---|
69 | N CUP,FLAG,I,ID,IDE,LADFN,LADT,LAOK,TRAY,TV,X,Y
|
---|
70 | ;
|
---|
71 | S RMK=""
|
---|
72 | F D WLN Q:LREND!(LAOK)
|
---|
73 | I LREND Q
|
---|
74 | S FLAG=0
|
---|
75 | ;
|
---|
76 | ; Save value of LRDFN, call to LAGEN sets it to 0
|
---|
77 | S LADFN=LRDFN
|
---|
78 | S (ID,LOG)=LRAN,IDE=0,LADT=LRAD
|
---|
79 | S TRAY=1,CUP=""
|
---|
80 | ;Can be changed by the cross-link code
|
---|
81 | X LAGEN
|
---|
82 | I 'ISQN D Q
|
---|
83 | . W !!,$C(7),"Unable to create entry in LAH global",!
|
---|
84 | ;
|
---|
85 | S LRDFN=LADFN
|
---|
86 | ;
|
---|
87 | D ^LAKDIFF1
|
---|
88 | I 'FLAG D ^LAKDIFF2
|
---|
89 | I FLAG Q
|
---|
90 | ;
|
---|
91 | S I=0
|
---|
92 | F S I=$O(TV(I)) Q:I<1 S:TV(I,1)]"" ^LAH(LWL,1,ISQN,I)=TV(I,1)
|
---|
93 | I $L($G(RMK)) D RMK^LASET
|
---|
94 | ;
|
---|
95 | D ^LAKDIFF3
|
---|
96 | Q
|
---|
97 | ;
|
---|
98 | WLN ; Select accession/patient to work with
|
---|
99 | N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
|
---|
100 | ;
|
---|
101 | S LAOK=0
|
---|
102 | S LRAN=$O(^LRO(68,LRAA,1,LRAD,1,LRAN))
|
---|
103 | I LRAN'>0 S LRAN="^"
|
---|
104 | S DIR(0)="NO^1:9999999:0^K:'$D(^LRO(68,LRAA,1,LRAD,1,X,0)) X"
|
---|
105 | S DIR("A")="Accession Number",DIR("B")=LRAN
|
---|
106 | S DIR("?")="Enter a valid accession number to enter DIFF results on."
|
---|
107 | D ^DIR
|
---|
108 | I $D(DIRUT) S LREND=1 Q
|
---|
109 | S LRAN=Y
|
---|
110 | ;
|
---|
111 | S LRDFN=+^LRO(68,LRAA,1,LRAD,1,LRAN,0),LRACC=$S($D(^(.2)):^(.2),1:"")
|
---|
112 | S LRODT=$S($P(^LRO(68,LRAA,1,LRAD,1,LRAN,0),U,4):$P(^(0),U,4),1:$P(^(0),U,3)),LRSN=$P(^(0),U,5)
|
---|
113 | S LRIDT=$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,3)),"^",5)
|
---|
114 | ;
|
---|
115 | S LRDPF=$P(^LR(LRDFN,0),U,2),DFN=$P(^(0),U,3)
|
---|
116 | D PT^LRX
|
---|
117 | ;
|
---|
118 | K DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
|
---|
119 | ;
|
---|
120 | S DIR(0)="YO"
|
---|
121 | S DIR("A",1)="Patient name: "_PNM_" SSN: "_SSN_" Acc: "_LRACC
|
---|
122 | S DIR("A")="Is this the correct patient"
|
---|
123 | S DIR("B")="YES"
|
---|
124 | D ^DIR
|
---|
125 | ;
|
---|
126 | I $D(DIRUT) S LREND=1 Q
|
---|
127 | I Y=1 S LAOK=1
|
---|
128 | Q
|
---|
129 | ;
|
---|
130 | INT ;
|
---|
131 | N I1,I2,I3,I4,LAI,LAJ,X
|
---|
132 | ;
|
---|
133 | K KEY
|
---|
134 | ;
|
---|
135 | I LALCT="T" D
|
---|
136 | . M ^TMP("LA",$J)=TC
|
---|
137 | . K TC
|
---|
138 | ;
|
---|
139 | S LAI=0
|
---|
140 | F S LAI=$O(^TMP("LA",$J,LAI)) Q:LAI'>0 D
|
---|
141 | . S LAJ=$S(LAI<30:"W",1:"R")
|
---|
142 | . S I3=^(LAI,3),I4=^(4),X=^(0)
|
---|
143 | . ;
|
---|
144 | . I $D(KEY(LAJ,I4)) D Q
|
---|
145 | . . W $C(7),!!,">> The same KEY (",I4,") is set for more than one TEST<<",!!,$C(7)
|
---|
146 | . ;
|
---|
147 | . S I1=$P(^LAB(60,X,.1),U,1),I2=+^(.2)
|
---|
148 | . S ^TMP("LA",$J,LAI,.1)=I1,^(.2)=I2
|
---|
149 | . S ^TMP($J,LAJ,LAI)=I4,KEY(LAJ,I4)=""
|
---|
150 | . I I3=2 S ^TMP($J,"NC",LAI)=""
|
---|
151 | Q
|
---|
152 | ;
|
---|
153 | DISPLAY ; Ask user if display should be updated on each key press
|
---|
154 | ;
|
---|
155 | N DIR,DIROUT,DIRUT,DTOUT,LAXPAR,X,Y
|
---|
156 | ;
|
---|
157 | ; Get stored value from parameter tool
|
---|
158 | S X=$$GET^XPAR("USR","LA KDIFF DISPLAY UPDATE",1,"E")
|
---|
159 | ;
|
---|
160 | I $L(X) S DIR("B")=X
|
---|
161 | E S DIR("B")="YES"
|
---|
162 | S DIR(0)="YO"
|
---|
163 | S DIR("A")="Update display on each key press"
|
---|
164 | D ^DIR
|
---|
165 | I $D(DIRUT) S LREND=1 Q
|
---|
166 | ;
|
---|
167 | S LAUPDATE=Y
|
---|
168 | ; Save parameter for future use
|
---|
169 | D EN^XPAR("USR","LA KDIFF DISPLAY UPDATE",1,Y,.LAXPAR)
|
---|
170 | Q
|
---|
171 | ;
|
---|
172 | QUIT ;
|
---|
173 | ;
|
---|
174 | I $D(ZTQUEUED) S ZTREQ="@"
|
---|
175 | ;
|
---|
176 | I $G(LAXGF) D
|
---|
177 | . D CLEAN^XGF
|
---|
178 | . D KILL^%ZISS
|
---|
179 | ;
|
---|
180 | S LREND=0
|
---|
181 | I $D(LRCSQ),'$O(^XTMP("LRCAP",LRCSQ,DUZ,0)) D
|
---|
182 | . K ^XTMP("LRCAP",LRCSQ,DUZ)
|
---|
183 | . K LRCSQ
|
---|
184 | ;
|
---|
185 | I $D(LRCSQ),$G(LRAA),$P($G(^LRO(68,+LRAA,0)),U,16) D STD^LRCAPV
|
---|
186 | ;
|
---|
187 | D STOP^LRCAPV
|
---|
188 | D ^LRGVK
|
---|
189 | ;
|
---|
190 | K %,ACK,ASK,BASE,C,CENUM,CHK,CNT,CODE,CONT,CUP,DA,DATYP,DFN,DONE,DPF,ECHOALL,ER,FLAG,HDR,HOME,HRD,I,I1,I3,I4,ID,IDE,IDENT,IDT,IN,ISQN,J,K,KEY,L,LAGEN,LACT,LALCT,LANM,LAUPDATE,LAXGF,LINE
|
---|
191 | K LINK,LOG,LRAA,LRACC,LRAD,LRAN,LRDFN,LRDPF,LRDY,LREND,LRIDT,LRIO,LRLL,LRODT,LROVER,LRPGM,LRSET,LRSN,LRSUBS,LRTIME,LRTOP,LRTST,LWL,M,METH,NAK,NC,NOW,OUT,PNM,Q,RMK,RT,SS
|
---|
192 | K SSN,STORE,T,T1,T2,TC,TEMP,TOTAL,TOUT,TP,TQ,TRAP,TRAY,TRY,TSK,TV,TY,TYPE,V,WDT,WL,X,Y,YY,Z,ZTSK
|
---|
193 | ;
|
---|
194 | K ^TMP($J),^TMP("LA",$J),^TMP("LR",$J)
|
---|
195 | Q
|
---|
196 | ;
|
---|
197 | TRAP ; Error Trap
|
---|
198 | D ^LABERR
|
---|
199 | S T=TSK D SET^LAB
|
---|
200 | G @("LA2^"_LANM)
|
---|