IVMPREC7 ;ALB/SEK,RTK - ROUTINE TO PROCESS INCOMING (Z06 EVENT TYPE) HL7 MESSAGES ; 31 May 94
;;2.0;INCOME VERIFICATION MATCH;**1,17,44,34,77**;21-OCT-94
;;Per VHA Directive 10-93-142, this routine should not be modified.
;
; This routine will process (validate) batch ORU Means Test(event type
; Z06) HL7 messages received from the IVM center. Format of batch:
; BHS
; {MSH
; PID
; ZIC
; ZIR
; {ZDP
; ZIC
; ZIR
; }
; ZMT
; }
; BTS
;
EN ; entry point to validate Means Test messages
;
F IVMDA=1:0 S IVMDA=$O(^TMP($J,IVMRTN,IVMDA)) Q:'IVMDA S IVMSEG=$G(^(IVMDA,0)) I $E(IVMSEG,1,3)="MSH" D Q:'IVMDA
.K HLERR
EN1 .S HLMID=$P(IVMSEG,HLFS,10) ; message control id from MSH
.S IVMFLGC=0
.D GET I IVMSEG1'="PID" D Q
..S HLERR="Missing PID segment" D ACK^IVMPREC
.S DFN=$P($P(IVMSEG,HLFS,4),$E(HLECH))
.I ('DFN!(DFN'=+DFN)!('$D(^DPT(+DFN,0)))) D Q
..S HLERR="Invalid DFN" D ACK^IVMPREC
.I $P(IVMSEG,HLFS,20)'=$P(^DPT(DFN,0),"^",9) S HLERR="Couldn't match IVM SSN with DHCP SSN" D ACK^IVMPREC Q
.S IVMDAP=IVMDA ; save IVMDA for veteran PID segment
.;
.; check for veteran's ZIC and ZIR segments
.D GET I IVMSEG1'="ZIC" D Q
..S HLERR="Missing veteran's ZIC segment" D ACK^IVMPREC
.S IVMDGLY=$P(IVMSEG,"^",3) ; income year
.D GET I IVMSEG1'="ZIR" D Q
..S HLERR="Missing veteran's ZIR segment" D ACK^IVMPREC
.;
.; check for spouse's ZDP, ZIC, ZIR segments
.D GET I IVMSEG1'="ZDP" D Q
..S HLERR="Missing spouse's ZDP segment" D ACK^IVMPREC
.S IVMDAS=IVMDA ; save IVMDA for spouse ZDP segment
.D GET I IVMSEG1'="ZIC" D Q
..S HLERR="Missing spouse's ZIC segment" D ACK^IVMPREC
.D GET I IVMSEG1'="ZIR" D Q
..S HLERR="Missing spouse's ZIR segment" D ACK^IVMPREC
.;
.; check for dependent children's ZDP, ZIC, ZIR segments and ZMT segment
.K IVMERR
.S IVMFLG7=0
.F D Q:$D(IVMERR)!(IVMSEG1="ZMT")
..D GET I IVMSEG1'="ZDP"&(IVMSEG1'="ZMT") D Q
...S HLERR="Missing child's ZDP segment or ZMT segment",IVMERR="" D ACK^IVMPREC
..I IVMSEG1="ZMT" D Q
...S:$P(IVMSEG,"^",4)=HLQ IVMFLG7=1 ; delete MT if status is HLQ
...S IVMDAZ=IVMDA ; ZMT segment ivmda
..I $P(IVMSEG,"^",2)']""!($P(IVMSEG,"^",3)']"")!($P(IVMSEG,"^",4)']"") D Q
... S HLERR="Missing child data from ZDP segment",IVMERR="" D ACK^IVMPREC
..D GET I IVMSEG1'="ZIC" D Q
...S HLERR="Missing child's ZIC segment",IVMERR="" D ACK^IVMPREC
..D GET I IVMSEG1'="ZIR" D Q
...S HLERR="Missing child's ZIR segment",IVMERR="" D ACK^IVMPREC
..S IVMFLGC=IVMFLGC+1 ; # of children
.;
.Q:$D(IVMERR)&(IVMSEG1'="MSH")
.G EN1:IVMSEG1="MSH"
.;
.; get primary means test
.; ivmmtdt - means test date
.; dgly - income year
.; if Means Test not in DHCP don't upload IVM Means Test
.S IVMMTDT=$$FMDATE^HLFNC($P(IVMSEG,HLFS,3)) ; means test date from ZMT segment
.S DGLY=$$LYR^DGMTSCU1(IVMMTDT)
.S IVMMTIEN=+$$LST^DGMTU(DFN,IVMMTDT) ; primary means test IEN
.;
.I IVMFLG7 D ^IVMUM7 Q ; delete means test
.;
.S (IVMMT31,DGMTP)=$G(^DGMT(408.31,IVMMTIEN,0)) ; dgmtp is event driver variable
.I $P(IVMMT31,"^")'=IVMMTDT D Q
..S Y=IVMMTDT X ^DD("DD")
..S IVMTEXT(6)="Means Test of "_Y_" not in DHCP."
..D ERRBULL,MAIL^IVMUFNC()
..S HLERR="Means test not in DHCP" D ACK^IVMPREC
..Q
.I $P(IVMMT31,"^",23)=2 S Y=IVMMTDT X ^DD("DD") S HLERR="2nd means test sent for "_Y D ACK^IVMPREC Q
.;
.; do not upload IVM means test if primary means test status is
.; 3-no longer required
.; or if hardship case
.S IVMSTAT=$P(IVMMT31,"^",3)
.I IVMSTAT=3 S HLERR="NOT UPLOADED no longer required" D ACK^IVMPREC Q
.I $P(IVMMT31,"^",20)=1 S HLERR="NOT UPLOADED hardship case" D ACK^IVMPREC Q
.D ^IVMUM1 ; upload means test
.I $D(HLERR) D ACK^IVMPREC
.;
.; cleanup
.K DGLY,DGMTP,IVMDAP,IVMDAS,IVMDAZ,IVMDGLY,IVMFLG7,IVMFLGC,IVMMT31,IVMMTDT,IVMMTIEN,IVMSEG,IVMSEG1,IVMSTAT,IVMTEXT,XMSUB
.Q
Q
;
GET ; get HL7 segment from ^HL
S IVMDA=$O(^TMP($J,IVMRTN,+IVMDA)),IVMSEG=$G(^(+IVMDA,0))
S IVMSEG1=$E(IVMSEG,1,3)
Q
;
ERRBULL ; build mail message for transmission to IVM mail group notifying site
; of upload error.
S IVMPAT=$$PT^IVMUFNC4(DFN)
S XMSUB="IVM - MEANS TEST UPLOAD"
S IVMTEXT(1)="The following error occured when an Income Verification Match"
S IVMTEXT(2)="verified Means Test was being uploaded for the following patient:"
S IVMTEXT(3)=" "
S IVMTEXT(4)=" NAME: "_$P(IVMPAT,"^")
S IVMTEXT(5)=" ID: "_$P(IVMPAT,"^",2)
S IVMTEXT(6)=" ERROR: "_IVMTEXT(6)
Q
ORF ;entry point for Means Test Signature Z06 msgs.
I $G(HLFS)="" S HLFS="^"
I $G(HLECH)="" S HLECH="~"
F IVMDA=0:0 S IVMDA=$O(^TMP($J,IVMRTN,IVMDA)) Q:'IVMDA S IVMSEG=$G(^(IVMDA,0)) I $E(IVMSEG,1,3)="MSH" D Q:'IVMDA
.K HLERR
.S HLMID=$P(IVMSEG,HLFS,10) ; message control id from MSH
.S IVMFLGC=0
.D GET I IVMSEG1'="PID" D Q
..S HLERR="Missing PID segment" D ACK^IVMPREC
.S DFN=$P($P(IVMSEG,HLFS,4),$E(HLECH))
.I ('DFN!(DFN'=+DFN)!('$D(^DPT(+DFN,0)))) D Q
..S HLERR="Invalid DFN" D ACK^IVMPREC
.I $P(IVMSEG,HLFS,20)'=$P(^DPT(DFN,0),"^",9) S HLERR="Couldn't match IVMSSN with DHCP SSN" D ACK^IVMPREC Q
.S IVMDAP=IVMDA ; save IVMDA for veteran PID segment
.D GET I IVMSEG1'="ZMT" D Q
..S HLERR="Missing ZMT segment" D ACK^IVMPREC
.; IVMMTDT - means test date
.; DGLY - income year
.; if Means Test not in DHCP don't upload IVM Means Test
.S IVMMTDT=$$FMDATE^HLFNC($P(IVMSEG,HLFS,3)) ; means test date from ZMT segment
.S DGLY=$$LYR^DGMTSCU1(IVMMTDT)
.; get means test to be updated
.N UPMTS
.S MTDATE=-IVMMTDT,IVMMTIEN="",MTFND=0
.F S IVMMTIEN=$O(^DGMT(408.31,"AID",1,DFN,MTDATE,IVMMTIEN),-1) Q:MTFND!(IVMMTIEN="") D
..I $$Z06MT^EASPTRN1(IVMMTIEN) Q ;EDB Z06 - Don't use this one
..; match site completing in case multiple tests for same date
..I $P(IVMSEG,HLFS,23)=$P(^DGMT(408.31,IVMMTIEN,2),HLFS,5) S UPMTS=IVMMTIEN,MTFND=1 Q
.S (IVMMT31,DGMTP)=$G(^DGMT(408.31,UPMTS,0)) ; DGMTP is event driver variable
.I $P(IVMMT31,"^")'=IVMMTDT D Q
..S Y=IVMMTDT X ^DD("DD")
..S IVMTEXT(6)="Means Test of "_Y_" not in DHCP."
..D ERRBULL,MAIL^IVMUFNC()
..S HLERR="Means test not in DHCP" D ACK^IVMPREC
..Q
.I $P(IVMMT31,"^",23)=2 S Y=IVMMTDT X ^DD("DD") S HLERR="2nd means test sent for "_Y D ACK^IVMPREC Q
.; do not upload IVM means test if primary means test status is
.; 3-no longer required
.; or if hardship case
.S IVMSTAT=$P(IVMMT31,"^",3)
.I IVMSTAT=3 S HLERR="NOT UPLOADED no longer required" D ACK^IVMPREC Q
.I $P(IVMMT31,"^",20)=1 S HLERR="NOT UPLOADED hardship case" D ACK^IVMPREC Q
.;get MT signature and date/time edited info, update means test
.N DATA
.S DATA(.29)=$P(IVMSEG,HLFS,28),DATA(2.02)=$$FMDATE^HLFNC($P(IVMSEG,HLFS,26)) I $D(DATA(.29)) D
..I $$UPD^DGENDBS(408.31,UPMTS,.DATA)
.I '$D(HLERR) D ACK^IVMPREC
.;
.; cleanup
.K DGLY,DGMTP,IVMDAP,IVMDAS,IVMDAZ,IVMDGLY,IVMFLG7,IVMFLGC,IVMMT31,IVMMTDT,IVMMTIEN,IVMSEG,IVMSEG1,IVMSTAT,IVMTEXT,XMSUB,FMDATE,MTDATE
.Q
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIVMPREC7 7090 printed Oct 16, 2024@18:03:02 Page 2
IVMPREC7 ;ALB/SEK,RTK - ROUTINE TO PROCESS INCOMING (Z06 EVENT TYPE) HL7 MESSAGES ; 31 May 94
+1 ;;2.0;INCOME VERIFICATION MATCH;**1,17,44,34,77**;21-OCT-94
+2 ;;Per VHA Directive 10-93-142, this routine should not be modified.
+3 ;
+4 ; This routine will process (validate) batch ORU Means Test(event type
+5 ; Z06) HL7 messages received from the IVM center. Format of batch:
+6 ; BHS
+7 ; {MSH
+8 ; PID
+9 ; ZIC
+10 ; ZIR
+11 ; {ZDP
+12 ; ZIC
+13 ; ZIR
+14 ; }
+15 ; ZMT
+16 ; }
+17 ; BTS
+18 ;
EN ; entry point to validate Means Test messages
+1 ;
+2 FOR IVMDA=1:0
SET IVMDA=$ORDER(^TMP($JOB,IVMRTN,IVMDA))
if 'IVMDA
QUIT
SET IVMSEG=$GET(^(IVMDA,0))
IF $EXTRACT(IVMSEG,1,3)="MSH"
Begin DoDot:1
+3 KILL HLERR
EN1 ; message control id from MSH
SET HLMID=$PIECE(IVMSEG,HLFS,10)
+1 SET IVMFLGC=0
+2 DO GET
IF IVMSEG1'="PID"
Begin DoDot:2
+3 SET HLERR="Missing PID segment"
DO ACK^IVMPREC
End DoDot:2
QUIT
+4 SET DFN=$PIECE($PIECE(IVMSEG,HLFS,4),$EXTRACT(HLECH))
+5 IF ('DFN!(DFN'=+DFN)!('$DATA(^DPT(+DFN,0))))
Begin DoDot:2
+6 SET HLERR="Invalid DFN"
DO ACK^IVMPREC
End DoDot:2
QUIT
+7 IF $PIECE(IVMSEG,HLFS,20)'=$PIECE(^DPT(DFN,0),"^",9)
SET HLERR="Couldn't match IVM SSN with DHCP SSN"
DO ACK^IVMPREC
QUIT
+8 ; save IVMDA for veteran PID segment
SET IVMDAP=IVMDA
+9 ;
+10 ; check for veteran's ZIC and ZIR segments
+11 DO GET
IF IVMSEG1'="ZIC"
Begin DoDot:2
+12 SET HLERR="Missing veteran's ZIC segment"
DO ACK^IVMPREC
End DoDot:2
QUIT
+13 ; income year
SET IVMDGLY=$PIECE(IVMSEG,"^",3)
+14 DO GET
IF IVMSEG1'="ZIR"
Begin DoDot:2
+15 SET HLERR="Missing veteran's ZIR segment"
DO ACK^IVMPREC
End DoDot:2
QUIT
+16 ;
+17 ; check for spouse's ZDP, ZIC, ZIR segments
+18 DO GET
IF IVMSEG1'="ZDP"
Begin DoDot:2
+19 SET HLERR="Missing spouse's ZDP segment"
DO ACK^IVMPREC
End DoDot:2
QUIT
+20 ; save IVMDA for spouse ZDP segment
SET IVMDAS=IVMDA
+21 DO GET
IF IVMSEG1'="ZIC"
Begin DoDot:2
+22 SET HLERR="Missing spouse's ZIC segment"
DO ACK^IVMPREC
End DoDot:2
QUIT
+23 DO GET
IF IVMSEG1'="ZIR"
Begin DoDot:2
+24 SET HLERR="Missing spouse's ZIR segment"
DO ACK^IVMPREC
End DoDot:2
QUIT
+25 ;
+26 ; check for dependent children's ZDP, ZIC, ZIR segments and ZMT segment
+27 KILL IVMERR
+28 SET IVMFLG7=0
+29 FOR
Begin DoDot:2
+30 DO GET
IF IVMSEG1'="ZDP"&(IVMSEG1'="ZMT")
Begin DoDot:3
+31 SET HLERR="Missing child's ZDP segment or ZMT segment"
SET IVMERR=""
DO ACK^IVMPREC
End DoDot:3
QUIT
+32 IF IVMSEG1="ZMT"
Begin DoDot:3
+33 ; delete MT if status is HLQ
if $PIECE(IVMSEG,"^",4)=HLQ
SET IVMFLG7=1
+34 ; ZMT segment ivmda
SET IVMDAZ=IVMDA
End DoDot:3
QUIT
+35 IF $PIECE(IVMSEG,"^",2)']""!($PIECE(IVMSEG,"^",3)']"")!($PIECE(IVMSEG,"^",4)']"")
Begin DoDot:3
+36 SET HLERR="Missing child data from ZDP segment"
SET IVMERR=""
DO ACK^IVMPREC
End DoDot:3
QUIT
+37 DO GET
IF IVMSEG1'="ZIC"
Begin DoDot:3
+38 SET HLERR="Missing child's ZIC segment"
SET IVMERR=""
DO ACK^IVMPREC
End DoDot:3
QUIT
+39 DO GET
IF IVMSEG1'="ZIR"
Begin DoDot:3
+40 SET HLERR="Missing child's ZIR segment"
SET IVMERR=""
DO ACK^IVMPREC
End DoDot:3
QUIT
+41 ; # of children
SET IVMFLGC=IVMFLGC+1
End DoDot:2
if $DATA(IVMERR)!(IVMSEG1="ZMT")
QUIT
+42 ;
+43 if $DATA(IVMERR)&(IVMSEG1'="MSH")
QUIT
+44 if IVMSEG1="MSH"
GOTO EN1
+45 ;
+46 ; get primary means test
+47 ; ivmmtdt - means test date
+48 ; dgly - income year
+49 ; if Means Test not in DHCP don't upload IVM Means Test
+50 ; means test date from ZMT segment
SET IVMMTDT=$$FMDATE^HLFNC($PIECE(IVMSEG,HLFS,3))
+51 SET DGLY=$$LYR^DGMTSCU1(IVMMTDT)
+52 ; primary means test IEN
SET IVMMTIEN=+$$LST^DGMTU(DFN,IVMMTDT)
+53 ;
+54 ; delete means test
IF IVMFLG7
DO ^IVMUM7
QUIT
+55 ;
+56 ; dgmtp is event driver variable
SET (IVMMT31,DGMTP)=$GET(^DGMT(408.31,IVMMTIEN,0))
+57 IF $PIECE(IVMMT31,"^")'=IVMMTDT
Begin DoDot:2
+58 SET Y=IVMMTDT
XECUTE ^DD("DD")
+59 SET IVMTEXT(6)="Means Test of "_Y_" not in DHCP."
+60 DO ERRBULL
DO MAIL^IVMUFNC()
+61 SET HLERR="Means test not in DHCP"
DO ACK^IVMPREC
+62 QUIT
End DoDot:2
QUIT
+63 IF $PIECE(IVMMT31,"^",23)=2
SET Y=IVMMTDT
XECUTE ^DD("DD")
SET HLERR="2nd means test sent for "_Y
DO ACK^IVMPREC
QUIT
+64 ;
+65 ; do not upload IVM means test if primary means test status is
+66 ; 3-no longer required
+67 ; or if hardship case
+68 SET IVMSTAT=$PIECE(IVMMT31,"^",3)
+69 IF IVMSTAT=3
SET HLERR="NOT UPLOADED no longer required"
DO ACK^IVMPREC
QUIT
+70 IF $PIECE(IVMMT31,"^",20)=1
SET HLERR="NOT UPLOADED hardship case"
DO ACK^IVMPREC
QUIT
+71 ; upload means test
DO ^IVMUM1
+72 IF $DATA(HLERR)
DO ACK^IVMPREC
+73 ;
+74 ; cleanup
+75 KILL DGLY,DGMTP,IVMDAP,IVMDAS,IVMDAZ,IVMDGLY,IVMFLG7,IVMFLGC,IVMMT31,IVMMTDT,IVMMTIEN,IVMSEG,IVMSEG1,IVMSTAT,IVMTEXT,XMSUB
+76 QUIT
End DoDot:1
if 'IVMDA
QUIT
+77 QUIT
+78 ;
GET ; get HL7 segment from ^HL
+1 SET IVMDA=$ORDER(^TMP($JOB,IVMRTN,+IVMDA))
SET IVMSEG=$GET(^(+IVMDA,0))
+2 SET IVMSEG1=$EXTRACT(IVMSEG,1,3)
+3 QUIT
+4 ;
ERRBULL ; build mail message for transmission to IVM mail group notifying site
+1 ; of upload error.
+2 SET IVMPAT=$$PT^IVMUFNC4(DFN)
+3 SET XMSUB="IVM - MEANS TEST UPLOAD"
+4 SET IVMTEXT(1)="The following error occured when an Income Verification Match"
+5 SET IVMTEXT(2)="verified Means Test was being uploaded for the following patient:"
+6 SET IVMTEXT(3)=" "
+7 SET IVMTEXT(4)=" NAME: "_$PIECE(IVMPAT,"^")
+8 SET IVMTEXT(5)=" ID: "_$PIECE(IVMPAT,"^",2)
+9 SET IVMTEXT(6)=" ERROR: "_IVMTEXT(6)
+10 QUIT
ORF ;entry point for Means Test Signature Z06 msgs.
+1 IF $GET(HLFS)=""
SET HLFS="^"
+2 IF $GET(HLECH)=""
SET HLECH="~"
+3 FOR IVMDA=0:0
SET IVMDA=$ORDER(^TMP($JOB,IVMRTN,IVMDA))
if 'IVMDA
QUIT
SET IVMSEG=$GET(^(IVMDA,0))
IF $EXTRACT(IVMSEG,1,3)="MSH"
Begin DoDot:1
+4 KILL HLERR
+5 ; message control id from MSH
SET HLMID=$PIECE(IVMSEG,HLFS,10)
+6 SET IVMFLGC=0
+7 DO GET
IF IVMSEG1'="PID"
Begin DoDot:2
+8 SET HLERR="Missing PID segment"
DO ACK^IVMPREC
End DoDot:2
QUIT
+9 SET DFN=$PIECE($PIECE(IVMSEG,HLFS,4),$EXTRACT(HLECH))
+10 IF ('DFN!(DFN'=+DFN)!('$DATA(^DPT(+DFN,0))))
Begin DoDot:2
+11 SET HLERR="Invalid DFN"
DO ACK^IVMPREC
End DoDot:2
QUIT
+12 IF $PIECE(IVMSEG,HLFS,20)'=$PIECE(^DPT(DFN,0),"^",9)
SET HLERR="Couldn't match IVMSSN with DHCP SSN"
DO ACK^IVMPREC
QUIT
+13 ; save IVMDA for veteran PID segment
SET IVMDAP=IVMDA
+14 DO GET
IF IVMSEG1'="ZMT"
Begin DoDot:2
+15 SET HLERR="Missing ZMT segment"
DO ACK^IVMPREC
End DoDot:2
QUIT
+16 ; IVMMTDT - means test date
+17 ; DGLY - income year
+18 ; if Means Test not in DHCP don't upload IVM Means Test
+19 ; means test date from ZMT segment
SET IVMMTDT=$$FMDATE^HLFNC($PIECE(IVMSEG,HLFS,3))
+20 SET DGLY=$$LYR^DGMTSCU1(IVMMTDT)
+21 ; get means test to be updated
+22 NEW UPMTS
+23 SET MTDATE=-IVMMTDT
SET IVMMTIEN=""
SET MTFND=0
+24 FOR
SET IVMMTIEN=$ORDER(^DGMT(408.31,"AID",1,DFN,MTDATE,IVMMTIEN),-1)
if MTFND!(IVMMTIEN="")
QUIT
Begin DoDot:2
+25 ;EDB Z06 - Don't use this one
IF $$Z06MT^EASPTRN1(IVMMTIEN)
QUIT
+26 ; match site completing in case multiple tests for same date
+27 IF $PIECE(IVMSEG,HLFS,23)=$PIECE(^DGMT(408.31,IVMMTIEN,2),HLFS,5)
SET UPMTS=IVMMTIEN
SET MTFND=1
QUIT
End DoDot:2
+28 ; DGMTP is event driver variable
SET (IVMMT31,DGMTP)=$GET(^DGMT(408.31,UPMTS,0))
+29 IF $PIECE(IVMMT31,"^")'=IVMMTDT
Begin DoDot:2
+30 SET Y=IVMMTDT
XECUTE ^DD("DD")
+31 SET IVMTEXT(6)="Means Test of "_Y_" not in DHCP."
+32 DO ERRBULL
DO MAIL^IVMUFNC()
+33 SET HLERR="Means test not in DHCP"
DO ACK^IVMPREC
+34 QUIT
End DoDot:2
QUIT
+35 IF $PIECE(IVMMT31,"^",23)=2
SET Y=IVMMTDT
XECUTE ^DD("DD")
SET HLERR="2nd means test sent for "_Y
DO ACK^IVMPREC
QUIT
+36 ; do not upload IVM means test if primary means test status is
+37 ; 3-no longer required
+38 ; or if hardship case
+39 SET IVMSTAT=$PIECE(IVMMT31,"^",3)
+40 IF IVMSTAT=3
SET HLERR="NOT UPLOADED no longer required"
DO ACK^IVMPREC
QUIT
+41 IF $PIECE(IVMMT31,"^",20)=1
SET HLERR="NOT UPLOADED hardship case"
DO ACK^IVMPREC
QUIT
+42 ;get MT signature and date/time edited info, update means test
+43 NEW DATA
+44 SET DATA(.29)=$PIECE(IVMSEG,HLFS,28)
SET DATA(2.02)=$$FMDATE^HLFNC($PIECE(IVMSEG,HLFS,26))
IF $DATA(DATA(.29))
Begin DoDot:2
+45 IF $$UPD^DGENDBS(408.31,UPMTS,.DATA)
End DoDot:2
+46 IF '$DATA(HLERR)
DO ACK^IVMPREC
+47 ;
+48 ; cleanup
+49 KILL DGLY,DGMTP,IVMDAP,IVMDAS,IVMDAZ,IVMDGLY,IVMFLG7,IVMFLGC,IVMMT31,IVMMTDT,IVMMTIEN,IVMSEG,IVMSEG1,IVMSTAT,IVMTEXT,XMSUB,FMDATE,MTDATE
+50 QUIT
End DoDot:1
if 'IVMDA
QUIT
+51 QUIT