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