1 | RGMTSTAT ;BIR/DLR,CML,PTD-MPI/PD Maintenance Query ;07/30/02
|
---|
2 | ;;1.0;CLINICAL INFO RESOURCE NETWORK;**20**;30 Apr 99
|
---|
3 | ;
|
---|
4 | ;Reference to ^ORD(101 supported by IA #2596
|
---|
5 | ;
|
---|
6 | Q
|
---|
7 | PROCESS ;Processor of QRY msg from protocol, RGMT DEFERRED QRY CLIENT.
|
---|
8 | S RGMT=0 N REP,SG,HLP,HLRESLTA K ^TMP("HLA",$J)
|
---|
9 | F RGMT=1:1 X HLNEXT Q:HLQUIT'>0 S SG=$E(HLNODE,1,3) D:$T(@SG)]"" @SG
|
---|
10 | ;;Queue the deferred status acknowledgment off
|
---|
11 | S RGMTER=$$RESP() I RGMTER'>0 S HLP("ERRTEXT")="Unable to queue query"
|
---|
12 | S ^TMP("HLA",$J,1)="MSA"_HL("FS")_$S(RGMTER>0:"AA",1:"AE")_HL("FS")_HL("MID")
|
---|
13 | D GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"GM",1,.HLRESLTA,"",.HLP)
|
---|
14 | K RGMTER,RGMTID,RGCOMP,SITE,RGMTFS,RGMTRCV,RGMTQRD,^TMP("HLA",$J)
|
---|
15 | Q
|
---|
16 | MSH ;process MSH segment
|
---|
17 | S RGMTFS=HL("FS")
|
---|
18 | S RGMTID=HL("MID")
|
---|
19 | S RGCOMP=$E(HL("ECH"),1)
|
---|
20 | S REP=$E(HL("ECH"),2)
|
---|
21 | S SITE=$$LKUP^XUAF4($P($P(HLNODE,HL("FS"),4),RGCOMP))
|
---|
22 | S ZTSAVE("RGMTID")=""
|
---|
23 | S ZTSAVE("RGCOMP")=""
|
---|
24 | S ZTSAVE("SITE")=""
|
---|
25 | S ZTSAVE("RGMTFS")=""
|
---|
26 | S ZTSAVE("REP")=""
|
---|
27 | Q
|
---|
28 | QRD ;process QRD segment
|
---|
29 | S RGMTQRD=HLNODE
|
---|
30 | S RGMTRCV=$P(RGMTQRD,HL("FS"),5)
|
---|
31 | S ZTSAVE("RGMTRCV")=""
|
---|
32 | S ZTSAVE("RGMTQRD")=""
|
---|
33 | Q
|
---|
34 | STATUS ;processor of QRY acknowledgments, QCK and DSR, from protocol, RGMT DEFERRED QRY SERVER.
|
---|
35 | ;if ack msg type is returned the protocols are not installed
|
---|
36 | I HL("MTN")="QCK" D
|
---|
37 | .S RGMT=0
|
---|
38 | .F RGMT=1:1 X HLNEXT Q:HLQUIT'>0 S SG=$E(HLNODE,1,3) D:$T(@SG)]"" @SG
|
---|
39 | .S $P(^XTMP("RGMT","RGHLMQ",SITE,0),"^",2)="AA"
|
---|
40 | ;the "DSR" ack type should use protocol, RGMT DEFERRED QRY RESPONSE SERVER, if not call its entry point ACK
|
---|
41 | I HL("MTN")="DSR" D ACK
|
---|
42 | Q
|
---|
43 | BLD(RGMT) ;Build Query message
|
---|
44 | S DIC="^ORD(101,",X=RGMT D ^DIC K DIC S EID=+Y I EID<0 S EID=""
|
---|
45 | S HL="HL",INT=0
|
---|
46 | W !,EID Q:EID="" -1
|
---|
47 | D INIT^HLFNC2(EID,.HL,INT)
|
---|
48 | S COMP=$E(HL("ECH"),1),SUBCOMP=$E(HL("ECH"),4),REP=$E(HL("ECH"),2)
|
---|
49 | Q +$G(EID)
|
---|
50 | ROUTE ;Generate recipient list/route QRY msg using protocol, RGMT DEFERRED QRY CLIENT.
|
---|
51 | N CLIENT
|
---|
52 | K RGMT
|
---|
53 | S CLIENT="RGMT DEFERRED QRY CLIENT"
|
---|
54 | D LINK^HLUTIL3(SITE,.RGMT)
|
---|
55 | I $O(RGMT(0)) S HLL("LINKS",1)=CLIENT_"^"_$P(RGMT($O(RGMT(0))),U)
|
---|
56 | K RGMT
|
---|
57 | Q
|
---|
58 | GEN ;generate hl7 message
|
---|
59 | N HLRESLT,HLP
|
---|
60 | D GENERATE^HLMA(EID,"GM",1,.HLRESLT,"",.HLP)
|
---|
61 | Q
|
---|
62 | RESP() ;response to remote query
|
---|
63 | N ZTSK,ZTRTN,ZTDESC,ZTREQ,ZTIO,ZTDTH
|
---|
64 | S ZTREQ="@",ZTDTH=$$NOW^XLFDT,ZTIO="",ZTRTN="DSR^RGMTSTAT",ZTDESC="RGMT QUERY RESP" D ^%ZTLOAD D ^%ZISC
|
---|
65 | Q $G(ZTSK)
|
---|
66 | DSRTYPE S RGMTCNT=3
|
---|
67 | F RGMTPC=1:1:$L(RGMTQRD,REP) S RGMTTYP=$P($P(RGMTQRD,RGMTFS,10),REP,RGMTPC) D
|
---|
68 | .S RGDSPCNT=1,RGMT1=0
|
---|
69 | .S RGMT1="" F S RGMT1=$O(^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1)) Q:RGMT1="" D
|
---|
70 | ..I $G(^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1))'="" S ^TMP("HLS",$J,RGMTCNT)="DSP"_RGMTFS_RGDSPCNT_RGMTFS_RGMTPC_HL("FS")_^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1)_COMP_RGMT1 D
|
---|
71 | ...S RGMTCNT=$G(RGMTCNT)+1,RGDSPCNT=RGDSPCNT+1 Q
|
---|
72 | ..S RGMT2="" F S RGMT2=$O(^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1,RGMT2)) Q:RGMT2="" D
|
---|
73 | ...I $G(^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1,RGMT2))'="" S ^TMP("HLS",$J,RGMTCNT)="DSP"_HL("FS")_RGDSPCNT_HL("FS")_RGMTPC_HL("FS")_^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1,RGMT2)_COMP_RGMT1_COMP_RGMT2 D
|
---|
74 | ....S RGMTCNT=$G(RGMTCNT)+1,RGDSPCNT=RGDSPCNT+1 Q
|
---|
75 | ...S RGMT3="" F S RGMT3=$O(^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1,RGMT2,RGMT3)) Q:RGMT3="" D
|
---|
76 | ....I $G(^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1,RGMT2,RGMT3))'="" D
|
---|
77 | .....S ^TMP("HLS",$J,RGMTCNT)="DSP"_HL("FS")_RGDSPCNT_HL("FS")_RGMTPC_HL("FS")_^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1,RGMT2,RGMT3)_COMP_RGMT1_COMP_RGMT2_COMP_RGMT3
|
---|
78 | .....S RGMTCNT=$G(RGMTCNT)+1,RGDSPCNT=RGDSPCNT+1
|
---|
79 | ....S RGMT4="" F S RGMT4=$O(^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1,RGMT2,RGMT3,RGMT4)) Q:RGMT4="" D
|
---|
80 | .....I $G(^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1,RGMT2,RGMT3,RGMT4))'="" D
|
---|
81 | ......S ^TMP("HLS",$J,RGMTCNT)="DSP"_HL("FS")_RGDSPCNT_HL("FS")_RGMTPC_HL("FS")_^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1,RGMT2,RGMT3,RGMT4)_COMP_RGMT1_COMP_RGMT2_COMP_RGMT3_COMP_RGMT4
|
---|
82 | ......S RGMTCNT=$G(RGMTCNT)+1,RGDSPCNT=RGDSPCNT+1
|
---|
83 | K ^XTMP("RGMT","HLMQMONT"),^XTMP("RGMT","HLMQHLMA"),^XTMP("RGMT","HLMQETOT")
|
---|
84 | Q
|
---|
85 | DSR ;response to remote query
|
---|
86 | N EID,INT,COMP,RGMT,RGMT1,RGMT2,RGMT3,RGMT4,RGMTPC,RGMTTYP,RGMTFAC,RGMTCNT,RGDSPCNT,RGHLMQ
|
---|
87 | K ^TMP("HLS",$J),^XTMP("RGMT","HLMQMONT"),^XTMP("RGMT","HLMQHLMA"),^XTMP("RGMT","HLMQETOT")
|
---|
88 | S COMP=RGCOMP
|
---|
89 | S RGMTFAC=$P($$SITE^VASITE,"^",3)
|
---|
90 | F RGMTPC=1:1:$L($P(RGMTQRD,RGMTFS,10),REP) S RGMTTYP=$P($P(RGMTQRD,RGMTFS,10),REP,RGMTPC) D
|
---|
91 | .S RGHLMQ=1 I RGMTTYP="MONT" D EN2^RGMTMONT
|
---|
92 | .S RGHLMQ=1 I RGMTTYP="HLMA" D HLMA2^RGMTUT98
|
---|
93 | .S RGHLMQ=1 I RGMTTYP="UT01" D EN2^RGMTUT01
|
---|
94 | .S RGMTHQ=1 I RGMTTYP="ETOT" D DUMP2^RGMTETOT D
|
---|
95 | ..S ^XTMP("RGMT","HLMQETOT",RGMTFAC,"@@RUNDATE")=$P($$SITE^VASITE,"^",2)_"^"_$$HTE^XLFDT($H)
|
---|
96 | S RGMT="RGMT DEFERRED QRY RESP SERVER"
|
---|
97 | I $$BLD(RGMT)'>0 S HLP("ERRTEXT")="Could not find protocol" Q
|
---|
98 | S ^TMP("HLS",$J,1)="MSA"_HL("FS")_"AA"_HL("FS")_RGMTID
|
---|
99 | S ^TMP("HLS",$J,2)=RGMTQRD
|
---|
100 | D DSRTYPE
|
---|
101 | D GEN
|
---|
102 | K RGMTQRD,REP,ZTSAVE,RGMTRCV,RGMTMID,SITE,RGMTFS,RGCOMP,SUBCOMP,X,Y
|
---|
103 | Q
|
---|
104 | RTERSP ;router for DSR msg from protocol, RGMT DEFERRED QRY RESP SERVER.
|
---|
105 | N CLIENT,SITE
|
---|
106 | S CLIENT="RGMT DEFERRED QRY RESP CLIENT"
|
---|
107 | S SITE=$$LKUP^XUAF4("200M")
|
---|
108 | D LINK^HLUTIL3(SITE,.RGMT)
|
---|
109 | I $O(RGMT(0)) S HLL("LINKS",1)=CLIENT_"^"_$P(RGMT($O(RGMT(0))),U)
|
---|
110 | Q
|
---|
111 | ACK ;processor of DSR msg should be using protocol, RGMT DEFERRED QRY RESP CLIENT,
|
---|
112 | ;but is using the originating QRY protocol, RGMT DEFERRED QRY CLIENT.
|
---|
113 | S RGMT=0 K ^TMP("HLA",$J)
|
---|
114 | F RGMT=1:1 X HLNEXT Q:HLQUIT'>0 S SG=$E(HLNODE,1,3) D:$T(@SG)]"" @SG
|
---|
115 | S ^TMP("HLA",$J,1)="MSA"_HL("FS")_"AA"_HL("FS")_HL("MID")
|
---|
116 | N HLRESLTA,HLP D GENACK^HLMA1(HL("EID"),HL("EIDS"),"GM",1,.HLRESLTA,"",.HLP)
|
---|
117 | S $P(^XTMP("RGMT","RGHLMQ",SITE,0),"^",2)="F"
|
---|
118 | K RGMT,RGMTAA
|
---|
119 | Q
|
---|
120 | DSP ;display segment
|
---|
121 | N RGMTDSP,RGMTRPT,RGCS,RGDATA,RGNODE
|
---|
122 | S RGDATA=$P(HLNODE,HL("FS"),4,99)
|
---|
123 | S RGMTDSP=$P(HLNODE,HL("FS"),2)
|
---|
124 | S RGMTRPT=$P(HLNODE,HL("FS"),3)
|
---|
125 | I '$D(^XTMP("RGMT","RGHLMQ",SITE,0)) S ^XTMP("RGMT","RGHLMQ",SITE,0)=$$FMADD^XLFDT(DT,7)_"^"_"F"
|
---|
126 | S RGNODE="^XTMP(""RGMT"",""HLMQ"_$S(RGMTRPT=1:"MONT""",RGMTRPT=2:"HLMA""",RGMTRPT=3:"ETOT""",1:"UT01""")_","_SITE
|
---|
127 | F RGCS=2:1:$L(RGDATA,RGCOMP) S RGNODE=RGNODE_","""_$P(RGDATA,RGCOMP,RGCS)_""""
|
---|
128 | S RGNODE=RGNODE_")"
|
---|
129 | I RGNODE["@@ RUNDATE" S @RGNODE=$$GET1^DIQ(4,+SITE_",",.01)_"^"_$P(RGDATA,RGCOMP) Q
|
---|
130 | S @RGNODE=$P(RGDATA,RGCOMP)
|
---|
131 | Q
|
---|
132 | MSA ;Message ack segment
|
---|
133 | S RGMTAA=$P(HLNODE,HL("FS"),3)
|
---|
134 | Q
|
---|