| 1 | PSAREC1 ;BIR/LTL,JMB-Receiving Directly into Drug Accountability - CONT'D  ;7/23/97
 | 
|---|
| 2 |  ;;3.0; DRUG ACCOUNTABILITY/INVENTORY INTERFACE;**21,37,64**; 10/24/97;Build 4
 | 
|---|
| 3 |  ;References to ^PSDRUG( are covered by IA #2095
 | 
|---|
| 4 |  ;This routine posts non-prime vendor's drugs into pharmacy locations.
 | 
|---|
| 5 |  ;The balances are incremented in the pharmacy location & the DRUG file.
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 | POST ;Posts the data in 58.8, 58.81, and 50
 | 
|---|
| 8 |  D NOW^%DTC S PSADT=+$E(%,1,12) K %
 | 
|---|
| 9 |  I '$D(^PSD(58.8,PSALOC,1,PSADRG,0)) D
 | 
|---|
| 10 |  .S:'$D(^PSD(58.8,PSALOC,1,0)) DIC("P")=$P(^DD(58.8,10,0),"^",2)
 | 
|---|
| 11 |  .S DA(1)=PSALOC,DIC="^PSD(58.8,"_DA(1)_",1,",(DA,X)=PSADRG,DIC(0)="L",DLAYGO=58.8
 | 
|---|
| 12 |  .F  L +^PSD(58.8,PSALOC,0):$S($G(DILOCKTM)>0:DILOCKTM,1:3) I  Q
 | 
|---|
| 13 |  .D ^DIC L -^PSD(58.8,PSALOC,0) K DIC,DA
 | 
|---|
| 14 |  W !!,"There were ",$S($P($G(^PSD(58.8,PSALOC,1,PSADRG,0)),"^",4):$P($G(^(0)),"^",4),1:0)," on hand.",?40,"There are now ",$P($G(^(0)),"^",4)+PSAREC," on hand.",!
 | 
|---|
| 15 |  F  L +^PSD(58.8,PSALOC,1,PSADRG,0):$S($G(DILOCKTM)>0:DILOCKTM,1:3) I  Q
 | 
|---|
| 16 |  S $P(^PSD(58.8,PSALOC,1,PSADRG,0),"^",4)=PSAREC+PSACBAL
 | 
|---|
| 17 |  L -^PSD(58.8,PSALOC,1,PSADRG,0)
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 | MONTHLY I '$D(^PSD(58.8,PSALOC,1,PSADRG,5,$E(DT,1,5)*100,0)) D
 | 
|---|
| 20 |  .;PSA*3*31 Set zero node to correct DD (20 not 28) Dave B.
 | 
|---|
| 21 |  .S:'$D(^PSD(58.8,PSALOC,1,PSADRG,5,0)) DIC("P")=$P(^DD(58.8001,20,0),"^",2)
 | 
|---|
| 22 |  .S DIC="^PSD(58.8,PSALOC,1,PSADRG,5,",DIC(0)="L",DIC("DR")="1////^S X=$G(PSACBAL)",(X,DINUM)=$E(DT,1,5)*100,DA(2)=PSALOC,DA(1)=PSADRG,DLAYGO=58.8 D ^DIC K DIC,DINUM,DLAYGO
 | 
|---|
| 23 |  .S X="T-1M" D ^%DT
 | 
|---|
| 24 |  .S DIC="^PSD(58.8,PSALOC,1,PSADRG,5,",DIC(0)="L",(X,DINUM)=$E(Y,1,5)*100,DA(2)=PSALOC,DA(1)=PSADRG,DLAYGO=58.8 D ^DIC K DIC,DINUM,DLAYGO S DA=+Y
 | 
|---|
| 25 |  .S DIE="^PSD(58.8,PSALOC,1,PSADRG,5,",DA(2)=PSALOC,DA(1)=PSADRG,DR="3////^S X=$G(PSACBAL)" D ^DIE K DIE
 | 
|---|
| 26 |  S DIE="^PSD(58.8,"_PSALOC_",1,"_PSADRG_",5,",DA(2)=PSALOC,DA(1)=PSADRG,DA=$E(DT,1,5)*100,DR="5////^S X="_$P($G(^(0)),"^",3)+PSAREC D ^DIE
 | 
|---|
| 27 |  W !,"Updating monthly receipts and transaction history.",!
 | 
|---|
| 28 | TR F  L +^PSD(58.81,0):$S($G(DILOCKTM)>0:DILOCKTM,1:3) I  Q
 | 
|---|
| 29 | FIND S PSAT=$P(^PSD(58.81,0),"^",3)+1 I $D(^PSD(58.81,PSAT)) S $P(^PSD(58.81,0),"^",3)=$P(^PSD(58.81,0),"^",3)+1 G FIND
 | 
|---|
| 30 |  S DIC="^PSD(58.81,",DIC(0)="L",DLAYGO=58.81,(DINUM,X)=PSAT D ^DIC K DIC,DINUM,DLAYGO
 | 
|---|
| 31 |  S DIE="^PSD(58.81,",DA=PSAT,DR="1////1;2////^S X=PSALOC;3////^S X=PSADT;4////^S X=PSADRG;5////^S X=PSAREC;6////^S X=DUZ;7////^S X=PSACON;8////^S X=PSAPO;9////^S X=PSACBAL;71////^S X=$G(PSAPV)" D ^DIE
 | 
|---|
| 32 |  L -^PSD(58.81,0)
 | 
|---|
| 33 |  S:'$D(^PSD(58.8,PSALOC,1,PSADRG,4,0)) DIC("P")=$P(^DD(58.8001,19,0),"^",2)
 | 
|---|
| 34 | ACT S DIC="^PSD(58.8,PSALOC,1,PSADRG,4,",DIC(0)="L",(X,DINUM)=PSAT,DA(2)=PSALOC,DA(1)=PSADRG,DLAYGO=58.8
 | 
|---|
| 35 |  F  L +^PSD(58.8,PSALOC,0):$S($G(DILOCKTM)>0:DILOCKTM,1:3) I  Q
 | 
|---|
| 36 |  D ^DIC
 | 
|---|
| 37 |  L -^PSD(58.8,PSALOC,0) K DA,DIC,DINUM,DLAYGO
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 | 50 S (PSATDRG,PSA)=0 F  S PSA=$O(^PSD(58.8,"C",PSADRG,PSA)) Q:'PSA  D
 | 
|---|
| 40 |  .I PSA=PSALOC Q:PSACBAL<0  S PSATDRG=PSATDRG+PSACBAL Q
 | 
|---|
| 41 |  .I +$G(^PSD(58.8,PSA,"I")),+^PSD(58.8,PSA,"I")'>DT Q
 | 
|---|
| 42 |  .Q:$P($G(^PSD(58.8,PSA,0)),"^",2)'="M"&($P($G(^PSD(58.8,PSA,0)),"^",2)'="P")
 | 
|---|
| 43 |  .S PSATDRG=PSATDRG+$P($G(^PSD(58.8,PSA,1,PSADRG,0)),"^",4)
 | 
|---|
| 44 |  S PSANODE=$G(^PSDRUG(PSADRG,660))
 | 
|---|
| 45 |  I PSACBAL>0!(PSATDRG>0) D
 | 
|---|
| 46 |  .S PSACOST=PSACOST+(PSATDRG*+$P(PSANODE,"^",6)),PSATDRG=PSAREC+PSATDRG,PSANPDU=+$J((PSACOST/PSATDRG),0,3),PSANPOU=PSANPDU*PSADUOU
 | 
|---|
| 47 |  .S PSALEN=$L($P(PSANPOU,".")),PSANPOU=$J(PSANPOU,(PSALEN+3),2)
 | 
|---|
| 48 |  E  S PSATDRG=PSATDRG+PSACBAL,PSANPOU=PSAPOU,PSANPDU=PSAPDU
 | 
|---|
| 49 |  S DIE="^PSDRUG(",DA=PSADRG,DR="50////^S X="_(PSAREC+$G(^PSDRUG(PSADRG,660.1)))
 | 
|---|
| 50 |  F  L +^PSDRUG(DA,0):$S($G(DILOCKTM)>0:DILOCKTM,1:3) I  Q
 | 
|---|
| 51 |  D ^DIE L -^PSDRUG(DA,0) K DIE,DA
 | 
|---|
| 52 |  S PSAODASH=$P($G(^PSDRUG(PSADRG,2)),"^",2)
 | 
|---|
| 53 |  S PSAONDC=$S(PSAODASH'="":$E("000000",1,(6-$L($P(PSAODASH,"-"))))_$P(PSAODASH,"-")_$E("0000",1,(4-$L($P(PSAODASH,"-",2))))_$P(PSAODASH,"-",2)_$E("00",1,(2-$L($P(PSAODASH,"-",3))))_$P(PSAODASH,"-",3),1:"")
 | 
|---|
| 54 |  I +PSANPDU=+$P(PSANODE,"^",6),PSANDC=PSAONDC,PSANDC'="" G NEXT
 | 
|---|
| 55 |  I ($P(PSANODE,"^",2)=PSAOU&($P(PSANODE,"^",5)=PSADUOU))!('$P(PSANODE,"^",2)&('$P(PSANODE,"^",5))) D
 | 
|---|
| 56 |  .I PSANDC'="",PSANDC'=PSAONDC D
 | 
|---|
| 57 |  ..S DIE="^PSDRUG(",DA=PSADRG,DR="31////^S X=PSADASH"
 | 
|---|
| 58 |  ..F  L +^PSDRUG(DA,0):$S($G(DILOCKTM)>0:DILOCKTM,1:3) I  Q
 | 
|---|
| 59 |  ..D ^DIE L -^PSDRUG(DA,0) K DIE,DA
 | 
|---|
| 60 |  .I +PSANPDU,+PSANPDU'=+$P(PSANODE,"^",6),+PSANPOU D
 | 
|---|
| 61 |  ..S DIE="^PSDRUG(",DA=PSADRG,DR="13///^S X="_PSANPOU
 | 
|---|
| 62 |  ..F  L +^PSDRUG(DA,0):$S($G(DILOCKTM)>0:DILOCKTM,1:3) I  Q
 | 
|---|
| 63 |  ..D ^DIE L -^PSDRUG(DA,0) K DIE,DA
 | 
|---|
| 64 |  .I '$P(PSANODE,"^",2),'$P(PSANODE,"^",5),PSAOU,PSADUOU D
 | 
|---|
| 65 |  ..S DIE="^PSDRUG(",DA=PSADRG,DR="12////^S X=PSAOU;15////^S X=PSADUOU"
 | 
|---|
| 66 |  ..F  L +^PSDRUG(DA,0):$S($G(DILOCKTM)>0:DILOCKTM,1:3) I  Q
 | 
|---|
| 67 |  ..D ^DIE L -^PSDRUG(DA,0) K DIE,DA
 | 
|---|
| 68 | NEXT Q:$G(PSANDC)=""
 | 
|---|
| 69 | SYNONYM D PSANDC1^PSAHELP S PSADASH=PSANDCX K PSANDCX
 | 
|---|
| 70 |  S PSA50SYN=+$O(^PSDRUG("C",PSANDC,PSADRG,0))
 | 
|---|
| 71 |  K DA,DR S:'$D(^PSDRUG(PSADRG,1,0)) DIC("P")=$P(^DD(50,9,0),"^",2)
 | 
|---|
| 72 |  S DA(1)=PSADRG
 | 
|---|
| 73 |  I 'PSA50SYN!(PSA50SYN&('$D(^PSDRUG(PSADRG,1,PSA50SYN,0)))) D  Q:Y<0
 | 
|---|
| 74 |  .S DIC="^PSDRUG("_DA(1)_",1,",DIC(0)="LM",X=PSANDC,DLAYGO=50
 | 
|---|
| 75 |  .F  L +^PSDRUG(PSADRG,0):$S($G(DILOCKTM)>0:DILOCKTM,1:3) I  Q
 | 
|---|
| 76 |  .D ^DIC L -^PSDRUG(PSADRG,0) K DIC,DLAYGO S PSA50SYN=+Y
 | 
|---|
| 77 |  S DA=PSA50SYN,DIE="^PSDRUG("_DA(1)_",1,"
 | 
|---|
| 78 |  S DR="2////^S X=PSADASH;1////D"_$S(+PSAOU:";401////^S X=PSAOU",1:"")_$S(+PSAPOU:";402////^S X=PSAPOU",1:"")_";403////^S X=PSADUOU"_$S(+$G(PSAPDU):";404////^S X=PSAPDU",1:"")_$S(PSAVEND'="":";405///^S X=PSAVEND",1:"")
 | 
|---|
| 79 |  F  L +^PSDRUG(PSADRG,0):$S($G(DILOCKTM)>0:DILOCKTM,1:3) I  Q
 | 
|---|
| 80 |  D ^DIE L -^PSDRUG(PSADRG,0)
 | 
|---|
| 81 |  K DIE,DR
 | 
|---|
| 82 |  Q
 | 
|---|
| 83 | PRICEHLP ;Extended help for price per order unit
 | 
|---|
| 84 |  W !?5,"Enter the cost for each order unit."
 | 
|---|
| 85 |  Q
 | 
|---|