HLOCLNT3 ;ALB/CJM- Updates messages missing application acks - 10/4/94 1pm ;03/12/2012
;;1.6;HEALTH LEVEL SEVEN;**126,130,134,137,158**;Oct 13, 1995;Build 14
;Per VHA Directive 2004-038, this routine should not be modified.
;
DOWORK(WORK) ;
;
N CUTOFF,MSGIEN,QUIT,NOW,SYSPURGE
S NOW=$$NOW^XLFDT
S QUIT=0
D SYSPURGE^HLOSITE(.SYSPURGE)
S PURGE=$$FMADD^XLFDT($$NOW^XLFDT,SYSPURGE("ERROR"))
;
;7 day wait for an application ack is more than reasonable
S CUTOFF=$$FMADD^XLFDT(NOW,-7)
;
S MSGIEN=+$G(^HLTMP("LAST IEN CHECKED FOR MISSING APPLICATION ACK"))
F S MSGIEN=$O(^HLB(MSGIEN)) Q:'MSGIEN Q:MSGIEN>99999999999 D Q:QUIT
.N MSG,HDR
.Q:'$$GETMSG^HLOMSG(MSGIEN,.MSG)
.Q:'MSG("DT/TM")
.Q:'MSG("BODY")
.I MSG("DT/TM")>CUTOFF S:MSG("DT/TM CREATED")>CUTOFF QUIT=1,MSGIEN=MSGIEN-1 Q
.Q:MSG("STATUS")'=""
.Q:MSG("DIRECTION")'="OUT"
.Q:MSG("BATCH")
.Q:MSG("STATUS","APP ACK'D")
.;Q:MSG("STATUS","APP ACK RESPONSE")=""
.;message has been in a incomplete status for a longtime, pending an application ack - set status to error and schedule for purging
.S $P(^HLB(MSGIEN,0),"^",9)=PURGE
.S ^HLB("AD","OUT",PURGE,MSGIEN)=""
.S $P(^HLB(MSGIEN,0),"^",20)="ER"
.S $P(^HLB(MSGIEN,0),"^",21)="MISSING APPLICATION ACKNOWLEDGMENT"
.M HDR=MSG("HDR")
.Q:'$$PARSEHDR^HLOPRS(.HDR)
.S ^HLB("ERRORS",$S($L(HDR("RECEIVING APPLICATION")):HDR("RECEIVING APPLICATION"),1:"UNKNOWN"),NOW,MSGIEN)=""
.D COUNT^HLOESTAT("OUT",HDR("RECEIVING APPLICATION"),HDR("SENDING APPLICATION"),$S(MSG("BATCH"):"BATCH",1:$G(HDR("MESSAGE TYPE"))),$G(HDR("EVENT")))
S:MSGIEN>99999999999 MSGIEN=0
S ^HLTMP("LAST IEN CHECKED FOR MISSING APPLICATION ACK")=MSGIEN
Q