1 | LR7OB1 ;slc/dcm - Build message, backdoor Lab from file 69 ;8/11/97
|
---|
2 | ;;5.2;LAB SERVICE;**121,187,238**;Sep 27, 1994
|
---|
3 | ;
|
---|
4 | NEW(ODT,SN,CONTROL,NAT,TESTS,LRSTATI) ;Set-up order message
|
---|
5 | ;Need ODT & SN of entry in ^LRO(69,ODT,1,SN)
|
---|
6 | ;CONTROL=Order Control (SN=new order)
|
---|
7 | ;NAT=Nature of order
|
---|
8 | ;TESTS=Array of tests to be updated (optional). If this array is not included then all tests for the LRSN entry will be updated/included
|
---|
9 | ;LRSTATI=Status of order (ptr to ^ORD(100.01,IFN))
|
---|
10 | Q:'$L($T(MSG^XQOR))
|
---|
11 | Q:'$D(^LRO(69,$G(ODT),1,$G(SN),0)) N LRX0 S LRX0=^(0)
|
---|
12 | I $$VER^LR7OU1>2.5,'$G(^ORD(100.99,1,"CONV")) N Y,DFN,LRDPF S Y=$G(^LR(+LRX0,0)),DFN=$P(Y,"^",3),LRDPF=$P(Y,"^",2)_$G(^DIC(+$P(Y,"^",2),0,"GL")) D
|
---|
13 | . Q:'$D(^ORD(100.99,1,"PTCONV",DFN))
|
---|
14 | . S $P(^LRO(69,ODT,1,SN,0),"^",11)=1 ;Keeps this order from being converted
|
---|
15 | . D EN^LR7OV2(DFN_";"_$P(LRDPF,"^",2),1)
|
---|
16 | Q:$P($G(^LR(+LRX0,0)),"^",2)'=2 ;Only allow messages for patients (file 2)
|
---|
17 | N MSG,ORCHMSG,ORBBMSG,ORAPMSG,I,LRNIFN,LRTMPO
|
---|
18 | K ^TMP("LRAP",$J),^TMP("LRCH",$J),^TMP("LRBB",$J)
|
---|
19 | D ORD1(ODT,SN,.TESTS)
|
---|
20 | I '$D(LRTMPO("LRIFN")) D EN1^LR7OB0(ODT,SN,CONTROL,$G(NAT)),CALL(CONTROL) K ^TMP("LRAP",$J),^TMP("LRCH",$J),^TMP("LRBB",$J) Q
|
---|
21 | S LRNIFN=0 F S LRNIFN=$O(LRTMPO("LRIFN",LRNIFN)) Q:LRNIFN<1 S X=LRTMPO("LRIFN",LRNIFN) D
|
---|
22 | . I $P(X,"^",7)="P" Q ;Test purged from CPRS
|
---|
23 | . I $L($P(X,"^",14)) N ODT,SN D Q
|
---|
24 | .. S ODT=+$P(X,"^",14),SN=$P($P(X,"^",14),";",2)
|
---|
25 | .. I $D(^LRO(69,+ODT,1,+SN,0)) S:CONTROL="RE" LRSTATI=2 D EN1^LR7OB0(ODT,SN,CONTROL,$G(NAT)),CALL(CONTROL) K ^TMP("LRAP",$J),^TMP("LRCH",$J),^TMP("LRBB",$J)
|
---|
26 | . D EN1^LR7OB0(ODT,SN,CONTROL,$G(NAT)),CALL(CONTROL) K ^TMP("LRAP",$J),^TMP("LRCH",$J),^TMP("LRBB",$J)
|
---|
27 | Q
|
---|
28 | CALL(CNTRL) ;Make protocol calls
|
---|
29 | Q:'$L($T(MSG^XQOR))
|
---|
30 | S:'$D(CNTRL) CNTRL=""
|
---|
31 | I $D(^TMP("LRCH",$J)) S ORCHMSG="^TMP(""LRCH"",$J)" D MSG^XQOR("LR7O CH EVSEND OR",.ORCHMSG),RESULTS(ORCHMSG,CNTRL) ;Message from lab
|
---|
32 | I $D(^TMP("LRBB",$J)) S ORBBMSG="^TMP(""LRBB"",$J)" D MSG^XQOR("LR7O BB EVSEND OR",.ORBBMSG),RESULTS(ORBBMSG,CNTRL) ;New order from Blood bank
|
---|
33 | I $D(^TMP("LRAP",$J)) S ORAPMSG="^TMP(""LRAP"",$J)" D MSG^XQOR("LR7O AP EVSEND OR",.ORAPMSG),RESULTS(ORAPMSG,CNTRL) ;New order from Anatomic Path
|
---|
34 | Q
|
---|
35 | RESULTS(OREMSG,CNTRL) ;Results only protocol
|
---|
36 | Q:$G(CNTRL)'="RE" Q:'$D(OREMSG)
|
---|
37 | D MSG^XQOR("LR7O ALL EVSEND RESULTS",.OREMSG)
|
---|
38 | Q
|
---|
39 | ACC(AC,ACDT,ACN,CONTROL,NAT) ;Set-up order message for BB,SP,EM,CY,AU accessions
|
---|
40 | ;ACC=Accession area ptr
|
---|
41 | ;ACDT=Accession Date
|
---|
42 | ;ACN=Accession #
|
---|
43 | Q:'$L($T(MSG^XQOR))
|
---|
44 | N MSG,CHMSG,BBMSG,APMSG
|
---|
45 | K ^TMP("LRAP",$J),^TMP("LRCH",$J),^TMP("LRBB",$J)
|
---|
46 | D EN2^LR7OB0(AC,ACDT,ACN,CONTROL,.CHMSG,.BBMSG,.APMSG,$G(NAT))
|
---|
47 | D CALL(CONTROL)
|
---|
48 | K ^TMP("LRAP",$J),^TMP("LRCH",$J),^TMP("LRBB",$J)
|
---|
49 | Q
|
---|
50 | ORD(ORD) ;Set test nodes in LRTMPO("LRIFN" for given Lab #
|
---|
51 | ;ORD=Lab order #
|
---|
52 | Q:'$G(ORD) I $D(LRTMPO("LRIFN")) K LRTMPO("LRIFN")
|
---|
53 | N IFN,ODT,SN,X
|
---|
54 | S (CTR,ODT)=0
|
---|
55 | F S ODT=$O(^LRO(69,"C",ORD,ODT)) Q:ODT<1 S SN=0 F S SN=$O(^LRO(69,"C",ORD,ODT,SN)) Q:SN<1 S IFN=0 F S IFN=$O(^LRO(69,ODT,1,SN,2,IFN)) Q:IFN<1 S X=$G(^(IFN,0)) I X D
|
---|
56 | . S CTR=CTR+1,LRTMPO("LRIFN",CTR)=X
|
---|
57 | Q
|
---|
58 | ORD1(ODT,SN,TST) ;Set test nodes in LRTMPO("LRIFN" for given LRODT & LRSN (includes combined tests)
|
---|
59 | ;ODT=LRODT
|
---|
60 | ;SN=LRSN
|
---|
61 | ; TST=Array of tests to be included (optional). If TST is not passed, then all tests for a given LRSN will be included
|
---|
62 | ; Screen out orders with ORIFN if CONTROL=SN (new order)
|
---|
63 | Q:'$G(ODT) Q:'$G(SN) I $D(LRTMPO("LRIFN")) K LRTMPO("LRIFN")
|
---|
64 | N IFN,X,CTR
|
---|
65 | S (CTR,IFN)=0
|
---|
66 | F S IFN=$O(^LRO(69,ODT,1,SN,2,IFN)) Q:IFN<1 S X=$G(^(IFN,0)) I X D
|
---|
67 | . I CONTROL="SN",$P(X,"^",7) S LRTMPO("LRIFN")="" Q ;Don't send a SN for existing order
|
---|
68 | . I $S($O(TST(0)):$D(TST(+X)),1:1) S CTR=CTR+1,LRTMPO("LRIFN",CTR)=X D Q
|
---|
69 | .. I $P(X,"^",14) S X=$P(X,"^",14) D
|
---|
70 | ... I $D(^LRO(69,+X,1,+$P(X,";",2),2,+$P(X,";",3),0)) S X=^(0),CTR=CTR+1,LRTMPO("LRIFN",CTR)=X
|
---|
71 | Q
|
---|