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