RAPSAPI2 ;HOIFO/SG - INPUT TEMPLATE UTILS FOR PHARM. POINTERS ; 4/6/07 3:43pm ;;5.0;Radiology/Nuclear Medicine;**65**;Mar 16, 1998;Build 8 ; ;Supported IA #2053 reference to FILE^DIE ;Supported IA #2052 reference to FIELD^DID and GET1^DID ;Supported IA #2055 reference to ROOT^DILFD and OREF^DILFD ;Supported IA #10007 reference to DO^DIC1 ;Supported IA #4551 reference to DIC^PSSDI ;Supported IA #10029 reference to ^DIWW ; Q ; ;***** DISPLAYS RECORD DELETE PROMPT AND GETS USER RESPONSE ; ; RAIEN IEN of the record of the multiple ; ; IEN50 Internal value of the .01 field ; ; Return values: ; 0 Keep the record or there is nothing to delete ; 1 Delete the record ; ; Note: This is an internal function. Do not call it from outside ; of the RAPSAPI3 routine. ; DELCONF(RAIEN,IEN50) ; I (RAIEN'>0)!(IEN50'>0) W "??" Q 0 N DA,DIR,DIROUT,DIRUT,DTOUT,DUOUT,TMP,X,Y S DIR(0)="YAO" S DIR("A")=" SURE YOU WANT TO DELETE",TMP=$G(RADESCR("FLDNAME")) S DIR("A")=DIR("A")_$S(TMP'="":" THE ENTIRE "_TMP,1:"")_"? " D ^DIR W:Y'=1 " " Q (Y=1) ; ;***** DELETES A (SUB)FILE RECORD ; ; FILE File/subfile number ; IENS IENS of the record ; DELETE(FILE,IENS) ; N RAFDA,RAMSG S RAFDA(FILE,IENS,.01)="@" D FILE^DIE(,"RAFDA","RAMSG") Q ; ;***** DISPLAYS HELP (? and ??) ; ; VAL User input ("?" or "??") ; ; FILE File number ; ; FIELD Field number ; ; [IENS] IENS of the multiple defined by the FIELD parameter ; (1st comma piece should be empty). Specify this ; parameter if help information for a "Select..." ; prompt is needed. ; HELP(VAL,FILE,FIELD,IENS) ; Q:'($G(VAL)?1"?".1"?") N LM,RABUF,RAMSG,TMP S TMP="LABEL;MULTIPLE-VALUED;SPECIFIER" D FIELD^DID(FILE,FIELD,,TMP,"RABUF","RAMSG") Q:$G(RABUF("LABEL"))="" ;--- I $G(RABUF("MULTIPLE-VALUED")) D S LM=9 . S FILE=+$G(RABUF("SPECIFIER")),FIELD=.01 . S TMP=$$ROOT^DILFD(FILE,$G(IENS),1) . D:TMP'="" HLPMULT(VAL,TMP,RABUF("LABEL")) E S LM=5 ;--- I VAL="?" D . D HLPROMPT(LM,FILE,FIELD) E D HLPDESCR(9,FILE,FIELD) ;--- W ! Q ; ;***** DISPLAYS FIELD DESCRIPTION ; ; LM Left margin for the output ; ; FILE File number ; ; FIELD Field number ; HLPDESCR(LM,FILE,FIELD) ; N I,RAHLP,RAMSG S I=$$GET1^DID(FILE,FIELD,,"DESCRIPTION","RAHLP","RAMSG") D:$D(RAHLP)>1 HLPWR(LM,.RAHLP) Q ; ;***** DISPLAYS CONTENT OF THE MULTIPLE AND RELATED PROMPTS ; ; VAL User input ("?" or "??") ; ; LM Left margin for the output ; ; RAROOT Closed root of the multiple's sub-file ; ; MLTNAME Name of the multiple ; HLPMULT(VAL,RAROOT,MLTNAME) ; N DA,DIC,DIR,DIROUT,DIRUT,DTOUT,DO,DUOUT,RA50IEN,RAI,RARC,RAY,TMP,X,Y S RARC=0 I $O(@RAROOT@(0))>0 D Q:RARC . ;--- Get confirmation if the multiple contains more than 10 records . S DIC=$$OREF^DILF(RAROOT),DIC(0)="" . D DO^DIC1 . I VAL'="??",$P(DO,U,4)>10 D I 'Y S RARC=1 Q . . K DIR S DIR(0)="YAO" . . S DIR("A")="Do you want the entire "_$P(DO,U,4)_"-Entry "_MLTNAME_" List? " . . D ^DIR . ;--- Write related prompts . S RAY=$Y-1 . W !?4,$S(VAL="?":"Answer with "_MLTNAME,1:"") . W !?3,"Choose from:" . ;--- Write content of the multiple . S RAI=0 . F S RAI=$O(@RAROOT@(RAI)) Q:RAI'>0 D Q:'RAI . . S RA50IEN=+$P($G(@RAROOT@(RAI,0)),U) . . I ($Y-RAY)'1 S RAI="" D . F S RAI=$O(TEXT(RAI)) Q:RAI="" S X=TEXT(RAI) D ^DIWP E S X=$G(TEXT) D ^DIWP D ^DIWW K ^UTILITY($J,"W") Q ; ;***** VALIDATES DIRECT IEN INPUT (i.e. `IEN) ; ; .VAL User input (`IEN) ; ; Return values: ; 0 Ignore the input ; 1 Process the input ; ; Note: This is an internal function. Do not call it from outside ; of the RAPSAPI3 routine. ; IEN(VAL) ; N IEN,RADIC,PSSDIY S IEN=+$P(VAL,"`",2,$L(VAL)) I IEN'>0 W "??" Q 0 S VAL="`"_IEN ;--- Check the multiple Q:$D(@(RADESCR("ROOT"))@(IEN)) 1 ;--- Check the DRUG file (#50) S RADIC="^PSDRUG(",RADIC(0)="" D SETVACL(RADESCR) D DIC^PSSDI(50,"RA",.RADIC,VAL,,RADESCR("SCRDATE"),,.RAVACL) W:Y'>0 "??" Q (Y>0) ; ;***** SELECTS A RECORD FROM THE MULTIPLE ; ; NODE Node of the cross-reference ; MLTNAME Name of the multiple ; DRUGNAME Drug name ; ; Return values: ; 0 No selection ; >0 IEN of a multiple's record ; MULTSEL(NODE,MLTNAME,DRUGNAME) ; N CNT,DA,DIR,DIROUT,DIRUT,DTOUT,DUOUT,RAI,RATMP,RC,TMP,X,Y S RATMP=$NA(^TMP($J,$T(+0)_"-MULTSEL")) K @RATMP ;=== S (CNT,IEN,RC)=0 F D Q:RC!(IEN'>0) . ;--- Display the next portion of records . F RAI=1:1:5 S IEN=$O(@NODE@(IEN)) Q:IEN'>0 D . . S CNT=CNT+1,@RATMP@(CNT)=IEN . . W !?5,CNT,?9,DRUGNAME . Q:CNT'>0 . ;--- Ask the user . K DIR S DIR(0)="NAO^1:"_CNT_":0" . S DIR("A")="CHOOSE 1-"_CNT_": " . I IEN>0 D:$O(@NODE@(IEN))>0 . . S DIR("A",1)="Press to see more, '^' to exit this list, OR" . S DIR("?")="Select a record of the "_MLTNAME_" multivalued field." . D ^DIR . I $D(DTOUT)!$D(DUOUT) S RC=-1 Q . S:X'="" IEN=+@RATMP@(+Y),RC=1 ;=== Cleanup K @RATMP Q $S(RC>0:IEN,1:0) ; ;***** INITIALIZES THE RAVACL ARRAY FOR SCREENING MEDS ; ; FLAGS Mode flags ; SETVACL(FLAGS) ; N I F I="DX200","DX201","DX202" S RAVACL(I)="" S:FLAGS["P" RAVACL("P")="" S:FLAGS["R" RAVACL("R")="" Q