| 1 | PRCOACT ;WISC/DJM-"ACT" & "PRJ" TRANSACTIONS FROM AUSTIN ;7/21/96  21:45 | 
|---|
| 2 | V ;;5.1;IFCAP;;Oct 20, 2000 | 
|---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | START ;THIS ROUTINE WILL SAVE THE INCOMMING "ACT" OR "PRJ" TRANSACTION | 
|---|
| 6 | ;IN THE "EDI STATUS" FILE (#443.75) WITHIN AN EXISTING RECORD.  THIS | 
|---|
| 7 | ;ROUTINE WILL START UP WHEN AN "ACT" OR "PRJ" TRANSACTION ARRIVES | 
|---|
| 8 | ;FROM AUSTIN AND IS SAVED IN FILE 423.6.  AFTER SAVING IN 423.6 THE | 
|---|
| 9 | ;SERVER WILL START UP A BACKGROUND TASK THAT CALLS THIS ROUTINE. | 
|---|
| 10 | ; | 
|---|
| 11 | ;THE BACKGROUND TASK WILL SET UP **PRCDA**, THE INTERNAL ENTRY | 
|---|
| 12 | ;NUMBER FROM FILE 423.6.  THE RECORD AT **PRCDA** CONTAINS THE DATA | 
|---|
| 13 | ;FROM THE "ACT" OR "PRJ" TRANSACTION THAT 'ARRIVED' FROM AUSTIN. | 
|---|
| 14 | ; | 
|---|
| 15 | N COUNT,COUNTER,I,LINE,MGP,PONO,PRC,PRCMG,PRCTC,PRCTT,PRCXM,RFQ,RECORD,ERRCNT | 
|---|
| 16 | N RRC,SEGT,STATION,STCK,TEXT,VENDOR,X,X1,X2 | 
|---|
| 17 | ; | 
|---|
| 18 | ;NOW LETS VERIFY THAT THE TRANSACTION BELONGS TO THIS SITE. | 
|---|
| 19 | ; | 
|---|
| 20 | S LINE=$G(^PRCF(423.6,PRCDA,1,10000,0)) | 
|---|
| 21 | S MGP=$O(^PRCF(423.5,"B",$P(LINE,U)_"-"_$P(LINE,U,4),0)) | 
|---|
| 22 | I MGP="" S PRCXM(1)=$P($T(ERROR+8),";;",2)_$P(LINE,U)_"-"_$P(LINE,U,4)_"." G EXIT | 
|---|
| 23 | S MGP=$G(^PRCF(423.5,MGP,0)) | 
|---|
| 24 | I MGP="" S PRCXM(1)=$P($T(ERROR+9),";;",2) G EXIT | 
|---|
| 25 | I $P(MGP,U,2)="" S PRCXM(1)=$P($T(ERROR+10),";;",2) G EXIT | 
|---|
| 26 | I $P(MGP,U,2)]"" S PRCMG=$P($G(^XMB(3.8,$P(MGP,U,2),0)),U) | 
|---|
| 27 | I PRCMG="" S PRCXM(1)=$P($T(ERROR+11),";;",2) G EXIT | 
|---|
| 28 | D  I $D(PRCXM(1)) G EXIT | 
|---|
| 29 | .  I ",ACT,PRJ,"'[","_$P(LINE,U,4)_"," S PRCXM(1)=$P($T(ERROR+1),";;",2)_$P(LINE,U,4)_"." Q | 
|---|
| 30 | .  S STATION=$P(LINE,U,3) I STATION="" S PRCXM(1)=$P($T(ERROR+4),";;",2)_$G(PRCDA)_"." Q | 
|---|
| 31 | .  S STCK=$O(^PRC(411,"B",STATION,0)) I STCK'>0 S PRCXM(1)=$P($T(ERROR+2),";;",2)_$G(STATION)_"." Q | 
|---|
| 32 | .  Q | 
|---|
| 33 | S PRCTC=$P(LINE,U,4) | 
|---|
| 34 | ; | 
|---|
| 35 | ;GATHER THE DATA FROM THE 'AT' SEGMENT OF THE TRANSACTION. | 
|---|
| 36 | ; | 
|---|
| 37 | S LINE=$G(^PRCF(423.6,PRCDA,1,10001,0)) | 
|---|
| 38 | I $P(LINE,U,1)'="AT" S PRCXM(1)=$P($T(ERROR+3),";;",2)_$P($G(LINE),U)_"." G EXIT | 
|---|
| 39 | S PRCTT=$P(LINE,U,2) | 
|---|
| 40 | I PRCTT="" S PRCXM(1)=$P($T(ERROR+13),";;",2)_$G(PRCDA)_"." G EXIT | 
|---|
| 41 | S COUNT=+$P(LINE,U,3) | 
|---|
| 42 | ; | 
|---|
| 43 | ;NOW GET THE DATA FROM EACH 'TR' OR 'RJ' SEGMENT. | 
|---|
| 44 | ; | 
|---|
| 45 | S I=10001 | 
|---|
| 46 | S COUNTER=0,ERRCNT=1 | 
|---|
| 47 | K PRCXM | 
|---|
| 48 | F  S I=$O(^PRCF(423.6,PRCDA,1,I)) Q:I'>0  D  D:$O(PRCXM(0)) PERROR^PRCOACT0 Q:LINE["$" | 
|---|
| 49 | .  K PRC | 
|---|
| 50 | .  S LINE=$G(^PRCF(423.6,PRCDA,1,I,0)) | 
|---|
| 51 | .  Q:$E(LINE,1)="$" | 
|---|
| 52 | .  S SEGT=$P(LINE,U) | 
|---|
| 53 | .  Q:",TR,RJ,"'[","_SEGT_"," | 
|---|
| 54 | .  S PRC(1,443.75,"?+1,",9)=PRCTC | 
|---|
| 55 | .  S PRC(1,443.75,"?+1,",21)=COUNT | 
|---|
| 56 | .  S PONO=$P(LINE,U,2) | 
|---|
| 57 | .  I PRCTT="PHA" D | 
|---|
| 58 | .  .  F  Q:$A(PONO,$L(PONO))'=32  S PONO=$E(PONO,1,$L(PONO)-1) | 
|---|
| 59 | .  .  S PONO=$E(PONO,1,3)_"-"_$E(PONO,4,$L(PONO)) | 
|---|
| 60 | .  .  Q | 
|---|
| 61 | .  S X1=$E($P(LINE,U,5),1,4)-1700_"0101" | 
|---|
| 62 | .  S X2=$E($P(LINE,U,5),5,7)-1 | 
|---|
| 63 | .  D C^%DTC | 
|---|
| 64 | .  S PRC(1,443.75,"?+1,",10)=X_"."_$P(LINE,U,6) | 
|---|
| 65 | .  S PRC(1,443.75,"?+1,",22)=$S(PRCTC="ACT":$P(LINE,U,7),1:$P(LINE,U,14)) | 
|---|
| 66 | .  S VENDOR=$P(LINE,U,3) | 
|---|
| 67 | .  S:PRCTT="RFQ" RFQ=$S(PRCTC="ACT":$P(LINE,U,8),1:$P(LINE,U,16)) | 
|---|
| 68 | .  S:PRCTT="TXT" TEXT=$P(LINE,U,4) | 
|---|
| 69 | .  I PONO="" S PRCXM(ERRCNT)=$P($T(ERROR+14),";;",2)_$G(PRCDA)_"." D ERRCNT Q | 
|---|
| 70 | .  I PRCTT'="PHA",VENDOR="" S PRCXM(ERRCNT)=$P($T(ERROR+15),";;",2)_$G(PRCDA)_"." D ERRCNT Q | 
|---|
| 71 | .  I PRCTT="RFQ",RFQ="" S PRCXM(ERRCNT)=$P($T(ERROR+16),";;",2)_$G(PRCDA)_"." D ERRCNT Q | 
|---|
| 72 | .  I PRCTT="TXT",TEXT="" S PRCXM(ERRCNT)=$P($T(ERROR+17),";;",2)_$G(PRCDA)_"." D ERRCNT Q | 
|---|
| 73 | .  S RECORD="" | 
|---|
| 74 | .  I PRCTT="PHA" D  Q:$O(PRCXM(0)) | 
|---|
| 75 | . . I VENDOR]"" S RECORD=$O(^PRC(443.75,"AO",PRCTT,PONO,VENDOR,0)) | 
|---|
| 76 | . . I 'RECORD D  I 'RECORD S PRCXM(ERRCNT)=$P($T(ERROR+19),";;",2)_$G(PRCDA)_"." D ERRCNT Q | 
|---|
| 77 | . . . S RECORD=$O(^PRC(443.75,"AR",PONO,0)) | 
|---|
| 78 | . . Q:$O(PRCXM(0)) | 
|---|
| 79 | . . S VENDOR(1)=$P($G(^PRC(443.75,+$G(RECORD),0)),U,6) | 
|---|
| 80 | . . I VENDOR]"",VENDOR(1)]""&(VENDOR'=VENDOR(1)) S PRCXM(ERRCNT)=$P($T(ERROR+20),";;",2)_$G(RECORD)_"." D ERRCNT Q | 
|---|
| 81 | .  S:PRCTT="RFQ" RECORD=$O(^PRC(443.75,"AC",PRCTT,PONO,VENDOR,RFQ,0)) | 
|---|
| 82 | .  S:PRCTT="TXT" RECORD=$O(^PRC(443.75,"AF",PRCTT,PONO,VENDOR,TEXT,0)) | 
|---|
| 83 | .  I $G(^PRC(443.75,+$G(RECORD),0))']"" S PRCXM(ERRCNT)=$P($T(ERROR+12),";;",2)_$G(PONO)_"." D ERRCNT Q | 
|---|
| 84 | .  L +^PRC(443.75,RECORD):180 E  S PRCXM(ERRCNT)=$P($T(ERROR+18),";;",2)_$G(RECORD)_"." D ERRCNT Q | 
|---|
| 85 | . ; | 
|---|
| 86 | .  I SEGT="RJ" D | 
|---|
| 87 | .  .  S PRC(1,443.75,"?+1,",11)=$P(LINE,U,7) | 
|---|
| 88 | .  .  S PRC(1,443.75,"?+1,",12)=$P(LINE,U,8) | 
|---|
| 89 | .  .  S PRC(1,443.75,"?+1,",13)=$P(LINE,U,9) | 
|---|
| 90 | .  .  S:$P(LINE,U,12)]"" PRC(1,443.75,"?+1,",17)=$P(LINE,U,12) | 
|---|
| 91 | .  .  S:$P(LINE,U,13)]"" PRC(1,443.75,"?+1,",18)=$P(LINE,U,13) | 
|---|
| 92 | .  .  S:$P(LINE,U,10)]"" PRC(1,443.75,"?+1,",14)=$P(LINE,U,10) | 
|---|
| 93 | .  .  S RRC=$$EXTRL^PRCOACT0($P(LINE,U,15),1) | 
|---|
| 94 | .  .  I RRC']"" S PRCXM(ERRCNT)=$P($T(ERROR+5),";;",2)_$G(PRCDA)_"." D ERRCNT | 
|---|
| 95 | .  .  I RRC']"" S PRC(1,443.75,"?+1,",19)="E" | 
|---|
| 96 | .  .  I RRC']"" S PRC(1,443.75,"?+1,",20)=$P($T(ERROR+5),";;",3) Q | 
|---|
| 97 | .  .  S RRC=$O(^PRC(443.76,"B",RRC,0)) | 
|---|
| 98 | .  .  I RRC'>0 S PRCXM(ERRCNT)=$P($T(ERROR+6),";;",2)_$G(PRCDA)_" (Error Code is "_$$EXTRL^PRCOACT0($P(LINE,U,15),1)_")." D ERRCNT | 
|---|
| 99 | .  .  I RRC'>0 S PRC(1,443.75,"?+1,",19)="E" | 
|---|
| 100 | .  .  I RRC'>0 S PRC(1,443.75,"?+1,",20)=$P($T(ERROR+6),";;",3) Q | 
|---|
| 101 | .  .  S PRC(1,443.75,"?+1,",15)=RRC | 
|---|
| 102 | .  .  Q | 
|---|
| 103 | .  S PRC(1,443.75,"?+1,",.01)=+$P($G(^PRC(443.75,RECORD,0)),U) | 
|---|
| 104 | .  D UPDATE^DIE("","PRC(1)") | 
|---|
| 105 | .  S COUNTER=COUNTER+1 | 
|---|
| 106 | STOP .  L:$G(RECORD) -^PRC(443.75,RECORD) | 
|---|
| 107 | .  Q | 
|---|
| 108 | I $G(RECORD),COUNTER'=COUNT S PRCXM(ERRCNT)=$P($T(ERROR+7),";;",2)_$G(PRCDA)_"." D ERRCNT | 
|---|
| 109 | ; | 
|---|
| 110 | EXIT I $O(PRCXM(0)) D PERROR^PRCOACT0 | 
|---|
| 111 | Q | 
|---|
| 112 | ERRCNT ;increment counter for multiple errors within RJ,TR processing | 
|---|
| 113 | S ERRCNT=ERRCNT+1 | 
|---|
| 114 | Q | 
|---|
| 115 | ; | 
|---|
| 116 | ERROR ;HERE IS THE LIST OF ERROR MESSAGES | 
|---|
| 117 | ;;Expected an ACT or a PRJ transaction.  Received a ;;A1 | 
|---|
| 118 | ;;The STATION number sent from EDI can not be found. The number is ;;A2 | 
|---|
| 119 | ;;The second segment is not the expected AT segment. It was a ;;A3 | 
|---|
| 120 | ;;There is no STATION number sent from EDI.  IEN for 423.6 is ;;A4 | 
|---|
| 121 | ;;No REJECT REASON CODE from EDI. The record IEN in 423.6 is ;;A5 | 
|---|
| 122 | ;;The ERROR CODE can not be found in the EDI ERROR CODES file. The record IEN in 423.6 is ;;A6 | 
|---|
| 123 | ;;There is a difference in the number of TR or RJ segments expected and how many found. File 423.6 entry is ;;A7 | 
|---|
| 124 | ;;There is no "B" cross-reference entry for this transaction in file 423.5. The entry is ;;A8 | 
|---|
| 125 | ;;There is a "B" cross-reference entry for this transaction but no record.;;A9 | 
|---|
| 126 | ;;There is a record for this transaction but no mail group pointer is listed.;;A10 | 
|---|
| 127 | ;;The mail group entered in the record in file 423.5 can not be found in the mail group file.;;A11 | 
|---|
| 128 | ;;The incoming record can't be found in file 443.75.  The RFQ/PO# is ;;A12 | 
|---|
| 129 | ;;Required field TYPE OF TRANSACTION is blank. IEN for file 423.6 is ;;A13 | 
|---|
| 130 | ;;Required field REF NUMBER is blank. IEN for file 423.6 is ;;A14 | 
|---|
| 131 | ;;Required field VENDOR ID NUMBER is blank. IEN for file 423.6 is ;;A15 | 
|---|
| 132 | ;;Required field TYPE OF RFQ is blank. IEN for file 423.6 is ;;A16 | 
|---|
| 133 | ;;Required field TXT MESSAGE NUMBER is blank. IEN for file 423.6 is ;;A17 | 
|---|
| 134 | ;;Unable to access record in file 443.75. IEN is ;;A18 | 
|---|
| 135 | ;;Unable to locate entry in file 443.75. IEN for file 423.6 is ;;A19 | 
|---|
| 136 | ;;VENDOR ID on transmission does not match 443.75 entry.  The IEN is ;;A20 | 
|---|