| [613] | 1 | PSBOML ;BIRMINGHAM/EFC-MEDICATION LOG ;Mar 2004 | 
|---|
|  | 2 | ;;3.0;BAR CODE MED ADMIN;**3,11**;Mar 2004 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | ; Reference/IA | 
|---|
|  | 5 | ; ^DPT/10035 | 
|---|
|  | 6 | ; | 
|---|
|  | 7 | ; | 
|---|
|  | 8 | EN ; Begin printing | 
|---|
|  | 9 | N PSBSTRT,PSBSTOP,PSBHDR,DFN | 
|---|
|  | 10 | S PSBSTRT=$P(PSBRPT(.1),U,6)+$P(PSBRPT(.1),U,7) | 
|---|
|  | 11 | S PSBSTOP=$P(PSBRPT(.1),U,8)+$P(PSBRPT(.1),U,9) | 
|---|
|  | 12 | S PSBAUDF=$P(PSBRPT(.2),U,9) | 
|---|
|  | 13 | S PSBHDR(0)="Medication Log Report" | 
|---|
|  | 14 | S PSBHDR(1)="Continuing/PRN/Stat/One Time Medication/Treatment Record (Detailed Log) (VAF 10-2970 B, C, D)" | 
|---|
|  | 15 | ; | 
|---|
|  | 16 | ; Patient Report | 
|---|
|  | 17 | ; | 
|---|
|  | 18 | D:$P(PSBRPT(.1),U,1)="P" | 
|---|
|  | 19 | .S PSBHDR(2)="Log Type: INDIVIDUAL PATIENT" | 
|---|
|  | 20 | .S DFN=+$P(PSBRPT(.1),U,2) | 
|---|
|  | 21 | .W $$PTHDR() | 
|---|
|  | 22 | .S X=$O(^PSB(53.79,"AADT",DFN,PSBSTRT-.0000001)) | 
|---|
|  | 23 | .I X>PSBSTOP!(X="") W !!?10,"<<<< NO MEDICATIONS FOUND FOR THIS TIME FRAME >>>>",!! Q | 
|---|
|  | 24 | .S PSBGBL=$NAME(^PSB(53.79,"AADT",DFN,PSBSTRT-.0000001)) | 
|---|
|  | 25 | .F  S PSBGBL=$Q(@PSBGBL) Q:PSBGBL=""  Q:$QS(PSBGBL,2)'="AADT"!($QS(PSBGBL,3)'=DFN)!($QS(PSBGBL,4)>PSBSTOP)  D | 
|---|
|  | 26 | ..S PSBIEN=$QS(PSBGBL,5) Q:'$D(^PSB(53.79,PSBIEN)) | 
|---|
|  | 27 | ..I $P(^PSB(53.79,PSBIEN,0),U,6)'=$QS(PSBGBL,4) Q | 
|---|
|  | 28 | ..I $Y>(IOSL-10) W $$PTFTR^PSBOHDR(),$$PTHDR() | 
|---|
|  | 29 | ..W $$LINE(PSBIEN) | 
|---|
|  | 30 | .W $$PTFTR^PSBOHDR() | 
|---|
|  | 31 | ; | 
|---|
|  | 32 | ; Ward Output | 
|---|
|  | 33 | ; | 
|---|
|  | 34 | D:$P(PSBRPT(.1),U,1)="W" | 
|---|
|  | 35 | .S PSBHDR(2)="LOG TYPE: WARD" | 
|---|
|  | 36 | .W $$WDHDR(PSBWRD) | 
|---|
|  | 37 | .S PSBTMPG=$NAME(^TMP("PSBO",$J,"B")) | 
|---|
|  | 38 | .F  S PSBTMPG=$Q(@PSBTMPG) Q:PSBTMPG=""  Q:$QS(PSBTMPG,1)'="PSBO"!($QS(PSBTMPG,2)'=$J)  D | 
|---|
|  | 39 | ..S DFN=$QS(PSBTMPG,5) | 
|---|
|  | 40 | ..I $Y>(IOSL-14) W $$WDHDR(PSBWRD) | 
|---|
|  | 41 | ..W !,$P(^DPT(DFN,0),U),"  (",$P(^(0),U,9),")" | 
|---|
|  | 42 | ..W !,"Ward: ",$G(^DPT(DFN,.1),"***"),"  Rm-Bed: ",$G(^DPT(DFN,.101),"***"),! | 
|---|
|  | 43 | ..S X=$O(^PSB(53.79,"AADT",DFN,PSBSTRT-.0000001)) | 
|---|
|  | 44 | ..I X>PSBSTOP!(X="") W !!?10,"<<<< NO MEDICATIONS FOUND FOR THIS TIME FRAME >>>>",!! Q | 
|---|
|  | 45 | ..S PSBGBL=$NAME(^PSB(53.79,"AADT",DFN,PSBSTRT-.0000001)) | 
|---|
|  | 46 | ..F  S PSBGBL=$Q(@PSBGBL) Q:PSBGBL=""  Q:$QS(PSBGBL,2)'="AADT"!($QS(PSBGBL,3)'=DFN)!($QS(PSBGBL,4)>PSBSTOP)  D | 
|---|
|  | 47 | ...S PSBIEN=$QS(PSBGBL,5) I $P(^PSB(53.79,PSBIEN,0),U,6)'=$QS(PSBGBL,4) Q | 
|---|
|  | 48 | ...W:$Y>(IOSL-10) $$WDHDR(PSBWRD) | 
|---|
|  | 49 | ...W $$LINE(PSBIEN) | 
|---|
|  | 50 | Q | 
|---|
|  | 51 | ; | 
|---|
|  | 52 | LINE(PSBIEN) ; Displays the med log entry in PSBIEN | 
|---|
|  | 53 | N PSBX,PSBASTUS | 
|---|
|  | 54 | S X=$P($G(^PSB(53.79,PSBIEN,.1)),U) | 
|---|
|  | 55 | I X="" W !,"Error: Med Log Entry ",PSBIEN," has no order reference number!" Q "" | 
|---|
|  | 56 | I 'PSBAUDF,$P(^PSB(53.79,PSBIEN,0),U,9)="N" Q "" | 
|---|
|  | 57 | D CLEAN^PSBVT | 
|---|
|  | 58 | D PSJ1^PSBVT(DFN,X) | 
|---|
|  | 59 | I PSBDFN="-1" W !,"Error: Inpatient Meds API Failure!" Q "" | 
|---|
|  | 60 | M PSBX=^PSB(53.79,PSBIEN) | 
|---|
|  | 61 | S Y=$P(PSBX(0),U,4)+.0000001 | 
|---|
|  | 62 | W !,$E(Y,4,5),"/",$E(Y,6,7),"/",$E(Y,2,3) | 
|---|
|  | 63 | W " ",$E(Y,9,10),":",$E(Y,11,12) | 
|---|
|  | 64 | S Y=$$GET1^DIQ(53.79,PSBIEN_",",.08) | 
|---|
|  | 65 | S Y=Y_" ["_PSBDOSE_PSBIFR_" "_PSBSCH | 
|---|
|  | 66 | S Y=Y_" "_PSBMRAB | 
|---|
|  | 67 | S:$P($G(^PSB(53.79,PSBIEN,.1)),U,6)]"" Y=Y_" Inj Site: "_$P(^(.1),U,6) | 
|---|
|  | 68 | S Y=Y_"]" | 
|---|
|  | 69 | W $$WRAP^PSBO(16,32,Y) | 
|---|
|  | 70 | W ?50,$$GET1^DIQ(53.79,PSBIEN_",","ACTION BY:INITIAL") | 
|---|
|  | 71 | S X=$P(PSBX(0),U,9) | 
|---|
|  | 72 | S PSBASTUS=$S(X="G":"Given",X="H":"Held",X="R":"Refused",X="I":"Infusing",X="C":"Completed",X="S":"Stopped",X="N":"Not Given",X="RM":"Removed",X="M":"Missing dose",1:"Status Unknown") | 
|---|
|  | 73 | S Y=$P(PSBX(0),U,6)+.0000001 | 
|---|
|  | 74 | S Y=$E(Y,4,5)_"/"_$E(Y,6,7)_"/"_$E(Y,2,3)_" "_$E(Y,9,10)_":"_$E(Y,11,12) | 
|---|
|  | 75 | S Y=Y_" "_PSBASTUS | 
|---|
|  | 76 | W $$WRAP^PSBO(57,15,Y) | 
|---|
|  | 77 | W:$P(PSBX(.1),U)["V" ?75,"Bag ID #",$$GET1^DIQ(53.79,PSBIEN,"IV UNIQUE ID") | 
|---|
|  | 78 | W:$P(PSBX(.1),U)["V" ?107,"NA",?115,"NA",?120,"NA" | 
|---|
|  | 79 | W !,$TR($$FMTE^XLFDT(PSBOST,2),"@"," ")_">" | 
|---|
|  | 80 | F PSBZ=.5,.6,.7 S PSBDHIT=0 F PSBY=0:0 S PSBY=$O(PSBX(PSBZ,PSBY)) Q:'PSBY  D | 
|---|
|  | 81 | .W:$X>75 ! | 
|---|
|  | 82 | .S PSBDD=$S(PSBZ=.5:53.795,PSBZ=.6:53.796,1:53.797) | 
|---|
|  | 83 | .S Y=$$EXTERNAL^DILFD(PSBDD,.01,"",$P(PSBX(PSBZ,PSBY,0),U,1)) | 
|---|
|  | 84 | .W $$WRAP^PSBO(75,28,Y) | 
|---|
|  | 85 | .I $P(PSBX(.1),U)["U" W ?105,$J($P(PSBX(PSBZ,PSBY,0),U,2),6,2),?113,$J($P(PSBX(PSBZ,PSBY,0),U,3),6,2) W $$WRAP^PSBO(120,12,$P(PSBX(PSBZ,PSBY,0),U,4)) S PSBDHIT=1 | 
|---|
|  | 86 | .W:$P(PSBX(.1),U)["V"&($X+3+$L($P(PSBX(PSBZ,PSBY,0),U,3))>105) !?75 | 
|---|
|  | 87 | .W:$P(PSBX(.1),U)["V" " - ",$P(PSBX(PSBZ,PSBY,0),U,3) | 
|---|
|  | 88 | D:$P($G(^PSB(53.79,PSBIEN,.1)),U,2)="P" | 
|---|
|  | 89 | .W !?16,"PRN Reason: ",?30,$$GET1^DIQ(53.79,PSBIEN_",",.21) | 
|---|
|  | 90 | .W !?16,"PRN Effectiveness: " | 
|---|
|  | 91 | .I $P($G(^PSB(53.79,PSBIEN,.2)),U,2)="" W "<No PRN Effectiveness Entered>" Q | 
|---|
|  | 92 | .W $$WRAP^PSBO(20,100,$$GET1^DIQ(53.79,PSBIEN_",",.22)) | 
|---|
|  | 93 | .W !?20,"Entered By: ",$$GET1^DIQ(53.79,PSBIEN_",",.23) | 
|---|
|  | 94 | .W " Date/Time: ",$$GET1^DIQ(53.79,PSBIEN_",",.24) | 
|---|
|  | 95 | .W " Minutes: ",$$GET1^DIQ(53.79,PSBIEN_",",.25) | 
|---|
|  | 96 | D:$P(PSBRPT(.2),U,8) | 
|---|
|  | 97 | .W !?16,"Comments: ",?30 I '$O(PSBX(.3,0)) W "<No Comments>" | 
|---|
|  | 98 | .F PSBY=0:0 S PSBY=$O(PSBX(.3,PSBY)) Q:'PSBY  D | 
|---|
|  | 99 | ..W:$X>30 !?30 | 
|---|
|  | 100 | ..S Y=$P(PSBX(.3,PSBY,0),U,3)+.0000001 | 
|---|
|  | 101 | ..W $E(Y,4,5),"/",$E(Y,6,7),"/",$E(Y,2,3) | 
|---|
|  | 102 | ..W " ",$E(Y,9,10),":",$E(Y,11,12) | 
|---|
|  | 103 | ..W ?46,$$GET1^DIQ(53.793,PSBY_","_PSBIEN_",","ENTERED BY:INITIAL") | 
|---|
|  | 104 | ..W $$WRAP^PSBO(52,70,$P(PSBX(.3,PSBY,0),U,1)) | 
|---|
|  | 105 | W !,$TR($$FMTE^XLFDT(PSBOSP,2),"@"," ")_"<" | 
|---|
|  | 106 | D:PSBAUDF | 
|---|
|  | 107 | .W !?16,"Audits: ",?30 I '$O(PSBX(.9,0)) W "<No Audits>" Q | 
|---|
|  | 108 | .F PSBY=0:0 S PSBY=$O(PSBX(.9,PSBY)) Q:'PSBY  D | 
|---|
|  | 109 | ..W:$X>30 !?30 | 
|---|
|  | 110 | ..S Y=$P(PSBX(.9,PSBY,0),U,1)+.0000001 | 
|---|
|  | 111 | ..W $E(Y,4,5),"/",$E(Y,6,7),"/",$E(Y,2,3) | 
|---|
|  | 112 | ..W " ",$E(Y,9,10),":",$E(Y,11,12) | 
|---|
|  | 113 | ..W ?46,$$GET1^DIQ(53.799,PSBY_","_PSBIEN_",","USER:INITIAL") | 
|---|
|  | 114 | ..W $$WRAP^PSBO(52,70,$P(PSBX(.9,PSBY,0),U,3)) | 
|---|
|  | 115 | W !,$TR($J("",IOM)," ","-") | 
|---|
|  | 116 | Q "" | 
|---|
|  | 117 | ; | 
|---|
|  | 118 | WDHDR(PSBWARD) ; | 
|---|
|  | 119 | D WARD^PSBOHDR(PSBWARD,.PSBHDR) | 
|---|
|  | 120 | W $$SUB() | 
|---|
|  | 121 | Q "" | 
|---|
|  | 122 | ; | 
|---|
|  | 123 | PTHDR() ; | 
|---|
|  | 124 | D PT^PSBOHDR(DFN,.PSBHDR) | 
|---|
|  | 125 | W $$SUB() | 
|---|
|  | 126 | Q "" | 
|---|
|  | 127 | ; | 
|---|
|  | 128 | SUB() ; Med Log Sub Header | 
|---|
|  | 129 | W:$X>1 ! | 
|---|
|  | 130 | W "Activity Date",?16,"Orderable Item",?50,"Action",?57,"Action" | 
|---|
|  | 131 | W !,"Start Date>",?16,"[Dose/Sched/Route/Inj Site]",?50,"By" | 
|---|
|  | 132 | W ?57,"Date/Time",?75,"Drug/Additive/Solution",?105," U/Ord" | 
|---|
|  | 133 | W ?113," U/Gvn",?120,"Unit",!,"Stop Date<" | 
|---|
|  | 134 | W !,$TR($J("",IOM)," ","-") | 
|---|
|  | 135 | Q "" | 
|---|
|  | 136 | ; | 
|---|