[613] | 1 | HLUOPTF1 ;ALB/CJM-HL7 -Set Logic for the AI x-ref on file 773 ;02/04/2004
|
---|
| 2 | ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13, 1995
|
---|
| 3 | ;
|
---|
| 4 | PXREF(IEN,STATUS) ;sets the AI x-ref on file 773 and the FAST PURGE DT/TM fields in file 772 and 773
|
---|
| 5 | ;Input: IEN is the ien of record in file 773
|
---|
| 6 | ; STATUS is the new value of the STATUS field
|
---|
| 7 | ;Output: none
|
---|
| 8 | ;
|
---|
| 9 | Q:'$G(IEN)
|
---|
| 10 | ;
|
---|
| 11 | ;don't set the x-ref if status is not Successfully Completed
|
---|
| 12 | Q:($G(STATUS)'=3)
|
---|
| 13 | ;
|
---|
| 14 | N NODE,WHEN,CHILD
|
---|
| 15 | ;
|
---|
| 16 | ;also not if DON'T PURGE field is set
|
---|
| 17 | Q:$P($G(^HLMA(IEN,2)),"^")=1
|
---|
| 18 | ;
|
---|
| 19 | ;also not if this isn't the initial message
|
---|
| 20 | S NODE=$G(^HLMA(IEN,0))
|
---|
| 21 | I $P(NODE,"^",6),$P(NODE,"^",6)'=IEN Q
|
---|
| 22 | ;
|
---|
| 23 | ;This record can be purged via FAST PURGE
|
---|
| 24 | ;determine the dt/tm the record can be purged
|
---|
| 25 | S WHEN=$$NOW^XLFDT
|
---|
| 26 | S WHEN=$$FMADD^XLFDT(WHEN,$$WAIT)
|
---|
| 27 | ;
|
---|
| 28 | ;set the FAST PURGE DT/TM and x-ref, and do the same for file 772 record
|
---|
| 29 | D SET(IEN,WHEN,+NODE)
|
---|
| 30 | ;
|
---|
| 31 | ;All the records in file 773 that point to this record (children) should be purged at the same time
|
---|
| 32 | S CHILD=0
|
---|
| 33 | F S CHILD=$O(^HLMA("AF",IEN,CHILD)) Q:'CHILD D:(CHILD'=IEN) SET(CHILD,WHEN,+$G(^HLMA(CHILD,0)))
|
---|
| 34 | Q
|
---|
| 35 | ;
|
---|
| 36 | SET(IEN773,WHEN,IEN772) ;sets FAST PURGE DT/TM for and the AI x~ref for both file 772 & 773
|
---|
| 37 | ;Input:
|
---|
| 38 | ; IEN773 - ien of record to be purged in file 773
|
---|
| 39 | ; WHEN - date/time to purge
|
---|
| 40 | ; IEN772 - ien of corresponding record in file 772
|
---|
| 41 | ;
|
---|
| 42 | N OLDWHEN
|
---|
| 43 | ;if the fast purge dt/tm changed, kill the old xref
|
---|
| 44 | S OLDWHEN=$P($G(^HLMA(IEN773,2)),"^",2)
|
---|
| 45 | I $L(OLDWHEN) K ^HLMA("AI",OLDWHEN,773,IEN773)
|
---|
| 46 | ;
|
---|
| 47 | ;set the FAST PURGE DATE
|
---|
| 48 | S $P(^HLMA(IEN773,2),"^",2)=WHEN
|
---|
| 49 | ;
|
---|
| 50 | ;set the AI x-ref
|
---|
| 51 | S ^HLMA("AI",WHEN,773,IEN773)=""
|
---|
| 52 | ;
|
---|
| 53 | ;do the same for the corresponding entry in file 772
|
---|
| 54 | I IEN772,$D(^HL(772,IEN772,0)) D
|
---|
| 55 | .;if the fast purge dt/tm changed, kill the old xref
|
---|
| 56 | .S OLDWHEN=$P($G(^HL(772,IEN772,2)),"^",2)
|
---|
| 57 | .I $L(OLDWHEN) K ^HLMA("AI",OLDWHEN,772,IEN772)
|
---|
| 58 | .;set the FAST PURGE DATE
|
---|
| 59 | .S $P(^HL(772,IEN772,2),"^",2)=WHEN
|
---|
| 60 | .;
|
---|
| 61 | .;set the AI x-ref
|
---|
| 62 | .S ^HLMA("AI",WHEN,772,IEN772)=""
|
---|
| 63 | Q
|
---|
| 64 | ;
|
---|
| 65 | WAIT() ;
|
---|
| 66 | ;returns the wait time to purge completed messages from file 869.3
|
---|
| 67 | N IEN
|
---|
| 68 | S IEN=$O(^HLCS(869.3,0))
|
---|
| 69 | Q:'IEN 0
|
---|
| 70 | Q +$G(^HLCS(869.3,IEN,4))
|
---|