1 | PXRMGEDT ; SLC/PJH - PXRM General Edit/Add. ;11/08/2000
|
---|
2 | ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
|
---|
3 | ;
|
---|
4 | ;
|
---|
5 | ;Called from protocol PXRM SELECTION ADD
|
---|
6 | ;
|
---|
7 | ADD(TYP) ;
|
---|
8 | N DIC,DIDEL,DLAYGO,DTOUT,DUOUT,FILE,HED,PXRMHD,X,Y
|
---|
9 | W IORESET
|
---|
10 | ;
|
---|
11 | ;Ignore finding type parameters
|
---|
12 | I "FPAR"=TYP D DUMMY^PXRMRUTL H 1 Q
|
---|
13 | ;
|
---|
14 | ;Edit dialog
|
---|
15 | I "DLGE"=TYP D ADD^PXRMDEDT Q
|
---|
16 | ;
|
---|
17 | ;Allow auto generate of reminder dialogs
|
---|
18 | I TYP["DLG" D ^PXRMDBLD Q
|
---|
19 | ;
|
---|
20 | ;Finding Item Parameter
|
---|
21 | I TYP="FIP" S FILE="801.43",HED="FINDING ITEM PARAMETER"
|
---|
22 | ;
|
---|
23 | ;Reminder Category
|
---|
24 | I TYP="RCAT" S FILE="811.7",HED="REMINDER CATEGORY"
|
---|
25 | ;
|
---|
26 | ;Resolution Status
|
---|
27 | I TYP="RESN" S FILE="801.9",HED="RESOLUTION STATUS"
|
---|
28 | ;
|
---|
29 | ;Health Factor Resolution
|
---|
30 | I TYP="SHFR" S FILE="801.95",HED="HEALTH FACTOR"
|
---|
31 | ;
|
---|
32 | F D Q:(X="")!$D(DUOUT)!$D(DTOUT)
|
---|
33 | .S DIC=FILE,DLAYGO=DIC,DIDEL=DIC,DIC(0)="QAELX"
|
---|
34 | .S DIC("A")="Select new "_HED_" name: "
|
---|
35 | .I TYP="SHFR" S DIC(0)="QAEL"
|
---|
36 | .D ^DIC Q:X=""
|
---|
37 | .I X=(U_U) S DTOUT=1
|
---|
38 | .I Y=-1 S DUOUT=1 W !,"Details not saved",! Q
|
---|
39 | .Q:$D(DTOUT)!$D(DUOUT)
|
---|
40 | .;Check if exists
|
---|
41 | .I ($P(Y,U,3)'=1) W !,"already exists" Q
|
---|
42 | .S DA=$P(Y,U)
|
---|
43 | .;Edit resolution status
|
---|
44 | .I TYP="RESN" D EDIT^PXRMSEDT("^PXRMD(801.9,",DA)
|
---|
45 | .;Edit others
|
---|
46 | .I TYP'="RESN" D EDIT(TYP,DA,1)
|
---|
47 | .S DUOUT=1
|
---|
48 | Q
|
---|
49 | ;
|
---|
50 | DIE(HDR,FILE) ;Lock and edit
|
---|
51 | I FILE=801.45 W "ED - EDIT "_HDR,!!,PXRMHD,!
|
---|
52 | ;Display resolution details if finding type parameter edit
|
---|
53 | I FILE=801.45,$G(PXRMINST)'=1 D
|
---|
54 | .N RSUB,RNAM
|
---|
55 | .S RSUB=$P($G(^PXRMD(801.45,PXRMFIEN,1,PXRMFSUB,0)),U) Q:'RSUB
|
---|
56 | .S RNAM=$P($G(^PXRMD(801.9,RSUB,0)),U)
|
---|
57 | .S:RNAM="" RNAM=RSUB W "RESOLUTION STATUS : ",RNAM
|
---|
58 | D:$$LOCK(FILE) ^DIE,UNLOCK(FILE)
|
---|
59 | Q
|
---|
60 | ;
|
---|
61 | ;Called by protocol PXRM GENERAL EDIT
|
---|
62 | ;------------------------------------
|
---|
63 | EDIT(TYP,DA,ADD) ;
|
---|
64 | N DIC,DIDEL,DIE,DR,DTOUT,DUOUT,Y
|
---|
65 | W IORESET
|
---|
66 | S VALMBCK="R"
|
---|
67 | ;
|
---|
68 | ;Taxonomy Dialog
|
---|
69 | I TYP="DTAX" D
|
---|
70 | .I $$TLOCK(811.2,DA) D D TUNLOCK(811.2,DA)
|
---|
71 | ..;Initialize the selectable codes if none exist
|
---|
72 | ..I ('$D(^PXD(811.2,DA,"SDX")))&('$D(^PXD(811.2,DA,"SPR"))) D
|
---|
73 | ...D BUILD^PXRMTDUP(DA)
|
---|
74 | ..;
|
---|
75 | ..N DIE,DR
|
---|
76 | ..S DIE="^PXD(811.2,"
|
---|
77 | ..;
|
---|
78 | ..W !,"Dialog Text Fields"
|
---|
79 | ..S DR=".03;3107;3108;3111;3112"
|
---|
80 | ..D ^DIE
|
---|
81 | ..I $D(Y) Q
|
---|
82 | ..;
|
---|
83 | ..W !!,"Dialog Selectable codes"
|
---|
84 | ..S DR="3102;3104"
|
---|
85 | ..D ^DIE
|
---|
86 | ..I $D(Y) Q
|
---|
87 | ..;
|
---|
88 | ..W !!,"Dialog Generation Parameters"
|
---|
89 | ..S DR="3106;3110"
|
---|
90 | ..D ^DIE
|
---|
91 | ;
|
---|
92 | ;Finding Item Parameter
|
---|
93 | I TYP="FIP" D
|
---|
94 | .S DIE="^PXRMD(801.43,",DR=".01;.02;.03;.04",DIDEL=801.43
|
---|
95 | .D DIE("FINDING ITEM PARAMETER",801.43)
|
---|
96 | ;
|
---|
97 | ;Finding Type Parameter
|
---|
98 | I TYP="FPAR" D
|
---|
99 | .;Programmer mode
|
---|
100 | .S:$G(PXRMINST)=1 DR=1,DR(2,801.451)="1;3;4;5",DIE="^PXRMD(801.45,"
|
---|
101 | .;Site mode
|
---|
102 | .I $G(PXRMINST)'=1 D
|
---|
103 | ..S DR="1;3;4;5",DIE="^PXRMD(801.45,PXRMFIEN,1,",DA(1)=PXRMFIEN
|
---|
104 | ..S DR(2,801.4515)="2;4;5;6;1"
|
---|
105 | .D DIE("FINDING TYPE PARAMETER",801.45)
|
---|
106 | ;
|
---|
107 | ;Reminder Category
|
---|
108 | I TYP="RCAT" D
|
---|
109 | .S DIE="^PXRMD(811.7,",DR=".01;1;2;10",DIDEL=811.7
|
---|
110 | .D DIE("CATEGORY",811.7)
|
---|
111 | ;
|
---|
112 | ;Resolution Status
|
---|
113 | I TYP="RESN" D
|
---|
114 | .I $$LOCK(801.9) D EDIT^PXRMSEDT("^PXRMD(801.9,",.DA),UNLOCK(811.9)
|
---|
115 | ;
|
---|
116 | ;Health Factor Resolution
|
---|
117 | I TYP="SHFR" D
|
---|
118 | .S DIE="^PXRMD(801.95,",DR=".01;.02",DIDEL=801.95
|
---|
119 | .D DIE("HEALTH FACTOR RESOLUTIONS",811.7)
|
---|
120 | ;
|
---|
121 | ;Skip rebuild if editting taxonomy called from dialog edit
|
---|
122 | I PXRMGTYP["DLG" Q
|
---|
123 | ;
|
---|
124 | ;Deleted ???
|
---|
125 | I '$D(DA) S VALMBCK="Q" Q
|
---|
126 | ;Redisplay changes
|
---|
127 | I 'ADD D BUILD^PXRMGEN
|
---|
128 | Q
|
---|
129 | ;
|
---|
130 | ;
|
---|
131 | LOCK(FILE) ;Lock the entire file
|
---|
132 | L +^PXRMD(FILE):0 I Q 1
|
---|
133 | E W !!,?5,"Another user is editing this file, try later" H 2
|
---|
134 | Q 0
|
---|
135 | ;
|
---|
136 | ;
|
---|
137 | UNLOCK(FILE) ;Unlock the file
|
---|
138 | L -^PXRMD(FILE)
|
---|
139 | Q
|
---|
140 | ;Build the list of codes for one taxonomy
|
---|
141 | ;----------------------------------------
|
---|
142 | SEL(TAXIND) ;
|
---|
143 | N CODELIST,IC,FINDING,FILE,HIGH,LOW,NCE,TEMP
|
---|
144 | ;
|
---|
145 | ;Setup file names for indirection, these will hold the taxonomy lists.
|
---|
146 | N ICD9IEN,ICPTIEN
|
---|
147 | S ICD9IEN="^TMP(""PXRM"",$J,""ICD9IEN"")"
|
---|
148 | S ICPTIEN="^TMP(""PXRM"",$J,""ICPTIEN"")"
|
---|
149 | ;
|
---|
150 | S NCE=0
|
---|
151 | F FILE=80,81 D
|
---|
152 | .S IC=0
|
---|
153 | .F S IC=$O(^PXD(811.2,TAXIND,FILE,IC)) Q:+IC=0 D
|
---|
154 | ..S TEMP=$G(^PXD(811.2,TAXIND,FILE,IC,0))
|
---|
155 | ..;Append the taxonomy and finding information to CODELIST.
|
---|
156 | ..S NCE=NCE+1
|
---|
157 | ..S CODELIST(NCE)=TEMP_U_FILE
|
---|
158 | ;CODELIST is LOW_U_HIGH_U_FILE
|
---|
159 | ;Go through the standard coded list and get the file IEN for each entry.
|
---|
160 | F IC=1:1:NCE D
|
---|
161 | .S LOW=$P(CODELIST(IC),U,1)
|
---|
162 | .S HIGH=$P(CODELIST(IC),U,2)
|
---|
163 | .S FILE=$P(CODELIST(IC),U,3)
|
---|
164 | .I FILE=80 D ICD9(LOW,HIGH) Q
|
---|
165 | .I FILE=81 D ICPT(LOW,HIGH) Q
|
---|
166 | ;
|
---|
167 | ;Store the results.
|
---|
168 | D STORE(TAXIND)
|
---|
169 | K ^TMP("PXRM",$J,"ICD9IEN")
|
---|
170 | K ^TMP("PXRM",$J,"ICPTIEN")
|
---|
171 | Q
|
---|
172 | ;
|
---|
173 | ;=======================================================================
|
---|
174 | DEL(TAXIND) ;Delete existing entry
|
---|
175 | K ^PXD(811.2,TAXIND,"SDX")
|
---|
176 | K ^PXD(811.2,TAXIND,"SPR")
|
---|
177 | Q
|
---|
178 | ;
|
---|
179 | ;Build the list of internal entries for ICD9 (File 80)
|
---|
180 | ;-----------------------------------------------------
|
---|
181 | ICD9(LOW,HIGH) ;
|
---|
182 | N END,IEN,IND
|
---|
183 | S IND=LOW_" "
|
---|
184 | S END=HIGH_" "
|
---|
185 | F Q:(IND]END)!(+IND>+END)!(IND="") D
|
---|
186 | .S IEN=$O(^ICD9("BA",IND,""))
|
---|
187 | .I (+IEN>0),$$CODE^PXRMVAL($TR(IND," "),80) D
|
---|
188 | ..S ^TMP("PXRM",$J,"ICD9IEN",IND)=IEN
|
---|
189 | .S IND=$O(^ICD9("BA",IND))
|
---|
190 | Q
|
---|
191 | ;
|
---|
192 | ;Build the list of internal entries for ICPT (File 81)
|
---|
193 | ;-----------------------------------------------------
|
---|
194 | ICPT(LOW,HIGH) ;
|
---|
195 | N IEN,IND
|
---|
196 | S IND=LOW
|
---|
197 | F Q:(IND]HIGH)!(+IND>+HIGH)!(IND="") D
|
---|
198 | .S IEN=$O(^ICPT("B",IND,""))
|
---|
199 | .I (+IEN>0),$$CODE^PXRMVAL($TR(IND," "),81) D
|
---|
200 | ..S ^TMP("PXRM",$J,"ICPTIEN",IND)=IEN
|
---|
201 | .S IND=$O(^ICPT("B",IND))
|
---|
202 | Q
|
---|
203 | ;
|
---|
204 | ;Store selectable codes in taxonomy
|
---|
205 | ;----------------------------------
|
---|
206 | STORE(TAXIND) ;
|
---|
207 | K ^TMP("PXRMGEDT",$J)
|
---|
208 | N FDA,FDAIEN,FITEM,I2N,IEN,IND,MSG,NAME,SEQ,SUB,TEMP
|
---|
209 | ;
|
---|
210 | S NAME=$P(^PXD(811.2,TAXIND,0),U)
|
---|
211 | ;
|
---|
212 | S FDAIEN(1)=TAXIND
|
---|
213 | ;
|
---|
214 | S SUB="",IND=1,SEQ=0
|
---|
215 | F S SUB=$O(^TMP("PXRM",$J,"ICD9IEN",SUB)) Q:SUB="" D
|
---|
216 | .S IEN=^TMP("PXRM",$J,"ICD9IEN",SUB)
|
---|
217 | .S IND=IND+1,SEQ=SEQ+1
|
---|
218 | .S I2N="+"_IND_","_FDAIEN(1)_","
|
---|
219 | .S ^TMP("PXRMGEDT",$J,811.23102,I2N,.01)=IEN
|
---|
220 | ;
|
---|
221 | S SEQ=0
|
---|
222 | F S SUB=$O(^TMP("PXRM",$J,"ICPTIEN",SUB)) Q:SUB="" D
|
---|
223 | .S IEN=^TMP("PXRM",$J,"ICPTIEN",SUB)
|
---|
224 | .S IND=IND+1,SEQ=SEQ+1
|
---|
225 | .S I2N="+"_IND_","_FDAIEN(1)_","
|
---|
226 | .S ^TMP("PXRMGEDT",$J,811.23104,I2N,.01)=IEN
|
---|
227 | ;
|
---|
228 | ;None found
|
---|
229 | I IND=1 Q
|
---|
230 | ;
|
---|
231 | S TEMP="^TMP(""PXRMGEDT"","_$J_")"
|
---|
232 | D UPDATE^DIE("",TEMP,"FDAIEN","MSG")
|
---|
233 | I $D(MSG) D ERR
|
---|
234 | K ^TMP("PXRMGEDT",$J)
|
---|
235 | Q
|
---|
236 | ;
|
---|
237 | ;Error Handler
|
---|
238 | ;-------------
|
---|
239 | ERR N ERROR,IC,REF
|
---|
240 | S ERROR(1)="Unable to build selectable codes for taxonomy : "
|
---|
241 | S ERROR(2)=NAME
|
---|
242 | S ERROR(3)="Error in UPDATE^DIE, needs further investigation"
|
---|
243 | ;Move MSG into ERROR
|
---|
244 | S REF="MSG"
|
---|
245 | F IC=4:1 S REF=$Q(@REF) Q:REF="" S ERROR(IC)=REF_"="_@REF
|
---|
246 | ;Screen message
|
---|
247 | D BMES^XPDUTL(.ERROR)
|
---|
248 | Q
|
---|
249 | ;
|
---|
250 | TLOCK(FILE,DA) ;Lock the record
|
---|
251 | L +^PXD(FILE,DA):0 I Q 1
|
---|
252 | E W !!,?5,"Another user is editing this file, try later" H 2 Q 0
|
---|
253 | ;
|
---|
254 | ;
|
---|
255 | TUNLOCK(FILE,DA) ;Unlock the record
|
---|
256 | L -^PXD(FILE,DA)
|
---|
257 | Q
|
---|