| 1 | PRCPDAP1 ;WISC/RFJ-drug accountability/prime vendor (process data)  ;15 Mar 94
 | 
|---|
| 2 |  ;;5.1;IFCAP;;Oct 20, 2000
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  Q
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 | PROCESS ;  process data on invoice
 | 
|---|
| 8 |  N %,DATA,GSDATA,ISADATA,ITCOUNT,ITEMDA,LASTSEG,LINE,LINEITEM,NDC,NEXTSEG,NTYPE,P,STCOUNT,STCTRL,STDATA,VDC,VENDA
 | 
|---|
| 9 |  K ^TMP($J,"PRCPDAPV SET"),PRCPFLAG,PRCPFERR
 | 
|---|
| 10 |  S LASTSEG=""
 | 
|---|
| 11 |  S LINE=0 F  S LINE=$O(^TMP($J,"PRCPDAPVS",LINE)) Q:'LINE  S DATA=^(LINE) D  Q:$G(PRCPFLAG)
 | 
|---|
| 12 |  .   ;  check segment order
 | 
|---|
| 13 |  .   D ORDER^PRCPDAPE I $G(PRCPFLAG) Q
 | 
|---|
| 14 |  .   S LASTSEG=$P(DATA,"^")
 | 
|---|
| 15 |  .   ;  control header
 | 
|---|
| 16 |  .   I $P(DATA,"^")="ISA" S ISADATA=DATA D  Q
 | 
|---|
| 17 |  .   .   I $L($P(DATA,"^",14))'=9 D ERROR^PRCPDAPE("'ISA' CONTROL HEADER, CONTROL NUMBER (piece 14) SHOULD BE 9 CHARACTERS IN LENGTH")
 | 
|---|
| 18 |  .   ;  control trailer
 | 
|---|
| 19 |  .   I $P(DATA,"^")="IEA" D  Q
 | 
|---|
| 20 |  .   .   I $P(DATA,"^",3)'=$P(ISADATA,"^",14) D ERROR^PRCPDAPE("'IEA' CONTROL TRAILER, CONTROL NUMBER (piece 3) SHOULD EQUAL 'ISA' CONTROL HEADER, CONTROL NUMBER (piece 14 = "_$P(ISADATA,"^",14)_")")
 | 
|---|
| 21 |  .   ;  group header
 | 
|---|
| 22 |  .   I $P(DATA,"^")="GS" S GSDATA=DATA D  Q
 | 
|---|
| 23 |  .   .   F %=3:1:6 S P=$S(%=3:7,1:%+5) I $P(DATA,"^",%)'=$TR($P(ISADATA,"^",P)," ") D ERROR^PRCPDAPE("'GS' GROUP HEADER, (piece "_%_") SHOULD EQUAL 'ISA' CONTROL HEADER (piece "_P_" = "_$TR($P(ISADATA,"^",P)," ")) Q
 | 
|---|
| 24 |  .   ;  group trailer
 | 
|---|
| 25 |  .   I $P(DATA,"^")="GE" D  Q
 | 
|---|
| 26 |  .   .   I $P(DATA,"^",3)'=$P($G(GSDATA),"^",7) D ERROR^PRCPDAPE("'GE' GROUP TRAILER, CONTROL NUMBER (piece 3) SHOULD EQUAL 'GS' GROUP HEADER, CONTROL NUMBER (piece 7 = "_$P($G(GSDATA),"^",7)_")")
 | 
|---|
| 27 |  .   ;  set header
 | 
|---|
| 28 |  .   I $P(DATA,"^")="ST" D  Q
 | 
|---|
| 29 |  .   .   S STDATA=DATA,STCTRL=$P(DATA,"^",3),STCOUNT=1,ITCOUNT=0,NTYPE=""
 | 
|---|
| 30 |  .   .   I $L(STCTRL)'=9 D ERROR^PRCPDAPE("'ST' SET HEADER, CONTROL NUMBER (piece 3) SHOULD BE 9 CHARACTERS IN LENGTH") Q
 | 
|---|
| 31 |  .   .   I $D(^TMP($J,"PRCPDAPV SET",STCTRL)) D ERROR^PRCPDAPE("'ST' SET HEADER, CONTROL NUMBER (piece 3) IS USED MORE THAN ONCE")
 | 
|---|
| 32 |  .   ;  set trailer
 | 
|---|
| 33 |  .   I $P(DATA,"^")="SE" S STCOUNT=STCOUNT+1 D  Q
 | 
|---|
| 34 |  .   .   I $P(DATA,"^",3)'=STCTRL D ERROR^PRCPDAPE("'SE' SET TRAILER, CONTROL NUMBER (piece 3) SHOULD EQUAL 'ST' SET HEADER, CONTROL NUMBER (piece 3 = "_STCTRL_")") Q
 | 
|---|
| 35 |  .   .   I STCOUNT'=$P(DATA,"^",2) D ERROR^PRCPDAPE("'SE' SET TRAILER, COUNT OF SEGMENTS (piece 2) SHOULD EQUAL NUMBER OF SEGMENTS ("_STCOUNT_")")
 | 
|---|
| 36 |  .   ;  beginning segment for invoice
 | 
|---|
| 37 |  .   I $P(DATA,"^")="BIG" S STCOUNT=STCOUNT+1 D  Q
 | 
|---|
| 38 |  .   .   I $P(DATA,"^",4)="" S $P(DATA,"^",4)=$P(DATA,"^",2)
 | 
|---|
| 39 |  .   .   S $P(DATA,"^",5)=$TR($P(DATA,"^",5)," ")
 | 
|---|
| 40 |  .   .   S ^TMP($J,"PRCPDAPV SET",STCTRL,"IN")=$P(DATA,"^",2,5)
 | 
|---|
| 41 |  .   ;  (not used)
 | 
|---|
| 42 |  .   I $P(DATA,"^")="REF" S STCOUNT=STCOUNT+1 Q
 | 
|---|
| 43 |  .   ;   buyer, seller, shipping info
 | 
|---|
| 44 |  .   I $P(DATA,"^")="N1" S STCOUNT=STCOUNT+1,NTYPE=$P(DATA,"^",2) D  Q
 | 
|---|
| 45 |  .   .   I NTYPE'="BY",NTYPE'="DS",NTYPE'="ST" D ERROR^PRCPDAPE("THE 'N1' SEGMENT, PIECE 2 SHOULD EQUAL 'BY', 'DS' OR 'ST'") Q
 | 
|---|
| 46 |  .   .   S $P(^TMP($J,"PRCPDAPV SET",STCTRL,NTYPE),"^")=$P(DATA,"^",3),$P(^(NTYPE),"^",2)=$P(DATA,"^",5)
 | 
|---|
| 47 |  .   I $P(DATA,"^")="N2" D NONTYPE^PRCPDAPE Q:$G(PRCPFLAG)  S %=$G(^TMP($J,"PRCPDAPV SET",STCTRL,NTYPE)),$P(^(NTYPE),"^")=$P(%,"^")_" "_$P(DATA,"^",2)_" "_$P(DATA,"^",3),STCOUNT=STCOUNT+1 Q
 | 
|---|
| 48 |  .   I $P(DATA,"^")="N3" D NONTYPE^PRCPDAPE Q:$G(PRCPFLAG)  S $P(^TMP($J,"PRCPDAPV SET",STCTRL,NTYPE),"^",3)=$P(DATA,"^",2)_" "_$P(DATA,"^",3),STCOUNT=STCOUNT+1 Q
 | 
|---|
| 49 |  .   I $P(DATA,"^")="N4" D NONTYPE^PRCPDAPE Q:$G(PRCPFLAG)  S $P(^TMP($J,"PRCPDAPV SET",STCTRL,NTYPE),"^",4,6)=$P(DATA,"^",2,4),STCOUNT=STCOUNT+1,NTYPE="" Q
 | 
|---|
| 50 |  .   ;  term discount
 | 
|---|
| 51 |  .   I $P(DATA,"^")="ITD" S $P(^TMP($J,"PRCPDAPV SET",STCTRL,"IN"),"^",6,11)=$P(DATA,"^",4,9),STCOUNT=STCOUNT+1 Q
 | 
|---|
| 52 |  .   ;  date time reference
 | 
|---|
| 53 |  .   I $P(DATA,"^")="DTM" S STCOUNT=STCOUNT+1 D  Q
 | 
|---|
| 54 |  .   .   S %=$S($P(DATA,"^",2)="002":12,$P(DATA,"^",2)="035":13,1:0) I '% Q
 | 
|---|
| 55 |  .   .   S $P(^TMP($J,"PRCPDAPV SET",STCTRL,"IN"),"^",%)=$P(DATA,"^",3)
 | 
|---|
| 56 |  .   ;  invoice line item
 | 
|---|
| 57 |  .   I $P(DATA,"^")="IT1" S STCOUNT=STCOUNT+1,ITCOUNT=ITCOUNT+1 D ITEM^PRCPDAPI Q
 | 
|---|
| 58 |  .   ;  item count
 | 
|---|
| 59 |  .   I $P(DATA,"^")="CTT" S STCOUNT=STCOUNT+1 D  Q
 | 
|---|
| 60 |  .   .   I ITCOUNT'=$P(DATA,"^",2) D ERROR^PRCPDAPE("'CTT' TRANSACTION TOTALS, LINE ITEM COUNT (piece 2) SHOULD EQUAL NUMBER OF LINE ITEMS ("_ITCOUNT_")")
 | 
|---|
| 61 |  .   ;  unknown segement
 | 
|---|
| 62 |  .   D ERROR^PRCPDAPE("SEGMENT IS UNKNOWN")
 | 
|---|
| 63 |  Q
 | 
|---|