[613] | 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
|
---|