Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: XTIDTBL

XTIDTBL.m

Go to the documentation of this file.
XTIDTBL ;OAKCIOFO/JLG - TABLE CONTEXT ;04/21/2005  15:12
 ;;7.3;TOOLKIT;**93**;Apr 25, 1995
 Q
 ; Context implementation for "table"
 ; CTX and TERM are passed by ref in all calls
CONTEXT(TFILE,TFIELD,CTX) ; set up Context for "table" type
 ; called from CONTEXT^XTIDCTX(TFILE,TFIELD,CTX)
 ; returns a valid new CTX array
 N SUBFILE
 S TFILE=+$G(TFILE)
 Q:'TFILE!($D(CTX))
 ; determine the subfile for the multi-valued field 
 ; 99.991, EFFECTIVE DATE/TIME
 S SUBFILE=$$GETSUBF(TFILE,99.991)
 Q:'SUBFILE
 S CTX("TYPE")="TABLE"
 S CTX("TERM FILE#")=TFILE
 S CTX("TERM FIELD#")=.01
 S CTX("SOURCE FILE#")=TFILE
 S CTX("TERMSTATUS SUBFILE#")=SUBFILE
 Q
 ;
VALIDREF(CTX,TIREF) ; validate the term, internal ref
 ; test TIREF is a valid value in given context (table)
 ; TIREF must be in IENS form, but will be checked
 ; later as VDUI related data is retrieved
 ; would be nice if we can do an earlier check
 ; based on IENS and the CTX("SOURCE FILE#")
 N VALID
 Q:'$D(CTX)!($G(TIREF)']"") 0
 S VALID=TIREF?.(.N1",")
 Q VALID
 ;
FINDTERM(CTX,TIREF,TERM) ; find term 
 ; called from FINDTERM^XTIDCTX(CTX,TIREF,TERM)
 ; find term for given term IREF
 ; return TERM data as new TERM array
 N IENS
 Q:'$D(CTX)!($D(TERM))
 Q:'$$VALIDREF(.CTX,$G(TIREF))
 S IENS=$G(TIREF)
 Q:IENS']""
 D GETTERM^XTIDCTX(.CTX,CTX("SOURCE FILE#"),IENS,.TERM)
 Q
 ;
SRCHTRMS(CTX,VUID,XTTBARR,MASTER) ; search term index entries
 ; called from SEARCH^XTIDCTX(CTX,VUID,ARRAY,MASTER)
 ; FIND^DIC(FILE,IENS,FIELDS,FLAGS,[.]VALUE,NUMBER,[.]INDEXES,
 ;          [.]SCREEN,IDENTIFIER,TARGET_ROOT,MSG_ROOT)
 N DIERR,FILE,TFILE,INDEXES,MSG,RIEN,VALUE,FLAGS,TARG,MSG,NUMFND
 N FIELDS,SCREEN
 S VUID=$G(VUID),MASTER=+$G(MASTER)
 Q:$G(CTX("TYPE"))'="TABLE"!('VUID)
 S FILE=CTX("SOURCE FILE#"),INDEXES="AVUID",FLAGS="QX"
 S FIELDS="@;99.98I"
 S VALUE(1)=VUID
 S SCREEN="" I MASTER S SCREEN="I $P(^(""VUID""),""^"",2)"
 ; get entries
 D FIND^DIC(FILE,"",FIELDS,FLAGS,.VALUE,"",INDEXES,SCREEN,"","TARG","MSG")
 Q:$D(MSG("DIERR"))
 S NUMFND=+$G(TARG("DILIST",0))
 I NUMFND D  ;  found entries
 . N ITM,TEMP
 . M TEMP=TARG("DILIST",2)
 . M TEMP=TARG("DILIST","ID")
 . F ITM=1:1:NUMFND  D
 . . N STATUS,IENS
 . . S IENS=TEMP(ITM)_","
 . . S STATUS=$$GETSTAT^XTID(CTX("TERM FILE#"),CTX("TERM FIELD#"),IENS,"")
 . . S STATUS=STATUS_"^"_TEMP(ITM,99.98)
 . . D ADDTARRY^XTIDCTX(XTTBARR,CTX("TERM FILE#"),CTX("TERM FIELD#"),IENS,STATUS)
 . ;
 ;
 Q
 ; 
GETSUBF(FILE,MFIELD) ; get subfile #
 ; get subfile for the given file and multiple-valued field
 N DIERR,ATTR,SUBFILE
 S SUBFILE=""
 D FIELD^DID(FILE,MFIELD,"","MULTIPLE-VALUED;SPECIFIER;TYPE","ATTR")
 I ATTR("MULTIPLE-VALUED")=1,ATTR("TYPE")'="WORD-PROCESSING" D
 . S SUBFILE=+$G(ATTR("SPECIFIER"))
 ;
 Q SUBFILE
 ;