1 | LA7UTIL ;DALISC/JRR - Utilities for Messenger
|
---|
2 | ;;5.2;AUTOMATED LAB INSTRUMENTS;**17,42**;Sep 27, 1994
|
---|
3 | CPT(X) N LA7,LA7CNT,Y
|
---|
4 | K ^TMP("LA",$J) S LA7CNT=0
|
---|
5 | F LA7=0:0 S LA7=$O(^LAB(64.4,LA7)) Q:'LA7 D
|
---|
6 | . I ^LAB(64.4,LA7,0)[X S LA7CNT=LA7CNT+1 S ^TMP("LA",$J,LA7CNT)=LA7
|
---|
7 | . ;KAT ADDED FULL GLOBAL REFERENCE ^LAB(64.4,LA7,0) VS ^(LA7,0)
|
---|
8 | I '$O(^TMP("LA",$J,0)) W " ???" K X,LA7,^TMP("LA",$J) QUIT
|
---|
9 | S X=""
|
---|
10 | F LA7=0:0 S LA7=$O(^TMP("LA",$J,LA7)) Q:'LA7 D Q:X!(LA7="")
|
---|
11 | . S LA7(0)=^LAB(64.4,^TMP("LA",$J,LA7),0)
|
---|
12 | . W !,?5,$J("("_LA7_") ",6),$P(LA7(0),"^"),?22,$TR($P(LA7(0),"^",2,99),"^"," ")
|
---|
13 | . I (LA7#10=0)!('$O(^TMP("LA",$J,LA7))) D
|
---|
14 | . . K DIR S DIR(0)="NOA^0:"_LA7,DIR("A")="Select [1-"_LA7_"]: "
|
---|
15 | . . D ^DIR
|
---|
16 | . . I X!$D(DUOUT)!$D(DTOUT) S LA7=""
|
---|
17 | I X S X=$P(^LAB(64.4,^TMP("LA",$J,X),0),"^")
|
---|
18 | I 'X K X
|
---|
19 | K DIR,DTOUT,DUOUT,^TMP("LA",$J)
|
---|
20 | QUIT
|
---|
21 | ;
|
---|
22 | BU2 N J,S1,T,X
|
---|
23 | S (J,S1)=0,(T,X)=LA7
|
---|
24 | D TREE
|
---|
25 | QUIT
|
---|
26 | TREE I '$D(^LAB(60,X,0)) Q ;BAD LRTEST NUMBER;
|
---|
27 | I $P(^LAB(60,X,0),U,5)]"",$D(^TMP("LA7TREE",$J,X,X)) S ^TMP("LA7TREE",$J,T,X)=^TMP("LA7TREE",$J,X,X)
|
---|
28 | ;KAT ADDED FULL GLOBAL REFERENCE ^LAB(60,X,0) VS $P(^(0),U,5)
|
---|
29 | Q:'$D(^LAB(60,X,2,0)) Q:$O(^(0))<1 ;NOT A PANEL
|
---|
30 | S S1=S1+1,S1(S1)=X,J1(S1)=J
|
---|
31 | F J=0:0 S J=$O(^LAB(60,S1(S1),2,J)) Q:J<1 S X=^(J,0) D TREE
|
---|
32 | S J=J1(S1),X=S1(S1),S1=S1-1
|
---|
33 | Q
|
---|
34 | UNWIND(LA760) ;unwind one panel, calls itself recursively to unwind all
|
---|
35 | ;panels within other panels. Returns all atomic tests in ^TMP global.
|
---|
36 | ;Calling routine is responsible for killing ^TMP("LA7TREE" before and
|
---|
37 | ;after the call.
|
---|
38 | Q:$G(LA7TREEN)>999 ;recursive panel, caught in loop
|
---|
39 | Q:'$D(^LAB(60,LA760,0))
|
---|
40 | S ^TMP("LA7TREE",$J,LA760)=""
|
---|
41 | S LA7TREEN=$G(LA7TREEN)+1
|
---|
42 | Q:'$D(^LAB(60,LA760,2,0)) Q:$O(^(0))<1
|
---|
43 | N I,II
|
---|
44 | F I=0:0 S I=$O(^LAB(60,LA760,2,I)) Q:'I D
|
---|
45 | . S II=+$G(^LAB(60,LA760,2,I,0)) I II D UNWIND(II)
|
---|
46 | QUIT
|
---|
47 | PRETTY(LA76249) ;Store an HL7 message text in pretty print format, stored in
|
---|
48 | ;^TMP("LA7PRETTY",$J,. Required variable is LA76249 = pointer to
|
---|
49 | ;^LAHM(62.49), passed as parameter.
|
---|
50 | ;
|
---|
51 | K ^TMP("LA7PRETTY",$J)
|
---|
52 | Q:'$D(^LAHM(62.49,LA76249,0))
|
---|
53 | Q:'$D(^LAHM(62.49,LA76249,150,1,0))
|
---|
54 | N LA7,LA7624,LA7FS,LA7INST,X,Y,Z,%
|
---|
55 | S LA7=$P(^LAHM(62.49,LA76249,0),"^",2)
|
---|
56 | S LA7FS=$E($G(^LAHM(62.49,LA76249,150,1,0)),4)
|
---|
57 | S:LA7FS="" ^TMP("LA7PRETTY",$J,2)="<Bad Message Header>"
|
---|
58 | Q:LA7FS=""
|
---|
59 | G:LA7="O" PRETOUT
|
---|
60 | G:LA7="I" PRETIN
|
---|
61 | QUIT
|
---|
62 | PRETIN S ^TMP("LA7PRETTY",$J,1)="Result received from "
|
---|
63 | S LA7INST=$P(^LAHM(62.49,LA76249,0),"^",6)
|
---|
64 | I LA7INST="" D
|
---|
65 | . F LA7=0:0 S LA7=$O(^LAHM(62.49,LA76240,150,LA7)) Q:LA7="" D
|
---|
66 | . . S Z=$G(^LAHM(62.49,LA76249,150,LA7,0))
|
---|
67 | . . Q:Z=""!($E(Z,1,3)'="OBR")
|
---|
68 | . . S LA7INST=$P(Z,LA7FS,19)
|
---|
69 | S ^LAHM(62.49,LA76240,150,1)=^TMP("LA7PRETTY",$J,1)_LA7INST
|
---|
70 | ;KAT ADDED ^LAHM(62.49,LA76240,150,LA7 VS ^(1)
|
---|
71 | S Y=$P(^LAHM(62.49,LA76249,0),"^",5)
|
---|
72 | D DD^%DT
|
---|
73 | S ^LAHM(62.49,LA76249,1)=^TMP("LA7PRETTY",$J,1)_", "_Y
|
---|
74 | ;KAT ADDED ^LAHM(62.49,LA76249 VS ^(1)
|
---|
75 | S LA7624=$O(^LAB(62.4,"B",LA7INST,0))
|
---|
76 | F LA7=0:0 S LA7=$O(^LAHM(62.49,LA76249,150,LA7)) Q:LA7="" D
|
---|
77 | . S X=$G(^LAHM(62.49,LA76249,150,LA7,0))
|
---|
78 | . Q:(X="")!($E(X,1,3)'="PID") ;find PID segment for SSN
|
---|
79 | . S Y=+$P(X,LA7FS,4) ;get ssn
|
---|
80 | . S Z=Y
|
---|
81 | . S Y=+$O(^DPT("SSN",Y,0)) ;get dfn
|
---|
82 | . S ^TMP("LA7PRETTY",$J,2)="Patient: "_$P($G(^DPT(Y,0)),"^")_" SSN: "_Z
|
---|
83 | Q
|
---|
84 | PRETOUT ;
|
---|
85 | ;
|
---|
86 | LOG ;Print the error log which is stored in ^XTMP. Errors are logged
|
---|
87 | ;only if the Debug Log field is turned on in 62.48
|
---|
88 | N LA7,LA76249,LA7DT,LA7TM,LA7TXT,LA7XTMP
|
---|
89 | D DT^DICRW
|
---|
90 | S LA7XTMP="LA7"_DT
|
---|
91 | I '$O(^XTMP(LA7XTMP,0)) W !!,?5,"Nothing logged for Today!"
|
---|
92 | K DIR
|
---|
93 | S DIR("A")="Look at log for what date? "
|
---|
94 | S DIR("B")="TODAY"
|
---|
95 | S DIR("?")="^D HELP^%DTC"
|
---|
96 | S DIR(0)="DA^:DT:EX"
|
---|
97 | D ^DIR
|
---|
98 | Q:$D(DIRUT)
|
---|
99 | S LA7XTMP="LA7"_Y
|
---|
100 | I '$O(^XTMP(LA7XTMP,0)) D G LOG
|
---|
101 | . W !!,?5,"Nothing logged for " X ^DD("DD") W Y
|
---|
102 | S LA7TM=""
|
---|
103 | F S LA7TM=$O(^XTMP(LA7XTMP,LA7TM),-1) Q:LA7TM=0 D Q:LA7QUIT
|
---|
104 | . S LA7QUIT=0
|
---|
105 | . I $Y>(IOSL-3) D W @IOF Q:LA7QUIT
|
---|
106 | . . I "Pp"'[$E(IOST) K DIR S DIR(0)="E" D ^DIR I 'Y S LA7QUIT=1 Q
|
---|
107 | . S LA7=$E(LA7XTMP,4,10)
|
---|
108 | . W:$X !! W $E(LA7,4,5),"/",$E(LA7,6,7)
|
---|
109 | . W "@",$E(LA7TM,1,4)_$E("0000",$L($E(LA7TM,1,4)),3)," "
|
---|
110 | . W $P(^XTMP(LA7XTMP,LA7TM),"^",2)," " S X=$P($P(^(LA7TM),"^",3),":")
|
---|
111 | . F LA7=1:1:$L(X," ") S Y=$P(X," ",LA7) W:($L(Y)+$X+1)>IOM ! W " ",Y
|
---|
112 | Q
|
---|
113 | ;
|
---|
114 | CADT(LA7AA) ; Calculate current accession date based on accession area transform
|
---|
115 | ; Call with LA7AA = ien of accession area
|
---|
116 | N LA7AD,X
|
---|
117 | S DT=$$DT^XLFDT
|
---|
118 | S X=$P($G(^LRO(68,+$G(LA7AA),0)),"^",3) ; Accession transform
|
---|
119 | S LA7AD=$S(X="D":DT,X="M":$E(DT,1,5)_"00",X="Y":$E(DT,1,3)_"0000",X="Q":$E(DT,1,3)_"0000"+(($E(DT,4,5)-1)\3*300+100),1:DT) ; Calculate date
|
---|
120 | Q LA7AD
|
---|