1 | LAMIVTLP ;DALISC/PAC - VITEK MICRO DATA LITERAL PARSER; 5-24-95;
|
---|
2 | ;;5.2;AUTOMATED LAB INSTRUMENTS;**12,35**;Sep 27, 1994
|
---|
3 | ;Parses the literal data stream and calls LAMIVTLU
|
---|
4 | ;to stuff data in the LAH for verification
|
---|
5 | ;***** LOCAL PATCH *****
|
---|
6 | LA1 S LANM=$T(+0),TSK=$O(^LAB(62.4,"C",LANM,0)) Q:TSK<1
|
---|
7 | Q:'$D(^LA(TSK,"I",0))
|
---|
8 | K LATOP D ^LASET Q:'TSK S LROVER=1,X="TRAP^"_LANM,@^%ZOSF("TRAP")
|
---|
9 | S MTRSL="mtrsl|",RT="rt",PI="pi",CI="ci",SI="si",ZZ="zz",U="^"
|
---|
10 | S LABUG="o2",LADRUG="a2",LAMIC="a3",A4="a4"
|
---|
11 | ; FIELD HIEARCHY = "pi^si^ci^rt^zz"
|
---|
12 | S LABGNODE="o1",LANTIB="a1",LACOUNT=0
|
---|
13 | K ^TMP("VITEK") ;S LAFIN=0
|
---|
14 | LA2 K LAIN,LAPD,LASI,LART,LACI,LARTX
|
---|
15 | S TOUT=0,LAIN=0,LASUM=0,ERR=0
|
---|
16 | ;Q:LAFIN=2
|
---|
17 | D IN G QUIT:TOUT,LA2:$E(IN,1,6)'=MTRSL
|
---|
18 | I IN["TEST PATTERN" G LA2
|
---|
19 | D AGAIN G:ERR LA2
|
---|
20 | D PARSE G:'$G(LACI(CI)) LA2
|
---|
21 | I $D(^LA("VITEK")) D DEBUG^LAMIVTLC
|
---|
22 | S ID=LACI(CI) ;G:$L(ID)<9 LA2
|
---|
23 | ;----------------------------------------------------------------
|
---|
24 | ; Entered to accomadate file 60 prefix field
|
---|
25 | ; point to micro det-up file
|
---|
26 | ; chk accn also
|
---|
27 | S:$D(^LAB(61.38,1,1)) LRPREFIX=^(1)
|
---|
28 | I $G(LRPREFIX)=1 D
|
---|
29 | . I '$D(^LRO(68,WL,1,LADT,1,ID)) D
|
---|
30 | .. I $L(ID)=6 S ID=+$E(ID,2,6)
|
---|
31 | LA3 S DHZGEN="S LOG=+ID D LOG^LAMIVTLG" S IDE=+ID
|
---|
32 | S LROVER=0
|
---|
33 | X DHZGEN G LA2:'ISQN ;Can be changed by the cross-link code
|
---|
34 | D ^LAMIVTLC
|
---|
35 | ;CREATE^LAMIVTLC (DAVID'S RTN)
|
---|
36 | G LA2
|
---|
37 | AGAIN ;store records in array
|
---|
38 | ;K LAHARCHY
|
---|
39 | READ ;
|
---|
40 | S LAIN=LAIN+1
|
---|
41 | S LAIN(LAIN)=IN S LASUM=LASUM+$$CHK(IN)
|
---|
42 | I IN["~]" D IN D Q
|
---|
43 | .S LAHEX=$$HEX(LASUM)
|
---|
44 | .S LAHEX=$E(LAHEX,$L(LAHEX)-1,$L(LAHEX))
|
---|
45 | .;D:LAHEX'[$E(IN,1,2) ERR("CHECKSUM") ;TAKEOFFLATER
|
---|
46 | D IN G AGAIN ;READ ;W !,"READ" G READ
|
---|
47 | PARSE ;create separate arrays pat demographics, tests, results, etc.
|
---|
48 | S TERM=0,INT="",FIN=0,II=1,END=0
|
---|
49 | S INT=INT_LAIN(II)
|
---|
50 | S INT=$P(INT,MTRSL,2) ;D ADD
|
---|
51 | K LAPD,LASI,LACI,LARTX,LART
|
---|
52 | ;K LAPD pat demographics
|
---|
53 | PID D PD(INT,SI) D ADD G:'TERM&('END) PID
|
---|
54 | Q:END ;K LASI ;-> specimen demographics
|
---|
55 | SID D SI(INT,CI) D ADD G:'TERM&('END) SID
|
---|
56 | Q:END ;K LACI ;->culture demographics
|
---|
57 | CID D CI(INT,RT) D ADD G:'TERM&('END) CID
|
---|
58 | Q:END ;K LARTX,LART ;->results and other fields
|
---|
59 | RTD D RT(INT,ZZ) D ADD G:'TERM&('END) RTD
|
---|
60 | Q:END
|
---|
61 | G:'FIN!('TERM) RTD
|
---|
62 | Q
|
---|
63 | ADD ;
|
---|
64 | I END QUIT
|
---|
65 | I FIN,INT["|zz|" Q
|
---|
66 | I LAIN>II D
|
---|
67 | . S II=II+1
|
---|
68 | . I $L(INT)<160 S INT=$TR(INT,"~^")_LAIN(II) Q
|
---|
69 | . I INT["~^" S INT=$TR(INT,"~^")_LAIN(II) Q
|
---|
70 | . S INT=$TR(INT,"~^")_LAIN(II)
|
---|
71 | S FIN=II=LAIN
|
---|
72 | Q
|
---|
73 | PD(INPD,DELIM) ; patient demographics
|
---|
74 | S TERM=0
|
---|
75 | F J=1:1:$L(INPD,"|")-1 D Q:TERM!(END)
|
---|
76 | . S LAPD=$$BLANKS($P(INPD,"|",J))
|
---|
77 | . S:$E(LAPD,1,2)=DELIM TERM=1 D
|
---|
78 | . . S LAPD=$P(INPD,"|",J) S:LAPD=ZZ END=1
|
---|
79 | . . Q:$L(LAPD)<3
|
---|
80 | . . S LAPD($E(LAPD,1,2))=$E(LAPD,3,$L(LAPD))
|
---|
81 | S INT=$S(INPD[LAPD:$P(INPD,LAPD_"|",2),1:INPD)
|
---|
82 | Q
|
---|
83 | SI(INSD,DELIM) ; specimen demographics
|
---|
84 | S TERM=0
|
---|
85 | F J=1:1:$L(INSD,"|")-1 S:$E($P(INSD,"|",J),1,2)=DELIM TERM=1 Q:TERM!(END) D
|
---|
86 | .S LASI=$$BLANKS($P(INSD,"|",J)) S:LASI=ZZ END=1 Q:END I LASI'="" D
|
---|
87 | . .Q:$L(LASI)<3
|
---|
88 | . .S LASI($E(LASI,1,2))=$E(LASI,3,$L(LASI))
|
---|
89 | S INT=$S(INSD[LASI:$P(INSD,LASI_"|",2),1:INSD)
|
---|
90 | Q
|
---|
91 | CI(INTD,DELIM) ; exam info, id etc
|
---|
92 | S TERM=0
|
---|
93 | F J=1:1:$L(INTD,"|")-1 S:$E($P(INTD,"|",J),1,2)=DELIM TERM=1 Q:TERM!(END) D
|
---|
94 | . S LACI=$$BLANKS($P(INTD,"|",J)) S:LACI=ZZ END=1
|
---|
95 | . I LACI'="",$E(LACI)'="~" D
|
---|
96 | . .Q:$L(LACI)<3
|
---|
97 | . .S LACI($E(LACI,1,2))=$E(LACI,3,$L(LACI))
|
---|
98 | S INT=$S(INTD[LACI:$P(INTD,LACI_"|",2),1:INTD)
|
---|
99 | Q
|
---|
100 | RT(INTR,DELIM) ; results including tests organism, drugs etc.
|
---|
101 | S TERM=0 S L=$L(INTR,"|") ;S:INTR["~]" FIN=1
|
---|
102 | F J=1:1:L S LART=$$BLANKS($P(INTR,"|",J)) S:$E(LART,1,2)=DELIM END=1 Q:END Q:LART["~" Q:LART="" D ;!($L(LART)<3) D
|
---|
103 | .I LART["," D COMMA Q
|
---|
104 | .Q:$L(LART)<3
|
---|
105 | .I $D(SC) I SC="a3"&($E(LART,1,2)="a1") D
|
---|
106 | ..S LARTX("a4")=$S($G(LARTX("a4")):LARTX("a4")+1,1:1)
|
---|
107 | ..S LART("a4",LARTX("a4"))=LART("a3",LARTX("a4"))
|
---|
108 | .S SC=$E(LART,1,2)
|
---|
109 | .S LARTX(SC)=$S($G(LARTX(SC)):LARTX(SC)+1,1:1)
|
---|
110 | .S LART(SC,LARTX(SC))=$E(LART,3,$L(LART))
|
---|
111 | S INT=$P(INTR,"|",J,L)
|
---|
112 | S:II=LAIN&(END) FIN=1
|
---|
113 | Q
|
---|
114 | COMMA I SC="rr" S LAMULTST=1 Q
|
---|
115 | I SC'="gn" Q
|
---|
116 | S GN=$L(LART,",") Q:GN'>1
|
---|
117 | F L=1:1:GN D
|
---|
118 | .S LARTGN=$P(LART,",",L)
|
---|
119 | .S LARTX(SC)=$S($G(LARTX(SC)):LARTX(SC)+1,1:1)
|
---|
120 | .S LART(SC,LARTX(SC))=$$BLANKS($E(LARTGN,3,$L(LARTGN)))
|
---|
121 | Q
|
---|
122 | IN S CNT=^LA(TSK,"I",0)+1
|
---|
123 | IF '$D(^LA(TSK,"I",CNT)) S TOUT=TOUT+1 Q:TOUT>9 H 10 G IN
|
---|
124 | ;S:TOUT>9 LAFIN=LAFIN+1 Q:TOUT>9 H 10 G IN
|
---|
125 | S ^LA(TSK,"I",0)=CNT,IN=^(CNT),TOUT=0
|
---|
126 | S ^TMP("VITEK",$J,CNT)=IN
|
---|
127 | Q
|
---|
128 | OUT S CNT=^LA(TSK,"O")+1,^("O")=CNT,^("O",CNT)=TSK_OUT
|
---|
129 | LOCK ^LA("Q") S Q=^LA("Q")+1,^("Q")=Q,^("Q",Q)=TSK LOCK
|
---|
130 | Q
|
---|
131 | CHK(XX) ;
|
---|
132 | N X,I S XX=$TR(XX,"^"),X=0
|
---|
133 | F I=1:1:$L(XX) D
|
---|
134 | .S X=X+$S($E(XX,I)="~":30,$E(XX,I)="]":29,1:$A(XX,I))
|
---|
135 | Q X
|
---|
136 | ;
|
---|
137 | QUIT I (^LA(TSK,"I")'=^LA(TSK,"I",0)) G LA2
|
---|
138 | I $D(^LA(TSK,"O",0)),^LA(TSK,"O")'=^LA(TSK,"O",0) G LA2
|
---|
139 | L ^LA(TSK) H 1
|
---|
140 | K ^LA(TSK),^LA("LOCK",TSK),^TMP($J),^TMP("LA",$J)
|
---|
141 | D KILL^%ZTLOAD
|
---|
142 | Q
|
---|
143 | TRAP D ^LABERR S T=TSK D SET^LAB G @("LA2^"_LANM) ;ERROR TRAP
|
---|
144 | ;
|
---|
145 | HEX(HEX) ;
|
---|
146 | Q:'$D(HEX) 0 Q:'(HEX?.N) "*ERROR" Q:'HEX 0
|
---|
147 | N LADN,LADD,LADH S LADN=HEX,LADH=""
|
---|
148 | L I LADN'=0 D S LADH=LADD_LADH G L
|
---|
149 | .S LADD=LADN#16,LADN=LADN\16 Q:LADD<10 S LADD=$C($A("a")+LADD-10)
|
---|
150 | Q LADH
|
---|
151 | ERR(ERTYPE) ;
|
---|
152 | N LL
|
---|
153 | F LL=CNT-LAIN:1:CNT D
|
---|
154 | .S ^TMP("LA",ERTYPE_" ERR",$J,LL)=^LA(TSK,"I",LL)
|
---|
155 | S ^TMP("VITEK",LL)=LAHEX_U_LASUM_U_^LA(TSK,"I",LL)
|
---|
156 | S ERR=1
|
---|
157 | Q
|
---|
158 | BLANKS(XX) ;
|
---|
159 | N I,J
|
---|
160 | F I=$L(XX):-1:1 Q:$E(XX,I)'=" "
|
---|
161 | F J=1:1:$L(XX) Q:$E(XX,J)'=" "
|
---|
162 | Q $E(XX,J,I)
|
---|