[613] | 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
|
---|