HLUOPTF1 ;ALB/CJM-HL7 -Set Logic for the AI x-ref on file 773 ;02/04/2004
;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13, 1995
;
PXREF(IEN,STATUS) ;sets the AI x-ref on file 773 and the FAST PURGE DT/TM fields in file 772 and 773
;Input: IEN is the ien of record in file 773
; STATUS is the new value of the STATUS field
;Output: none
;
Q:'$G(IEN)
;
;don't set the x-ref if status is not Successfully Completed
Q:($G(STATUS)'=3)
;
N NODE,WHEN,CHILD
;
;also not if DON'T PURGE field is set
Q:$P($G(^HLMA(IEN,2)),"^")=1
;
;also not if this isn't the initial message
S NODE=$G(^HLMA(IEN,0))
I $P(NODE,"^",6),$P(NODE,"^",6)'=IEN Q
;
;This record can be purged via FAST PURGE
;determine the dt/tm the record can be purged
S WHEN=$$NOW^XLFDT
S WHEN=$$FMADD^XLFDT(WHEN,$$WAIT)
;
;set the FAST PURGE DT/TM and x-ref, and do the same for file 772 record
D SET(IEN,WHEN,+NODE)
;
;All the records in file 773 that point to this record (children) should be purged at the same time
S CHILD=0
F S CHILD=$O(^HLMA("AF",IEN,CHILD)) Q:'CHILD D:(CHILD'=IEN) SET(CHILD,WHEN,+$G(^HLMA(CHILD,0)))
Q
;
SET(IEN773,WHEN,IEN772) ;sets FAST PURGE DT/TM for and the AI x~ref for both file 772 & 773
;Input:
; IEN773 - ien of record to be purged in file 773
; WHEN - date/time to purge
; IEN772 - ien of corresponding record in file 772
;
N OLDWHEN
;if the fast purge dt/tm changed, kill the old xref
S OLDWHEN=$P($G(^HLMA(IEN773,2)),"^",2)
I $L(OLDWHEN) K ^HLMA("AI",OLDWHEN,773,IEN773)
;
;set the FAST PURGE DATE
S $P(^HLMA(IEN773,2),"^",2)=WHEN
;
;set the AI x-ref
S ^HLMA("AI",WHEN,773,IEN773)=""
;
;do the same for the corresponding entry in file 772
I IEN772,$D(^HL(772,IEN772,0)) D
.;if the fast purge dt/tm changed, kill the old xref
.S OLDWHEN=$P($G(^HL(772,IEN772,2)),"^",2)
.I $L(OLDWHEN) K ^HLMA("AI",OLDWHEN,772,IEN772)
.;set the FAST PURGE DATE
.S $P(^HL(772,IEN772,2),"^",2)=WHEN
.;
.;set the AI x-ref
.S ^HLMA("AI",WHEN,772,IEN772)=""
Q
;
WAIT() ;
;returns the wait time to purge completed messages from file 869.3
N IEN
S IEN=$O(^HLCS(869.3,0))
Q:'IEN 0
Q +$G(^HLCS(869.3,IEN,4))
HLUOPTF1 ;ALB/CJM-HL7 -Set Logic for the AI x-ref on file 773 ;02/04/2004
+1 ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13, 1995
+2 ;
PXREF(IEN,STATUS) ;sets the AI x-ref on file 773 and the FAST PURGE DT/TM fields in file 772 and 773
+1 ;Input: IEN is the ien of record in file 773
+2 ; STATUS is the new value of the STATUS field
+3 ;Output: none
+4 ;
+5 IF '$GET(IEN)
QUIT
+6 ;
+7 ;don't set the x-ref if status is not Successfully Completed
+8 IF ($GET(STATUS)'=3)
QUIT
+9 ;
+10 NEW NODE,WHEN,CHILD
+11 ;
+12 ;also not if DON'T PURGE field is set
+13 IF $PIECE($GET(^HLMA(IEN,2)),"^")=1
QUIT
+14 ;
+15 ;also not if this isn't the initial message
+16 SET NODE=$GET(^HLMA(IEN,0))
+17 IF $PIECE(NODE,"^",6)
IF $PIECE(NODE,"^",6)'=IEN
QUIT
+18 ;
+19 ;This record can be purged via FAST PURGE
+20 ;determine the dt/tm the record can be purged
+21 SET WHEN=$$NOW^XLFDT
+22 SET WHEN=$$FMADD^XLFDT(WHEN,$$WAIT)
+23 ;
+24 ;set the FAST PURGE DT/TM and x-ref, and do the same for file 772 record
+25 DO SET(IEN,WHEN,+NODE)
+26 ;
+27 ;All the records in file 773 that point to this record (children) should be purged at the same time
+28 SET CHILD=0
+29 FOR
SET CHILD=$ORDER(^HLMA("AF",IEN,CHILD))
IF 'CHILD
QUIT
IF (CHILD'=IEN)
DO SET(CHILD,WHEN,+$GET(^HLMA(CHILD,0)))
+30 QUIT
+31 ;
SET(IEN773,WHEN,IEN772) ;sets FAST PURGE DT/TM for and the AI x~ref for both file 772 & 773
+1 ;Input:
+2 ; IEN773 - ien of record to be purged in file 773
+3 ; WHEN - date/time to purge
+4 ; IEN772 - ien of corresponding record in file 772
+5 ;
+6 NEW OLDWHEN
+7 ;if the fast purge dt/tm changed, kill the old xref
+8 SET OLDWHEN=$PIECE($GET(^HLMA(IEN773,2)),"^",2)
+9 IF $LENGTH(OLDWHEN)
KILL ^HLMA("AI",OLDWHEN,773,IEN773)
+10 ;
+11 ;set the FAST PURGE DATE
+12 SET $PIECE(^HLMA(IEN773,2),"^",2)=WHEN
+13 ;
+14 ;set the AI x-ref
+15 SET ^HLMA("AI",WHEN,773,IEN773)=""
+16 ;
+17 ;do the same for the corresponding entry in file 772
+18 IF IEN772
IF $DATA(^HL(772,IEN772,0))
Begin DoDot:1
+19 ;if the fast purge dt/tm changed, kill the old xref
+20 SET OLDWHEN=$PIECE($GET(^HL(772,IEN772,2)),"^",2)
+21 IF $LENGTH(OLDWHEN)
KILL ^HLMA("AI",OLDWHEN,772,IEN772)
+22 ;set the FAST PURGE DATE
+23 SET $PIECE(^HL(772,IEN772,2),"^",2)=WHEN
+24 ;
+25 ;set the AI x-ref
+26 SET ^HLMA("AI",WHEN,772,IEN772)=""
End DoDot:1
+27 QUIT
+28 ;
WAIT() ;
+1 ;returns the wait time to purge completed messages from file 869.3
+2 NEW IEN
+3 SET IEN=$ORDER(^HLCS(869.3,0))
+4 IF 'IEN
QUIT 0
+5 QUIT +$GET(^HLCS(869.3,IEN,4))