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

AGMPIBGP.m

Go to the documentation of this file.
  1. AGMPIBGP ;IHS/SD/TPF - Patient Registration MPI INCOMING MESSAGE PROCESSOR
  1. ;;7.2;IHS PATIENT REGISTRATION;**1**;JAN 07, 2011
  1. ;BGP = BACKGROUND PROCESSOR
  1. Q
  1. TSK ;EP - TASKMAN ENTRY POINT
  1. L +^AGMPIBGP:5 Q:'$T ;DO NOT START IF ALREADY RUNNING
  1. N MSGDATE,MSGTYPE,MSGEVENT,MSGIEN
  1. S MSGDATE="" ;DATE MSG PLACED IN HLB
  1. F S MSGDATE=$O(^HLB("QUEUE","IN",MSGDATE)) Q:MSGDATE="" D
  1. .S MSGTYPE=""
  1. .F S MSGTYPE=$O(^HLB("QUEUE","IN",MSGDATE,"RPMS-MPI",MSGTYPE)) Q:MSGTYPE="" D
  1. ..S MSGEVENT=""
  1. ..F S MSGEVENT=$O(^HLB("QUEUE","IN",MSGDATE,"RPMS-MPI",MSGTYPE,MSGEVENT)) Q:MSGEVENT="" D
  1. ...S MSGIEN=""
  1. ...F S MSGIEN=$O(^HLB("QUEUE","IN",MSGDATE,"RPMS-MPI",MSGTYPE,MSGEVENT,MSGIEN)) Q:MSGIEN="" D
  1. ....;^HLB(4,2)=^20100429083020.78-0700^^ACK~A08^134^T^2.4^^^NE^NE
  1. ....;ACCEPT TYPE ACKNOWLEDGEMENT
  1. ....S ACCTYACK=$P($G(^HLB(MSGIEN,2)),U,10)
  1. ....I ACCTYACK="NE" D MSGCMPLT(MSGIEN) D KILL Q ;NO NEED TO PROCESS
  1. ....I ACCTYACK="" D Q
  1. .....S ERROR="NO ENTRY FOR THIS MSG IN THE 'IN QUEUE' KILLING X-REF"
  1. .....D MSGERR("","",MSGIEN,ERROR)
  1. .....D KILL
  1. ....I MSGEVENT="A08" D PROC^AGMPIACK(MSGIEN) D KILL Q
  1. ....I MSGEVENT="A28" D PROC^AGMPIACK(MSGIEN) D KILL Q
  1. ....I MSGEVENT="Q02" D PROC^AGMPHLVQ(MSGIEN) D KILL Q
  1. ....I MSGEVENT="M05" D PROC^AGMPHMFN(MSGIEN) D KILL Q
  1. ....I MSGEVENT="A01" D PROC^AGMPHL01(MSGIEN) D KILL Q
  1. ....I MSGEVENT="A03" D PROC^AGMPHL03(MSGIEN) D KILL Q
  1. ....; REMAINING MESSAGE TYPES ENCOUNTERED NOT PROCESSED
  1. ....S ERROR="ENTRY FOR MESSAGE EVENT '"_MSGEVENT_"' NOT BEING PROCESSED."
  1. ....D MSGERR("","",MSGIEN,ERROR)
  1. ....D MSGCMPLT(MSGIEN)
  1. ....D KILL Q
  1. L -^AGMPIBGP ;CLEAR RUNNING FLAG
  1. Q
  1. KILL ;EP - CLEAR QUE
  1. K ^HLB("QUEUE","IN",MSGDATE,"RPMS-MPI",MSGTYPE,MSGEVENT,MSGIEN)
  1. Q
  1. ;
  1. MSGERR(LOCALID,ACKIEN,HLMSGIEN,ERROR) ;EP - PROCESS ERROR ALERT
  1. S AGERROR="MSG IEN: "_HLMSGIEN_" :: "_ERROR
  1. D NOTIF^AGMPIHLO("",AGERROR)
  1. Q
  1. ;
  1. MSGCMPLT(MSGID) ;EP - MARK MESSAGE SUCCESSFULLY COMPLETED. SET PURGE INFORMATION
  1. I MSGID="" Q
  1. N PDT,NODE
  1. S NODE=$G(^HLB(MSGID,0))
  1. I NODE="" Q
  1. ;IF A PURGE DATE ALREADY EXISTS, KILL THE OLD "AD" ENTRY TO MAINTAIN THE CROSS-REFERENCE'S INTEGRITY
  1. S PDT=$P(NODE,U,9)
  1. I PDT'="" K ^HLB("AD","OUT",PDT,MSGID)
  1. ;SET PURGE DATE TO SEVEN DAYS FROM NOW
  1. S X="N+7D",%DT="R" D ^%DT S PDT=Y
  1. S $P(NODE,U,9)=PDT
  1. ;SET STATUS TO SUCCESS
  1. S $P(NODE,U,20)="SU"
  1. S ^HLB(MSGID,0)=NODE
  1. I PDT]"" S ^HLB("AD","OUT",PDT,MSGID)=""
  1. Q