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

DGRUADT1.m

Go to the documentation of this file.
  1. DGRUADT1 ;ALB/SCK - MAIN BUILDER FOR RAI/MDS ADT MESSAGING ; 7-8-1999
  1. ;;5.3;Registration;**190,480,1015**;Aug 13, 1993;Build 21
  1. ;
  1. BLDMSG(DFN,EVCODE,DGIEN,VAFHDT,DGWARD,DGOLDT,DGDTYP) ;
  1. ; INPUT
  1. ; DFN - Ien in Patient File
  1. ; EVCODE - HL7 event code
  1. ; DGIEN - Ien of the Movement
  1. ; VAFHDT - Date of event
  1. ; DGWARD - Associated ward
  1. ; DGOLDT - Old date of ADT even for change to date [Optional]
  1. ; DGDTYP - Change Date type [Optional]
  1. ; A - Admission date
  1. ; T - Transfer Date
  1. ; D - Discharge Date
  1. ;
  1. Q:"A01,A02,A03,A08,A11,A12,A13,A21,A22"'[$G(EVCODE)
  1. ;
  1. K HL,HLA,XMTARRY,HLRST
  1. ;
  1. D INIT^HLFNC2("DGRU-RAI-"_EVCODE_"-SERVER",.HL)
  1. I $O(HL(""))']"" D Q
  1. . D ERRBUL(DFN,DT,EVCODE,"-1^Server Protocol not found")
  1. ;
  1. S DGOLDT=$G(DGOLDT),DGDTYP=$G(DGDTYP)
  1. D:EVCODE="A01" EN^DGRUGA01(DFN,DGIEN,"XMTARRY")
  1. D:EVCODE="A02" EN^DGRUGA02(DFN,DGIEN,"XMTARRY")
  1. D:EVCODE="A03" EN^DGRUGA03(DFN,DGIEN,"XMTARRY")
  1. ; The A11 message is a special case and requires sending the Ward.
  1. D:EVCODE="A11" EN^DGRUGA11(DFN,DGIEN,"XMTARRY",$G(DGWARD),$G(VAFHDT)) ;GRR 1/26/00 TEST
  1. D:EVCODE="A12" EN^DGRUGA12(DFN,DGIEN,"XMTARRY")
  1. D:EVCODE="A13" EN^DGRUGA13(DFN,DGIEN,"XMTARRY")
  1. D:EVCODE="A21" EN^DGRUGA21(DFN,DGIEN,"XMTARRY")
  1. D:EVCODE="A22" EN^DGRUGA22(DFN,DGIEN,"XMTARRY")
  1. D:EVCODE="A08" EN^DGRUGA08(DFN,DGIEN,"XMTARRY",DGDTYP_"^"_DGOLDT)
  1. ;
  1. I '$O(XMTARRY(0)) D Q
  1. . D ERRBUL(DFN,DT,EVCODE,"-1^Unable to build segment list to transmit")
  1. ;
  1. N NDX
  1. S NDX=0
  1. F S NDX=$O(XMTARRY(NDX)) Q:'NDX D Q:(+XMTARRY(NDX)<0)
  1. . I +XMTARRY(NDX)<0 D ERRBUL(DFN,DT,EVCODE,"-1^An error occurred in one of the segments")
  1. ;
  1. ; Load data array
  1. M HLA("HLS")=XMTARRY
  1. ;
  1. ; Write out message text if in trace mode
  1. I $D(DGTRACE) D
  1. . N X S X=0
  1. . F S X=+$O(HLA("HLS",X)) Q:'X W !,HLA("HLS",X)
  1. ;
  1. I $D(HLA("HLS")) D
  1. . D GENERATE^HLMA("DGRU-RAI-"_EVCODE_"-SERVER","LM",1,.HLRST)
  1. . D MSGBUL(DFN,DT,EVCODE,HLRST)
  1. . I $D(DGTRACE),$D(HLRST) D
  1. . . W !,"Message ID: ",+$G(HLRST)
  1. ;
  1. I +$P(HLRST,"^",2)>0 D Q
  1. . D ERRBUL(DFN,DT,EVCODE,"-1^"_$P(HLRST,"^",2,3))
  1. ;
  1. K HLA,HLERR
  1. Q
  1. ;
  1. MSGBUL(DFN,DT,EVCODE,MSGID) ;
  1. N XMY,XMDUZ,XMDT,XMZ,XMB,XMCHAN,XMSUB
  1. ;
  1. S XMCHAN=1
  1. S XMSUB="RAI/MDS HL7 MESSAGE XMIT"
  1. S (XMDUZ,XMDUZ)="RAI/MDS APPLICATION"
  1. ;
  1. S XMB="DGRU HL7SND"
  1. S XMB(1)=EVCODE
  1. S XMB(2)=$$GET1^DIQ(2,DFN,.01)
  1. S XMB(3)=+MSGID
  1. S XMB(4)=$$FMTE^XLFDT(DT)
  1. S XMB(5)=$$GET1^DIQ(2,DFN,.09) ; p-480 mg
  1. S XMDT=$$NOW^XLFDT
  1. D ^XMB
  1. Q
  1. ;
  1. ERRBUL(DFN,DT,EVCODE,ERRMSG) ;
  1. N XMY,XMDUZ,XMDT,XMZ,XMB,XMCHAN,XMSUB
  1. ;
  1. S XMCHAN=1
  1. S XMSUB="RAI/MDS HL7 ADT ERROR"
  1. S (XMDUZ,XMDUZ)="RAI/MDS APPLICATION"
  1. ;
  1. S XMB="DGRU RAI ERROR"
  1. S XMB(1)=$$GET1^DIQ(2,DFN,.01)
  1. S XMB(2)=EVCODE
  1. S XMB(3)=">>> "_$P(ERRMSG,"^",2)
  1. S XMB(4)=$S($G(DUZ)>0:$$GET1^DIQ(200,DUZ,.01),1:"")
  1. S XMB(5)=$$FMTE^XLFDT($$NOW^XLFDT)
  1. S XMDT=DT
  1. D ^XMB
  1. Q