| 1 | PRCPSFU0 ;WISC/RFJ-fms code sheet utilities (find iv line) ;9.9.97 | 
|---|
| 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 | FINDLINE(PRCPDA,LINEDA) ;  find fms line number for lineda | 
|---|
| 8 | ;  return acct,subacct,fmsline | 
|---|
| 9 | N %,DATA | 
|---|
| 10 | S %=$G(^PRCS(410,PRCPDA,"IT",LINEDA,445)) | 
|---|
| 11 | S ACCT=$P($P(%,"^"),"-"),SUBACCT=$P($P(%,"^"),"-",2),FMSLINE=+$P(%,"^",2) | 
|---|
| 12 | I ACCT,SUBACCT,FMSLINE Q | 
|---|
| 13 | S DATA=$G(^PRCS(410,PRCPDA,"IT",LINEDA,0)) | 
|---|
| 14 | S SUBACCT=+$P(DATA,"^",4) S:'SUBACCT SUBACCT=$P($G(^PRC(441,+$P(DATA,"^",5),0)),"^",10) S SUBACCT=$E(SUBACCT_"0000",1,4) | 
|---|
| 15 | S ACCT=$$ACCT1^PRCPUX1($P($$NSN^PRCPUX1($P(DATA,"^",5)),"-")) | 
|---|
| 16 | ;  look to see if a line has already been created for acct-subacct | 
|---|
| 17 | S FMSLINE=+$O(^PRCS(410,PRCPDA,"IT","FMSLINE","A"_ACCT_"-"_SUBACCT,0)) | 
|---|
| 18 | I FMSLINE D SETLINE(PRCPDA,LINEDA,"A"_ACCT_"-"_SUBACCT,FMSLINE) Q | 
|---|
| 19 | ;  get next fms line number and set it for line | 
|---|
| 20 | S FMSLINE=$$GETNEXT(PRCPDA) | 
|---|
| 21 | D SETLINE(PRCPDA,LINEDA,"A"_ACCT_"-"_SUBACCT,FMSLINE) | 
|---|
| 22 | Q | 
|---|
| 23 | ; | 
|---|
| 24 | ; | 
|---|
| 25 | SETLINE(PRCPDA,LINEDA,ACCTNG,FMSLINE)  ;  set fms line on issue book line | 
|---|
| 26 | ;  fmsline=fmsline number to set; acctng=acct-subaact | 
|---|
| 27 | I '$D(^PRCS(410,PRCPDA,"IT",LINEDA,0)) Q | 
|---|
| 28 | S $P(^PRCS(410,PRCPDA,"IT",LINEDA,445),"^",1,2)=ACCTNG_"^"_FMSLINE | 
|---|
| 29 | S ^PRCS(410,PRCPDA,"IT","FMSLINE",ACCTNG,FMSLINE,LINEDA)="" | 
|---|
| 30 | Q | 
|---|
| 31 | ; | 
|---|
| 32 | ; | 
|---|
| 33 | GETNEXT(PRCPDA)    ;  get next fmsline for issue book | 
|---|
| 34 | ;  all fmsline numbers are odd, even numbers used for profit | 
|---|
| 35 | I '$D(^PRCS(410,PRCPDA,0)) Q 0 | 
|---|
| 36 | N FMSLINE | 
|---|
| 37 | S FMSLINE=$P($G(^PRCS(410,PRCPDA,445)),"^",2) | 
|---|
| 38 | I 'FMSLINE S $P(^PRCS(410,PRCPDA,445),"^",2)=1 Q 1 | 
|---|
| 39 | S FMSLINE=FMSLINE+2,$P(^PRCS(410,PRCPDA,445),"^",2)=FMSLINE | 
|---|
| 40 | Q FMSLINE | 
|---|
| 41 | ; | 
|---|
| 42 | ; | 
|---|
| 43 | XREFFMS(PRCPDA,LINEDA,VALUE,FIELD,SETKILL)       ;  build fms cross reference | 
|---|
| 44 | ;  used for issue book IV document | 
|---|
| 45 | ;  x = value of data in field | 
|---|
| 46 | ;  field = field number for x | 
|---|
| 47 | ;  setkill = "SET" to set; "KILL" (or anything other than set) to kill | 
|---|
| 48 | N %,ACCTNG,FMSLINE | 
|---|
| 49 | S %=$G(^PRCS(410,PRCPDA,"IT",LINEDA,445)) I %="" Q | 
|---|
| 50 | S ACCTNG=$P(%,"^"),FMSLINE=+$P(%,"^",2) | 
|---|
| 51 | D | 
|---|
| 52 | .   I FIELD=445.01 S ACCTNG=X Q | 
|---|
| 53 | .   I FIELD=445.02 S FMSLINE=X Q | 
|---|
| 54 | I ACCTNG=""!('FMSLINE) Q | 
|---|
| 55 | I SETKILL="SET" S ^PRCS(410,PRCPDA,"IT","FMSLINE",ACCTNG,FMSLINE,LINEDA)="" Q | 
|---|
| 56 | K ^PRCS(410,PRCPDA,"IT","FMSLINE",ACCTNG,FMSLINE,LINEDA) | 
|---|
| 57 | Q | 
|---|