| 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 |  ;;
 | 
|---|