DGHTXREF ;ALB/JRC - Home Telehealth HL7 Message Monitoring Routine ;10 January 2005 ; 9/12/06 2:02pm
;;5.3;Registration;**644**;Aug 13, 1993;Build 11
;
;This routine is called to set or remove cross references on
;file Home Telehealth Patient file (#391.31)
;
SETXREF(MSGID,SET,TYPE) ;Logic for "HTHNOACK" cross references of
; HOME TELEHEALTH PATIENT file (#391.31)
;
;Input : MSGID - HL7 Message ID
; SET - If 1, set cross reference
; If 0, kill cross reference
; TYPE - If 1, set triggered by tasked job
; If 0, set triggered by manual process
; demands special processing
; OLDMSGID - If there is an old message id
; xref needs to be removed.
;
;Output : None
;
;Check input
Q:'$G(MSGID)!'$G(SET)
;Check hl7 message, if status=3 make sure no xref exist and quit
I +$$MSGSTAT^HLUTIL(MSGID)=3 D KILLXREF(MSGID) Q
;Declare variables
N RECORD,TRANS,NODE0,TNODE,EVNTDATE,ACKCODE,CNT
;Set date and count if exist
S EVNTDATE=$G(DGDATE),CNT=$S($G(DGCOUNT)'="":DGCOUNT+1,1:0)
;Get ien and sien of hth patient record and set nodes
S RECORD=$O(^DGHT(391.31,"D",MSGID,0)) Q:'RECORD
S TRANS=$O(^DGHT(391.31,"D",MSGID,RECORD,0)) Q:'TRANS
S NODE0=$G(^DGHT(391.31,RECORD,0)),TNODE=$G(^("TRAN",TRANS,0))
;Check HTH file (#391.31) for AA, if so kill xref and quit
I ($P(TNODE,U,6)'="")!($P(TNODE,U,7)'="") D KILLXREF(MSGID) Q
;Get event date/time
S EVNTDATE=$S(TYPE=1:DGDATE,TYPE=0:$P(TNODE,U,1),1:"")
;No event date/time - don't set x-ref
Q:('EVNTDATE)
;Kill old xref if exist, then set the new xref
D KILLXREF(MSGID)
S ^DGHT(391.31,"HTHNOACK",MSGID,RECORD,TRANS)=CNT_U_EVNTDATE
Q
;
KILLXREF(MSGID) ;Kill x-ref
K ^DGHT(391.31,"HTHNOACK",MSGID)
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDGHTXREF 1817 printed Dec 13, 2024@02:43:50 Page 2
DGHTXREF ;ALB/JRC - Home Telehealth HL7 Message Monitoring Routine ;10 January 2005 ; 9/12/06 2:02pm
+1 ;;5.3;Registration;**644**;Aug 13, 1993;Build 11
+2 ;
+3 ;This routine is called to set or remove cross references on
+4 ;file Home Telehealth Patient file (#391.31)
+5 ;
SETXREF(MSGID,SET,TYPE) ;Logic for "HTHNOACK" cross references of
+1 ; HOME TELEHEALTH PATIENT file (#391.31)
+2 ;
+3 ;Input : MSGID - HL7 Message ID
+4 ; SET - If 1, set cross reference
+5 ; If 0, kill cross reference
+6 ; TYPE - If 1, set triggered by tasked job
+7 ; If 0, set triggered by manual process
+8 ; demands special processing
+9 ; OLDMSGID - If there is an old message id
+10 ; xref needs to be removed.
+11 ;
+12 ;Output : None
+13 ;
+14 ;Check input
+15 if '$GET(MSGID)!'$GET(SET)
QUIT
+16 ;Check hl7 message, if status=3 make sure no xref exist and quit
+17 IF +$$MSGSTAT^HLUTIL(MSGID)=3
DO KILLXREF(MSGID)
QUIT
+18 ;Declare variables
+19 NEW RECORD,TRANS,NODE0,TNODE,EVNTDATE,ACKCODE,CNT
+20 ;Set date and count if exist
+21 SET EVNTDATE=$GET(DGDATE)
SET CNT=$SELECT($GET(DGCOUNT)'="":DGCOUNT+1,1:0)
+22 ;Get ien and sien of hth patient record and set nodes
+23 SET RECORD=$ORDER(^DGHT(391.31,"D",MSGID,0))
if 'RECORD
QUIT
+24 SET TRANS=$ORDER(^DGHT(391.31,"D",MSGID,RECORD,0))
if 'TRANS
QUIT
+25 SET NODE0=$GET(^DGHT(391.31,RECORD,0))
SET TNODE=$GET(^("TRAN",TRANS,0))
+26 ;Check HTH file (#391.31) for AA, if so kill xref and quit
+27 IF ($PIECE(TNODE,U,6)'="")!($PIECE(TNODE,U,7)'="")
DO KILLXREF(MSGID)
QUIT
+28 ;Get event date/time
+29 SET EVNTDATE=$SELECT(TYPE=1:DGDATE,TYPE=0:$PIECE(TNODE,U,1),1:"")
+30 ;No event date/time - don't set x-ref
+31 if ('EVNTDATE)
QUIT
+32 ;Kill old xref if exist, then set the new xref
+33 DO KILLXREF(MSGID)
+34 SET ^DGHT(391.31,"HTHNOACK",MSGID,RECORD,TRANS)=CNT_U_EVNTDATE
+35 QUIT
+36 ;
KILLXREF(MSGID) ;Kill x-ref
+1 KILL ^DGHT(391.31,"HTHNOACK",MSGID)
+2 QUIT