| [613] | 1 | PSBOMV ;BIRMINGHAM/EFC-BCMA UNIT DOSE VIRTUAL DUE LIST FUNCTIONS ;Mar 2004
 | 
|---|
 | 2 |  ;;3.0;BAR CODE MED ADMIN;;Mar 2004
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  ; Reference/IA
 | 
|---|
 | 5 |  ; ^DPT/10035
 | 
|---|
 | 6 |  ; ^NURSF(211.4/1409
 | 
|---|
 | 7 |  ;
 | 
|---|
 | 8 | EN ;
 | 
|---|
 | 9 |  N CNT,PSBHDR,PSBPT,PSBINDX,DFN,PSBY,PSBSORT,PSBPRINT,PSBDT,PSBEV,PSBLOG,PSBPRCX,PSBRB,PSBSTOP,PSBSTRT,PSBTIME,PSBWLF,PSBWRD,PSBWRDA,PSBX,PSBY,PSBXX
 | 
|---|
 | 10 |  ;
 | 
|---|
 | 11 |  K ^TMP("PSBO",$J)
 | 
|---|
 | 12 |  S PSBSTRT=$P(PSBRPT(.1),U,6)+$P(PSBRPT(.1),U,7)
 | 
|---|
 | 13 |  S PSBSTOP=$P(PSBRPT(.1),U,8)+$P(PSBRPT(.1),U,9)
 | 
|---|
 | 14 |  S CNT=0,PSBPRINT=$P($G(PSBRPT(.1)),U)
 | 
|---|
 | 15 |  I PSBPRINT="P" S PSBPT=$P(PSBRPT(.1),U,2)
 | 
|---|
 | 16 |  I PSBPRINT="W" S PSBSORT=$P($G(PSBRPT(.1)),U,5),PSBWRD=$P(PSBRPT(.1),U,3) Q:'PSBWRD  D WARD^NURSUT5("L^"_PSBWRD,.PSBWRDA)
 | 
|---|
 | 17 |  ;
 | 
|---|
 | 18 | RANGE ;Locate data between date range.
 | 
|---|
 | 19 |  S PSBX=PSBSTRT F  S PSBX=$O(^PSB(53.78,"ADT",PSBX)) Q:'PSBX!(PSBX>PSBSTOP)  D
 | 
|---|
 | 20 |  .F PSBY=0:0 S PSBY=$O(^PSB(53.78,"ADT",PSBX,PSBY)) Q:'PSBY  D
 | 
|---|
 | 21 |  ..S DFN=+^PSB(53.78,PSBY,0),PSBWLF=$P($G(^(0)),U,9),PSBTIME=$P($G(^(0)),U,4),PSBLOG=$P($G(^(0)),U,8)
 | 
|---|
 | 22 | CHECK ..;Ward IEN must exist in Ward Field # 9.
 | 
|---|
 | 23 |  ..Q:'$G(PSBWLF)
 | 
|---|
 | 24 |  ..Q:'$G(PSBLOG)
 | 
|---|
 | 25 |  ..I $G(PSBTIME)=$P($G(^PSB(53.79,PSBLOG,0)),U,6),$P($G(^PSB(53.79,PSBLOG,0)),U,9)="RM" Q
 | 
|---|
 | 26 |  ..;Quit if Ward IEN is not in Nurse Location file.
 | 
|---|
 | 27 |  ..I PSBPRINT="W",'$O(^NURSF(211.4,"C",PSBWLF,PSBWRD,0)) Q
 | 
|---|
 | 28 |  ..;Compare date/time and Quit if order status set to Remove.
 | 
|---|
 | 29 |  ..;
 | 
|---|
 | 30 | BUILD ..I $G(PSBSORT)'="B" S ^TMP("PSBO",$J,DFN,PSBX,PSBY)=""
 | 
|---|
 | 31 |  ..I PSBPRINT="P",DFN=PSBPT S ^TMP("PSBO",$J,"B",$P(^DPT(DFN,0),U),DFN)="" Q
 | 
|---|
 | 32 |  ..S ^TMP("PSBO",$J,DFN,0)=^DPT(DFN,0)
 | 
|---|
 | 33 |  ..I PSBPRINT="W" D SORTING
 | 
|---|
 | 34 |  ;
 | 
|---|
 | 35 | BYWDPT ;Print by Ward and Sort by Patient.
 | 
|---|
 | 36 |  I $G(PSBPRINT)="W",$G(PSBSORT)'="B" D
 | 
|---|
 | 37 |  .;Print report by the selected ward name.
 | 
|---|
 | 38 |  .W $$WRDHDR()
 | 
|---|
 | 39 |  .S PSBINDX=""
 | 
|---|
 | 40 |  .F  S PSBINDX=$O(^TMP("PSBO",$J,"B",PSBINDX)) Q:PSBINDX=""  D
 | 
|---|
 | 41 |  ..F DFN=0:0 S DFN=$O(^TMP("PSBO",$J,"B",PSBINDX,DFN)) Q:'DFN  D
 | 
|---|
 | 42 |  ...W:$Y>(IOSL-10) $$WRDHDR()
 | 
|---|
 | 43 |  ...F PSBDT=0:0 S PSBDT=$O(^TMP("PSBO",$J,DFN,PSBDT)) Q:'PSBDT  D
 | 
|---|
 | 44 |  ....F PSBY=0:0 S PSBY=$O(^TMP("PSBO",$J,DFN,PSBDT,PSBY)) Q:'PSBY  D
 | 
|---|
 | 45 |  .....D EVENTS  ;Set Total Number of Events
 | 
|---|
 | 46 |  .....S PSBRB=$$GET1^DIQ(53.78,PSBY_",",.02)
 | 
|---|
 | 47 |  .....W !,PSBRB
 | 
|---|
 | 48 |  .....W ?20,$P(^TMP("PSBO",$J,DFN,0),U,1)
 | 
|---|
 | 49 |  .....W ?48,$$GET1^DIQ(53.78,PSBY_",",.04)
 | 
|---|
 | 50 |  .....W ?75,$$GET1^DIQ(53.78,PSBY_",",.05)
 | 
|---|
 | 51 |  .....W ?95,$$GET1^DIQ(53.78,PSBY_",",.06)
 | 
|---|
 | 52 |  .....W ?102,$$GET1^DIQ(53.78,PSBY_",",.07)
 | 
|---|
 | 53 |  .....W ?102,$$GET1^DIQ(53.78,PSBY_",","MED LOG PTR:ADMINISTRATION MEDICATION")
 | 
|---|
 | 54 |  .....D VCOM ;Print Ward and Comments from Med Log.
 | 
|---|
 | 55 |  .....W !?52
 | 
|---|
 | 56 |  .W !!  D EVEPRNT
 | 
|---|
 | 57 |  ;
 | 
|---|
 | 58 | BYWDRB ;Print by Ward and Sort by Room and Bed.
 | 
|---|
 | 59 |  I $G(PSBPRINT)="W",$G(PSBSORT)="B" D
 | 
|---|
 | 60 |  .;Print report by the selected ward name.
 | 
|---|
 | 61 |  .W $$WRDHDR()
 | 
|---|
 | 62 |  .S PSBINDX=""
 | 
|---|
 | 63 |  .F  S PSBINDX=$O(^TMP("PSBO",$J,"B",PSBINDX)) Q:PSBINDX=""  D
 | 
|---|
 | 64 |  ..F DFN=0:0 S DFN=$O(^TMP("PSBO",$J,"B",PSBINDX,DFN)) Q:'DFN  D
 | 
|---|
 | 65 |  ...W:$Y>(IOSL-10) $$WRDHDR()
 | 
|---|
 | 66 |  ...F PSBDT=0:0 S PSBDT=$O(^TMP("PSBO",$J,"B",PSBINDX,DFN,PSBDT)) Q:'PSBDT  D
 | 
|---|
 | 67 |  ....F PSBY=0:0 S PSBY=$O(^TMP("PSBO",$J,"B",PSBINDX,DFN,PSBDT,PSBY)) Q:'PSBY  D
 | 
|---|
 | 68 |  .....D EVENTS  ;Set Total Number of Events
 | 
|---|
 | 69 |  .....S PSBRB=$$GET1^DIQ(53.78,PSBY_",",.02)
 | 
|---|
 | 70 |  .....W !,PSBRB
 | 
|---|
 | 71 |  .....W ?20,$P(^TMP("PSBO",$J,DFN,0),U,1)
 | 
|---|
 | 72 |  .....W ?48,$$GET1^DIQ(53.78,PSBY_",",.04)
 | 
|---|
 | 73 |  .....W ?75,$$GET1^DIQ(53.78,PSBY_",",.05)
 | 
|---|
 | 74 |  .....W ?95,$$GET1^DIQ(53.78,PSBY_",",.06)
 | 
|---|
 | 75 |  .....W ?102,$$GET1^DIQ(53.78,PSBY_",",.07)
 | 
|---|
 | 76 |  .....W ?102,$$GET1^DIQ(53.78,PSBY_",","MED LOG PTR:ADMINISTRATION MEDICATION")
 | 
|---|
 | 77 |  .....D VCOM ;Print Ward and Comments from Med Log.
 | 
|---|
 | 78 |  .....W !?52
 | 
|---|
 | 79 |  .W !!  D EVEPRNT
 | 
|---|
 | 80 |  ;
 | 
|---|
 | 81 | BYDFN ;Print by Patient.
 | 
|---|
 | 82 |  D:$G(PSBPRINT)="P"
 | 
|---|
 | 83 |  .W $$PTHDR()
 | 
|---|
 | 84 |  .S PSBINDX=""
 | 
|---|
 | 85 |  .F  S PSBINDX=$O(^TMP("PSBO",$J,"B",PSBINDX)) Q:PSBINDX=""  D
 | 
|---|
 | 86 |  ..F DFN=0:0 S DFN=$O(^TMP("PSBO",$J,"B",PSBINDX,DFN)) Q:'DFN  D
 | 
|---|
 | 87 |  ...W:$Y>(IOSL-10) $$PTHDR()
 | 
|---|
 | 88 |  ...F PSBDT=0:0 S PSBDT=$O(^TMP("PSBO",$J,DFN,PSBDT)) Q:'PSBDT  D
 | 
|---|
 | 89 |  ....F PSBY=0:0 S PSBY=$O(^TMP("PSBO",$J,DFN,PSBDT,PSBY)) Q:'PSBY  D
 | 
|---|
 | 90 |  .....D EVENTS  ;Set Total Number of Events
 | 
|---|
 | 91 |  .....W !,$$GET1^DIQ(53.78,PSBY_",",.04)
 | 
|---|
 | 92 |  .....W ?23,$$GET1^DIQ(53.78,PSBY_",",.05)
 | 
|---|
 | 93 |  .....W ?43,$$GET1^DIQ(53.78,PSBY_",",.06)
 | 
|---|
 | 94 |  .....W ?50,$$GET1^DIQ(53.78,PSBY_",",.07)
 | 
|---|
 | 95 |  .....W ?50,$$GET1^DIQ(53.78,PSBY_",","MED LOG PTR:ADMINISTRATION MEDICATION")
 | 
|---|
 | 96 |  .....D VCOM ;Print Ward and Comments from Med Log.
 | 
|---|
 | 97 |  .W !!  D EVEPRNT
 | 
|---|
 | 98 |  .W $$PTFTR^PSBOHDR()
 | 
|---|
 | 99 |  Q
 | 
|---|
 | 100 |  ;
 | 
|---|
 | 101 | WRDHDR() ;
 | 
|---|
 | 102 |  S PSBHDR(1)="MEDICATION VARIANCE LOG"
 | 
|---|
 | 103 |  D WARD^PSBOHDR(PSBWRD,.PSBHDR)
 | 
|---|
 | 104 |  W !,"Rm-Bed",?20,"Patient Name",?48,"Event Date/Time",?75,"Event",?95,"Var",?102,"Medication",!,$TR($J("",IOM)," ","-")
 | 
|---|
 | 105 |  Q ""
 | 
|---|
 | 106 |  ;
 | 
|---|
 | 107 | PTHDR() ;
 | 
|---|
 | 108 |  S PSBHDR(1)="MEDICATION VARIANCE LOG"
 | 
|---|
 | 109 |  D PT^PSBOHDR(PSBDFN,.PSBHDR)
 | 
|---|
 | 110 |  W !,"Event Date/Time",?23,"Event",?43,"Var",?50,"Medication",!,$TR($J("",IOM)," ","-")
 | 
|---|
 | 111 |  Q ""
 | 
|---|
 | 112 |  ;
 | 
|---|
 | 113 | VCOM ;Print Ward and Comments from Med Log on Variance Report.
 | 
|---|
 | 114 |  N PSBCOM,PSBML,Y
 | 
|---|
 | 115 |  Q:'$P($G(^PSB(53.78,PSBY,0)),"^",8)  S PSBML=$P(^(0),"^",8)
 | 
|---|
 | 116 |  I $P(PSBRPT(.1),U)="P" W !,?23,"Ward:      ",?34 D
 | 
|---|
 | 117 |  .I $P($G(^PSB(53.79,PSBML,0)),U,2)=""  W "<No Ward>" Q
 | 
|---|
 | 118 |  .W $P($G(^PSB(53.79,PSBML,0)),U,2)
 | 
|---|
 | 119 |  W !,?23,"Comments:  ",?34 I '$O(^PSB(53.79,PSBML,.3,0))  W "<No Comments>" Q
 | 
|---|
 | 120 |  F PSBCOM=0:0 S PSBCOM=$O(^PSB(53.79,PSBML,.3,PSBCOM)) Q:'PSBCOM  D
 | 
|---|
 | 121 |  .W:$X>34 !?34
 | 
|---|
 | 122 |  .S Y=$P(^PSB(53.79,PSBML,.3,PSBCOM,0),U,3)+.0000001
 | 
|---|
 | 123 |  .W $E(Y,4,5),"/",$E(Y,6,7),"/",$E(Y,2,3)," ",$E(Y,9,10),":",$E(Y,11,12),?50,"By: ",$$GET1^DIQ(53.793,PSBCOM_","_PSBML_",","ENTERED BY:INITIAL"),$$WRAP^PSBO(60,75,$P(^PSB(53.79,PSBML,.3,PSBCOM,0),U,1))
 | 
|---|
 | 124 |  Q
 | 
|---|
 | 125 |  ;
 | 
|---|
 | 126 | EVENTS ;Record total number of events.
 | 
|---|
 | 127 |  S PSBEV=$P($G(^PSB(53.78,PSBY,0)),U,5) Q:'$G(PSBEV)
 | 
|---|
 | 128 |  S ^TMP("PSBO",$J,"EVENTS",PSBEV,0)=$P($G(^TMP("PSBO",$J,"EVENTS",PSBEV,0)),U)+1
 | 
|---|
 | 129 |  S CNT=CNT+1,^TMP("PSBO",$J,"EVENTSTOT",0)=CNT
 | 
|---|
 | 130 |  Q
 | 
|---|
 | 131 | EVEPRNT ;Display Total and Percentage of Events.
 | 
|---|
 | 132 |  ;
 | 
|---|
 | 133 |  Q:'$D(^TMP("PSBO",$J,"EVENTSTOT"))  ;Quit if there are no events
 | 
|---|
 | 134 |  W !,"Total Number of Events for the reporting period is: "_$P(^TMP("PSBO",$J,"EVENTSTOT",0),U)_".",!
 | 
|---|
 | 135 |  F PSBXX=0:0 S PSBXX=$O(^TMP("PSBO",$J,"EVENTS",PSBXX)) Q:'PSBXX  D
 | 
|---|
 | 136 |  .W !,"Total number of "_$$EXTERNAL^DILFD(53.78,.05,"",PSBXX)_" events is "_$P($G(^TMP("PSBO",$J,"EVENTS",PSBXX,0)),U)_"."
 | 
|---|
 | 137 |  .S PSBPRCX=$E($FN($P(^TMP("PSBO",$J,"EVENTS",PSBXX,0),U)/$P(^TMP("PSBO",$J,"EVENTSTOT",0),U),"",2),3,4)
 | 
|---|
 | 138 |  .W !,"Percentage of Total Events: "_$S(PSBPRCX="00":"100",1:PSBPRCX)_"%",!
 | 
|---|
 | 139 |  Q
 | 
|---|
 | 140 |  ;
 | 
|---|
 | 141 | SORTING ;Sort by Patient or Room and Bed Information
 | 
|---|
 | 142 |  ;
 | 
|---|
 | 143 |  I $G(PSBSORT)="P"!($G(PSBSORT)="") S PSBINDX=$P(^DPT(DFN,0),U),^TMP("PSBO",$J,"B",PSBINDX,DFN)="" Q
 | 
|---|
 | 144 |  I $G(PSBSORT)="B" S PSBINDX=$P($G(^PSB(53.78,+PSBY,0)),U,2) S:PSBINDX="" PSBINDX="** NO ROOM/BED **" S ^TMP("PSBO",$J,"B",PSBINDX,DFN,PSBX,PSBY)=""
 | 
|---|
 | 145 |  Q 
 | 
|---|