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

PRCVEE5.m

Go to the documentation of this file.
  1. PRCVEE5 ;WOIFO/VAC - Routine to handle Error Messages sent from DynaMed ; 5/16/05 4:34pm
  1. ;;5.1;IFCAP;**81**;Oct 20, 2000
  1. ;PER VHA Directive 10-93-142, this routine should not be modified
  1. ;
  1. ;This routine reads an ACK from DynaMed in answer to a message sent
  1. ;regarding an Edit/Cancel/Approval to a RIL/2237.
  1. ;ERRTXT - Text of the error message severity
  1. ;MSGDAT -A single field that holds an error segment
  1. ;MSGDAT2 - MSGDAT without the segment identifier
  1. ;MSGDAT3 - Message type/Event type
  1. ;MSGTYP - Indicates if there are errors in the message
  1. ;PRCCNT - Record counter -indicates the message line number
  1. ;PRCERCD - Error code returned
  1. ;PRCERTX - Error text returned with error code
  1. ;PRCFLD - Field where error occurred
  1. ;PRCSEG - Segment where error has occurred
  1. ;PRCSEQ - Sequence number where error occurred
  1. ;PRCTYP - Type of form RIL or 2237
  1. ;PRCVACK - Acknowledgement type AA, AE, AR, etc
  1. ;PRCVAEC - Application error code string returned in message - ERR-5
  1. ;PRCVDT - Second node level of ^XTMP
  1. ;PRCVEC - Error component - ERR-3
  1. ;PRCVERR - Array of email message
  1. ;PRCVID - RIL/2237 ID - ERR-6
  1. ;PRCVLOC - Error Location component - ERR-2
  1. ;PRCMID - Message ID of original message
  1. ;PRCVMID2 - Cross reference into ^XTMP
  1. ;PRCVPTR - First node level of ^XTMP
  1. ;PRCVSEV - Severity Component ERR-4
  1. ;PRCVTYP - Original Form Type - RIL or 2237
  1. ;SSTOP - Stop flag
  1. ;PRCFS - Field separator
  1. ;PRCCS - Component separator
  1. ;PRCRS - Repetition separator
  1. ;PRCSC - Sub-component separator
  1. ;PRCDET - Array of field names inside of HL7 segments
  1. ;PRCFCP - Fund Control Point for message
  1. ;PRCSITE and PRCSITE0 - Receiving facility number
  1. ;ERRCNT - a counter
  1. ;^TMP - Global to hold error message information
  1. BEGIN N I,J
  1. N PRCFS,PRCCS,PRCDET,ERRCNT,ERRTXT
  1. N MSGDAT,PRCCNT,MSGTYP
  1. N MSGDAT2,MSGDAT3,PRCERCD,PRCERTX,PRCFLD,PRCFCP,PRCSITE,PRCSITE0
  1. N PRCSEG,PRCSEQ,PRCTYP,PRCVACK,PRCVAEC,PRCVDT,PRCVEC,PRCVERR
  1. N PRCVID,PRCVLOC,PRCVMID,PRCVMID2,PRCVPTR,PRCVSEV,PRCVTYP,SSTOP
  1. S PRCFS=HL("FS"),PRCCS=$E(HL("ECH"),1)
  1. K ^TMP($J)
  1. SETUP ;Set up array for HL7 crosswalk
  1. S PRCDET("ORC",1)="Order Control"
  1. S PRCDET("ORC",9)="Date/Time Created"
  1. S PRCDET("ORC",10)="Entered by"
  1. S PRCDET("ORC",21)="Ordering Facility"
  1. S PRCDET("RQD",1)="Line number"
  1. S PRCDET("RQD",2)="DM Document ID"
  1. S PRCDET("RQD",3)="Item number"
  1. S PRCDET("RQD",4)="Packaging Multiple"
  1. S PRCDET("RQD",5)="Quantity"
  1. S PRCDET("RQD",6)="Unit of purchase"
  1. S PRCDET("RQD",9)="Identifier"
  1. S PRCDET("RQD",10)="Date needed"
  1. S PRCDET("RQ1",1)="Unit cost"
  1. S PRCDET("RQ1",2)="Vendor Stock Number"
  1. S PRCDET("RQ1",3)="BOC"
  1. S PRCDET("RQ1",4)="Vendor and/or FMS Vendor"
  1. S PRCDET("RQ1",5)="NIF number"
  1. S MSGTYP="",PRCVTYP=""
  1. F I=1:1 X HLNEXT Q:HLQUIT'>0 D
  1. .S ^TMP($J,I)=HLNODE,J=0
  1. .F S J=$O(HLNODE(J)) Q:'J S ^TMP($J,I,J)=HLNODE(J)
  1. ;
  1. S PRCCNT="",SSTOP="GO"
  1. F I=1:1:2 S PRCCNT=$G(^TMP($J,I)) Q:PRCCNT="" Q:SSTOP="STOP" D
  1. .S MSGDAT=$G(^TMP($J,I))
  1. .Q:MSGDAT=""
  1. .S MSGDAT2=$P(MSGDAT,PRCFS,2,21)
  1. .I $E(MSGDAT,1,3)="MSH" D Q
  1. ..S MSGDAT3=$P(MSGDAT2,PRCFS,8)
  1. ..I MSGDAT3'["ORN"_PRCCS_"O08" D
  1. ...S SSTOP="STOP",MSGTYP="NOK"
  1. ...S PRCVTYP="ACK",PRCVID=$P(MSGDAT2,PRCFS,9)
  1. ...S PRCVERR(1)="IN "_PRCVTYP_" "_PRCVID_" there was a bad message type"
  1. ...S PRCVPTR="*"_$$GET1^DIQ(4,$$KSP^XUPARAM("INST")_",",99)_"- - -076"
  1. .I $E(MSGDAT,1,3)="MSA" D Q
  1. ..S PRCVACK=$P(MSGDAT2,PRCFS,1)
  1. ..S PRCVMID=$P(MSGDAT2,PRCFS,2)
  1. ..S PRCVMID2="PRCVMID*"_PRCVMID
  1. ..S PRCVPTR=$P($G(^XTMP(PRCVMID2,1)),U,1)
  1. ..S PRCVDT=$P($G(^XTMP(PRCVMID2,1)),U,2)
  1. ..I PRCVACK="AA" D Q
  1. ...S MSGTYP="OK"
  1. ..I (PRCVACK="AE")!(PRCVACK="AR") D Q
  1. ...S MSGTYP="NOK"
  1. I $E(MSGTYP,1,2)="OK" D VALID Q
  1. I PRCVTYP="ACK" D NOVALID Q
  1. ERROR ;Now process error messages
  1. ;
  1. S ERRCNT=1
  1. S PRCCNT="" F I=3:1 S PRCCNT=$G(^TMP($J,I)) Q:PRCCNT="" D
  1. .S MSGDAT=$G(^TMP($J,I))
  1. .Q:MSGDAT=""
  1. .S MSGDAT2=$P(MSGDAT,PRCFS,2,7)
  1. .S PRCVLOC=$P(MSGDAT2,PRCFS,2)
  1. .S PRCVEC=$P(MSGDAT2,PRCFS,3)
  1. .S PRCVSEV=$P(MSGDAT2,PRCFS,4)
  1. .S PRCVAEC=$P(MSGDAT2,PRCFS,5)
  1. .S PRCVID=$P(MSGDAT2,PRCFS,6)
  1. .S PRCVTYP="RIL"
  1. .I PRCVID?.N1"-".N1"-".N1"-".E1"-".N S PRCVTYP="2237"
  1. .S PRCSEG=$P(PRCVLOC,PRCCS,1)
  1. .S PRCSEQ=$P(PRCVLOC,PRCCS,2)
  1. .S PRCFLD=$P(PRCVLOC,PRCCS,3)
  1. .S PRCERCD=$P(PRCVAEC,PRCCS,1)
  1. .S PRCERTX=$P(PRCVAEC,PRCCS,2)
  1. .S ERRTXT="Error"
  1. .I PRCVSEV="W" S ERRTXT="Warning"
  1. .S PRCVERR(ERRCNT)="In "_PRCVTYP_" "_PRCVID_" the following occurred"
  1. .S ERRCNT=ERRCNT+1
  1. .S PRCVERR(ERRCNT)="For Line item "_PRCSEQ_" the "_PRCDET(PRCSEG,PRCFLD)_" had the following "_ERRTXT_": "
  1. .S ERRCNT=ERRCNT+1
  1. .S PRCVERR(ERRCNT)=PRCERTX
  1. .S ERRCNT=ERRCNT+1
  1. D NOVALID
  1. Q
  1. VALID ;Do NOTHING to notify user that message is ok.
  1. D CLEANUP
  1. Q
  1. NOVALID ;Mailman message
  1. N XMDUZ,XMMG,XMSUB,XMTEXT,XMY,XMZ
  1. S XMSUB="IFCAP to DynaMed "_PRCVTYP_" Errors "_PRCVID_" "
  1. S XMDUZ="IFCAP/DynaMed Interface"
  1. S XMTEXT="PRCVERR("
  1. ;S XMY("CARR.VICTOR@CSL.FO-WASH.DOMAIN.EXT")=""
  1. S PRCFCP=$P(PRCVPTR,"-",4)
  1. S PRCSITE0=$P(PRCVPTR,"-",1)
  1. S PRCSITE=$P(PRCSITE0,"*",2)
  1. D GETFCPU^PRCVLIC(.XMY,PRCSITE,PRCFCP)
  1. D ^XMD
  1. K XMSUB,XMMG,XMDUZ,XMTEXT,XMY,XMZ
  1. D CLEANUP
  1. Q
  1. ;
  1. CLEANUP ; Clean up data
  1. K MSGTYP,MSGDAT,MSGDAT2,MSGDAT3,ERRTXT
  1. K PRCCNT,PRCFS,PRCCS,I,J,SSTOP,PRCFCP,PRCSITE,PRCSITE0
  1. K ^TMP($J),ERRCNT,PRCERCD,PRCERTX,PRCFLD,PRCSEG,PRCSEQ
  1. K PRCTYP,PRCVACK,PRCVAEC,PRCVDT,PRCVEC,PRCVERR,PRCVID,PRCVLOC
  1. K PRCVMID,PRCVMID2,PRCVPTR,PRCVSEV,PRCVTYP,PRCDET
  1. ;