| 1 | PSBODL1 ;BIRMINGHAM/VRN-DUE LIST ;Mar 2004
 | 
|---|
| 2 |  ;;3.0;BAR CODE MED ADMIN;**5,9,32**;Mar 2004;Build 32
 | 
|---|
| 3 |  ;Per VHA Directive 2004-038 (or future revisions regarding same), this routine should not be modified. 
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ; Reference/IA
 | 
|---|
| 6 |  ; ^XLFDT/10103
 | 
|---|
| 7 | EN ;
 | 
|---|
| 8 |  S PSBFOHDR=0
 | 
|---|
| 9 |  S PSBORD=0 F  S PSBORD=$O(^TMP("PSBO",$J,DFN,PSBORD)) Q:PSBORD=""  S PSBTYPE=$O(^TMP("PSBO",$J,DFN,PSBORD,"")) D
 | 
|---|
| 10 |  .D CLEAN^PSBVT
 | 
|---|
| 11 |  .D PSJ1^PSBVT(DFN,PSBORD)
 | 
|---|
| 12 |  .I PSBSCHT="C" D  Q:PSBADMIN=""
 | 
|---|
| 13 |  ..S PSBX=PSBADST,PSBFLAG=1
 | 
|---|
| 14 |  ..I PSBX="",PSBONX["V",PSBIVT'="P" S PSBFLAG=0
 | 
|---|
| 15 |  ..S (PSBYES,PSBODD)=0
 | 
|---|
| 16 |  ..S:$$PSBDCHK1^PSBVT1(PSBSCH) PSBYES=1
 | 
|---|
| 17 |  ..F I=1:1 Q:$P(PSBSCH,"-",I)=""  I $P(PSBSCH,"-",I)?2N!($P(PSBSCH,"-",I)?4N) S PSBYES=1
 | 
|---|
| 18 |  ..I PSBYES,PSBADST="",PSBSCHT'="O",PSBSCHT'="OC",PSBSCHT'="P"  Q
 | 
|---|
| 19 |  ..I PSBFREQ="O" S PSBFREQ=1440
 | 
|---|
| 20 |  ..I 'PSBYES,PSBADST="",PSBFREQ<1 Q
 | 
|---|
| 21 |  ..I +PSBFREQ>0 I (PSBFREQ#1440'=0),(1440#PSBFREQ'=0) S PSBODD=1
 | 
|---|
| 22 |  ..I PSBODD,PSBADST'="" Q
 | 
|---|
| 23 |  ..D:PSBX=""
 | 
|---|
| 24 |  ...I PSBIVT="C",PSBCHEMT="A" S PSBX="0000",PSBFLAG=0
 | 
|---|
| 25 |  ...I PSBIVT="C",PSBISYR=0 S PSBX="0000",PSBFLAG=0
 | 
|---|
| 26 |  ...I PSBIVT="S",PSBISYR=0 S PSBX="0000",PSBFLAG=0
 | 
|---|
| 27 |  ...I "HA"[PSBIVT S PSBX="0000",PSBFLAG=0
 | 
|---|
| 28 |  ..I ("SC"[PSBIVT),(PSBISYR=1) S PSBX=""
 | 
|---|
| 29 |  ..I (PSBIVT="C"),(PSBCHEMT="P") S PSBX=""
 | 
|---|
| 30 |  ..I PSBOTYP="U",PSBX="0000" S PSBX=""
 | 
|---|
| 31 |  ..I PSBIVT="P",$G(PSBX)=0 S PSBX=""
 | 
|---|
| 32 |  ..I PSBX="" S PSBX=$$GETADMIN^PSBVDLU1(DFN,PSBONX,PSBOST,PSBFREQ,PSBEVDT)
 | 
|---|
| 33 |  ..E  K ^TMP("PSB",$J,"GETADMIN") S ^TMP("PSB",$J,"GETADMIN",0)=PSBX
 | 
|---|
| 34 |  ..S PSBADMIN=""
 | 
|---|
| 35 |  ..F PSBXX=0:1 Q:'$D(^TMP("PSB",$J,"GETADMIN",PSBXX))  S PSBX=$G(^TMP("PSB",$J,"GETADMIN",PSBXX)) D
 | 
|---|
| 36 |  ...F PSBY=1:1:$L(PSBX,"-")  D
 | 
|---|
| 37 |  ....Q:($P(PSBX,"-",PSBY)'?2N)&($P(PSBX,"-",PSBY)'?4N)
 | 
|---|
| 38 |  ....S PSBAT=+(PSBODATE_"."_$P(PSBX,"-",PSBY))
 | 
|---|
| 39 |  ....I PSBFLAG Q:PSBAT<PSBOSTRT!(PSBAT>PSBOSTOP)  ; Report Window
 | 
|---|
| 40 |  ....D VAL^PSBMLVAL(.PSBZ,DFN,PSBONX,PSBTYPE,PSBAT)
 | 
|---|
| 41 |  ....S:$G(PSBFREQ)>29 PSBADMIN=PSBADMIN_$S(PSBADMIN]"":"-",1:"")_$P(PSBX,"-",PSBY)
 | 
|---|
| 42 |  ....S:$G(PSBFREQ)<30 PSBADMIN="Due every "_$G(PSBFREQ)_" minutes."
 | 
|---|
| 43 |  .I PSBSCHT'="C" S PSBADMIN=PSBADST
 | 
|---|
| 44 |  .; Get LAST GIVEN date/time
 | 
|---|
| 45 |  .S PSBLGDT="",X=""
 | 
|---|
| 46 |  .F  S X=$O(^PSB(53.79,"AOIP",DFN,+PSBOIT,X),-1) Q:'X  D  Q:PSBLGDT
 | 
|---|
| 47 |  ..S PSBIEN=""
 | 
|---|
| 48 |  ..F  S PSBIEN=$O(^PSB(53.79,"AOIP",DFN,+PSBOIT,X,PSBIEN),-1) Q:PSBIEN=""  D  Q:PSBLGDT
 | 
|---|
| 49 |  ...S:"MHNR"'[$P($G(^PSB(53.79,PSBIEN,0)),U,9) PSBLGDT=X
 | 
|---|
| 50 |  .I $Y>(IOSL-12) I $Y<(IOSL-4) W !?(IOM-36\2),"(Medications Continued on Next Page)",$$FTR(),$$HDR()
 | 
|---|
| 51 |  .I PSBSM S PSBSM=$S(PSBSMX:"H",1:"")_"SM"
 | 
|---|
| 52 |  .E  S PSBSM=""
 | 
|---|
| 53 |  .I 'PSBFOHDR S PSBFOHDR=1 W $$HDR()
 | 
|---|
| 54 |  .W !,$J(PSBSM,3),?6,PSBTYPE,$E(PSBSCHT,1,4),?12 S PSBWFLAG=1
 | 
|---|
| 55 |  .S X="",Y=0
 | 
|---|
| 56 |  .W $$WRAP(14,34,PSBOITX)
 | 
|---|
| 57 |  .S PSBADM="Give: "_PSBDOSE_"  "_PSBSCH
 | 
|---|
| 58 |  .W $$WRAP(50,27,PSBADM)
 | 
|---|
| 59 |  .W $$WRAP(78,6,PSBMR)
 | 
|---|
| 60 |  .W ?85 I PSBLGDT W $E(PSBLGDT,4,5),"/",$E(PSBLGDT,6,7),"/",$E(PSBLGDT,2,3) W "@",$E($P(PSBLGDT,".",2)_"0000",1,4)
 | 
|---|
| 61 |  .W ?100,$P($TR($$FMTE^XLFDT(PSBOST,2),"@"," ")," ")
 | 
|---|
| 62 |  .W ?110,$P($TR($$FMTE^XLFDT(PSBOSP,2),"@"," ")," ")
 | 
|---|
| 63 |  .W ?120,$S(PSBVPHI]"":PSBVPHI,1:"***"),"/",$S(PSBVNI]"":PSBVNI,1:"***")
 | 
|---|
| 64 |  .W !,?100,"@"_$P(PSBOSTX,"  ",2),?110,"@"_$P(PSBOSPX,"  ",2)
 | 
|---|
| 65 |  .W IOINHI  ; To Highlight the Dispense Drugs...
 | 
|---|
| 66 |  .I $D(PSBDDA) S Y=0 F  S Y=$O(PSBDDA(Y)) Q:'Y  D
 | 
|---|
| 67 |  ..Q:$P(PSBDDA(Y),U,5)&($P(PSBDDA(Y),U,5)<PSBNOW)
 | 
|---|
| 68 |  ..W !?14,"*",$$WRAP(15,33,$P(PSBDDA(Y),U,3)_" ("_+$P(PSBDDA(Y),U,2)_")")
 | 
|---|
| 69 |  .I $D(PSBADA) S Y=0 F  S Y=$O(PSBADA(Y)) Q:'Y  W !?14,"*",$$WRAP(15,33,$P(PSBADA(Y),U,3)_" ("_$P(PSBADA(Y),U,4)_")")
 | 
|---|
| 70 |  .I $D(PSBSOLA) S Y=0 F  S Y=$O(PSBSOLA(Y)) Q:'Y  W !?14,"*",$$WRAP(15,33,$P(PSBSOLA(Y),U,3)_" ("_$P(PSBSOLA(Y),U,4)_")")
 | 
|---|
| 71 |  .W IOINORM ; Highlight Off
 | 
|---|
| 72 |  .S PSBADM=$S(PSBADMIN]"":"Admin Times: "_PSBADMIN,1:"")
 | 
|---|
| 73 |  .W:PSBADM]"" $$WRAP(50,27,PSBADM)
 | 
|---|
| 74 |  .S X=$S(PSBOTXT]"":PSBOTXT,1:"<None Entered>")
 | 
|---|
| 75 |  .I $E(X,1)="!"  S $E(X,1)=""
 | 
|---|
| 76 |  .W $$WRAP(14,34,"Spec Inst: "_X),!,$TR($J("",IOM)," ","-")
 | 
|---|
| 77 |  I '$G(PSBWFLAG) W !!,?10,"** NO SPECIFIED MEDICATIONS TO PRINT **"
 | 
|---|
| 78 |  W:PSBFOHDR $$BLANKS(),$$FTR()
 | 
|---|
| 79 |  Q
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 | WRAPPUP ;Do wrapping per PSBODL (Due List Report)
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  W $$WRAP(14,34,PSBMED)
 | 
|---|
| 84 |  S PSBADM="Give: "_PSBDOSE_"  "_PSBSCH
 | 
|---|
| 85 |  W $$WRAP(50,27,PSBADM),?78,$$WRAP(78,6,PSBMR)
 | 
|---|
| 86 |  W ?85 D:PSBLGDT
 | 
|---|
| 87 |  .W $E(PSBLGDT,4,5),"/",$E(PSBLGDT,6,7),"/",$E(PSBLGDT,2,3),"@",$E($P(PSBLGDT,".",2)_"0000",1,4)
 | 
|---|
| 88 |  W ?100,$P($TR($$FMTE^XLFDT(PSBOST,2),"@"," ")," "),?110,$P($TR($$FMTE^XLFDT(PSBOSP,2),"@"," ")," "),?120,$S(PSBVPHI]"":PSBVPHI,1:"***"),"/"
 | 
|---|
| 89 |  W $S(PSBVNI]"":PSBVNI,1:"***"),!,?100,"@"_$P(PSBOSTX,"  ",2),?110,"@"_$P(PSBOSPX,"  ",2)
 | 
|---|
| 90 |  W IOINHI
 | 
|---|
| 91 |  I $D(PSBDDA) S Y=0 F  S Y=$O(PSBDDA(Y)) Q:'Y  D
 | 
|---|
| 92 |  .Q:$P(PSBDDA(Y),U,5)&($P(PSBDDA(Y),U,5)<PSBNOW)
 | 
|---|
| 93 |  .W !?14,"*",$$WRAP(15,33,$P(PSBDDA(Y),U,3)_" ("_+$P(PSBDDA(Y),U,2)_")")
 | 
|---|
| 94 |  I $D(PSBADA) S Y=0 F  S Y=$O(PSBADA(Y)) Q:'Y  W !?14,"*",$$WRAP(15,33,$P(PSBADA(Y),U,3)_" ("_$P(PSBADA(Y),U,4)_")")
 | 
|---|
| 95 |  I $D(PSBSOLA) S Y=0 F  S Y=$O(PSBSOLA(Y)) Q:'Y  W !?14,"*",$$WRAP(15,33,$P(PSBSOLA(Y),U,3)_" ("_$P(PSBSOLA(Y),U,4)_")")
 | 
|---|
| 96 |  W IOINORM ; Hlight Off
 | 
|---|
| 97 |  S PSBADM=$S(PSBADMIN]"":"Admin Times: "_PSBADMIN,1:"")
 | 
|---|
| 98 |  W:PSBADM]"" $$WRAP(50,27,PSBADM)
 | 
|---|
| 99 |  S X=$S(PSBOTXT]"":PSBOTXT,1:"<None Entered>")
 | 
|---|
| 100 |  I $E(X,1)="!"  S $E(X,1)=""
 | 
|---|
| 101 |  W $$WRAP(14,34,"Spec Inst: "_X),!,$TR($J("",IOM)," ","-")
 | 
|---|
| 102 |  Q
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 | WRAP(X,Y,Z) ; Quick text wrap
 | 
|---|
| 105 |  F  Q:'$L(Z)  D
 | 
|---|
| 106 |  .W:$X>X !
 | 
|---|
| 107 |  .W:$X<X ?X
 | 
|---|
| 108 |  .I $L(Z)<Y W Z S Z="" Q
 | 
|---|
| 109 |  .F PSB=Y:-1:0 Q:$E(Z,PSB)=" "
 | 
|---|
| 110 |  .S:PSB<1 PSB=Y
 | 
|---|
| 111 |  .W $E(Z,1,PSB)
 | 
|---|
| 112 |  .S Z=$E(Z,PSB+1,255)
 | 
|---|
| 113 |  Q ""
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 | FTR() ; [Extrinsic] Page footer
 | 
|---|
| 116 |  ;
 | 
|---|
| 117 |  ; Sub Module Description:
 | 
|---|
| 118 |  ; (No Description Available)
 | 
|---|
| 119 |  ;
 | 
|---|
| 120 |  I (IOSL<100) F  Q:$Y>(IOSL-10)  W !
 | 
|---|
| 121 |  W !,$TR($J("",IOM)," ","=")
 | 
|---|
| 122 |  S X="Ward: "_PSBHDR("WARD")_"  Room-Bed: "_PSBHDR("ROOM")
 | 
|---|
| 123 |  W !,PSBHDR("NAME"),?(IOM-11\2),PSBHDR("SSN"),?(IOM-$L(X)),X
 | 
|---|
| 124 |  Q ""
 | 
|---|
| 125 |  ;
 | 
|---|
| 126 | HDR() ; Page Header
 | 
|---|
| 127 |  Q:'PSBFOHDR ""
 | 
|---|
| 128 |  D PT^PSBOHDR(DFN,.PSBHDR)
 | 
|---|
| 129 |  W !
 | 
|---|
| 130 |  W !
 | 
|---|
| 131 |  W !,?(IOM-28\2),"*****   FUTURE ORDERS   *****"
 | 
|---|
| 132 |  W !
 | 
|---|
| 133 |  W !,"Self",?85,"Last",?100,"Start",?110,"Stop",?120,"Verifying"
 | 
|---|
| 134 |  W !,"Med",?6,"Sched",?14,"Medication",?50,"Dose",?78,"Route",?85,"Given",?100,"Date",?110,"Date",?120,"Rph/Rn"
 | 
|---|
| 135 |  W !,?100,"@Time",?110,"@Time"
 | 
|---|
| 136 |  W !,$TR($J("",IOM)," ","-")
 | 
|---|
| 137 |  Q ""
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 | BLANKS() ; [Extrinsic] Print blanks at end of printout for changes
 | 
|---|
| 140 |  Q:'$P(PSBRPT(.2),U,5) ""
 | 
|---|
| 141 |  W !
 | 
|---|
| 142 |  I $Y>(IOSL-26) W ?(IOM-42\2),"(Changes/Addendums to Orders on Next Page)" W $$FTR(),$$HDR() ; Not enough space - new page
 | 
|---|
| 143 |  I IOSL<100 F  Q:$Y>(IOSL-26)  W !
 | 
|---|
| 144 |  W ?(IOM-28\2),"Changes/Addendums to orders"
 | 
|---|
| 145 |  F X=1:1:4 D
 | 
|---|
| 146 |  .W !,$TR($J("",IOM)," ","-")
 | 
|---|
| 147 |  .W !!?3,"CON ___ PRN ___",?20,"Drug: ",$TR($J("",22)," ","_"),?50,"Give: ",$TR($J("",42)," ","_"),?100,"Start: _________ Stop: _________"
 | 
|---|
| 148 |  .W !?20,"Spec"
 | 
|---|
| 149 |  .W !?3,"OT  ___ OC  ___",?20,"Inst: ",$TR($J("",72)," ","_"),?100,"Initials: ______ Date: _________"
 | 
|---|
| 150 |  W !,$TR($J("",IOM)," ","-")
 | 
|---|
| 151 |  Q ""
 | 
|---|
| 152 |  ;
 | 
|---|