| 1 | PRCVIBF ;WOIFO/AS-FUND PROCESSING USING DATA FROM DYNAMED ;4/11/05  15:15 | 
|---|
| 2 | ;;5.1;IFCAP;**81**;Oct 20, 2000 | 
|---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | INIT(NOD) ; | 
|---|
| 6 | ;  1. Find out it is IV or SV | 
|---|
| 7 | ; | 
|---|
| 8 | NEW RTVAL | 
|---|
| 9 | I '$D(^TMP(NOD,$J)) D ERR(1) G EXIT | 
|---|
| 10 | PROCESS ; | 
|---|
| 11 | NEW DUZ | 
|---|
| 12 | NEW %,ACCOD,ACT,BATCHID,BOC,CC,DA,PRC,PRCPDA,PRCHQ,PRCPORD,DIC,PRCSCP,RECORD1,RECORD10,RECORD2,RECORD3,RECORD4,T | 
|---|
| 13 | NEW DATIME,DESC,IEN,ITM,ITOT,IVAL,ND,TRNODE,Z,SVAL,STOT | 
|---|
| 14 | NEW PRCVI,PRCVDT,PRCSN,CC2 | 
|---|
| 15 | D NOW^%DTC | 
|---|
| 16 | S PRCVDT=DT,DATIME=%,U="^",ND=$G(^TMP(NOD,$J,1)),PRC("SITE")=$P(ND,U) | 
|---|
| 17 | S BATCHID=$P(ND,U,2),Z=$P(ND,U,3),ACT=$P(ND,U,4) | 
|---|
| 18 | D DUZ^XUP($P(ND,U,6)) ;DBIA #4129 DUZ^XUP | 
|---|
| 19 | ;  Return PRC("FY"), PRC("QTR") using fileman date X | 
|---|
| 20 | S X=$P(ND,U,5) D FYQ^PRCFSITE | 
|---|
| 21 | S ND=$G(^TMP(NOD,$J,2)) | 
|---|
| 22 | S PRC("SCP")=$P(ND,U),PRC("CP")=$P(ND,U,2),CC=$P(ND,U,3),CC2=$P(ND,U,4) | 
|---|
| 23 | S PRC("BBFY")=$$BBFY^PRCSUT(PRC("SITE"),PRC("FY"),PRC("CP"),1) | 
|---|
| 24 | I Z="IV",PRC("SCP")="" S PRC("SCP")=4537 | 
|---|
| 25 | ;  If adjustment... | 
|---|
| 26 | I ACT'="E" D ADJ G EXIT | 
|---|
| 27 | ; | 
|---|
| 28 | ;        Issue Book Fund Commitment | 
|---|
| 29 | ;  1. get data from DynaMed by HL7 message | 
|---|
| 30 | TRANS ;  2. get new transaction number | 
|---|
| 31 | S X=PRC("SITE")_"-"_PRC("FY")_"-"_PRC("CP") | 
|---|
| 32 | S Z=PRC("SITE")_"-"_PRC("FY")_"-"_PRC("QTR")_"-"_PRC("CP") | 
|---|
| 33 | D EN1^PRCSUT3 | 
|---|
| 34 | NOD0 ;  3. create file 410, node 0 and 3 | 
|---|
| 35 | S PRC("CP")=$P($G(^PRC(420,PRC("SITE"),1,+PRC("CP"),0)),"^") | 
|---|
| 36 | D EN2^PRCSUT3 | 
|---|
| 37 | ; Failed if --> I '$D(PRCSX1) | 
|---|
| 38 | ;S X=PRCSX1,T1=DA | 
|---|
| 39 | S RTVAL=DA_"^0" | 
|---|
| 40 | ;    Transaction type = O:Obligation, A:Adjustment, CA:Cancelled | 
|---|
| 41 | S $P(^PRCS(410,DA,0),"^",2)="O" | 
|---|
| 42 | ;    Form Type = 5, Issue Book | 
|---|
| 43 | S $P(^PRCS(410,DA,0),"^",4)=5 | 
|---|
| 44 | ; | 
|---|
| 45 | NODE2 ;  4. create file 410, node 2 | 
|---|
| 46 | S IEN=$O(^PRC(440,"AC","S",0)),ND=$G(^PRC(440,+IEN,0)) | 
|---|
| 47 | I IEN D | 
|---|
| 48 | . S ^PRCS(410,DA,2)=$P(ND,"^",1,10) | 
|---|
| 49 | . S $P(^PRCS(410,DA,3),"^",4)=+IEN | 
|---|
| 50 | ; | 
|---|
| 51 | ;  5. Date of request (P1), Priority of Request (ST), Date required (P4) | 
|---|
| 52 | S ^PRCS(410,DA,1)=PRCVDT_"^^ST^"_PRCVDT | 
|---|
| 53 | CC ;  6. Cost Center | 
|---|
| 54 | S CC=CC_CC2,CC=$P($G(^PRCD(420.1,CC,0)),"^") | 
|---|
| 55 | S $P(^PRCS(410,DA,3),"^",3)=CC | 
|---|
| 56 | ;  7. Create Items | 
|---|
| 57 | ITEM ;     FIND UPDATE^DIE USAGE | 
|---|
| 58 | ; | 
|---|
| 59 | S CC=$G(^TMP(NOD,$J,3,0)),(STOT,ITOT)=0 | 
|---|
| 60 | F PRCVI=1:1:CC D | 
|---|
| 61 | . S ND=$G(^TMP(NOD,$J,3,PRCVI,0)) Q:ND="" | 
|---|
| 62 | . S ACCOD=$P(ND,U,2),IVAL=$P(ND,U,4),SVAL=$P(ND,U,5) | 
|---|
| 63 | . S BOC=$P(ND,U,3) I BOC S BOC=$E($P($G(^PRCD(420.2,+BOC,0)),U),1,30) | 
|---|
| 64 | . S ITM=999999,DESC=$P($G(^PRC(441,ITM,0)),"^",2) | 
|---|
| 65 | . I DESC="" S DESC="DYNAMED ITEM" | 
|---|
| 66 | . S ACT=$G(^PRCS(410,DA,"IT",0)) I ACT="" S ^(0)="^410.02AI^0^0" | 
|---|
| 67 | . S $P(^PRCS(410,DA,"IT",0),"^",3,4)=PRCVI_"^"_PRCVI | 
|---|
| 68 | . S ^PRCS(410,DA,"IT",PRCVI,0)=PRCVI_"^^^"_BOC_U_ITM_"^^^"_CC | 
|---|
| 69 | . S ^PRCS(410,DA,"IT",PRCVI,1,0)="^^1^1^"_PRCVDT | 
|---|
| 70 | . S ^PRCS(410,DA,"IT",PRCVI,1,1,0)=DESC | 
|---|
| 71 | . ;Node 445 in "IT" | 
|---|
| 72 | . ;   how to handle ACCT-BOC    (CAME FROM DYNAMED) | 
|---|
| 73 | . S ^PRCS(410,DA,"IT",PRCVI,445)="A"_ACCOD_"-"_$P(ND,U,3)_U_$P(ND,U)_"^^"_IVAL_U_SVAL | 
|---|
| 74 | . S ^PRCS(410,DA,"IT","AB",PRCVI,PRCVI)="" | 
|---|
| 75 | . S ^PRCS(410,DA,"IT","B",PRCVI,PRCVI)="" | 
|---|
| 76 | . S ^PRCS(410,DA,"IT","AG",ITM,PRCVI)="" | 
|---|
| 77 | . S STOT=STOT+SVAL | 
|---|
| 78 | ;   End of item loop | 
|---|
| 79 | S $P(^PRCS(410,DA,10),U)=PRCVI | 
|---|
| 80 | ; | 
|---|
| 81 | TOT ;   TOTAL COST and Date Commited | 
|---|
| 82 | S ^PRCS(410,DA,4)=ITOT_U_PRCVDT_U_STOT_"^^^^^"_STOT | 
|---|
| 83 | ;  5. Get DUZ of requestor and Approving Official, Total Amount | 
|---|
| 84 | S $P(^PRCS(410,DA,7),U)=DUZ | 
|---|
| 85 | 445 ; | 
|---|
| 86 | S $P(^PRCS(410,DA,445),"^",5)=BATCHID | 
|---|
| 87 | COMMIT ; | 
|---|
| 88 | S PRCSN=^PRCS(410,DA,0),PRCHQ=$P(PRCSN,"^",4) | 
|---|
| 89 | ;S (CURQTR,CURQTR1)=PRC("QTR") | 
|---|
| 90 | S $P(^PRCS(410,DA,11),U,3)=1,^PRCS(410,"AQ",1,DA)="" | 
|---|
| 91 | S ^PRCS(410,"F",PRC("SITE")_"-"_+PRC("CP")_"-"_$P($P(^PRCS(410,DA,0),U),"-",5),DA)="" | 
|---|
| 92 | S ^PRCS(410,"F1",$P($P(^PRCS(410,DA,0),U),"-",5)_"-"_PRC("SITE")_"-"_+PRC("CP"),DA)="" | 
|---|
| 93 | ;  Copied from FINAL1^PRCSAPP2 | 
|---|
| 94 | ;  set record in 443, clean up 410, change cp uncommitted balance | 
|---|
| 95 | ;  using TRANS^PRCSES, in 420 | 
|---|
| 96 | S PRCSCP=$P($G(^PRC(420,PRC("SITE"),1,+PRC("CP"),0)),U,12) | 
|---|
| 97 | L +^PRCS(410,DA):15 Q:$T=0 | 
|---|
| 98 | S $P(^PRCS(410,DA,10),U,4)=$O(^PRCD(442.3,"C",60,0)) | 
|---|
| 99 | I PRCSCP=1!(PRCHQ=1) S $P(^PRCS(410,DA,10),U,4)=$O(^PRCD(442.3,"C",10,0)) | 
|---|
| 100 | K ^PRCS(410,"F",+PRCSN_"-"_+PRC("CP")_"-"_$P($P(PRCSN,U),"-",5),DA) | 
|---|
| 101 | K ^PRCS(410,"F1",$P($P(PRCSN,U),"-",5)_"-"_+PRCSN_"-"_+PRC("CP"),DA) | 
|---|
| 102 | K ^PRCS(410,"AQ",1,DA) | 
|---|
| 103 | S $P(^PRCS(410,DA,11),U,3)="" | 
|---|
| 104 | D ERS410^PRC0G(DA_"^A") | 
|---|
| 105 | L -^PRCS(410,DA) | 
|---|
| 106 | ESIG ; | 
|---|
| 107 | S MESSAGE="" | 
|---|
| 108 | D ENCODE^PRCSC1(DA,DUZ,.MESSAGE) | 
|---|
| 109 | K MESSAGE | 
|---|
| 110 | S X=STOT D TRANS^PRCSES | 
|---|
| 111 | ;    no sub-cp processing  (removed the code) | 
|---|
| 112 | I $P(PRCSN,U,4)>1 D | 
|---|
| 113 | . S X=$P(PRCSN,U,1),DIC="^PRC(443,",DIC(0)="L",DLAYGO=443 | 
|---|
| 114 | . D ^DIC K DIC,DLAYGO,X | 
|---|
| 115 | . S X=$O(^PRCD(442.3,"C",60,0)) | 
|---|
| 116 | . S:PRCSCP=1 X=$O(^PRCD(442.3,"C",10,0)) | 
|---|
| 117 | . S $P(^PRC(443,DA,0),U,7)=X,^PRC(443,"AC",X,DA)="" | 
|---|
| 118 | . S $P(^PRC(443,DA,0),U,11)=$P(PRCSN,U,6) | 
|---|
| 119 | ;   No sub-cp  so no --->        increment due-ins and due-outs | 
|---|
| 120 | ;   D EN2^PRCPWI | 
|---|
| 121 | ; | 
|---|
| 122 | S TRNODE(0)=0 D:PRCHQ=1 NODE^PRCS58OB(DA,.TRNODE) | 
|---|
| 123 | POSTING ; | 
|---|
| 124 | ;   Buyer and Seller's FCP provided by DynaMed | 
|---|
| 125 | ; | 
|---|
| 126 | ;S (PRCPINPT,WHSE)=$O(^PRCP(445,"B",PRC("SITE")_"-WHSE",0)) | 
|---|
| 127 | S PRCPDA=DA | 
|---|
| 128 | ;   get reference voucher (Obligation) number | 
|---|
| 129 | S PRCPORD=$$IBCNS^PRCPWPU1(PRC("SITE")_"-I"_$E(PRC("FY"),2)) | 
|---|
| 130 | I PRCPORD="" D ERR(2) G EXIT | 
|---|
| 131 | S $P(^PRCS(410,PRCPDA,445),U)=PRCPORD | 
|---|
| 132 | S $P(^PRCS(410,PRCPDA,445),U,3,4)=STOT_U_DT | 
|---|
| 133 | S ^PRCS(410,"AS",BATCHID,PRCPDA)="" | 
|---|
| 134 | ; | 
|---|
| 135 | FILE ; | 
|---|
| 136 | D IB^PRCS0B(PRC("SITE")_U_PRC("SITE"),PRC("CP")_U_PRC("SCP"),PRCPDA,STOT_U_STOT) | 
|---|
| 137 | FINAL ; | 
|---|
| 138 | ;   All issue book from DynaMed are FINAL | 
|---|
| 139 | S $P(^PRCS(410,PRCPDA,4),U,4)=DT | 
|---|
| 140 | ;   change status | 
|---|
| 141 | S $P(^PRCS(410,PRCPDA,10),U,4)=$O(^PRCD(442.3,"C",40,0)) | 
|---|
| 142 | ;   Accountable officer and date signed | 
|---|
| 143 | S $P(^PRCS(410,PRCPDA,7),U,11,12)=DUZ_U_DATIME | 
|---|
| 144 | ;   remove any worksheet file for 2237 | 
|---|
| 145 | N DA,DIC,DIK | 
|---|
| 146 | S DIK="^PRC(443,",DA=PRCPDA D ^DIK | 
|---|
| 147 | EXIT ; | 
|---|
| 148 | Q RTVAL | 
|---|
| 149 | ; | 
|---|
| 150 | ADJ ; | 
|---|
| 151 | ; Adjustment | 
|---|
| 152 | ;   Get IEN from "AS" | 
|---|
| 153 | S DA=$O(^PRCS(410,"AS",BATCHID,0)) | 
|---|
| 154 | I 'DA D ERR(3) Q | 
|---|
| 155 | S RTVAL=DA_"^0" | 
|---|
| 156 | ; | 
|---|
| 157 | S CC=$G(^TMP(NOD,$J,3,0)),STOT=0 | 
|---|
| 158 | F PRCVI=1:1:CC D | 
|---|
| 159 | . S ND=$G(^TMP(NOD,$J,3,PRCVI,0)) Q:ND="" | 
|---|
| 160 | . S STOT=STOT+$P(ND,U,5) | 
|---|
| 161 | ;  Update following code to generate new 410 for Buyer and Seller | 
|---|
| 162 | I 'STOT D ERR(4) G EXIT | 
|---|
| 163 | S CC=$P($G(^PRCS(410,DA,4)),"^",5)_"-ADJ" | 
|---|
| 164 | I STOT D | 
|---|
| 165 | . N A,B,BUY,SAL | 
|---|
| 166 | . S BUY=PRC("SITE")_U_PRC("CP")_U_"A"_"^^"_DT_U_STOT_U_CC | 
|---|
| 167 | . S A=^PRCS(410,DA,0),B=$P($G(^(3)),"^",11) | 
|---|
| 168 | . S A=$P($$QTRDATE^PRC0D($P(A,"-",2),$P(A,"-",3)),"^",7) | 
|---|
| 169 | . S $P(BUY,"^",10,11)=A_"^"_+$$DATE^PRC0C(B,"I"),SAL=BUY | 
|---|
| 170 | . D A410^PRC0F(.PRCPXX,BUY) | 
|---|
| 171 | . S $P(SAL,U,2)=PRC("SCP"),$P(SAL,U,6)=-STOT | 
|---|
| 172 | . D A410^PRC0F(.PRCPXX,SAL) | 
|---|
| 173 | . K PRCPXX | 
|---|
| 174 | Q | 
|---|
| 175 | DMITEM ; | 
|---|
| 176 | ;  Initiate new item number for DynaMed interface | 
|---|
| 177 | NEW FDA,RESULT | 
|---|
| 178 | S FDA(441,"?+1,",.01)=999999 | 
|---|
| 179 | S FDA(441,"?+1,",.05)="ITEM FOR DYNAMED ISSUE BOOK PROCESSING" | 
|---|
| 180 | S FDA(441,"?+1,",2)=9999 | 
|---|
| 181 | S FDA(441,"?+1,",12)=2696 | 
|---|
| 182 | D UPDATE^DIE("E","FDA","RESULT") | 
|---|
| 183 | S FDA(1)="Item created for use when processing IVSV transaction in support" | 
|---|
| 184 | S FDA(2)="of the DynaMed-IFCAP interface" | 
|---|
| 185 | D WP^DIE(441,"999999,",.1,"KA","FDA") | 
|---|
| 186 | Q | 
|---|
| 187 | ERR(N) ; | 
|---|
| 188 | ;  if error, send HL7 app ACK of AE | 
|---|
| 189 | S N=$P($T(ERCODE+N),";;",2) | 
|---|
| 190 | S RTVAL="^"_+N_"^"_$P(N,"^",2) | 
|---|
| 191 | Q | 
|---|
| 192 | ERCODE ; | 
|---|
| 193 | ;;201^MISSING TMP GLOBAL | 
|---|
| 194 | ;;207^Reference Voucher Number generation failed | 
|---|
| 195 | ;;209^Original Transaction ID not found | 
|---|
| 196 | ;;211^Adjustment amount missing. | 
|---|
| 197 | ;; | 
|---|