1 | PSBPRN ;BIRMINGHAM/EFC-BCMA PRN FUNCTIONS ;Mar 2004
|
---|
2 | ;;3.0;BAR CODE MED ADMIN;**5,3,13**;Mar 2004
|
---|
3 | ;
|
---|
4 | ;Reference/IA
|
---|
5 | ;DEM^VADPT/10061
|
---|
6 | ;INP^VADPT/10061
|
---|
7 | ;$$GET1^DIQ/2056
|
---|
8 | EN ;
|
---|
9 | Q
|
---|
10 | ;
|
---|
11 | EDIT ; Edit Medication Log PRN Effectiveness
|
---|
12 | NEW DFN ;* Undef DFN at EDIT+7^PSBPRN (NOIS: HUN-0699-21494)
|
---|
13 | W !! S DA=""
|
---|
14 | S DIC="^DPT(",DIC(0)="AEQM",DIC("A")="Select Patient Name: "
|
---|
15 | D ^DIC K DIC Q:+Y<1
|
---|
16 | S DFN=+Y
|
---|
17 | D EDIT1
|
---|
18 | K DFN,DA
|
---|
19 | G EDIT
|
---|
20 | ;
|
---|
21 | EDIT1 ;
|
---|
22 | S %DT="AEQ",%DT("A")="Select Date to Begin Searching Back From: "
|
---|
23 | S %DT("B")="Today"
|
---|
24 | W !! D ^%DT Q:+Y<1 S PSBDT=Y
|
---|
25 | F D Q:'PSBDT
|
---|
26 | .W @IOF,!,"Searching Date " S Y=PSBDT D D^DIQ W Y
|
---|
27 | .W !," # Medication",?45,"St",?50,"D/T Given",?75,"Int"
|
---|
28 | .W !,$TR($J("",IOM)," ","-")
|
---|
29 | .S PSBSRCH=PSBDT+.9,PSBCNT=0
|
---|
30 | .K PSBTMP
|
---|
31 | .F S PSBSRCH=$O(^PSB(53.79,"APRN",DFN,PSBSRCH),-1) Q:'PSBSRCH!(PSBSRCH<PSBDT) D
|
---|
32 | ..S PSBIEN=""
|
---|
33 | ..F S PSBIEN=$O(^PSB(53.79,"APRN",DFN,PSBSRCH,PSBIEN),-1) Q:'PSBIEN D
|
---|
34 | ...Q:$P($G(^PSB(53.79,PSBIEN,.2)),U,2)]""
|
---|
35 | ...Q:$P($G(^PSB(53.79,PSBIEN,0)),U,9)'="G"
|
---|
36 | ...S PSBCNT=PSBCNT+1,PSBTMP(PSBCNT)=PSBIEN
|
---|
37 | ...I $Y>19 W ! S DIR(0)="E" D ^DIR W @IOF,!,"Searching Date " S Y=PSBDT D D^DIQ W Y,!," # Medication",?45,"St",?50,"D/T Given",?75,"Int",!,$TR($J("",IOM)," ","-")
|
---|
38 | ...W !,$J(PSBCNT,2),". "
|
---|
39 | ...W ?5,$$GET1^DIQ(53.79,PSBIEN_",",.08)
|
---|
40 | ...W ?45,$P(^PSB(53.79,PSBIEN,0),U,9)
|
---|
41 | ...W ?50,$$GET1^DIQ(53.79,PSBIEN_",",.06)
|
---|
42 | ...W ?75,$$GET1^DIQ(53.79,PSBIEN_",","ACTION BY:INITIAL")
|
---|
43 | .I PSBCNT W ! S DIR(0)="NO^1:"_PSBCNT_":0" D ^DIR S:Y DA=PSBTMP(Y),PSBDT="" Q:Y
|
---|
44 | .I 'PSBCNT W !!?5,"No Meds Found!"
|
---|
45 | .S X1=PSBDT,X2=-1 D C^%DTC S (PSBDT,Y)=X D D^DIQ
|
---|
46 | .W !!,"Continue With ",Y
|
---|
47 | .S %=1 D YN^DICN I %'=1 S PSBDT=0
|
---|
48 | I DA S DDSFILE=53.79,DR="[PSB PRN EFFECTIVENESS]" D ^DDS S %=2 W !,"Edit another entry" D YN^DICN G:%=1 EDIT1
|
---|
49 | K PSBCNT,PSBDT,PSBIEN,PSBSRCH,PSBTMP,DA,DR,DDSFILE
|
---|
50 | Q
|
---|
51 | ;
|
---|
52 | GETPRNS(RESULTS,DFN,PSBORD) ; Get the PRN's for a pt needing effectness
|
---|
53 | ;
|
---|
54 | ; RPC PSB GETPRNS
|
---|
55 | ;
|
---|
56 | ; Description:
|
---|
57 | ; Returns all administrations of a PRN order that have NOT had
|
---|
58 | ; the PRN Effectiveness documented BASED ON THE TRANSFER DATE AND SITE PARAM
|
---|
59 | ;
|
---|
60 | N PSBIEN,PSBSTOP
|
---|
61 | K ^TMP("PSB",$J),RESULTS
|
---|
62 | ;
|
---|
63 | Q:$$DISCHRGD(DFN)
|
---|
64 | ;
|
---|
65 | D INP^VADPT S PSBTRDT=+VAIN(7)
|
---|
66 | S PSBHOUR=$$GET^XPAR("DIV","PSB PRN DOCUMENTATION") I PSBHOUR="" S PSBHOUR=72
|
---|
67 | D NOW^%DTC S PSBSTRT=%,PSBPRNDT=$$FMADD^XLFDT(PSBSTRT,"",-PSBHOUR)
|
---|
68 | ;
|
---|
69 | ;Use the (OLDER) value of PSBPRNDT(site param) or PSBTRDT(admission)
|
---|
70 | I PSBPRNDT>PSBTRDT S PSBPRNDT=PSBTRDT
|
---|
71 | S PSBSTRT="" F S PSBSTRT=$O(^PSB(53.79,"APRN",DFN,PSBSTRT),-1) Q:(PSBSTRT<PSBPRNDT) D
|
---|
72 | .S PSBIEN=""
|
---|
73 | .F S PSBIEN=$O(^PSB(53.79,"APRN",DFN,PSBSTRT,PSBIEN),-1) Q:'PSBIEN D
|
---|
74 | ..Q:(PSBORD'="")&($P(^PSB(53.79,PSBIEN,.1),U)'=PSBORD) ; Not the right order
|
---|
75 | ..I ($P(^PSB(53.79,PSBIEN,0),U,9)'="G")&($P(^PSB(53.79,PSBIEN,0),U,9)'="RM") Q ; Med was never given
|
---|
76 | ..Q:$P($G(^PSB(53.79,PSBIEN,.2)),U,2)]"" ; Already entered
|
---|
77 | ..S PSBX=PSBIEN_U_DFN,PSBIENS=PSBIEN_","
|
---|
78 | ..S PSBX=PSBX_U_$$GET1^DIQ(53.79,PSBIENS,.02)
|
---|
79 | ..S PSBX=PSBX_U_$$GET1^DIQ(53.79,PSBIENS,.06,"I")
|
---|
80 | ..S PSBX=PSBX_U_$$GET1^DIQ(53.79,PSBIENS,.07)
|
---|
81 | ..S PSBX=PSBX_U_$$GET1^DIQ(53.79,PSBIENS,.08)
|
---|
82 | ..S PSBX=PSBX_U_$$GET1^DIQ(53.79,PSBIENS,.21)
|
---|
83 | ..D PSJ1^PSBVT(DFN,$$GET1^DIQ(53.79,PSBIENS,.11))
|
---|
84 | ..S PSBX=PSBX_U_PSBOIT_U_PSBONX
|
---|
85 | ..S PSBX=PSBX_U_$$GET1^DIQ(53.79,PSBIENS,.27)
|
---|
86 | ..S Y=$O(^TMP("PSB",$J,""),-1)+1
|
---|
87 | ..S ^TMP("PSB",$J,Y)=PSBX
|
---|
88 | ..;Special instructions
|
---|
89 | ..S Y=Y+1,^TMP("PSB",$J,Y)=PSBOTXT
|
---|
90 | ..F PSBZ=.5,.6,.7 F PSBY=0:0 S PSBY=$O(^PSB(53.79,PSBIEN,PSBZ,PSBY)) Q:'PSBY D
|
---|
91 | ...S PSBDD=$S(PSBZ=.5:53.795,PSBZ=.6:53.796,1:53.797)
|
---|
92 | ...S PSBSOL=$S(PSBZ=.5:"DD",PSBZ=.6:"ADD",1:"SOL")
|
---|
93 | ...Q:'$D(^PSB(53.79,PSBIEN,PSBZ,PSBY))
|
---|
94 | ...S PSBUNIT=$$GET1^DIQ(PSBDD,PSBY_","_PSBIEN_",",.03)
|
---|
95 | ...S PSBUNFR=$$GET1^DIQ(PSBDD,PSBY_","_PSBIEN_",",.04)
|
---|
96 | ...S Y=Y+1
|
---|
97 | ...S ^TMP("PSB",$J,Y)=PSBSOL_U_$$GET1^DIQ(PSBDD,PSBY_","_PSBIEN_",",.01)_U_PSBUNIT_U_PSBUNFR
|
---|
98 | ..S Y=Y+1,^TMP("PSB",$J,Y)="END"
|
---|
99 | S ^TMP("PSB",$J,0)=+$O(^TMP("PSB",$J,""),-1)
|
---|
100 | S RESULTS=$NAME(^TMP("PSB",$J))
|
---|
101 | K PSBTRDT,PSBHOUR,PSBPRNDT
|
---|
102 | D CLEAN^PSBVT
|
---|
103 | Q
|
---|
104 | ;
|
---|
105 | DISCHRGD(DFN) ; Patient Discharged OR Deceased?
|
---|
106 | ;
|
---|
107 | S DISCHRGD=0
|
---|
108 | ;
|
---|
109 | D DEM^VADPT ;check for date of death entry
|
---|
110 | I VADM(6)]"" S DISCHRGD=1,^TMP("PSB",$J,0)=0 K VADM
|
---|
111 | ;
|
---|
112 | I DISCHRGD=0 D ;check for discharge if they're not dead
|
---|
113 | .D INP^VADPT
|
---|
114 | .I VAIN(1)']"" S DISCHRGD=1,^TMP("PSB",$J,0)=0 K VAIN
|
---|
115 | ;
|
---|
116 | I DISCHRGD D ;setup results and clean up
|
---|
117 | .S RESULTS=$NAME(^TMP("PSB",$J))
|
---|
118 | .K PSBTRDT,PSBHOUR,PSBPRNDT
|
---|
119 | .D CLEAN^PSBVT
|
---|
120 | ;
|
---|
121 | Q DISCHRGD
|
---|
122 | ;
|
---|