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

DGRUGBJ.m

Go to the documentation of this file.
  1. DGRUGBJ ; ALB/SCK - RAI/MDS COTS ADT Background job ; 11/7/07 3:49pm
  1. ;;5.3;PIMS;**190,312,357,1015,1016**;JUN 30, 2012;Build 20
  1. ;
  1. EN ; Main Entry point for patient demographic update to COTS system
  1. ;
  1. L +^XTMP("ADT/HL7 MDS COTS UPDATE"):3 E Q
  1. ;
  1. ; Check for HL7 send parameter
  1. Q:'$P($$SEND^VAFHUTL(),"^",2)
  1. ;
  1. ; Look for patient demographic changes monitored by the COTS system
  1. N PVTPTR,DGNODE,DFN,DGDATE,DGARRAY,DGUSR,DGRSLT
  1. ;
  1. S DGARRAY="^TMP(""DGRAI"",""EVNTINFO"","_$J_")"
  1. K @DGARRAY
  1. ;
  1. ; Begin looking for entries needing transmission with a type of "COTS UPDATE", Code 6.
  1. S PVTPTR=0
  1. F S PVTPTR=+$O(^VAT(391.71,"AXMIT",6,PVTPTR)) Q:('PVTPTR) D
  1. . ; If no entry for xref (out of sync) delete the xref and quit
  1. . I ('$D(^VAT(391.71,PVTPTR))) K ^VAT(391.71,"AXMIT",6,PVTPTR) Q
  1. . ; Get event date and pointer to patient for entry
  1. . S DGNODE=$G(^VAT(391.71,PVTPTR,0))
  1. . S DFN=+$P(DGNODE,"^",3)
  1. . S EVNTDT=+DGNODE
  1. . ; Check for patient, if not valid, then mark as transmitted and quit
  1. . I ('$D(^DPT(DFN,0))) D XMITFLAG^VAFCDD01(PVTPTR,"",1) Q
  1. . N VAIN D INP^VADPT ; p-762
  1. . I '$$CHKWARD^DGRUUTL(+VAIN(4)) D XMITFLAG^VAFCDD01(PVTPTR,"",1) K VAIN Q ; P-762
  1. . K @DGARRAY
  1. . S @DGARRAY@("PIVOT")=PVTPTR
  1. . S @DGARRAY@("REASON",1)=""
  1. . I (+$G(^DPT(DFN,.35))) S @DGARRAY@("REASON",1)=99
  1. . ;
  1. . S @DGARRAY@("USER")=$$GET1^DIQ(200,+$P(DGNODE,"^",9),.01)
  1. . ;
  1. . S @DGARRAY@("EVENT-NUM")=$P(DGNODE,"^",2)
  1. . S @DGARRAY@("VAR-PTR")=$P(DGNODE,"^",5)
  1. . ;
  1. . S DGRSLT=$$BLDA08(DFN,EVNTDT,DGARRAY)
  1. . I (DGRSLT<0) D ERRBUL(DGARRAY,DGRSLT) ;deleted Q p-357
  1. . ;
  1. . ; Mark entry in pivot file as transmitted
  1. . D XMITFLAG^VAFCDD01(PVTPTR,"",1)
  1. ;
  1. L -^XTMP("ADT/HL7 MDS COTS UPDATE")
  1. Q
  1. ;
  1. BLDA08(DFN,EVNTDT,EVNTINFO,DGDC,DGOSSN) ;
  1. ;
  1. N RESULT,DGTMP,GLOREF
  1. ;
  1. S DFN=+$G(DFN)
  1. I ('$D(^DPT(DFN,0))) S RESULT="-1^Could not find entry in PATIENT file" G BLDQ
  1. ;
  1. S DGDC=$G(DGDC)
  1. S DGOSSN=$G(DGOSSN)
  1. S EVNTDT=$G(EVNTDT)
  1. S:('EVNTDT) EVNTDT=$$NOW^XLFDT
  1. ;
  1. S GLOREF="^TMP(""HLS"","_$J_")"
  1. K @GLOREF
  1. ;
  1. S @EVNTINFO@("DFN")=DFN
  1. S @EVNTINFO@("EVENT")="A08"
  1. S @EVNTINFO@("DATE")=EVNTDT
  1. ;
  1. N HLEID,HL,HLFS,HLECH,HLQ,NDX
  1. ;
  1. K HL
  1. D INIT^HLFNC2("DGRU-PATIENT-A08-SERVER",.HL)
  1. ;
  1. I ($O(HL(""))']"") S RESULT="-1^Server Protocol not found" G BLDQ
  1. ;
  1. ; Build segment array
  1. D EN^DGRUGA08(DFN,"","DGTMP",DGDC,DGOSSN)
  1. I '$O(DGTMP(0)) S RESULT="-1^Unable to build segment list to transmit" G BLDQ
  1. ;Check segment list for errors
  1. S NDX=0
  1. F S NDX=$O(DGTMP(NDX)) Q:'NDX D G:(+$G(RESULT)<0) BLDQ
  1. . I +DGTMP(NDX)<0 S RESULT="-1^An error occurred in one of the segments"
  1. ;
  1. M @GLOREF=DGTMP
  1. S RESULT=$$SENDMSG(GLOREF)
  1. I +$P(RESULT,"^",2)>0 S RESULT="-1^"_$P(RESULT,"^",2,3)
  1. BLDQ Q $G(RESULT)
  1. ;
  1. SENDMSG(GLOREF) ; Transmit the HL7 message
  1. N HLA,HLRST
  1. M HLA("HLS")=@GLOREF
  1. I $D(HLA("HLS")) D
  1. . D GENERATE^HLMA("DGRU-PATIENT-A08-SERVER","LM",1,.HLRST,"")
  1. K HLA,HERR
  1. Q (HLRST)
  1. ;
  1. ERRBUL(EVNTINFO,RESULT) ; Generate bulletin if an error occurred while building the HL7 message.
  1. ;
  1. N XMY,XMDUZ,XMDT,XMZ,XMB,XMCHAN,XMSUB
  1. ;
  1. S XMCHAN=1
  1. S XMSUB="RAI/MDS HL7 BUILD ERROR"
  1. S (XMDUZ,XMDUZ)="RAI/MDS APPLICATION"
  1. ;
  1. S XMB="DGRU RAI ERROR"
  1. S XMB(1)=$$GET1^DIQ(2,@EVNTINFO@("DFN"),.01)
  1. S XMB(2)=@EVNTINFO@("EVENT")
  1. S XMB(3)=">>> "_$P(RESULT,"^",2)
  1. S XMB(4)=@EVNTINFO@("USER")
  1. S XMB(5)=$$FMTE^XLFDT(@EVNTINFO@("DATE"))
  1. S XMDT=DT
  1. D ^XMB
  1. Q