1 | RAPSAPI2 ;HOIFO/SG - INPUT TEMPLATE UTILS FOR PHARM. POINTERS ; 4/6/07 3:43pm
|
---|
2 | ;;5.0;Radiology/Nuclear Medicine;**65**;Mar 16, 1998;Build 8
|
---|
3 | ;
|
---|
4 | ;Supported IA #2053 reference to FILE^DIE
|
---|
5 | ;Supported IA #2052 reference to FIELD^DID and GET1^DID
|
---|
6 | ;Supported IA #2055 reference to ROOT^DILFD and OREF^DILFD
|
---|
7 | ;Supported IA #10007 reference to DO^DIC1
|
---|
8 | ;Supported IA #4551 reference to DIC^PSSDI
|
---|
9 | ;Supported IA #10029 reference to ^DIWW
|
---|
10 | ;
|
---|
11 | Q
|
---|
12 | ;
|
---|
13 | ;***** DISPLAYS RECORD DELETE PROMPT AND GETS USER RESPONSE
|
---|
14 | ;
|
---|
15 | ; RAIEN IEN of the record of the multiple
|
---|
16 | ;
|
---|
17 | ; IEN50 Internal value of the .01 field
|
---|
18 | ;
|
---|
19 | ; Return values:
|
---|
20 | ; 0 Keep the record or there is nothing to delete
|
---|
21 | ; 1 Delete the record
|
---|
22 | ;
|
---|
23 | ; Note: This is an internal function. Do not call it from outside
|
---|
24 | ; of the RAPSAPI3 routine.
|
---|
25 | ;
|
---|
26 | DELCONF(RAIEN,IEN50) ;
|
---|
27 | I (RAIEN'>0)!(IEN50'>0) W "??" Q 0
|
---|
28 | N DA,DIR,DIROUT,DIRUT,DTOUT,DUOUT,TMP,X,Y
|
---|
29 | S DIR(0)="YAO"
|
---|
30 | S DIR("A")=" SURE YOU WANT TO DELETE",TMP=$G(RADESCR("FLDNAME"))
|
---|
31 | S DIR("A")=DIR("A")_$S(TMP'="":" THE ENTIRE "_TMP,1:"")_"? "
|
---|
32 | D ^DIR
|
---|
33 | W:Y'=1 " <NOTHING DELETED>"
|
---|
34 | Q (Y=1)
|
---|
35 | ;
|
---|
36 | ;***** DELETES A (SUB)FILE RECORD
|
---|
37 | ;
|
---|
38 | ; FILE File/subfile number
|
---|
39 | ; IENS IENS of the record
|
---|
40 | ;
|
---|
41 | DELETE(FILE,IENS) ;
|
---|
42 | N RAFDA,RAMSG
|
---|
43 | S RAFDA(FILE,IENS,.01)="@"
|
---|
44 | D FILE^DIE(,"RAFDA","RAMSG")
|
---|
45 | Q
|
---|
46 | ;
|
---|
47 | ;***** DISPLAYS HELP (? and ??)
|
---|
48 | ;
|
---|
49 | ; VAL User input ("?" or "??")
|
---|
50 | ;
|
---|
51 | ; FILE File number
|
---|
52 | ;
|
---|
53 | ; FIELD Field number
|
---|
54 | ;
|
---|
55 | ; [IENS] IENS of the multiple defined by the FIELD parameter
|
---|
56 | ; (1st comma piece should be empty). Specify this
|
---|
57 | ; parameter if help information for a "Select..."
|
---|
58 | ; prompt is needed.
|
---|
59 | ;
|
---|
60 | HELP(VAL,FILE,FIELD,IENS) ;
|
---|
61 | Q:'($G(VAL)?1"?".1"?")
|
---|
62 | N LM,RABUF,RAMSG,TMP
|
---|
63 | S TMP="LABEL;MULTIPLE-VALUED;SPECIFIER"
|
---|
64 | D FIELD^DID(FILE,FIELD,,TMP,"RABUF","RAMSG")
|
---|
65 | Q:$G(RABUF("LABEL"))=""
|
---|
66 | ;---
|
---|
67 | I $G(RABUF("MULTIPLE-VALUED")) D S LM=9
|
---|
68 | . S FILE=+$G(RABUF("SPECIFIER")),FIELD=.01
|
---|
69 | . S TMP=$$ROOT^DILFD(FILE,$G(IENS),1)
|
---|
70 | . D:TMP'="" HLPMULT(VAL,TMP,RABUF("LABEL"))
|
---|
71 | E S LM=5
|
---|
72 | ;---
|
---|
73 | I VAL="?" D
|
---|
74 | . D HLPROMPT(LM,FILE,FIELD)
|
---|
75 | E D HLPDESCR(9,FILE,FIELD)
|
---|
76 | ;---
|
---|
77 | W !
|
---|
78 | Q
|
---|
79 | ;
|
---|
80 | ;***** DISPLAYS FIELD DESCRIPTION
|
---|
81 | ;
|
---|
82 | ; LM Left margin for the output
|
---|
83 | ;
|
---|
84 | ; FILE File number
|
---|
85 | ;
|
---|
86 | ; FIELD Field number
|
---|
87 | ;
|
---|
88 | HLPDESCR(LM,FILE,FIELD) ;
|
---|
89 | N I,RAHLP,RAMSG
|
---|
90 | S I=$$GET1^DID(FILE,FIELD,,"DESCRIPTION","RAHLP","RAMSG")
|
---|
91 | D:$D(RAHLP)>1 HLPWR(LM,.RAHLP)
|
---|
92 | Q
|
---|
93 | ;
|
---|
94 | ;***** DISPLAYS CONTENT OF THE MULTIPLE AND RELATED PROMPTS
|
---|
95 | ;
|
---|
96 | ; VAL User input ("?" or "??")
|
---|
97 | ;
|
---|
98 | ; LM Left margin for the output
|
---|
99 | ;
|
---|
100 | ; RAROOT Closed root of the multiple's sub-file
|
---|
101 | ;
|
---|
102 | ; MLTNAME Name of the multiple
|
---|
103 | ;
|
---|
104 | HLPMULT(VAL,RAROOT,MLTNAME) ;
|
---|
105 | N DA,DIC,DIR,DIROUT,DIRUT,DTOUT,DO,DUOUT,RA50IEN,RAI,RARC,RAY,TMP,X,Y
|
---|
106 | S RARC=0
|
---|
107 | I $O(@RAROOT@(0))>0 D Q:RARC
|
---|
108 | . ;--- Get confirmation if the multiple contains more than 10 records
|
---|
109 | . S DIC=$$OREF^DILF(RAROOT),DIC(0)=""
|
---|
110 | . D DO^DIC1
|
---|
111 | . I VAL'="??",$P(DO,U,4)>10 D I 'Y S RARC=1 Q
|
---|
112 | . . K DIR S DIR(0)="YAO"
|
---|
113 | . . S DIR("A")="Do you want the entire "_$P(DO,U,4)_"-Entry "_MLTNAME_" List? "
|
---|
114 | . . D ^DIR
|
---|
115 | . ;--- Write related prompts
|
---|
116 | . S RAY=$Y-1
|
---|
117 | . W !?4,$S(VAL="?":"Answer with "_MLTNAME,1:"")
|
---|
118 | . W !?3,"Choose from:"
|
---|
119 | . ;--- Write content of the multiple
|
---|
120 | . S RAI=0
|
---|
121 | . F S RAI=$O(@RAROOT@(RAI)) Q:RAI'>0 D Q:'RAI
|
---|
122 | . . S RA50IEN=+$P($G(@RAROOT@(RAI,0)),U)
|
---|
123 | . . I ($Y-RAY)'<IOSL D S RAY=$Y-1 I 'Y S RAI=0 Q
|
---|
124 | . . . K DIR S DIR(0)="EOA"
|
---|
125 | . . . S DIR("A")=" '^' TO STOP: "
|
---|
126 | . . . D ^DIR
|
---|
127 | . . S TMP=$$EN1^RAPSAPI(RA50IEN,.01)
|
---|
128 | . . W !?3,$S(TMP'="":TMP,1:RA50IEN)
|
---|
129 | . W !
|
---|
130 | ;===
|
---|
131 | W !?8,"You may enter a new "_MLTNAME_", if you wish"
|
---|
132 | Q
|
---|
133 | ;
|
---|
134 | ;***** DISPLAYS HELP PROMPT AND SCREEN DESCRIPTION
|
---|
135 | ;
|
---|
136 | ; LM Left margin for the output
|
---|
137 | ;
|
---|
138 | ; FILE File number
|
---|
139 | ;
|
---|
140 | ; FIELD Field number
|
---|
141 | ;
|
---|
142 | HLPROMPT(LM,FILE,FIELD) ;
|
---|
143 | ;;70.15^.01^Only pharmaceuticals that are active on this exam date are allowed.
|
---|
144 | ;;70.21^.01^Enter only active radiopharmaceuticals with an appropriate drug classification.
|
---|
145 | ;;71.055^.01^Only active non-radiopharmaceuticals may be selected.
|
---|
146 | ;;71.08^.01^Only active radiopharmaceuticals are valid.
|
---|
147 | ;;71.9^5^Only active radiopharmaceuticals are valid.
|
---|
148 | ;
|
---|
149 | N RAI,RAMSG,TMP
|
---|
150 | ;--- Help prompt
|
---|
151 | S TMP=$$GET1^DID(FILE,FIELD,,"HELP-PROMPT",,"RAMSG")
|
---|
152 | D:TMP'="" HLPWR(LM,TMP)
|
---|
153 | ;--- Optional screen description
|
---|
154 | F RAI=1:1 S TMP=$P($T(HLPROMPT+RAI),";;",2) Q:TMP="" D Q:TMP=""
|
---|
155 | . I +TMP=FILE,$P(TMP,U,2)=FIELD D HLPWR(LM,$P(TMP,U,3)) S TMP=""
|
---|
156 | Q
|
---|
157 | ;
|
---|
158 | ;***** FORMATS THE TEXT AND WRITES IT TO THE CURRRENT DEVICE
|
---|
159 | ;
|
---|
160 | ; DIWL Left margin for the text
|
---|
161 | ;
|
---|
162 | ; [.]TEXT Either a string or a reference to a local array
|
---|
163 | ; that contains the text
|
---|
164 | ;
|
---|
165 | ; Note: This function uses the ^UTILITY($J,"W") global node.
|
---|
166 | ;
|
---|
167 | HLPWR(DIWL,TEXT) ;
|
---|
168 | N DIWF,DIWR,RAI,X
|
---|
169 | K ^UTILITY($J,"W")
|
---|
170 | S DIWF="W",DIWR=IOM-3
|
---|
171 | I $D(TEXT)>1 S RAI="" D
|
---|
172 | . F S RAI=$O(TEXT(RAI)) Q:RAI="" S X=TEXT(RAI) D ^DIWP
|
---|
173 | E S X=$G(TEXT) D ^DIWP
|
---|
174 | D ^DIWW
|
---|
175 | K ^UTILITY($J,"W")
|
---|
176 | Q
|
---|
177 | ;
|
---|
178 | ;***** VALIDATES DIRECT IEN INPUT (i.e. `IEN)
|
---|
179 | ;
|
---|
180 | ; .VAL User input (`IEN)
|
---|
181 | ;
|
---|
182 | ; Return values:
|
---|
183 | ; 0 Ignore the input
|
---|
184 | ; 1 Process the input
|
---|
185 | ;
|
---|
186 | ; Note: This is an internal function. Do not call it from outside
|
---|
187 | ; of the RAPSAPI3 routine.
|
---|
188 | ;
|
---|
189 | IEN(VAL) ;
|
---|
190 | N IEN,RADIC,PSSDIY
|
---|
191 | S IEN=+$P(VAL,"`",2,$L(VAL))
|
---|
192 | I IEN'>0 W "??" Q 0
|
---|
193 | S VAL="`"_IEN
|
---|
194 | ;--- Check the multiple
|
---|
195 | Q:$D(@(RADESCR("ROOT"))@(IEN)) 1
|
---|
196 | ;--- Check the DRUG file (#50)
|
---|
197 | S RADIC="^PSDRUG(",RADIC(0)=""
|
---|
198 | D SETVACL(RADESCR)
|
---|
199 | D DIC^PSSDI(50,"RA",.RADIC,VAL,,RADESCR("SCRDATE"),,.RAVACL)
|
---|
200 | W:Y'>0 "??"
|
---|
201 | Q (Y>0)
|
---|
202 | ;
|
---|
203 | ;***** SELECTS A RECORD FROM THE MULTIPLE
|
---|
204 | ;
|
---|
205 | ; NODE Node of the cross-reference
|
---|
206 | ; MLTNAME Name of the multiple
|
---|
207 | ; DRUGNAME Drug name
|
---|
208 | ;
|
---|
209 | ; Return values:
|
---|
210 | ; 0 No selection
|
---|
211 | ; >0 IEN of a multiple's record
|
---|
212 | ;
|
---|
213 | MULTSEL(NODE,MLTNAME,DRUGNAME) ;
|
---|
214 | N CNT,DA,DIR,DIROUT,DIRUT,DTOUT,DUOUT,RAI,RATMP,RC,TMP,X,Y
|
---|
215 | S RATMP=$NA(^TMP($J,$T(+0)_"-MULTSEL")) K @RATMP
|
---|
216 | ;===
|
---|
217 | S (CNT,IEN,RC)=0
|
---|
218 | F D Q:RC!(IEN'>0)
|
---|
219 | . ;--- Display the next portion of records
|
---|
220 | . F RAI=1:1:5 S IEN=$O(@NODE@(IEN)) Q:IEN'>0 D
|
---|
221 | . . S CNT=CNT+1,@RATMP@(CNT)=IEN
|
---|
222 | . . W !?5,CNT,?9,DRUGNAME
|
---|
223 | . Q:CNT'>0
|
---|
224 | . ;--- Ask the user
|
---|
225 | . K DIR S DIR(0)="NAO^1:"_CNT_":0"
|
---|
226 | . S DIR("A")="CHOOSE 1-"_CNT_": "
|
---|
227 | . I IEN>0 D:$O(@NODE@(IEN))>0
|
---|
228 | . . S DIR("A",1)="Press <RETURN> to see more, '^' to exit this list, OR"
|
---|
229 | . S DIR("?")="Select a record of the "_MLTNAME_" multivalued field."
|
---|
230 | . D ^DIR
|
---|
231 | . I $D(DTOUT)!$D(DUOUT) S RC=-1 Q
|
---|
232 | . S:X'="" IEN=+@RATMP@(+Y),RC=1
|
---|
233 | ;=== Cleanup
|
---|
234 | K @RATMP
|
---|
235 | Q $S(RC>0:IEN,1:0)
|
---|
236 | ;
|
---|
237 | ;***** INITIALIZES THE RAVACL ARRAY FOR SCREENING MEDS
|
---|
238 | ;
|
---|
239 | ; FLAGS Mode flags
|
---|
240 | ;
|
---|
241 | SETVACL(FLAGS) ;
|
---|
242 | N I
|
---|
243 | F I="DX200","DX201","DX202" S RAVACL(I)=""
|
---|
244 | S:FLAGS["P" RAVACL("P")=""
|
---|
245 | S:FLAGS["R" RAVACL("R")=""
|
---|
246 | Q
|
---|