XBLFSETS	;IHS/SET/GTH - LISTS FILE SETS ; [ 04/18/2003  9:06 AM ]
	;;4.0;XB;;Jul 20, 2009;Build 2
	;IHS/SET/GTH XB*3*9 10/29/2002 New Routine.
	; This routine lists the following file information, useful for
	; moving to a spreadsheet, or other desktop ap, for database
	; Reference Terminology Modeling (RTM) activities:
	; CodeSetID;Acronym;Name;Requirement;Source;Information;
	;        Note;DataType;MinSize;MaxSize;File #;Field #
	; The output is one line of data per field, semi-colon delimited.
	; Only fields of type SET are reported.  Y/N fields are skipped.
	; (See routine for more info.)
MORE	;
	; CodeSetID: This is an identifier that is used to uniquely identify
	;            the codeset.  Some of these codeset ids are the formal
	;            standard identifier such as "ICD 9-CM" or "ISO 3166";
	;            others have been assigned an unofficial codeset id.
	; Acronym:   This is an abbreviated name for the codeset.
	; Name:      This is the name of the codeset.
	; Requirement: This is an indicator that specifies the codeset is
	;            required by regulation.  An "H" denotes that the codeset
	;            is required for HIPAA; an "O" denotes a requirement by
	;            the Office of Management and Budget (OMB).
	; Source:    This is the originating source of the codeset.
	; Information: This is information about the codeset or the location
	;            of information about the codeset.
	; Note:      This contains notes that may assist in locating, using,
	;            documenting, etc., the codeset.
	; DateType:  This is the datatype of the codeset.
	; MinSize:   This is the maximum character size of the coded value.
	; MaxSize:   This is the minimum character size of the coded value.
	;
START	;
	; --- Display routine description.
	D HOME^%ZIS,DT^DICRW
	KILL ^UTILITY($J)
	S ^UTILITY($J,"XBLFSETS")=""
	D EN^XBRPTL
	KILL ^UTILITY($J)
	; --- Get file(s).
	D ^XBDSET
	Q:'$D(^UTILITY("XBDSET",$J))
	S XBIHS=$$DIR^XBDIR("N^500:999:0","Enter the beginning CodeSet ID number",500,"The response must be a number")
	Q:Y="^"
	; --- Select device.
	W !
	S %ZIS="Q",ZTSAVE("^UTILITY(""XBDSET"",$J,")="",ZTSAVE("XBIHS")=""
	D EN^XUTMDEVQ("EN^XBLFSETS","List File Sets",.ZTSAVE,.%ZIS)
	D EN^XBVK("ZT")
	Q
	;
EN	;EP - from TaskMan.
VARS	;;F,N,X,W;Single-char work vars.
	; F:File #
	NEW XBQFLG,@($P($T(VARS),";",3))
	S (XBQFLG,F)=0
	F  S F=$O(^UTILITY("XBDSET",$J,F)) Q:F'=+F  D PAGE Q:XBQFLG  D FIELDS(F) Q:XBQFLG
	D ^%ZISC
	Q
	;
FIELDS(F)	; Process fields in File F.
	NEW X,XB
	S XB=0
	F  S XB=$O(^DD(F,XB)) Q:'(XB=+XB)  D  D:$Y>(IOSL-3) PAGE Q:XBQFLG
	. I $E($P($G(^DD(F,XB,0)),"^",1))="*" Q  ; field is deprecated.
	. I $P(^DD(F,XB,0),"^",2) D FIELDS($P(^(0),"^",2)) Q  ; Recurse sub-file.
	. S X=$$TYPE($P($G(^DD(F,XB,0)),"^",2))
	. I X'="SET" Q  ; Process only SETs.
	. I $P($$FINFO(F,XB),"<",2)="1:YES|0:NO|>" Q  ; Skip Y/N fields.
	. ; CodeSetID;Acronym;Name;Requirement;Source
	. S XBIHS=XBIHS+1
	. W "IHS"_$J(XBIHS,3,0)_";;"_$P($G(^DD(F,XB,0)),"^",1)_";;;"
	. ; Information;Note;DataType;MinSize;MaxSize;File #;Field #
	. W $$DESC(F,XB)_";"_$$FINFO(F,XB)_";"_$$TYPE($P($G(^DD(F,XB,0)),"^",2))_";;;"_F_";"_XB_";"
	. W !
	. Q
	Q
	;
DESC(N,F)	; Field DESCRIPTION and Help-Prompt. N=File, F=Field
	NEW X,XB
	S X=""
	S X="File Number "_N_", '"_$$FNAME^XBFUNC(N)_"', Field # "_F_", In Global "_$$FGLOB^XBFUNC(N)_", DESCRIPTION <"
	F XB=0:0 S XB=$O(^DD(N,F,21,XB)) Q:'XB  S X=X_$G(^(XB,0))
	S X=X_"> HELP-PROMPT <"_$G(^DD(N,F,3))_">"
	Q X
	;
TYPE(P)	; Return TYPE of field. Input is the 2nd piece of the 0th node.
	NEW W
	F W="BOOLEAN","COMPUTED","FREE TEXT","SET","DATE","NUMBER","POINTER","K","Z" I P[$E(W) Q
	Q $S(W'="Z":W,1:"?")
	;
FINFO(N,F)	; Return SET values, or Pointed-To. N=File, F=Field
	NEW T
	S T=$$TYPE($P(^DD(N,F,0),"^",2))
	I T="SET" Q "Values <"_$TR($P($G(^DD(N,F,0)),"^",3),";","|")_">"
	I T="POINTER" Q " Points to "_$$FNAME^XBFUNC(+$P($P(^DD(N,F,0),"^",2),"P",2))_" file"
	Q "?"
	;
PAGE	; PAGE BREAK
	NEW F,G,N,X
	I IO=IO(0),$E(IOST,1,2)="C-" S XBQFLG='$$DIR^XBDIR("E") I 'XBQFLG W @IOF
	Q
	;
