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

AGMPPURG.m

Go to the documentation of this file.
  1. AGMPPURG ; IHS/SD/TPF - MPI HLO MESSAGE PURGE
  1. ;;7.2;IHS PATIENT REGISTRATION;**1,6**;JAN 07, 2011;Build 23
  1. Q
  1. ;
  1. ;NOT FINISHED
  1. INTERACT ;EP - USER INTERACTIVE PURGE
  1. N ONLYSUC,ONLYFAIL,ONLYADT,ONLYACK,ONLYA28,ONLYA08
  1. N ONLYMFN,ONLYMFK
  1. Q
  1. ;
  1. PURGE ;EP PURGE MPI HL7 MESSAGES OLDER THAN 7DAYS
  1. ;
  1. N MPIIEN,MPIIEN2,MPIDATE,MPIDT1,MPIDAYS,MPITYPE,QUIT
  1. N GRDTOTAL,EVENTTOT,DIRECTOT,MSGTYPTO,ACKCODET,STATUSTO
  1. S (GRDTOTAL,EVENTTOT,DIRECTOT,MSGTYPTO,STATUSTO)=0
  1. S (MPIIEN,MPIIEN2,QUIT)=0
  1. S MPIDAYS=$$GET1^DIQ(9009061,DUZ(2)_",",2202) ;DAYS TO KEEP MPI HLO MESSAGES
  1. S:MPIDAYS="" MPIDAYS=7
  1. S X="T-"_MPIDAYS D ^%DT S PURGDT=Y
  1. ;B "S+"
  1. ;S PURGDT=3100804
  1. F S MPIIEN=$O(^HLB(MPIIEN)) Q:'MPIIEN!(QUIT) D
  1. .S LINK=$P($G(^HLB(MPIIEN,0)),U,5)
  1. .Q:LINK'="MPI"
  1. .S MPIDIREC=$P($G(^HLB(MPIIEN,0)),U,4) ;DIRECTION INCOMING DO NOT HAVE A COMPLETION STATUS
  1. .S COMSTAT=$P($G(^HLB(MPIIEN,0)),U,20) ;COMPLETION STATUS
  1. .S SCHEDPUR=$P($G(^HLB(MPIIEN,0)),U,9) ;SCHEDULED PURGE
  1. .S MSGBOD=$P($G(^HLB(MPIIEN,0)),U,2) ;MESSAGE BODY
  1. .S MSGTYPE=$P($G(^HLA(MSGBOD,0)),U,3) ;MESSAGE TYPE
  1. .S EVENT=$P($G(^HLA(MSGBOD,0)),U,4) ;EVENT
  1. .I COMSTAT'="SU" Q
  1. .S TRANDATE=$P($G(^HLB(MPIIEN,0)),U,16) ;TRANSMISSION DATE/TIME
  1. .S MSGID=$P($G(^HLB(MPIIEN,0)),U) ;MESSAGE ID
  1. .S ACKCODE=$P($G(^HLA(MSGID,1,1,0)),U,2)
  1. .;B "S+"
  1. .I $G(TRANDATE)>(PURGDT) S QUIT=1 Q
  1. .S GRDTOTAL=GRDTOTAL+1
  1. .S:EVENT'="" EVENTTOT(EVENT)=$G(EVENTTOT(EVENT))+1
  1. .S:MPIDIREC'="" DIRECTOT(MPIDIREC)=$G(DIRECTOT(MPIDIREC))+1
  1. .S:MSGTYPE'="" MSGTYPTO(MSGTYPE)=$G(MSGTYPTO(MSGTYPE))+1
  1. .S:ACKCODE'="" ACKCODET(ACKCODE)=$G(ACKCODET(ACKCODE))+1
  1. .S COMSTAT=$S(COMSTAT'="":COMSTAT,1:"UNDEF")
  1. .S STATUSTO=$G(STATUSTO(COMSTAT))+1
  1. .I '$D(ZTQUEUED) D
  1. ..W !!,"TRANDATE: ",TRANDATE
  1. ..W !,"PURGE: ",MPIIEN
  1. ..W !,"MPIDIREC: ",MPIDIREC
  1. ..W !,"MSG TYPE: ",MSGTYPE
  1. ..W !,"EVENT: ",EVENT
  1. ..W !,"ACKCODE: ",ACKCODE
  1. .;B:SCHEDPUR="" "S+"
  1. .S DA=MPIIEN,DIK="^HLB(" D ^DIK
  1. .S DA=MSGBOD,DIK="^HLA(" D ^DIK
  1. .D AC(MPIIEN,MSGID) ;CLEAN UP FOR HLB
  1. .I MPIDIREC="I" D ADI,QUEUEI Q
  1. .I MPIDIREC="O" D ADO(SCHEDPUR),QUEUEO
  1. I '$D(ZTQUEUED) D PRINT
  1. Q
  1. ;USE TO CLEAN UP BODIES W/O HEADERS. RESET HLC
  1. SELKILL ;EP
  1. ; 9/08/2017 - GCD - CR 7705 - Disabled this because it can delete data for any HLO application, not just MPI, among other issues.
  1. Q
  1. ;
  1. S IEN=0 F CNT=1:1 S IEN=$O(^HLA(IEN)) Q:IEN="" D
  1. .Q:$D(^HLB(IEN))
  1. .S DA=IEN,DIK="^HLA(" D ^DIK
  1. .W "."
  1. S ^HLC("FILE777","OUT")=BEGIN
  1. S ^HLC("FILE778","OUT","TCP")=BEGIN
  1. Q
  1. ;
  1. PRINT ;EP - PRINT COUNTS
  1. N EVENT,MPIDIREC,MSGTYPE,ACKCODE
  1. S EVENT=""
  1. F S EVENT=$O(EVENTTOT(EVENT)) Q:EVENT="" W !,"EVENT: ",EVENT,?25,EVENTTOT(EVENT)
  1. S MPIDIREC=""
  1. F S MPIDIREC=$O(DIRECTOT(MPIDIREC)) Q:MPIDIREC="" W !,"DIRECTION: ",MPIDIREC,?25,DIRECTOT(MPIDIREC)
  1. S MSGTYPE=""
  1. F S MSGTYPE=$O(MSGTYPTO(MSGTYPE)) Q:MSGTYPE="" W !,"MSG TYPE: ",MSGTYPE,?25,MSGTYPTO(MSGTYPE)
  1. S ACKCODE=""
  1. F S ACKCODE=$O(ACKCODET(ACKCODE)) Q:ACKCODE="" W !,"ACK CODE: ",ACKCODE,?25,ACKCODET(ACKCODE)
  1. W !,"GRAND TOT PURGED: ",GRDTOTAL
  1. Q
  1. ;
  1. AC(MPIIEN,MSGID) ;DELETE "AC" XREF FOR IEN
  1. ;MPI EXAMPLE:HLB("AC","8990MPI14752 26",26)=
  1. ;STATION # MPI = 8990
  1. ;HL LOGICAL LINK = MPI
  1. ;MSG ID = 14752 26
  1. K ^HLB("AC",MSGID,MPIIEN)
  1. S CMP="8990MPI"_MSGID
  1. K ^HLB("AC",CMP,MPIIEN)
  1. Q
  1. ADI ;DELETE "AD" XREF FOR "IN" IEN
  1. K ^HLB("AD","IN",MPIIEN)
  1. Q
  1. ADO(SCHEDPUR) ;DELETE "AD" XREF FOR "OUT" IEN
  1. Q:$G(SCHEDPUR)=""
  1. ;EXAMPLE: ^HLB("AD","OUT",3090819.1143,3)=""
  1. K ^HLB("AD","OUT",SCHEDPUR,MPIIEN)
  1. Q
  1. QUEUEI ;DELETE "QUEUE" XREF FOR IEN
  1. ;EXAMPLE: ^HLB("QUEUE","IN",3100611.0903,"RPMS-MPI","ACK","A28",42)
  1. K ^HLB("QUEUE","IN",TRANDATE,"RPMS-MPI",MSGTYPE,EVENT,MPIIEN)
  1. Q
  1. QUEUEO ;DELETE "QUEUE" XREF FOR IEN
  1. ;EXAMPLE: ^HLB("QUEUE","OUT","MPI:8899","MPI RPMS",41)=
  1. N HLOG,PORT,MPILINK,REC
  1. S HLOG=$O(^HLCS(870,"B","MPI","")) ;MPI LOGICAL LINK
  1. S PORT=$$GET1^DIQ(870,HLOG_",",400.08,"E") ;TCP/IP PORT (OPTIMIZED)
  1. S MPILINK="MPI:"_PORT
  1. K ^HLB("QUEUE","OUT",MPILINK,"MPI RPMS",MPIIEN)
  1. Q