Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: RGMTSTAT

RGMTSTAT.m

Go to the documentation of this file.
  1. RGMTSTAT ;BIR/DLR,CML,PTD-MPI/PD Maintenance Query ;07/30/02
  1. ;;1.0;CLINICAL INFO RESOURCE NETWORK;**20**;30 Apr 99
  1. ;
  1. ;Reference to ^ORD(101 supported by IA #2596
  1. ;
  1. Q
  1. PROCESS ;Processor of QRY msg from protocol, RGMT DEFERRED QRY CLIENT.
  1. S RGMT=0 N REP,SG,HLP,HLRESLTA K ^TMP("HLA",$J)
  1. F RGMT=1:1 X HLNEXT Q:HLQUIT'>0 S SG=$E(HLNODE,1,3) D:$T(@SG)]"" @SG
  1. ;;Queue the deferred status acknowledgment off
  1. S RGMTER=$$RESP() I RGMTER'>0 S HLP("ERRTEXT")="Unable to queue query"
  1. S ^TMP("HLA",$J,1)="MSA"_HL("FS")_$S(RGMTER>0:"AA",1:"AE")_HL("FS")_HL("MID")
  1. D GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"GM",1,.HLRESLTA,"",.HLP)
  1. K RGMTER,RGMTID,RGCOMP,SITE,RGMTFS,RGMTRCV,RGMTQRD,^TMP("HLA",$J)
  1. Q
  1. MSH ;process MSH segment
  1. S RGMTFS=HL("FS")
  1. S RGMTID=HL("MID")
  1. S RGCOMP=$E(HL("ECH"),1)
  1. S REP=$E(HL("ECH"),2)
  1. S SITE=$$LKUP^XUAF4($P($P(HLNODE,HL("FS"),4),RGCOMP))
  1. S ZTSAVE("RGMTID")=""
  1. S ZTSAVE("RGCOMP")=""
  1. S ZTSAVE("SITE")=""
  1. S ZTSAVE("RGMTFS")=""
  1. S ZTSAVE("REP")=""
  1. Q
  1. QRD ;process QRD segment
  1. S RGMTQRD=HLNODE
  1. S RGMTRCV=$P(RGMTQRD,HL("FS"),5)
  1. S ZTSAVE("RGMTRCV")=""
  1. S ZTSAVE("RGMTQRD")=""
  1. Q
  1. STATUS ;processor of QRY acknowledgments, QCK and DSR, from protocol, RGMT DEFERRED QRY SERVER.
  1. ;if ack msg type is returned the protocols are not installed
  1. I HL("MTN")="QCK" D
  1. .S RGMT=0
  1. .F RGMT=1:1 X HLNEXT Q:HLQUIT'>0 S SG=$E(HLNODE,1,3) D:$T(@SG)]"" @SG
  1. .S $P(^XTMP("RGMT","RGHLMQ",SITE,0),"^",2)="AA"
  1. ;the "DSR" ack type should use protocol, RGMT DEFERRED QRY RESPONSE SERVER, if not call its entry point ACK
  1. I HL("MTN")="DSR" D ACK
  1. Q
  1. BLD(RGMT) ;Build Query message
  1. S DIC="^ORD(101,",X=RGMT D ^DIC K DIC S EID=+Y I EID<0 S EID=""
  1. S HL="HL",INT=0
  1. W !,EID Q:EID="" -1
  1. D INIT^HLFNC2(EID,.HL,INT)
  1. S COMP=$E(HL("ECH"),1),SUBCOMP=$E(HL("ECH"),4),REP=$E(HL("ECH"),2)
  1. Q +$G(EID)
  1. ROUTE ;Generate recipient list/route QRY msg using protocol, RGMT DEFERRED QRY CLIENT.
  1. N CLIENT
  1. K RGMT
  1. S CLIENT="RGMT DEFERRED QRY CLIENT"
  1. D LINK^HLUTIL3(SITE,.RGMT)
  1. I $O(RGMT(0)) S HLL("LINKS",1)=CLIENT_"^"_$P(RGMT($O(RGMT(0))),U)
  1. K RGMT
  1. Q
  1. GEN ;generate hl7 message
  1. N HLRESLT,HLP
  1. D GENERATE^HLMA(EID,"GM",1,.HLRESLT,"",.HLP)
  1. Q
  1. RESP() ;response to remote query
  1. N ZTSK,ZTRTN,ZTDESC,ZTREQ,ZTIO,ZTDTH
  1. S ZTREQ="@",ZTDTH=$$NOW^XLFDT,ZTIO="",ZTRTN="DSR^RGMTSTAT",ZTDESC="RGMT QUERY RESP" D ^%ZTLOAD D ^%ZISC
  1. Q $G(ZTSK)
  1. DSRTYPE S RGMTCNT=3
  1. F RGMTPC=1:1:$L(RGMTQRD,REP) S RGMTTYP=$P($P(RGMTQRD,RGMTFS,10),REP,RGMTPC) D
  1. .S RGDSPCNT=1,RGMT1=0
  1. .S RGMT1="" F S RGMT1=$O(^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1)) Q:RGMT1="" D
  1. ..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
  1. ...S RGMTCNT=$G(RGMTCNT)+1,RGDSPCNT=RGDSPCNT+1 Q
  1. ..S RGMT2="" F S RGMT2=$O(^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1,RGMT2)) Q:RGMT2="" D
  1. ...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
  1. ....S RGMTCNT=$G(RGMTCNT)+1,RGDSPCNT=RGDSPCNT+1 Q
  1. ...S RGMT3="" F S RGMT3=$O(^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1,RGMT2,RGMT3)) Q:RGMT3="" D
  1. ....I $G(^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1,RGMT2,RGMT3))'="" D
  1. .....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
  1. .....S RGMTCNT=$G(RGMTCNT)+1,RGDSPCNT=RGDSPCNT+1
  1. ....S RGMT4="" F S RGMT4=$O(^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1,RGMT2,RGMT3,RGMT4)) Q:RGMT4="" D
  1. .....I $G(^XTMP("RGMT","HLMQ"_RGMTTYP,RGMTFAC,RGMT1,RGMT2,RGMT3,RGMT4))'="" D
  1. ......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
  1. ......S RGMTCNT=$G(RGMTCNT)+1,RGDSPCNT=RGDSPCNT+1
  1. K ^XTMP("RGMT","HLMQMONT"),^XTMP("RGMT","HLMQHLMA"),^XTMP("RGMT","HLMQETOT")
  1. Q
  1. DSR ;response to remote query
  1. N EID,INT,COMP,RGMT,RGMT1,RGMT2,RGMT3,RGMT4,RGMTPC,RGMTTYP,RGMTFAC,RGMTCNT,RGDSPCNT,RGHLMQ
  1. K ^TMP("HLS",$J),^XTMP("RGMT","HLMQMONT"),^XTMP("RGMT","HLMQHLMA"),^XTMP("RGMT","HLMQETOT")
  1. S COMP=RGCOMP
  1. S RGMTFAC=$P($$SITE^VASITE,"^",3)
  1. F RGMTPC=1:1:$L($P(RGMTQRD,RGMTFS,10),REP) S RGMTTYP=$P($P(RGMTQRD,RGMTFS,10),REP,RGMTPC) D
  1. .S RGHLMQ=1 I RGMTTYP="MONT" D EN2^RGMTMONT
  1. .S RGHLMQ=1 I RGMTTYP="HLMA" D HLMA2^RGMTUT98
  1. .S RGHLMQ=1 I RGMTTYP="UT01" D EN2^RGMTUT01
  1. .S RGMTHQ=1 I RGMTTYP="ETOT" D DUMP2^RGMTETOT D
  1. ..S ^XTMP("RGMT","HLMQETOT",RGMTFAC,"@@RUNDATE")=$P($$SITE^VASITE,"^",2)_"^"_$$HTE^XLFDT($H)
  1. S RGMT="RGMT DEFERRED QRY RESP SERVER"
  1. I $$BLD(RGMT)'>0 S HLP("ERRTEXT")="Could not find protocol" Q
  1. S ^TMP("HLS",$J,1)="MSA"_HL("FS")_"AA"_HL("FS")_RGMTID
  1. S ^TMP("HLS",$J,2)=RGMTQRD
  1. D DSRTYPE
  1. D GEN
  1. K RGMTQRD,REP,ZTSAVE,RGMTRCV,RGMTMID,SITE,RGMTFS,RGCOMP,SUBCOMP,X,Y
  1. Q
  1. RTERSP ;router for DSR msg from protocol, RGMT DEFERRED QRY RESP SERVER.
  1. N CLIENT,SITE
  1. S CLIENT="RGMT DEFERRED QRY RESP CLIENT"
  1. S SITE=$$LKUP^XUAF4("200M")
  1. D LINK^HLUTIL3(SITE,.RGMT)
  1. I $O(RGMT(0)) S HLL("LINKS",1)=CLIENT_"^"_$P(RGMT($O(RGMT(0))),U)
  1. Q
  1. ACK ;processor of DSR msg should be using protocol, RGMT DEFERRED QRY RESP CLIENT,
  1. ;but is using the originating QRY protocol, RGMT DEFERRED QRY CLIENT.
  1. S RGMT=0 K ^TMP("HLA",$J)
  1. F RGMT=1:1 X HLNEXT Q:HLQUIT'>0 S SG=$E(HLNODE,1,3) D:$T(@SG)]"" @SG
  1. S ^TMP("HLA",$J,1)="MSA"_HL("FS")_"AA"_HL("FS")_HL("MID")
  1. N HLRESLTA,HLP D GENACK^HLMA1(HL("EID"),HL("EIDS"),"GM",1,.HLRESLTA,"",.HLP)
  1. S $P(^XTMP("RGMT","RGHLMQ",SITE,0),"^",2)="F"
  1. K RGMT,RGMTAA
  1. Q
  1. DSP ;display segment
  1. N RGMTDSP,RGMTRPT,RGCS,RGDATA,RGNODE
  1. S RGDATA=$P(HLNODE,HL("FS"),4,99)
  1. S RGMTDSP=$P(HLNODE,HL("FS"),2)
  1. S RGMTRPT=$P(HLNODE,HL("FS"),3)
  1. I '$D(^XTMP("RGMT","RGHLMQ",SITE,0)) S ^XTMP("RGMT","RGHLMQ",SITE,0)=$$FMADD^XLFDT(DT,7)_"^"_"F"
  1. S RGNODE="^XTMP(""RGMT"",""HLMQ"_$S(RGMTRPT=1:"MONT""",RGMTRPT=2:"HLMA""",RGMTRPT=3:"ETOT""",1:"UT01""")_","_SITE
  1. F RGCS=2:1:$L(RGDATA,RGCOMP) S RGNODE=RGNODE_","""_$P(RGDATA,RGCOMP,RGCS)_""""
  1. S RGNODE=RGNODE_")"
  1. I RGNODE["@@ RUNDATE" S @RGNODE=$$GET1^DIQ(4,+SITE_",",.01)_"^"_$P(RGDATA,RGCOMP) Q
  1. S @RGNODE=$P(RGDATA,RGCOMP)
  1. Q
  1. MSA ;Message ack segment
  1. S RGMTAA=$P(HLNODE,HL("FS"),3)
  1. Q