1 | PSJLMUTL ;BIR/MLM-INPATIENT LISTMAN UTILITIES ;29 May 98 / 8:35 AM
|
---|
2 | ;;5.0; INPATIENT MEDICATIONS ;**7,67,58,85,111,160**;16 DEC 97;Build 12
|
---|
3 | ;
|
---|
4 | ; Reference to ^ORD(101 is supported by DBIA #872.
|
---|
5 | ; Reference to ^PS(50.606 is supported by DBIA #2174.
|
---|
6 | ; Reference to ^PS(50.7 is supported by DBIA #2180.
|
---|
7 | ; Reference to ^PS(55 is supported by DBIA #2191.
|
---|
8 | ; Reference to ^PSDRUG is supported by DBIA #2192.
|
---|
9 | ; Reference to ^GMRAPEM0 is supported by DBIA #190.
|
---|
10 | ; Reference to ^SDAMA203 is supported by DBIA #4133.
|
---|
11 | ; Reference to ^VSIT is supported by DBIA #1905.
|
---|
12 | ;
|
---|
13 | NEWALL(DFN) ; Enter Allergy info.
|
---|
14 | ;
|
---|
15 | D FULL^VALM1,EN2^GMRAPEM0
|
---|
16 | Q
|
---|
17 | DISALL(DFN) ; Display brief patient info list.
|
---|
18 | K ^TMP("PSJALL",$J) N PSJLN,X,Y,PSGALG,PSGRALG,PSGLDR,PSJGMRAL,PSJWHERE S PSJWHERE="PSJLMUTL"
|
---|
19 | D ATS^PSJMUTL(57,57,2)
|
---|
20 | I (PSJGMRAL=0) S ^TMP("PSJALL",$J,1,0)=" Allergies/Reactions: "_"NKA",PSJLN=2 G NARRATIV
|
---|
21 | I (PSJGMRAL="") S ^TMP("PSJALL",$J,1,0)=" Allergies/Reactions: No Allergy Assessment",PSJLN=2 G NARRATIV
|
---|
22 | I ($G(PSGVALG(1))="NKA")!((PSGVALG=0)&(PSGALG=0)) D
|
---|
23 | .S ^TMP("PSJALL",$J,1,0)=" Allergies: "_$G(PSGVALG(1)),PSJLN=2,X=1
|
---|
24 | I ($G(PSGVALG(1))'="NKA")&((PSGVALG>0)!(PSGALG>0)) D
|
---|
25 | .S ^TMP("PSJALL",$J,1,0)="Allergies - Verified: "_$G(PSGVALG(1)),PSJLN=2,X=1
|
---|
26 | .F S X=$O(PSGVALG(X)) Q:'X S ^TMP("PSJALL",$J,PSJLN,0)=" "_PSGVALG(X),PSJLN=PSJLN+1
|
---|
27 | .S ^TMP("PSJALL",$J,PSJLN,0)=" Non-Verified: "_$S($G(PSGALG(1))=0:"",1:$G(PSGALG(1))),PSJLN=PSJLN+1,X=1
|
---|
28 | .F S X=$O(PSGALG(X)) Q:'X S ^TMP("PSJALL",$J,PSJLN,0)=" "_PSGALG(X),PSJLN=PSJLN+1
|
---|
29 | D RAD^PSJMUTL
|
---|
30 | I ($G(PSGVADR(1))="NKA")!((PSGVADR=0)&(PSGADR=0)) D
|
---|
31 | .S ^TMP("PSJALL",$J,PSJLN,0)="",^TMP("PSJALL",$J,PSJLN+1,0)=" Adverse Reactions: "_$G(PSGADR(1)),PSJLN=PSJLN+2,X=1
|
---|
32 | I ($G(PSGVADR(1))'="NKA")&((PSGVADR>0)!(PSGADR>0)) D
|
---|
33 | .S ^TMP("PSJALL",$J,PSJLN,0)="",^TMP("PSJALL",$J,PSJLN+1,0)="Reactions - Verified: "_$G(PSGVADR(1)),PSJLN=PSJLN+2,X=1
|
---|
34 | .F S X=$O(PSGVADR(X)) Q:'X S ^TMP("PSJALL",$J,PSJLN,0)=" "_PSGVADR(X),PSJLN=PSJLN+1
|
---|
35 | .S ^TMP("PSJALL",$J,PSJLN,0)=" Non-Verified: "_$G(PSGADR(1)),PSJLN=PSJLN+2,X=1
|
---|
36 | .F S X=$O(PSGADR(X)) Q:'X S ^TMP("PSJALL",$J,PSJLN,0)=" "_PSGADR(X),PSJLN=PSJLN+1
|
---|
37 | ;
|
---|
38 | NARRATIV ; print inpatient/outpatient narratives
|
---|
39 | N PSJCLHD
|
---|
40 | S ^TMP("PSJALL",$J,PSJLN,0)="" D SETNAR("PSJALL",$G(^PS(55,DFN,5.3)),"In")
|
---|
41 | S ^TMP("PSJALL",$J,PSJLN+1,0)="" D SETNAR("PSJALL",$G(^PS(55,DFN,1)),"Out")
|
---|
42 | D SDA S PSJLN=0 F X=0:0 S X=$O(^TMP("PSJALL",$J,X)) Q:'X S PSJLN=PSJLN+1
|
---|
43 | I '$G(PSJCLHD)!'$G(VALMCNT) S VALMCNT=PSJLN
|
---|
44 | Q
|
---|
45 | ;
|
---|
46 | SDA N PSJPAD,PSJCLIN,PSJCLINO,PSJAPD,PSJSCI,PSJCLOK,VAERR K ^TMP("PSJVSIT"),PSJDBUN S $P(PSJPAD," ",26)=" "
|
---|
47 | Q:'$$PATCH^XPDUTL("SD*5.3*285")
|
---|
48 | D NOW^%DTC S VASD("F")=$P(%,".")-1
|
---|
49 | D SDA^VADPT S:$G(VAERR)=2 (PSJCLHD,PSJDBUN)=2 I $O(^UTILITY("VASD",$J,"")) M PSJUTL=^UTILITY("VASD",$J) D
|
---|
50 | . S PSJSCDT0=0
|
---|
51 | . F S PSJSCDT0=$O(PSJUTL(PSJSCDT0)) Q:'PSJSCDT0 D
|
---|
52 | .. S PSJCLINO=$P($G(PSJUTL(PSJSCDT0,"E")),U,2),PSJCLIN=$P($G(PSJUTL(PSJSCDT0,"I")),U,2)
|
---|
53 | .. S PSJSCI=$G(PSJUTL(PSJSCDT0,"I")),PSJAPD=$$FMTE^XLFDT(+PSJSCI) Q:(PSJCLIN="")!(PSJAPD="")
|
---|
54 | .. S PSJCLOK=1 D SDAUTHCL^SDAMA203(PSJCLIN,.PSJCLOK) Q:(PSJCLOK<1)
|
---|
55 | .. S ^TMP("PSJVSIT",$J,+PSJSCI,PSJCLIN,"V")=$E(PSJCLINO_PSJPAD,1,25)_" "_$TR(PSJAPD,"@","/"),PSJCLHD=1
|
---|
56 | .. D ENC(DFN,PSJCLIN)
|
---|
57 | I $G(PSJCLHD) S PSJLN=PSJLN+1 S ^TMP("PSJALL",$J,PSJLN,0)="Clinic:"_$E(PSJPAD,1,20)_"Date/Time of Appointment:",PSJLN=PSJLN+1 I $G(PSJCLHD)=2 D
|
---|
58 | . S ^TMP("PSJALL",$J,PSJLN,0)=" Scheduling database is unavailable",PSJLN=PSJLN+1
|
---|
59 | N VDAT S VDAT=0 F S VDAT=$O(^TMP("PSJVSIT",$J,VDAT)) Q:'VDAT S VCLIN=0 F S VCLIN=$O(^TMP("PSJVSIT",$J,VDAT,VCLIN)) Q:'VCLIN D
|
---|
60 | . F VTYP="E","V" S VDATA=$G(^TMP("PSJVSIT",$J,VDAT,VCLIN,VTYP)) I VDATA]"" S ^TMP("PSJALL",$J,PSJLN,0)=VDATA,PSJLN=PSJLN+1
|
---|
61 | I $G(PSJCLHD) S VALMCNT=((PSJLN+11\11)*11),PSJX=$O(^TMP("PSJALL",$J,9999),-1) ; F I=PSJX:1:VALMCNT S ^TMP("PSJALL",$J,I,0)=""
|
---|
62 | K PSJUTL,PSJCLHD
|
---|
63 | Q
|
---|
64 | ;
|
---|
65 | ENC(SDPATDFN,SDCLIEN) ;
|
---|
66 | N SDFROM,DT,SUBVIS,VIS S SDSTART=$$FMADD^XLFDT($P(PSGDT,"."),-1),SDEND=$$FMADD^XLFDT($P(PSGDT,"."),+365) K ^TMP("VSIT",$J)
|
---|
67 | D SELECTED^VSIT(SDPATDFN,SDSTART,SDEND,SDCLIEN) N VIS S VIS=0 F S VIS=$O(^TMP("VSIT",$J,VIS)) Q:'VIS D
|
---|
68 | . S SUBVIS=0 F S SUBVIS=$O(^TMP("VSIT",$J,VIS,SUBVIS)) Q:'SUBVIS D
|
---|
69 | .. S PSJSCI=$P(^TMP("VSIT",$J,VIS,SUBVIS),U),PSJAPD=$$FMTE^XLFDT(PSJSCI,1) Q:PSJSCI<1!(PSJAPD="")
|
---|
70 | .. S ^TMP("PSJVSIT",$J,PSJSCI,PSJCLIN,"E")=$E(PSJCLINO_PSJPAD,1,25)_" "_$TR(PSJAPD,"@","/")_" *Encounter",PSJCLHD=1
|
---|
71 | Q
|
---|
72 | ;
|
---|
73 | SETNAR(SUB,NARR,TYPE) ; Set up Narrative info.
|
---|
74 | S NARR=TYPE_"patient Narrative: "_NARR,Y="" S:TYPE="In" NARR=" "_NARR
|
---|
75 | S START=1 F D Q:NARR=""
|
---|
76 | .I $L($P(NARR," "))>79 S PSJ=$E(NARR,START,START+79),NARR=$E(NARR,START+80,$L(NARR)) Q
|
---|
77 | .I $L(NARR)>79 S PSJ=$P(NARR," ",1,$L($E(NARR,1,80)," ")-1),NARR=$E($P(NARR,PSJ,2),2,$L(NARR)) D SET Q
|
---|
78 | .S PSJ=NARR,NARR="" D SET
|
---|
79 | Q
|
---|
80 | ;
|
---|
81 | SET ; Set ^TMP for narratives.
|
---|
82 | S ^TMP(SUB,$J,PSJLN,0)=PSJ,PSJLN=PSJLN+1
|
---|
83 | Q
|
---|
84 | ;
|
---|
85 | ACTIONS() ;
|
---|
86 | N DIC,X,Y
|
---|
87 | S Y=$P($G(^ORD(101,+$G(^ORD(101,DA(1),10,DA,0)),0)),U) I Y="" Q 0
|
---|
88 | I Y="PSJ LM DC" Q $S(PSGACT["D":1,1:0)
|
---|
89 | I Y="PSJU LM EDIT" Q $S(PSGACT["E":1,1:0)
|
---|
90 | I Y="PSJU LM RENEW" Q $S(PSGACT["R":1,1:0)
|
---|
91 | I Y="PSJ LM HOLD" Q $S(PSGACT["H":1,1:0)
|
---|
92 | I Y="PSJU LM VERIFY" Q $S(PSGACT["V":1,1:0)
|
---|
93 | I Y="PSJ LM EDIT NEW" Q $S(PSGACT["E":1,1:0)
|
---|
94 | I Y="PSJ LM FLAG" Q $S(PSGACT["G":1,1:0)
|
---|
95 | Q 1
|
---|
96 | RNACT() ;
|
---|
97 | I '$G(PSJRNF),'$G(PSJIRNF) Q 0
|
---|
98 | NEW X S X=$G(^PS(53.1,+PSJORD,0))
|
---|
99 | S PSGACT=""
|
---|
100 | I $S(+$P(X,U,13):1,$G(PSJRNF)&($P(X,U,4)="U"):1,$G(PSJIRNF)&($P(X,U,4)'="U"):1,1:0) S PSGACT="BFDE"
|
---|
101 | NEW X,Y
|
---|
102 | S Y=$P($G(^ORD(101,+$G(^ORD(101,DA(1),10,DA,0)),0)),U) I Y="" Q 0
|
---|
103 | I Y="PSJ LM DC" Q $S(PSGACT["D":1,1:0)
|
---|
104 | I Y="PSJ LM BYPASS" Q $S(PSGACT["B":1,1:0)
|
---|
105 | I Y="PSJ LM FINISH" Q $S(PSGACT["F":1,1:0)
|
---|
106 | I Y="PSJI LM DISCONTINUE" Q $S(PSGACT["D":1,1:0)
|
---|
107 | I Y="PSJI LM EDIT" Q $S(PSGACT["E":1,1:0)
|
---|
108 | I Y="PSJI LM FINISH" Q $S(PSGACT["F":1,1:0)
|
---|
109 | I Y="PSJ LM FLAG" Q 0
|
---|
110 | Q 1
|
---|
111 | ;
|
---|
112 | TECHACT() ; Allowable actions for IV technician (PSJI PHARM TECH)
|
---|
113 | Q:'$G(PSJITECH) 0
|
---|
114 | NEW X S X=$G(^PS(53.1,+PSJORD,0))
|
---|
115 | I $S(+$P(X,U,13):1,$P(X,U,4)'="U":1,1:0) S PSGACT="F"
|
---|
116 | N DIC,X,Y
|
---|
117 | S Y=$P($G(^ORD(101,+$G(^ORD(101,DA(1),10,DA,0)),0)),U) I Y="" Q 0
|
---|
118 | I Y="PSJ LM DC" Q $S(PSGACT["D":1,1:0)
|
---|
119 | I Y="PSJ LM BYPASS" Q $S(PSGACT["B":1,1:0)
|
---|
120 | I Y="PSJ LM FINISH" Q $S(PSGACT["F":1,1:0)
|
---|
121 | I Y="PSJI LM DISCONTINUE" Q $S(PSGACT["D":1,1:0)
|
---|
122 | I Y="PSJI LM EDIT" Q $S(PSGACT["E":1,1:0)
|
---|
123 | I Y="PSJI LM FINISH" Q $S(PSGACT["F":1,1:0)
|
---|
124 | I Y="PSJ LM FLAG" Q 0
|
---|
125 | Q 1
|
---|
126 | PATINFO() ; Determines if detailed allergy info can be displayed.
|
---|
127 | S Y=$P($G(^ORD(101,+$G(^ORD(101,DA(1),10,DA,0)),0)),U) I Y="" Q 0
|
---|
128 | I Y="PSJ LM SHOW PROFILE",$D(PSJLMPRO) Q 0
|
---|
129 | Q 1
|
---|
130 | HIDDEN(CHK) ; Determines if certain Hidden actions are to be available.
|
---|
131 | I CHK="JUMP",'$G(PSJPNV) D NA("Jump is only available through Non-Verified/Pending Orders option.") Q 0
|
---|
132 | I CHK="SPEED",'$D(PSJUDPRF) D NA("Speed options are only available from the Unit Dose Order Entry Profile.") Q 0
|
---|
133 | Q 1
|
---|
134 | ;
|
---|
135 | NA(TXT) ;
|
---|
136 | D FULL^VALM1 W !!,TXT,!! N DIR S DIR(0)="E" D ^DIR
|
---|
137 | Q
|
---|
138 | ;
|
---|
139 | UPR(DFN) ; UPDATE PATIENT SPECIFIC DATA IN 55
|
---|
140 | N DIE,DR S PSJC10=VALMCNT
|
---|
141 | S DA=DFN,DIE="^PS(55,",DR="62.2;62.01" D ^DIE,DISALL^PSJLMUTL(DFN)
|
---|
142 | S VALMCNT=PSJC10 K PSJC10
|
---|
143 | Q
|
---|
144 | ;
|
---|
145 | DETALL(DFN) ; Enter Detailed Allergy Display list.
|
---|
146 | D EN^VALM("PSJ LM ALLERGY DISPLAY")
|
---|
147 | Q
|
---|
148 | BRFALL(DFN) ;
|
---|
149 | D EN^VALM("PSJ LM BRIEF PATIENT INFO")
|
---|
150 | Q
|
---|
151 | PAUSE ;
|
---|
152 | N DIR S DIR(0)="E" D ^DIR
|
---|
153 | Q
|
---|
154 | DRUGNAME(DFN,ON) ; Find drug name to display
|
---|
155 | ;If order is in 55:
|
---|
156 | ;.If Dosage Ordered is found, returns OI_U_Dosage Ordered.
|
---|
157 | ;.If no Dosage Ordered, returns Dispense Drug only.
|
---|
158 | ;If order in 53.1:
|
---|
159 | ;.If Dosage Ordered, returns OI_U_Dosage Ordered.
|
---|
160 | ;.If Dispense Drug is found, returns Dispense Drug name_U_Instructions.
|
---|
161 | ;.If no dispense drug, returns OI_U_Instructions.
|
---|
162 | I ON["U" D Q DN
|
---|
163 | .S OIND=$G(^PS(55,DFN,5,+ON,.2))
|
---|
164 | .I $P(OIND,U,2)]"",($G(^PS(50.7,+OIND,0))]"") S DN=$$OINAME(OIND)_U_.2 Q
|
---|
165 | .S X=+$O(^PS(55,DFN,5,+ON,1,0)),X=$G(^PS(55,DFN,5,+ON,1,X,0)) I $P(X,U)]"" S DN=$$DDNAME(+X)_"^^"_$P(X,"^",2) Q ;$S($P(OIND,U,2)]"":.2,1:.3) Q
|
---|
166 | .S DN=$$OINAME(+OIND)_U_.3 Q
|
---|
167 | S OIND=$G(^PS(53.1,+ON,.2)) Q:$P(OIND,U,2)]"" $$OINAME(OIND)_U_.2
|
---|
168 | S X=+$O(^PS(53.1,+ON,1,0)) I X,'$O(^PS(53.1,+ON,1,X)) S X=$G(^PS(53.1,+ON,1,X,0)) I $P(X,U)]"" Q $$DDNAME(+X)_U_.3_$P(X,"^",2)
|
---|
169 | Q $$OINAME(OIND)_U_.3
|
---|
170 | ;
|
---|
171 | DDNAME(X) ;
|
---|
172 | Q $$FOUND($P($G(^PSDRUG(+X,0)),U),X,"PSDRUG(,")
|
---|
173 | ;
|
---|
174 | OINAME(ND) ; Return Orderable Item Name_" "_Dose Form_U_Dosage Ordered
|
---|
175 | N DF,DNME,X
|
---|
176 | S X=$G(^PS(50.7,+ND,0)),DNME="" S:X]"" DF=$P($G(^PS(50.606,+$P(X,U,2),0)),U),DNME=$P(X,U)_" "_DF
|
---|
177 | Q $$FOUND(DNME,+ND,"PS(50.7")
|
---|
178 | ;
|
---|
179 | FOUND(DNME,DN,FN) ;
|
---|
180 | Q $S(DNME]"":DNME,1:"NOT FOUND "_DN_";"_FN)
|
---|