1 | ORQQPX ; SLC/JM - PCE and Reminder routines ;11/16/2004
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10,85,184,187,190,226**;Dec 17, 1997
|
---|
3 | Q
|
---|
4 | IMMLIST(ORY,ORPT) ;return pt's immunization list:
|
---|
5 | ;id^name^date/time^reaction^inverse d/t
|
---|
6 | I $L($T(IMMUN^PXRHS03))<1 S ORY(1)="^Immunizations not available." Q
|
---|
7 | K ^TMP("PXI",$J)
|
---|
8 | D IMMUN^PXRHS03(ORPT)
|
---|
9 | N ORI,IMM,IVDT,IEN,X
|
---|
10 | S ORI=0,IMM="",IVDT="",IEN=0
|
---|
11 | F S IMM=$O(^TMP("PXI",$J,IMM)) Q:IMM="" D
|
---|
12 | .F S IVDT=$O(^TMP("PXI",$J,IMM,IVDT)) Q:IVDT="" D
|
---|
13 | ..F S IEN=$O(^TMP("PXI",$J,IMM,IVDT,IEN)) Q:IEN<1 D
|
---|
14 | ...S ORI=ORI+1,X=$G(^TMP("PXI",$J,IMM,IVDT,IEN,0)) Q:'$L(X)
|
---|
15 | ...S ORY(ORI)=IEN_U_IMM_U_$P(X,U,3)
|
---|
16 | ...I $P(X,U,7)=1 S ORY(ORI)=ORY(ORI)_U_$P(X,U,6)_U_IVDT
|
---|
17 | ...E S ORY(ORI)=ORY(ORI)_U_U_IVDT
|
---|
18 | S:+$G(ORY(1))<1 ORY(1)="^No immunizations found.^2900101^^9999999"
|
---|
19 | K ^TMP("PXI",$J)
|
---|
20 | Q
|
---|
21 | DETAIL(ORY,IMM) ; return detailed information for an immunization
|
---|
22 | S ORY(1)="Detailed information on immunizations is not available."
|
---|
23 | Q
|
---|
24 | REMIND(ORY,ORPT) ;return pt's currently due PCE clinical reminders
|
---|
25 | ; in the format file 811.9 ien^reminder print name^date due^last occur.
|
---|
26 | N ORTMPLST,ORI,ORJ,ORIEN,ORTXT,ORX,ORLASTDT,ORDUEDT,ORLOC
|
---|
27 | S ORJ=0
|
---|
28 | ;
|
---|
29 | ;get patient's location flag (INPATIENT ONLY - outpt locations cannot be
|
---|
30 | ;reliably determined, and many simultaneous outpt locations can occur):
|
---|
31 | I +$G(ORPT)>0 D
|
---|
32 | .N DFN S DFN=ORPT,VA200="" D OERR^VADPT
|
---|
33 | .I +$G(VAIN(4))>0 S ORLOC=+$G(^DIC(42,+$G(VAIN(4)),44))
|
---|
34 | .K VA200,VAIN
|
---|
35 | ;
|
---|
36 | D REMLIST(.ORTMPLST,$G(ORLOC))
|
---|
37 | ;D GETLST^XPAR(.ORTMPLST,"USR^LOC.`"_$G(ORLOC)_"^SRV.`"_+$G(ORSRV)_"^DIV^SYS^PKG","ORQQPX SEARCH ITEMS","Q",.ORERR)
|
---|
38 | ;I ORERR>0 S ORY(1)=U_"Error: "_$P(ORERR,U,2) Q
|
---|
39 | S ORI=0 F S ORI=$O(ORTMPLST(ORI)) Q:'ORI D
|
---|
40 | .S ORIEN=$P(ORTMPLST(ORI),U,2)
|
---|
41 | .K ^TMP("PXRHM",$J)
|
---|
42 | .N ORPRI,ORDUE,ORSTA
|
---|
43 | .D MAIN^PXRM(ORPT,ORIEN,0)
|
---|
44 | .S ORTXT="",ORTXT=$O(^TMP("PXRHM",$J,ORIEN,ORTXT)) Q:ORTXT="" D
|
---|
45 | ..S ORX=^TMP("PXRHM",$J,ORIEN,ORTXT)
|
---|
46 | ..S ORSTA=$P(ORX,U)
|
---|
47 | ..S ORDUEDT=$P(ORX,U,2),ORLASTDT=$P(ORX,U,3)
|
---|
48 | ..S ORLASTDT=$S(+$G(ORLASTDT)>0:ORLASTDT,1:"") ;null if not a date
|
---|
49 | ..S ORJ=ORJ+1
|
---|
50 | ..S ORDUE=$S(ORSTA["DUE":1,ORSTA["ERROR":3,ORSTA["CNBD":4,1:2)
|
---|
51 | ..I ORDUE'=2 D
|
---|
52 | ...S ORPRI=$P($G(^PXD(811.9,ORIEN,0)),U,10) I ORPRI="" S ORPRI=2
|
---|
53 | ...S ORY(ORJ)=ORIEN_U_ORTXT_U_ORDUEDT_U_ORLASTDT_U_ORPRI_U_ORDUE_U_$$DLG^PXRMRPCA(ORIEN)_U_U_U_U_$$DLGWIPE^PXRMRPCA(ORIEN)
|
---|
54 | ..I ORDUE=2 D
|
---|
55 | ...S ORY(ORJ)=ORIEN_U_ORTXT_U_U_U_U_ORDUE_U_$$DLG^PXRMRPCA(ORIEN)_U_U_U_U_$$DLGWIPE^PXRMRPCA(ORIEN)
|
---|
56 | .K ^TMP("PXRHM",$J)
|
---|
57 | Q
|
---|
58 | REMDET(ORY,ORPT,ORIEN) ;return detail for a pt's clinical reminder
|
---|
59 | ; ORY - return array
|
---|
60 | ; ORPT - patient DFN
|
---|
61 | ; ORIEN - clinical reminder (811.9 ien)
|
---|
62 | K ^TMP("PXRHM",$J)
|
---|
63 | D MAIN^PXRM(ORPT,ORIEN,5) ; 5 returns all reminder info
|
---|
64 | N CR,I,J,ORTXT S I=1
|
---|
65 | S ORTXT="",ORTXT=$O(^TMP("PXRHM",$J,ORIEN,ORTXT)) Q:ORTXT="" D
|
---|
66 | .S J=0 F S J=$O(^TMP("PXRHM",$J,ORIEN,ORTXT,"TXT",J)) Q:J="" D
|
---|
67 | ..S ORY(I)=^TMP("PXRHM",$J,ORIEN,ORTXT,"TXT",J),I=I+1
|
---|
68 | K ^TMP("PXRHM",$J)
|
---|
69 | Q
|
---|
70 | NEWACTIV(ORY) ;Return true if Interactive Reminders are active
|
---|
71 | S ORY=0
|
---|
72 | I $T(APPL^PXRMRPCA)'="",+$G(DUZ) D
|
---|
73 | . N SRV
|
---|
74 | . ;S SRV=$P($G(^VA(200,DUZ,5)),U)
|
---|
75 | . S SRV=$$GET1^DIQ(200,DUZ,29,"I")
|
---|
76 | . S ORY=$$GET^XPAR(DUZ_";VA(200,^SRV.`"_+$G(SRV)_"^DIV^SYS","PXRM GUI REMINDERS ACTIVE",1,"Q")
|
---|
77 | . I +ORY S ORY=1
|
---|
78 | . E S ORY=0
|
---|
79 | Q
|
---|
80 | HISTLOC(LST) ;Returns a list of historical locations
|
---|
81 | N IDX,PTR,LINE,NAME
|
---|
82 | K ^TMP("OR",$J,"LOC")
|
---|
83 | S LST=$NA(^TMP("OR",$J,"LOC"))
|
---|
84 | S (LINE,IDX)=0
|
---|
85 | F S IDX=$O(^AUTTLOC(IDX)) Q:'IDX D
|
---|
86 | .S PTR=+$G(^AUTTLOC(IDX,0))
|
---|
87 | .I +PTR D
|
---|
88 | ..;S NAME=$P($G(^DIC(4,PTR,0)),U)
|
---|
89 | ..S NAME=$$GET1^DIQ(4,PTR,.01,"I")
|
---|
90 | ..I NAME'="" D
|
---|
91 | ...S LINE=LINE+1
|
---|
92 | ...S ^TMP("OR",$J,"LOC",LINE)=PTR_U_NAME
|
---|
93 | Q
|
---|
94 | GETFLDRS(ORFLDRS) ;Return Visible Reminder Folders
|
---|
95 | ; Codes: D=Due, A=Applicable, N=Not Applicable, E=Evaluated, O=Other
|
---|
96 | N SRV,ORERR,ORTMP
|
---|
97 | ;S SRV=$P($G(^VA(200,DUZ,5)),U)
|
---|
98 | S SRV=$$GET1^DIQ(200,DUZ,29,"I")
|
---|
99 | D GETLST^XPAR(.ORTMP,"USR^SRV.`"_+$G(SRV)_"^DIV^SYS^PKG","ORQQPX REMINDER FOLDERS","Q",.ORERR)
|
---|
100 | I +ORTMP S ORFLDRS=$P($G(ORTMP(1)),U,2)
|
---|
101 | E S ORFLDRS="DAO"
|
---|
102 | Q
|
---|
103 | SETFLDRS(ORY,ORFLDRS) ;Sets Visible Reminder Folders for the current user
|
---|
104 | N ORERR
|
---|
105 | D EN^XPAR(DUZ_";VA(200,","ORQQPX REMINDER FOLDERS",1,ORFLDRS,.ORERR)
|
---|
106 | S ORY=1
|
---|
107 | Q
|
---|
108 | GETDEFOL(ORDEFLOC) ;Return Default Outside Locations
|
---|
109 | N SRV,ORERR
|
---|
110 | ;S SRV=$P($G(^VA(200,DUZ,5)),U)
|
---|
111 | S SRV=$$GET1^DIQ(200,DUZ,29,"I")
|
---|
112 | D GETLST^XPAR(.ORDEFLOC,"USR^SRV.`"_+$G(SRV)_"^DIV^SYS^PKG","ORQQPX DEFAULT LOCATIONS","Q",.ORERR)
|
---|
113 | Q
|
---|
114 | INSCURS(ORY) ; Returns status of ORQQPX REMINDER TEXT AT CURSOR
|
---|
115 | N SRV,ORERR,ORTMP
|
---|
116 | ;S ORY=0,SRV=$P($G(^VA(200,DUZ,5)),U)
|
---|
117 | S ORY=0,SRV=$$GET1^DIQ(200,DUZ,29,"I")
|
---|
118 | D GETLST^XPAR(.ORTMP,"USR^SRV.`"_+$G(SRV)_"^DIV^SYS^PKG","ORQQPX REMINDER TEXT AT CURSOR","Q",.ORERR)
|
---|
119 | I +ORTMP S ORY=$P($G(ORTMP(1)),U,2)
|
---|
120 | Q
|
---|
121 | NEWCVOK(ORY) ; Returns status of
|
---|
122 | N SRV,ORERR,ORTMP
|
---|
123 | ;S ORY=0,SRV=$P($G(^VA(200,DUZ,5)),U)
|
---|
124 | S ORY=0,SRV=$$GET1^DIQ(200,DUZ,29,"I")
|
---|
125 | D GETLST^XPAR(.ORTMP,"USR^SRV.`"_+$G(SRV)_"^DIV^SYS^PKG","ORQQPX NEW REMINDER PARAMS","Q",.ORERR)
|
---|
126 | I +ORTMP S ORY=$P($G(ORTMP(1)),U,2)
|
---|
127 | Q
|
---|
128 | ADDNAME(ORX) ; Add Reminder or Category Name as 3rd piece
|
---|
129 | N CAT,IEN
|
---|
130 | S CAT=$E($P(ORX,U,2),2)
|
---|
131 | S IEN=$E($P(ORX,U,2),3,99)
|
---|
132 | I +IEN D
|
---|
133 | .I CAT="R" S $P(ORX,U,3)=$P($G(^PXD(811.9,IEN,0)),U,3)
|
---|
134 | .I CAT="C" S $P(ORX,U,3)=$P($G(^PXRMD(811.7,IEN,0)),U)
|
---|
135 | Q ORX
|
---|
136 | REMACCUM(ORY,LVL,TYP,SORT,CLASS) ; Accumulates ORTMP into ORY
|
---|
137 | ; Format of entries in ORQQPX COVER SHEET REMINDERS:
|
---|
138 | ; L:Lock;R:Remove;N:Normal / C:Category;R:Reminder / Cat or Rem IEN
|
---|
139 | N IDX,I,J,K,M,FOUND,ORERR,ORTMP,FLAG,IEN
|
---|
140 | N FFLAG,FIEN,OUT,P2,ADD,DOADD,CODE
|
---|
141 | I LVL="CLASS" D I 1
|
---|
142 | .N ORLST,ORCLS,ORCLSPRM,ORWP
|
---|
143 | .S ORCLSPRM="ORQQPX COVER SHEET REM CLASSES"
|
---|
144 | .D GETLST^XPAR(.ORLST,"SYS",ORCLSPRM,"Q",.ORERR)
|
---|
145 | .S I=0,M=0,CLASS=$G(CLASS)
|
---|
146 | .F S I=$O(ORLST(I)) Q:'I D
|
---|
147 | ..S ORCLS=$P(ORLST(I),U,1)
|
---|
148 | ..I +CLASS S ADD=(ORCLS=+CLASS) I 1
|
---|
149 | ..E S ADD=$$ISA^USRLM(DUZ,ORCLS,.ORERR)
|
---|
150 | ..I +ADD D
|
---|
151 | ...D GETWP^XPAR(.ORWP,"SYS",ORCLSPRM,ORCLS,.ORERR)
|
---|
152 | ...S K=0
|
---|
153 | ...F S K=$O(ORWP(K)) Q:'K D
|
---|
154 | ....S M=M+1
|
---|
155 | ....S J=$P(ORWP(K,0),";",1)
|
---|
156 | ....S ORTMP(M)=J_U_$P(ORWP(K,0),";",2)
|
---|
157 | E D GETLST^XPAR(.ORTMP,LVL,"ORQQPX COVER SHEET REMINDERS",TYP,.ORERR)
|
---|
158 | S I=0,IDX=$O(ORY(999999),-1)+1,ADD=(SORT="")
|
---|
159 | F S I=$O(ORTMP(I)) Q:'I D
|
---|
160 | .S (FOUND,J)=0,P2=$P(ORTMP(I),U,2)
|
---|
161 | .S FLAG=$E(P2),IEN=$E(P2,2,999)
|
---|
162 | .I ADD S DOADD=1
|
---|
163 | .E D
|
---|
164 | ..S DOADD=0
|
---|
165 | ..F S J=$O(ORY(J)) Q:'J D Q:FOUND
|
---|
166 | ...S P2=$P(ORY(J),U,2)
|
---|
167 | ...S FIEN=$E(P2,2,999)
|
---|
168 | ...I FIEN=IEN S FOUND=J,FFLAG=$E(P2)
|
---|
169 | ..I FOUND D I 1
|
---|
170 | ...I FLAG="R",FFLAG'="L" K ORY(FOUND)
|
---|
171 | ...I FLAG'=FFLAG,(FLAG_FFLAG)["L" S $E(P2)="L",$P(ORY(FOUND),U,2)=P2
|
---|
172 | ..E I (FLAG'="R") S DOADD=1
|
---|
173 | .I DOADD D
|
---|
174 | ..S OUT(IDX)=ORTMP(I)
|
---|
175 | ..S $P(OUT(IDX),U)=$P(OUT(IDX),U)_SORT
|
---|
176 | ..I SORT="" S OUT(IDX)=$$ADDNAME(OUT(IDX))
|
---|
177 | ..S IDX=IDX+1
|
---|
178 | M ORY=OUT
|
---|
179 | Q
|
---|
180 | ADDREM(ORY,IDX,IEN) ; Add Reminder to ORY list
|
---|
181 | I $D(ORY("B",IEN)) Q ; See if it's in the list
|
---|
182 | I '$D(^PXD(811.9,IEN)) Q ; Check if Exists
|
---|
183 | I $P($G(^PXD(811.9,IEN,0)),U,6)'="" Q ; Check if Active
|
---|
184 | ;check to see if the reminder is assigned to CPRS
|
---|
185 | I $P($G(^PXD(811.9,IEN,100)),U,4)["L" Q
|
---|
186 | I $P($G(^PXD(811.9,IEN,100)),U,4)'["C",$P($G(^PXD(811.9,IEN,100)),U,4)'="*" Q
|
---|
187 | S ORY(IDX)=IDX_U_IEN
|
---|
188 | S ORY("B",IEN)=""
|
---|
189 | Q
|
---|
190 | ADDCAT(ORY,IDX,IEN) ; Add Category Reminders to ORY list
|
---|
191 | N ORREM,I,IDX2,NREM
|
---|
192 | D CATREM^PXRMAPI0(IEN,.ORREM)
|
---|
193 | S I=0
|
---|
194 | F S I=$O(ORREM(I)) Q:'I D
|
---|
195 | . S IDX2="00000"_I
|
---|
196 | . S IDX2=$E(IDX2,$L(IDX2)-5,99)
|
---|
197 | . D ADDREM(.ORY,+(IDX_"."_IDX2),$P(ORREM(I),U,1))
|
---|
198 | Q
|
---|
199 | REMLIST(ORY,LOC) ;Returns a list of all cover sheet reminders
|
---|
200 | N SRV,I,J,ORLST,CODE,IDX,IEN,NEWP
|
---|
201 | ;S SRV=$P($G(^VA(200,DUZ,5)),U)
|
---|
202 | S SRV=$$GET1^DIQ(200,DUZ,29,"I")
|
---|
203 | D NEWCVOK(.NEWP)
|
---|
204 | I 'NEWP D GETLST^XPAR(.ORY,"USR^LOC.`"_$G(LOC)_"^SRV.`"_+$G(SRV)_"^DIV^SYS^PKG","ORQQPX SEARCH ITEMS","Q",.ORERR) Q
|
---|
205 | D REMACCUM(.ORLST,"PKG","Q",1000)
|
---|
206 | D REMACCUM(.ORLST,"SYS","Q",2000)
|
---|
207 | D REMACCUM(.ORLST,"DIV","Q",3000)
|
---|
208 | I +SRV D REMACCUM(.ORLST,"SRV.`"_+$G(SRV),"Q",4000)
|
---|
209 | I +LOC D REMACCUM(.ORLST,"LOC.`"_+$G(LOC),"Q",5000)
|
---|
210 | D REMACCUM(.ORLST,"CLASS","Q",6000)
|
---|
211 | D REMACCUM(.ORLST,"USR","Q",7000)
|
---|
212 | S I=0
|
---|
213 | F S I=$O(ORLST(I)) Q:'I D
|
---|
214 | .S IDX=$P(ORLST(I),U,1)
|
---|
215 | .F Q:'$D(ORY(IDX)) S IDX=IDX+1
|
---|
216 | .S CODE=$E($P(ORLST(I),U,2),2)
|
---|
217 | .S IEN=$E($P(ORLST(I),U,2),3,999)
|
---|
218 | .I CODE="R" D ADDREM(.ORY,IDX,IEN)
|
---|
219 | .I CODE="C" D ADDCAT(.ORY,IDX,IEN)
|
---|
220 | K ORY("B")
|
---|
221 | Q
|
---|
222 | LVREMLST(ORY,LVL,CLASS) ;Returns cover sheet reminders at a specified level
|
---|
223 | D REMACCUM(.ORY,LVL,"Q","",$G(CLASS))
|
---|
224 | Q
|
---|
225 | SAVELVL(ORY,LVL,CLASS,DATA) ;Save cover sheet reminders at a specified level
|
---|
226 | N ORERR,PARAM,I
|
---|
227 | I LVL="CLASS" D I 1
|
---|
228 | .S PARAM="ORQQPX COVER SHEET REM CLASSES"
|
---|
229 | .S LVL="SYS"
|
---|
230 | .D DEL^XPAR(LVL,PARAM,"`"_CLASS,.ORERR)
|
---|
231 | .D EN^XPAR(LVL,PARAM,"`"_CLASS,.DATA,.ORERR)
|
---|
232 | E D
|
---|
233 | .S PARAM="ORQQPX COVER SHEET REMINDERS"
|
---|
234 | .D NDEL^XPAR(LVL,PARAM,.ORERR)
|
---|
235 | .S I=0
|
---|
236 | .F S I=$O(DATA(I)) Q:'I D
|
---|
237 | ..D EN^XPAR(LVL,PARAM,$P(DATA(I),U,1),$P(DATA(I),U,2),.ORERR)
|
---|
238 | S ORY=1
|
---|
239 | Q
|
---|
240 | GETLIST(ORY,ORLOC) ;Returns a list of all cover sheet reminders
|
---|
241 | N I
|
---|
242 | D REMLIST(.ORY,$G(ORLOC))
|
---|
243 | S I=0
|
---|
244 | F S I=$O(ORY(I)) Q:'I D
|
---|
245 | .S ORY(I)=$P(ORY(I),U,2)
|
---|
246 | Q
|
---|
247 | EVALCOVR(ORY,ORPT,ORLOC) ; Evaluate Cover Sheet Reminders
|
---|
248 | N ORTMP
|
---|
249 | D GETLIST(.ORTMP,$G(ORLOC))
|
---|
250 | D ALIST^ORQQPXRM(.ORY,ORPT,.ORTMP)
|
---|
251 | Q
|
---|