| [623] | 1 | PRCVREA ;WOIFO/VC-Transmit HL7 message to IFCAP for RIL(cont);11/24/03 ; 4/26/05 2:42pm
 | 
|---|
 | 2 |  ;;5.1;IFCAP;**81**;Oct 20, 2000
 | 
|---|
 | 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 | CALLIT ;Call the IFCAP RIL build Routine
 | 
|---|
 | 6 |  ;
 | 
|---|
 | 7 |  D EN^PRCVRC1(PRCSUB)
 | 
|---|
 | 8 |  ;
 | 
|---|
 | 9 | SETUP S PRCHD(1)=""
 | 
|---|
 | 10 |  S PRCHD(2)="ORC"_PRCCS_PRCCS_3
 | 
|---|
 | 11 |  S PRCHD(2,"T")="FUND CONTROL POINT"
 | 
|---|
 | 12 |  S PRCHD(3)="ORC"_PRCCS_PRCCS_17
 | 
|---|
 | 13 |  S PRCHD(3,"T")="COST CENTER"
 | 
|---|
 | 14 |  S PRCHD(4)=""
 | 
|---|
 | 15 |  S PRCHD(5)="ORC"_PRCCS_PRCCS_21
 | 
|---|
 | 16 |  S PRCHD(5,"T")="SITE NUMBER"
 | 
|---|
 | 17 |  S PRCHD(6)=""
 | 
|---|
 | 18 |  S PRCHD(7)="ORC"_PRCCS_PRCCS_10
 | 
|---|
 | 19 |  S PRCHD(7,"T")="DUZ"
 | 
|---|
 | 20 |  S PRCHD(8)="ORC"_PRCCS_PRCCS_10
 | 
|---|
 | 21 |  S PRCHD(8,"T")="LAST NAME"
 | 
|---|
 | 22 |  S PRCHD(9)="ORC"_PRCCS_PRCCS_11
 | 
|---|
 | 23 |  S PRCHD(9,"T")="FIRST NAME"
 | 
|---|
 | 24 |  S PRCDET(1)="RQD"_PRCCS_PRCCS_3
 | 
|---|
 | 25 |  S PRCDET(1,"T")="ITEM NUMBER"
 | 
|---|
 | 26 |  S PRCDET(2)="RQD"_PRCCS_PRCCS_5
 | 
|---|
 | 27 |  S PRCDET(2,"T")="QUANTITY"
 | 
|---|
 | 28 |  S PRCDET(3)="RQ1"_PRCCS_PRCCS_4
 | 
|---|
 | 29 |  S PRCDET(3,"T")="VENDOR ID"
 | 
|---|
 | 30 |  S PRCDET(4)="RQ1"_PRCCS_PRCCS_1
 | 
|---|
 | 31 |  S PRCDET(4,"T")="UNIT COST"
 | 
|---|
 | 32 |  S PRCDET(5)="RQD"_PRCCS_PRCCS_10
 | 
|---|
 | 33 |  S PRCDET(5,"T")="DATE NEEDED"
 | 
|---|
 | 34 |  S PRCDET(6)="RQD"_PRCCS_PRCCS_2
 | 
|---|
 | 35 |  S PRCDET(6,"T")="DYNAMED DOCUMENT ID"
 | 
|---|
 | 36 |  S PRCDET(7)="RQ1"_PRCCS_PRCCS_5
 | 
|---|
 | 37 |  S PRCDET(7,"T")="NIF NUMBER"
 | 
|---|
 | 38 |  S PRCDET(8)="RQ1"_PRCCS_PRCCS_3
 | 
|---|
 | 39 |  S PRCDET(8,"T")="BOC"
 | 
|---|
 | 40 |  ;Check if IFCAP has returned any errors
 | 
|---|
 | 41 |  ;
 | 
|---|
 | 42 |  S ERRCNT=1
 | 
|---|
 | 43 |  S PRCVERR(0)="0"
 | 
|---|
 | 44 | HEAD ;If there are errors in the "1" sub-segment, add all errors to all
 | 
|---|
 | 45 |  ;   line items
 | 
|---|
 | 46 |  S ERRCNT=1,MSGFLG=0,PRCSUB2=$P(PRCSUB,"*",2)
 | 
|---|
 | 47 |  I $D(^XTMP(PRCSUB,1,"ERR"))>0 D
 | 
|---|
 | 48 |  .S II=0
 | 
|---|
 | 49 |  .F I=1:1 S II=$O(^XTMP(PRCSUB,1,"ERR",II)) Q:II=""  D
 | 
|---|
 | 50 |  ..S ERRDAT=$G(^XTMP(PRCSUB,1,"ERR",II))
 | 
|---|
 | 51 |  ..Q:ERRDAT=""
 | 
|---|
 | 52 |  ..S MSGFLG=1
 | 
|---|
 | 53 |  ..S FLDNO=$P(ERRDAT,U,1),ERRCOD="PRCV"_$P(ERRDAT,U,2),ERRTXT=$P(ERRDAT,U,3)
 | 
|---|
 | 54 |  ..S SEVER=$P(ERRDAT,U,4)
 | 
|---|
 | 55 |  ..S ERRSTR="ERR"_PRCFS_PRCFS_PRCHD(FLDNO)_PRCFS_"207"_PRCCS_"Application internal error"_PRCCS_"HL70357"_PRCFS_SEVER_PRCFS_ERRCOD_PRCCS_ERRTXT_PRCFS
 | 
|---|
 | 56 |  ..S PRCVERR(ERRCNT)="Error in Requisition Header for "_PRCHD(FLDNO,"T")_" from HL7 MESSAGE "_PRCSUB2_" "_ERRCOD_" "_ERRTXT,ERRCNT=ERRCNT+1
 | 
|---|
 | 57 |  ..S J=0
 | 
|---|
 | 58 |  ..F IL=1:1 S J=$O(^XTMP(PRCSUB,2,J)) Q:J=""  D
 | 
|---|
 | 59 |  ...S ERRSUB=$P(ERRSTR,PRCFS,3)
 | 
|---|
 | 60 |  ...S $P(ERRSUB,U,2)=J
 | 
|---|
 | 61 |  ...S $P(ERRSTR,PRCFS,3)=ERRSUB
 | 
|---|
 | 62 |  ...;S $P($P(ERRSTR,PRCFS,3),U,2)=J
 | 
|---|
 | 63 |  ...S $P(ERRSTR,PRCFS,7)=$P($G(^XTMP(PRCSUB,2,J)),U,6)
 | 
|---|
 | 64 |  ...S ^TMP("PRCVRIL",$J,"NAK",ACKCNT)=ERRSTR,ACKCNT=ACKCNT+1
 | 
|---|
 | 65 | DETAIL ;If there are errors in the detail lines, add them
 | 
|---|
 | 66 |  S II=0
 | 
|---|
 | 67 |  F I=1:1 S II=$O(^XTMP(PRCSUB,2,II)) Q:II=""  D
 | 
|---|
 | 68 |  .S DOCID=$P(^XTMP(PRCSUB,2,II),U,6)
 | 
|---|
 | 69 |  .S III=0
 | 
|---|
 | 70 |  .F J=1:1 S III=$O(^XTMP(PRCSUB,2,II,"ERR",III)) Q:III=""  D
 | 
|---|
 | 71 |  ..S ERRDAT=$G(^XTMP(PRCSUB,2,II,"ERR",III))
 | 
|---|
 | 72 |  ..Q:ERRDAT=""
 | 
|---|
 | 73 |  ..S MSGFLG=1
 | 
|---|
 | 74 |  ..S FLDNO=$P(ERRDAT,U,1),ERRCOD="PRCV"_$P(ERRDAT,U,2),ERRTXT=$P(ERRDAT,U,3)
 | 
|---|
 | 75 |  ..S ERRLOC=PRCDET(FLDNO),$P(ERRLOC,U,2)=II
 | 
|---|
 | 76 |  ..S SEVER=$P(ERRDAT,U,4)
 | 
|---|
 | 77 |  ..S ERRSTR="ERR"_PRCFS_PRCFS_ERRLOC_PRCFS_"207"_PRCCS_"Application internal error"_PRCCS_"HL70357"_PRCFS_SEVER_PRCFS_ERRCOD_PRCCS_ERRTXT_PRCFS_DOCID
 | 
|---|
 | 78 |  ..S ^TMP("PRCVRIL",$J,"NAK",ACKCNT)=ERRSTR,ACKCNT=ACKCNT+1
 | 
|---|
 | 79 |  ..S PRCVERR(ERRCNT)="Error in detail for Message Control ID "_PRCSUB2_". Field in error - "_PRCDET(FLDNO,"T")_". "_ERRTXT_" DynaMed Doc ID "_DOCID
 | 
|---|
 | 80 |  ..S ERRCNT=ERRCNT+1
 | 
|---|
 | 81 |  ;
 | 
|---|
 | 82 |  I MSGFLG=0 D ACKIT,CLEANUP^PRCVRE1 Q
 | 
|---|
 | 83 | SETNTE ; If there are errors set an NTE segment
 | 
|---|
 | 84 |  ;
 | 
|---|
 | 85 |  S TOT=0,TOTREC=0,TOTERR=0
 | 
|---|
 | 86 |  F I=1:1 S TOT=$O(^XTMP(PRCSUB,2,TOT)) Q:TOT=""  D
 | 
|---|
 | 87 |  .S TOTREC=TOT
 | 
|---|
 | 88 |  .I $D(^XTMP(PRCSUB,2,TOT,"ERR"))>0 D
 | 
|---|
 | 89 |  ..S ERRS=0
 | 
|---|
 | 90 |  ..F J=1:1 S ERRS=$O(^XTMP(PRCSUB,2,TOT,"ERR",ERRS)) Q:ERRS=""  D
 | 
|---|
 | 91 |  ...S SEVER=$P($G(^XTMP(PRCSUB,2,TOT,"ERR",ERRS)),U,4)
 | 
|---|
 | 92 |  ...I SEVER'="W" S TOTERR=TOTERR+1,ERRS=99
 | 
|---|
 | 93 |  I $D(^XTMP(PRCSUB,2,"ERR",1))>1 S TOTERR=TOTREC
 | 
|---|
 | 94 |  S TOTGOOD=TOTREC-TOTERR
 | 
|---|
 | 95 |  S ^TMP("PRCVRIL",$J,"NAK",ACKCNT)="NTE"_PRCFS_PRCFS_PRCFS_TOTREC_"-"_TOTERR_"-"_TOTGOOD,ACKCNT=ACKCNT+1
 | 
|---|
 | 96 |  D NAKIT,CLEANUP^PRCVRE1 Q
 | 
|---|
 | 97 |  ;
 | 
|---|
 | 98 | NAKIT ;Send an acknowledgement that the message is rejected
 | 
|---|
 | 99 |  ;
 | 
|---|
 | 100 |  I HL("APAT")'="AL" Q
 | 
|---|
 | 101 |  S MSG=""
 | 
|---|
 | 102 |  F I=1:1 S MSG=$O(^TMP("PRCVRIL",$J,"NAK",MSG)) Q:MSG=""  D
 | 
|---|
 | 103 |  .S ^TMP("HLA",$J,I)=^TMP("PRCVRIL",$J,"NAK",MSG)
 | 
|---|
 | 104 |  S PRCVRES=""
 | 
|---|
 | 105 |  D GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"GM",1,.PRCVRES)
 | 
|---|
 | 106 |  ;I +$P(PRCVRES,U,2) D
 | 
|---|
 | 107 |  ;.S PRCVERR(ERRCNT)="Application ACK not processed. Contact EVS."
 | 
|---|
 | 108 | MAIL ;Send MailMan message with error
 | 
|---|
 | 109 |  Q:LENVAL="NOTOK"
 | 
|---|
 | 110 |  N XMDUZ,XMMG,XMSUB,XMTEXT,XMY,XMZ
 | 
|---|
 | 111 |  S XMSUB="RIL build errors in HL7 message "_HL("MID")_" "
 | 
|---|
 | 112 |  S XMDUZ="IFCAP/DynaMed Interface"
 | 
|---|
 | 113 |  S XMTEXT="PRCVERR("
 | 
|---|
 | 114 |  D GETFCPU^PRCVLIC(.XMY,PRCSITE,PRCFCP)
 | 
|---|
 | 115 |  D ^XMD
 | 
|---|
 | 116 |  K XMDUZ,XMMG,XMSUB,XMTEXT,XMY,XMZ
 | 
|---|
 | 117 |  Q
 | 
|---|
 | 118 |  ;
 | 
|---|
 | 119 | ACKIT ;Send an acknowledgement that everything went fine
 | 
|---|
 | 120 |  ;
 | 
|---|
 | 121 |  I HL("APAT")'="AL" Q
 | 
|---|
 | 122 |  F I=1:1:1 S ^TMP("HLA",$J,I)=$G(^TMP("PRCVRIL",$J,"ACK",I))
 | 
|---|
 | 123 |  ;
 | 
|---|
 | 124 |  D GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"GM",1,.PRCVRES)
 | 
|---|
 | 125 |  ;I +P(PRCVRES,U,2) D
 | 
|---|
 | 126 |  ;.I $D(ERRCNT)=0 S ERRCNT=1
 | 
|---|
 | 127 |  ;.S PRCVERR(ERRCNT)="Application ACK not processed. Contact EVS."
 | 
|---|
 | 128 |  ;.D MAIL
 | 
|---|
 | 129 |  Q
 | 
|---|