1 | PXRMDLG ; SLC/PJH - Reminder Dialog Edit/Inquiry ;07/29/2004
|
---|
2 | ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
|
---|
3 | ;
|
---|
4 | ;Labels called from list 'PXRM DIALOG LIST'
|
---|
5 | ;
|
---|
6 | EXIT ;Exit code
|
---|
7 | D CLEAN^VALM10
|
---|
8 | D FULL^VALM1
|
---|
9 | S VALMBCK="Q"
|
---|
10 | K ^TMP("PXRMDLG",$J)
|
---|
11 | K ^TMP("PXRMDLG4",$J)
|
---|
12 | Q
|
---|
13 | ;
|
---|
14 | HDR ; Header code
|
---|
15 | S VALMHDR(1)=PXRMHD
|
---|
16 | S VALMHDR(2)=""
|
---|
17 | S VALMSG="+ Next Screen - Prev Screen ?? More Actions"
|
---|
18 | Q
|
---|
19 | ;
|
---|
20 | HELP ;Help code
|
---|
21 | N ORU,ORUPRMT,XQORM,PXRMTAG S PXRMTAG="GDLG"
|
---|
22 | D EN^VALM("PXRM DIALOG MAIN HELP")
|
---|
23 | Q
|
---|
24 | ;
|
---|
25 | INIT ;Init
|
---|
26 | S VALMCNT=0
|
---|
27 | ;Delete any sequence numbers without dialogs
|
---|
28 | D CHECK
|
---|
29 | ;Load details of dialog
|
---|
30 | D BUILD(0)
|
---|
31 | Q
|
---|
32 | ;
|
---|
33 | PEXIT ;PXRM DIALOG MENU protocol exit code
|
---|
34 | S VALMSG="+ Next Screen - Prev Screen ?? More Actions"
|
---|
35 | ;Reset after page up or down
|
---|
36 | D XQORM
|
---|
37 | Q
|
---|
38 | ;
|
---|
39 | ;Other Subroutines
|
---|
40 | ;
|
---|
41 | BUILD(INP) ;Build workfile (protocols PXRM DIALOG VIEW/LIST)
|
---|
42 | ;
|
---|
43 | ;Variable VIEW is set in the calling protocol
|
---|
44 | ;
|
---|
45 | ;0= DIALOG SUMMARY
|
---|
46 | ;1= DIALOG DETAILS
|
---|
47 | ;2= DIALOG TEXT
|
---|
48 | ;3= PROGRESS NOTE TEXT
|
---|
49 | ;4= INQUIRY (ALL FIELDS) - NO LISTMAN
|
---|
50 | ;5= DIALOG OVERVIEW
|
---|
51 | ;
|
---|
52 | S VIEW=INP,PXRMMODE=VIEW,VALMCNT=0,VALMBCK="R"
|
---|
53 | I VIEW=5 S VALMBG=1
|
---|
54 | K ^TMP("PXRMDLG",$J)
|
---|
55 | ;Headers
|
---|
56 | S DNAM=$P($G(^PXRMD(801.41,PXRMDIEN,0)),U)
|
---|
57 | I $P($G(^PXRMD(801.41,PXRMDIEN,0)),U,3)]"" D
|
---|
58 | .S DNAM=DNAM_" (DISABLED - "_$P($G(^PXRMD(801.41,PXRMDIEN,0)),U,3)_")"
|
---|
59 | S PXRMHD="DIALOG NAME: "_DNAM
|
---|
60 | I $P($G(^PXRMD(801.41,PXRMDIEN,0)),U,4)="R" D
|
---|
61 | .S PXRMHD="REMINDER "_PXRMHD
|
---|
62 | I $P($G(^PXRMD(801.41,PXRMDIEN,0)),U,4)="G" D
|
---|
63 | .S PXRMHD="DIALOG GROUP NAME: "_DNAM
|
---|
64 | I $P($G(^PXRMD(801.41,PXRMDIEN,100)),U)="N" D
|
---|
65 | .S PXRMHD=PXRMHD_" [NATIONAL] *LIMITED EDIT*"
|
---|
66 | D HDR
|
---|
67 | ;
|
---|
68 | N DATA,DGRP,DHED,FGLOB,FIEN,FITEM,FNAME,FNUM,FTYP,RESULT,RESNM
|
---|
69 | N NATIONAL,OIEN,ONAME,ONUM,PDIS,PIEN,PNAME,PTXT,PTYP,RIEN,RNAME,SEQ,SUB
|
---|
70 | ;Build list of finding items
|
---|
71 | N DEF,DEF1,DEF2 D DEF^PXRMRUTL("811.902",.DEF,.DEF1,.DEF2)
|
---|
72 | ;Check if nationalreminder dialog
|
---|
73 | S NATIONAL=0 S:$P($G(^PXRMD(801.41,PXRMDIEN,100)),U)="N" NATIONAL=1
|
---|
74 | ;Detail view of national dialogs allows only findings to be mapped
|
---|
75 | I VIEW=1,NATIONAL D ^PXRMDLG3,XQORM Q
|
---|
76 | ;Build Listman array
|
---|
77 | D ARRAY(PXRMDIEN)
|
---|
78 | Q
|
---|
79 | ;
|
---|
80 | ARRAY(DIEN) ;Build Dialog Display in list manager
|
---|
81 | ;
|
---|
82 | N DNLOCK,NLINE,NODE,NSEL
|
---|
83 | S NLINE=0,NODE="PXRMDLG",NSEL=0
|
---|
84 | K ^TMP("PXRMDLG4",$J)
|
---|
85 | ;
|
---|
86 | S DNLOCK=$P($G(^PXRMD(801.41,DIEN,100)),U,4)
|
---|
87 | ;Group header
|
---|
88 | I $P($G(^PXRMD(801.41,DIEN,0)),U,4)="G" D
|
---|
89 | .D DLINE^PXRMDLG4(DIEN,"","",NODE)
|
---|
90 | ;Other components
|
---|
91 | D DETAIL^PXRMDLG4(DIEN,"",VIEW,NODE)
|
---|
92 | ;
|
---|
93 | ;Headers
|
---|
94 | N HDR2
|
---|
95 | I VIEW=0 S HDR2="Dialog Summary" I $G(VALMBG)="" S VALMBG=1
|
---|
96 | I VIEW=1 S HDR2="Detailed Display"
|
---|
97 | I VIEW=2 S HDR2="Dialog Text"
|
---|
98 | I VIEW=3 S HDR2="Progress Note Text"
|
---|
99 | I VIEW=5 S HDR2="Dialog Overview"
|
---|
100 | ;
|
---|
101 | ;Create headings
|
---|
102 | D CHGCAP^VALM("HEADER1","Item Seq.")
|
---|
103 | D CHGCAP^VALM("HEADER2",HDR2)
|
---|
104 | D CHGCAP^VALM("HEADER3","")
|
---|
105 | ;
|
---|
106 | S VALMCNT=NLINE
|
---|
107 | S ^TMP(NODE,$J,"VALMCNT")=VALMCNT
|
---|
108 | ;
|
---|
109 | D XQORM
|
---|
110 | Q
|
---|
111 | ;
|
---|
112 | CHECK ;Search for sequence numbers with no dialog pointer
|
---|
113 | N CNT,DA,DCNT,DEL,DELTMP,IEN,NODE,SCNT,SEQ,SEQTMP,SNUM
|
---|
114 | S IEN=PXRMDIEN,DEL="",(CNT,DA,SCNT)=0
|
---|
115 | F S DA=$O(^PXRMD(801.41,IEN,10,DA)) Q:+DA=0 S NODE=^PXRMD(801.41,IEN,10,DA,0) D
|
---|
116 | . I NODE'[U S CNT=CNT+1 S DELTMP(CNT)=DA
|
---|
117 | . I NODE[U S SCNT=SCNT+1 S SEQTMP($P($G(NODE),U),SCNT)=DA
|
---|
118 | I CNT>0 D DELBLANK(IEN,.DELTMP)
|
---|
119 | S (SNUM,SEQ)=0
|
---|
120 | F S SEQ=$O(SEQTMP(SEQ)) Q:SEQ="" S DCNT=0 F S SNUM=$O(SEQTMP(SEQ,SNUM)) Q:+SNUM=0 S DCNT=DCNT+1 I DCNT>1 S DELTMP(DCNT)=SEQTMP(SEQ,SNUM) S DEL="Y"
|
---|
121 | I DEL="Y" D DELBLANK(IEN,.DELTMP)
|
---|
122 | Q
|
---|
123 | ;
|
---|
124 | DELBLANK(IEN,DELTMP) ;Delete dialog multiple entry if dialog missing
|
---|
125 | N NUM,DA
|
---|
126 | S DA(1)=IEN
|
---|
127 | S NUM=0
|
---|
128 | F S NUM=$O(DELTMP(NUM)) Q:NUM="" D
|
---|
129 | . S DA=DELTMP(NUM) Q:'DA
|
---|
130 | . S DIK="^PXRMD(801.41,"_DA(1)_",10,"
|
---|
131 | . D ^DIK
|
---|
132 | K DIK
|
---|
133 | Q
|
---|
134 | ;
|
---|
135 | DESC(FIEN) ;Finding description
|
---|
136 | ;Determine finding type
|
---|
137 | S FGLOB=$P(FIEN,";",2) Q:FGLOB=""
|
---|
138 | S FITEM=$P(FIEN,";") Q:FITEM=""
|
---|
139 | ;Diagnosis POV
|
---|
140 | I FGLOB["ICD9" D Q
|
---|
141 | .S FTYP="DIAGNOSIS",FGLOB=U_FGLOB_FITEM_",0)"
|
---|
142 | .S FNAME=$P($G(@FGLOB),U,3)_" ["_FITEM_"]"
|
---|
143 | ;Procedure CPT
|
---|
144 | I FGLOB["ICPT" D Q
|
---|
145 | .S FTYP="PROCEDURE",FGLOB=U_FGLOB_FITEM_",0)"
|
---|
146 | .S FNAME=$P($G(@FGLOB),U,2)_" ["_FITEM_"]"
|
---|
147 | ;Quick order
|
---|
148 | I FGLOB["ORD(101.41" D Q
|
---|
149 | .S FTYP="QUICK ORDER",FGLOB=U_FGLOB_FITEM_",0)"
|
---|
150 | .S FNAME=$P($G(@FGLOB),U,2)_" ["_FITEM_"]"
|
---|
151 | ;Short name for finding type
|
---|
152 | S FTYP=$G(DEF1(FGLOB)) Q:FTYP=""
|
---|
153 | S FNUM=" ["_FTYP_"("_FITEM_")]"
|
---|
154 | ;Long name
|
---|
155 | S FTYP=$G(DEF2(FTYP))
|
---|
156 | S FGLOB=U_FGLOB_FITEM_",0)"
|
---|
157 | S FNAME=$P($G(@FGLOB),U,1)
|
---|
158 | I FNAME="" S FNAME=$P($G(@FGLOB),U)
|
---|
159 | I FNAME]"" S FNAME=FNAME_FNUM Q
|
---|
160 | S FNAME=FITEM
|
---|
161 | Q
|
---|
162 | ;
|
---|
163 | LIT(INP) ;Find description for dialog type
|
---|
164 | Q:INP="G" "Dialog group: "
|
---|
165 | Q:INP="F" "Forced value: "
|
---|
166 | Q:INP="P" "Prompt: "
|
---|
167 | Q:INP="E" "Dialog element: "
|
---|
168 | Q "???"
|
---|
169 | ;
|
---|
170 | REMD ;Reminder Details
|
---|
171 | N ARRAY,SUB
|
---|
172 | ;Change listman headings
|
---|
173 | D CHGCAP^VALM("HEADER1","Reminder Inquiry")
|
---|
174 | D CHGCAP^VALM("HEADER2","")
|
---|
175 | D CHGCAP^VALM("HEADER3","")
|
---|
176 | ;Check if dialog is linked to a reminder
|
---|
177 | I 'PXRMITEM D Q
|
---|
178 | .S ^TMP("PXRMDLG",$J,2,0)=" *This dialog is not linked to a reminder*"
|
---|
179 | ;Build array using print template
|
---|
180 | D REMVAR^PXRMINQ(.ARRAY,PXRMITEM)
|
---|
181 | ;Copy into Listman global
|
---|
182 | S SUB=0
|
---|
183 | F S SUB=$O(ARRAY(SUB)) Q:'SUB D
|
---|
184 | .S VALMCNT=SUB
|
---|
185 | .S ^TMP("PXRMDLG",$J,VALMCNT,0)=ARRAY(VALMCNT)
|
---|
186 | Q
|
---|
187 | ;
|
---|
188 | SEL ;PXRM DIALOG SELECTION ITEM validation
|
---|
189 | N ERR,IEN,SEL
|
---|
190 | S VALMBCK="",SEL=+$P(XQORNOD(0),"=",2)
|
---|
191 | ;Invalid selection
|
---|
192 | I ('SEL)!(SEL>VALMCNT)!('$D(@VALMAR@("IDX",SEL))) D Q
|
---|
193 | .W !,SEL_" is not an existing item number" H 2
|
---|
194 | ;Valid selection
|
---|
195 | S IEN=$O(@VALMAR@("IDX",SEL,"")) Q:'IEN
|
---|
196 | ;Copy/Delete/Edit dialog element
|
---|
197 | D IND^PXRMDEDI(IEN,SEL)
|
---|
198 | Q
|
---|
199 | ;
|
---|
200 | XQORM ;Protocol Menu reset
|
---|
201 | S XQORM("#")=$O(^ORD(101,"B","PXRM DIALOG SELECTION ITEM",0))
|
---|
202 | S XQORM("#")=XQORM("#")_U_"1:"_VALMCNT
|
---|
203 | S XQORM("A")="Select Item: "
|
---|
204 | I PXRMGTYP="DLGE" D
|
---|
205 | .N FMENU
|
---|
206 | .S FMENU=$O(^ORD(101,"B","PXRM DIALOG GROUP MENU",0))_";ORD(101,"
|
---|
207 | .I FMENU S XQORM("HIJACK")=FMENU
|
---|
208 | I $G(PXRMDIEN)'="",$P($G(^PXRMD(801.41,PXRMDIEN,100)),U,4)=1,'$G(PXRMINST) D
|
---|
209 | .N FMENU
|
---|
210 | .S FMENU=$O(^ORD(101,"B","PXRM DIALOG LOCK",0))_";ORD(101,"
|
---|
211 | .I FMENU S XQORM("HIJACK")=FMENU
|
---|
212 | Q
|
---|
213 | ;
|
---|
214 | XHLP(CALL) ;General help text routine.
|
---|
215 | N HTEXT
|
---|
216 | N DIWF,DIWL,DIWR,IC
|
---|
217 | S DIWF="C75",DIWL=0,DIWR=75
|
---|
218 | ;
|
---|
219 | I CALL=1 D
|
---|
220 | .S HTEXT(1)="Enter Yes to if you are adding a new sequence number or"
|
---|
221 | .S HTEXT(2)="dialog element to this reminder dialog."
|
---|
222 | K ^UTILITY($J,"W")
|
---|
223 | S IC=""
|
---|
224 | F S IC=$O(HTEXT(IC)) Q:IC="" D
|
---|
225 | . S X=HTEXT(IC)
|
---|
226 | . D ^DIWP
|
---|
227 | W !
|
---|
228 | S IC=0
|
---|
229 | F S IC=$O(^UTILITY($J,"W",0,IC)) Q:IC="" D
|
---|
230 | . W !,^UTILITY($J,"W",0,IC,0)
|
---|
231 | K ^UTILITY($J,"W")
|
---|
232 | W !
|
---|
233 | Q
|
---|