1 | LA7VMSG ;DALOI/JMC - LAB ORU (Observation Result) message builder ; 12-12-96
|
---|
2 | ;;5.2;AUTOMATED LAB INSTRUMENTS;**27,50,56,46,64**;Sep 27, 1994
|
---|
3 | ;
|
---|
4 | ORU ; Bleed the ORU (Observation Result) message queue
|
---|
5 | ; Tasked by LRCAPV2
|
---|
6 | ;
|
---|
7 | N LA7MTYP
|
---|
8 | S LA7MTYP="ORU"
|
---|
9 | D START^LA7VMSG1
|
---|
10 | ;
|
---|
11 | Q
|
---|
12 | ;
|
---|
13 | ORR ; Bleed the ORR (Order Response) message queue
|
---|
14 | ; Called by LRWLST12
|
---|
15 | ;
|
---|
16 | N LA7MTYP
|
---|
17 | S LA7MTYP="ORR"
|
---|
18 | ;D START^LA7VMSG1
|
---|
19 | ;
|
---|
20 | Q
|
---|
21 | ;
|
---|
22 | ;
|
---|
23 | SET(LRUID,SITE,RUID,SITEN,ORD,LRNLT,LRIDT,LRSS,LRDFN,ORDT,LA7VCH,LA7MTYP) ; adds entries to LA7V QUEUE file
|
---|
24 | ; Called by LA7SRR, LRVER3, LRWLST12
|
---|
25 | ; variable list
|
---|
26 | ; LRUID - Host Unique ID from the local ACCESSION file (#68)
|
---|
27 | ; SITE - remote sites IEN in INSTITUTION file (#4)
|
---|
28 | ; RUID - Remote sites Unique ID from ACCESSION file (#68)
|
---|
29 | ; SITEN - Primary site number of remote site ($$SITE^VASITE)
|
---|
30 | ; ORD - Free text ordered test name from WKLD CODE file (#64)
|
---|
31 | ; LRNLT - National Laboratory test code from WKLD CODE file (#64)
|
---|
32 | ; LRIDT - Inverse date/time (accession date/time)
|
---|
33 | ; LRSS - test subscript defined in LABORATORY TEST file (#60)
|
---|
34 | ; LRDFN - IEN in LAB DATA file (#63)
|
---|
35 | ; ORDT - Order date
|
---|
36 | ; LA7VCH (Optional) - array of Chemistry results
|
---|
37 | ; ex. glucose LA7VCH(2)=LR NODE
|
---|
38 | ; LA7VCH(2,1)="C" (corrected results)
|
---|
39 | ; LA7MTYP (Optional) - Message Type (ORU or ORR) defaults to ORU
|
---|
40 | ;
|
---|
41 | N FDA,LA76248,LA76249,LA7DT,LA7FACID,LA7ERR,LA7RSITE,LA7Y,PORD,PORT,RSITE
|
---|
42 | ;
|
---|
43 | S LA7ERR=0
|
---|
44 | I $G(LA7MTYP)="" S LA7MTYP="ORU"
|
---|
45 | ; Currently not building ORR when accessioning - JMC/7/11/00
|
---|
46 | I LA7MTYP="ORR" Q
|
---|
47 | ;
|
---|
48 | ; Retrieve facility id (VA=station number, DoD=DMIS code, other=local site assigned id)
|
---|
49 | S LA7FACID=$$RETFACID^LA7VHLU2(SITEN,2,1),LA76248=0
|
---|
50 | S LA7RSITE="LA7V COLLECTION "_LA7FACID
|
---|
51 | S LA76248=$O(^LAHM(62.48,"B",LA7RSITE,0))
|
---|
52 | ; No entry in 62.48 - *** Need to add error logging ****
|
---|
53 | I 'LA76248 Q
|
---|
54 | I '$P(^LAHM(62.48,LA76248,0),"^",3) Q ; not active
|
---|
55 | ;
|
---|
56 | ; Create new outgoing entry in 62.49
|
---|
57 | S LA76249=$$INIT6249^LA7VHLU
|
---|
58 | I LA76249<1 D Q
|
---|
59 | . ; Log entry creation error
|
---|
60 | ;
|
---|
61 | ; Check/validate parameters before storing
|
---|
62 | ; If error store but flag entry with error status.
|
---|
63 | D CHKACC
|
---|
64 | ;
|
---|
65 | ; File data
|
---|
66 | S FDA(1,62.49,LA76249_",",1)="O"
|
---|
67 | S FDA(1,62.49,LA76249_",",.5)=LA76248
|
---|
68 | S FDA(1,62.49,LA76249_",",2)=$S(LA7ERR:"E",1:"P")
|
---|
69 | S FDA(1,62.49,LA76249_",",5)=LA7RSITE_"-O-"_RUID
|
---|
70 | S FDA(1,62.49,LA76249_",",108)=LA7MTYP
|
---|
71 | S FDA(1,62.49,LA76249_",",151)=LRUID
|
---|
72 | S FDA(1,62.49,LA76249_",",152)=SITEN
|
---|
73 | S FDA(1,62.49,LA76249_",",153)=RUID
|
---|
74 | S FDA(1,62.49,LA76249_",",154)=ORD
|
---|
75 | S FDA(1,62.49,LA76249_",",155)=LRNLT
|
---|
76 | S FDA(1,62.49,LA76249_",",156)=LRIDT
|
---|
77 | S FDA(1,62.49,LA76249_",",157)=LRSS
|
---|
78 | S FDA(1,62.49,LA76249_",",158)=LRDFN
|
---|
79 | S FDA(1,62.49,LA76249_",",159)=ORDT
|
---|
80 | ;
|
---|
81 | D FILE^DIE("","FDA(1)","LA7ERR(1)")
|
---|
82 | D CLEAN^DILF
|
---|
83 | ;
|
---|
84 | ; Add test to order
|
---|
85 | S LA7Y=0
|
---|
86 | F S LA7Y=$O(LA7VCH(LA7Y)) Q:'LA7Y D
|
---|
87 | . N FDAIEN
|
---|
88 | . S FDA(2,62.49162,"+2,"_LA76249_",",.01)=LA7Y
|
---|
89 | . I $G(LA7VCH(LA7Y,1))="C" S FDA(2,62.49162,"+2,"_LA76249_",",.02)="C"
|
---|
90 | . S FDAIEN(1)=LA76249
|
---|
91 | . D UPDATE^DIE("","FDA(2)","FDAIEN","LA7ERR(2)")
|
---|
92 | . D CLEAN^DILF
|
---|
93 | ;
|
---|
94 | ; Release lock on entry.
|
---|
95 | L -^LAHM(62.49,LA76249)
|
---|
96 | Q
|
---|
97 | ;
|
---|
98 | ;
|
---|
99 | CHKACC ; Check/validate parameters passed in before storing in file #62.49
|
---|
100 | ;
|
---|
101 | N I,LA763,LA768,LA7AA,LA7AD,LA7AN
|
---|
102 | ;
|
---|
103 | I $G(LRUID)="",$G(RUID)="" Q
|
---|
104 | I LRUID'="",'$D(^LRO(68,"C",LRUID)) D
|
---|
105 | . S LRUID=$G(RUID)
|
---|
106 | . I LRUID'="",'$D(^LRO(68,"C",LRUID)) S LRUID=""
|
---|
107 | I LRUID="" Q
|
---|
108 | ;
|
---|
109 | S I=$Q(^LRO(68,"C",LRUID)),(LA7AA,LA7AD,LA7AN)=0
|
---|
110 | I I'="",$QS(I,3)=LRUID S LA7AA=$QS(I,4),LA7AD=$QS(I,5),LA7AN=$QS(I,6)
|
---|
111 | F I=0,.2,.3,3 S LA768(I)=$G(^LRO(68,LA7AA,1,LA7AD,1,LA7AN,I))
|
---|
112 | ;
|
---|
113 | F I=0,"ORU" S LA763(I)=$G(^LR(LRDFN,LRSS,LRIDT,I))
|
---|
114 | ;
|
---|
115 | ; Mismatch on subscript with file #68
|
---|
116 | I LRSS'=$P(^LRO(68,LA7AA,0),"^",2) S LA7ERR=40 D CREATE^LA7LOG(LA7ERR)
|
---|
117 | ;
|
---|
118 | ; Mismatch on LRDFN with file #68
|
---|
119 | I LRDFN'=$P(LA768(0),"^") S LA7ERR=41 D CREATE^LA7LOG(LA7ERR)
|
---|
120 | ;
|
---|
121 | ; Mismatch on specimen inverse d/t with file #68
|
---|
122 | I LRIDT'=$P(LA768(3),"^",5) S LA7ERR=42 D CREATE^LA7LOG(LA7ERR)
|
---|
123 | ;
|
---|
124 | ; Mismatch on remote UID with file #68
|
---|
125 | I $G(RUID)'="",RUID'=$P(LA768(.3),"^",5) S LA7ERR=43 D CREATE^LA7LOG(LA7ERR)
|
---|
126 | ;
|
---|
127 | ; Mismatch on remote UID with file #63
|
---|
128 | I $G(RUID)'="",$P(LA763("ORU"),"^",5)'="",RUID'=$P(LA763("ORU"),"^",5) S LA7ERR=44 D CREATE^LA7LOG(LA7ERR)
|
---|
129 | ;
|
---|
130 | ; Mismatch on UID between file #63 and file #68
|
---|
131 | I $P(LA768(.3),"^")'="",$P(LA763("ORU"),"^")'="",$P(LA768(.3),"^")'=$P(LA763("ORU"),"^") S LA7ERR=45 D CREATE^LA7LOG(LA7ERR)
|
---|
132 | ;
|
---|
133 | Q
|
---|
134 | ;
|
---|
135 | ;
|
---|
136 | ACK ; ACKnowledgment message processor
|
---|
137 | ;
|
---|
138 | G ACK^LA7VHL
|
---|
139 | Q
|
---|
140 | ;
|
---|
141 | ;
|
---|
142 | TRIGGER(LRAA,LRAD,LRAN,LRTS) ; Call with LRTS by reference
|
---|
143 | ; LRTS array contains a list of verified test.
|
---|
144 | ; Sets the queue for out going messages. ^LAHM(62.49
|
---|
145 | ;
|
---|
146 | N ERR,LRDFN,LREND,LRIDT,LRNIEN,LRNLT,LRNLTN,LRODT,LRSS,LRTSX
|
---|
147 | N LRORU3,LRX
|
---|
148 | S LRDFN=+$G(^LRO(68,LRAA,1,LRAD,1,LRAN,0)),LRODT=+$P(^(0),U,4)
|
---|
149 | S LRIDT=$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,3)),U,5)
|
---|
150 | S LRSS=$P($G(^LRO(68,LRAA,0)),U,2)
|
---|
151 | S LRORU3=$G(^LRO(68,LRAA,1,LRAD,1,LRAN,.3))
|
---|
152 | Q:'$P($G(LRORU3),U,2)!('LRIDT)
|
---|
153 | Q:'$D(^LRO(68,LRAA,1,LRAD,1,LRAN,0))#2
|
---|
154 | ;
|
---|
155 | S LRX=0 F S LRX=$O(LRTS(LRX)) Q:'LRX D
|
---|
156 | . S LRNLT=+$G(^LAB(60,+LRTS(LRX),64)) Q:'LRNLT
|
---|
157 | . Q:'$D(^LAM(LRNLT,0))#2
|
---|
158 | . S LRNLTN=$P(^LAM(LRNLT,0),U),LRNLT=$P(^(0),U,2)
|
---|
159 | . Q:'LRNLT
|
---|
160 | . D SET($P(LRORU3,U,4),$P(LRORU3,U,2),$P(LRORU3,U,5),$P(LRORU3,U,3),LRNLTN,LRNLT,LRIDT,LRSS,LRDFN,LRODT,"","ORU")
|
---|
161 | Q
|
---|