DGUTL4 ;BPFO/JRP - RACE & ETHNIC UTILITIES;9/5/2002 ;;5.3;Registration;**415**;Aug 13, 1993 ; PTR2TEXT(VALUE,TYPE) ;Convert pointer to text (.01 field) ;Input: VALUE - Pointer to RACE file (#10), ETHNICITY file (#10.2), ; or RACE AND ETHNICITY COLLECTION METHOD file (#10.3) ; TYPE - Flag indicating which file VALUE is for ; 1 = Race (default) ; 2 = Ethnicity ; 3 = Collection Method ;Output: Text (.01 field) ;Notes : NULL ("") returned on bad input or if there is no code ; ;Check input S VALUE=+$G(VALUE) I 'VALUE Q "" S TYPE=$G(TYPE) S:(TYPE'?1N) TYPE=1 S:((TYPE<1)!(TYPE>3)) TYPE=1 ;Declare variables N FILE,NODE ;Grab zero node S FILE=$S(TYPE=3:$NA(^DIC(10.3)),TYPE=2:$NA(^DIC(10.2)),1:$NA(^DIC(10))) S NODE=$G(@FILE@(VALUE,0)) ;Return text Q $P(NODE,"^",1) ; INACTIVE(VALUE,TYPE) ;Entry marked as inactive ? ;Input: VALUE - Pointer to RACE file (#10) or ETHNICITY file (#10.2) ; TYPE - Flag indicating which file VALUE is for ; 1 = Race (default) ; 2 = Ethnicity ;Output: 0 - Entry not inactive ; 1^Date - Entry inactive (Date in FileMan format) ;Notes : 0 (zero) returned on bad input ; : Collection methods can not currently be inactivated ; ;Check input S VALUE=+$G(VALUE) I 'VALUE Q "" S TYPE=$G(TYPE) S:(TYPE'?1N) TYPE=1 S:((TYPE<1)!(TYPE>2)) TYPE=1 ;Declare variables N FILE,NODE,DATE ;Grab inactivation node S FILE=$S(TYPE=2:$NA(^DIC(10.2)),1:$NA(^DIC(10))) S NODE=$G(@FILE@(VALUE,.02)) ;Grab inactivation date S DATE=$P(NODE,"^",2) ;Not inactive I (('NODE)&('DATE)) Q 0 ;Inactive - include inactivation date Q "1^"_DATE ; PTR2CODE(VALUE,TYPE,CODE) ;Convert pointer to specified code ;Input: VALUE - Pointer to RACE file (#10), ETHNICITY file (#10.2), ; or RACE AND ETHNICITY COLLECTION METHOD file (#10.3) ; TYPE - Flag indicating which file VALUE is for ; 1 = Race (default) ; 2 = Ethnicity ; 3 = Collection Method ; CODE - Flag indicating which code to return ; 1 = Abbreviation (default) ; 2 = HL7 ; 3 = CDC (not applicable for Collection Method) ; 4 = PTF ;Output: Requested code ;Notes : NULL ("") returned on bad input or if there is no code ; ;Check input S VALUE=+$G(VALUE) I 'VALUE Q "" S TYPE=$G(TYPE) S:(TYPE'?1N) TYPE=1 S:((TYPE<1)!(TYPE>3)) TYPE=1 S CODE=$G(CODE) S:(CODE'?1N) CODE=1 S:((CODE<1)!(CODE>4)) CODE=1 ;No CDC code for Collection Method I ((TYPE=3)&(CODE=3)) Q "" ;Declare variables N FILE,NODEREF,NODE,PIECE ;Grab node storing code S FILE=$S(TYPE=3:$NA(^DIC(10.3)),TYPE=2:$NA(^DIC(10.2)),1:$NA(^DIC(10))) S NODEREF=0 S NODE=$G(@FILE@(VALUE,NODEREF)) ;Determine which piece requested code is in S PIECE=CODE+1 ;Return requested code Q $P(NODE,"^",PIECE) ; CODE2PTR(VALUE,TYPE,CODE) ;Convert specified code to pointer ;Input: VALUE - Code to convert ; TYPE - Flag indicating which file VALUE is from ; 1 = Race (file #10) (default) ; 2 = Ethnicity (file #10.2) ; 3 = Collection Method (file #10.3) ; CODE - Flag indicating which code VALUE is for ; 1 = Abbreviation (default) ; 2 = HL7 ; 3 = CDC (not applicable for Collection Method) ; 4 = PTF ;Output: Pointer to file ;Notes : 0 (zero) returned on bad input or if an entry can't be found ; ;Check input S VALUE=$G(VALUE) I VALUE="" Q 0 S TYPE=$G(TYPE) S:(TYPE'?1N) TYPE=1 S:((TYPE<1)!(TYPE>3)) TYPE=1 S CODE=$G(CODE) S:(CODE'?1N) CODE=1 S:((CODE<1)!(CODE>4)) CODE=1 ;No CDC code for Collection Method I ((TYPE=3)&(CODE=3)) Q 0 ;Declare variables N PTR,FILE,NODEREF,PIECE,FOUND S FILE=$S(TYPE=3:$NA(^DIC(10.3)),TYPE=2:$NA(^DIC(10.2)),1:$NA(^DIC(10))) ;Abbreviation and HL7 have x-refs I ((CODE=1)!(CODE=2)) D Q PTR .;Get pointer using x-ref .S NODEREF=$S(CODE=2:"AHL7",1:"C") .S PTR=+$O(@FILE@(NODEREF,VALUE,0)) ;CDC and PTF don't have x-refs - loop through file looking for match ;Node & piece code is stored on S NODEREF=0 S PIECE=CODE+1 S FOUND=0 S PTR=0 F S PTR=+$O(@FILE@(PTR)) Q:'PTR D Q:FOUND .S NODE=$G(@FILE@(PTR,NODEREF)) .I $P(NODE,"^",PIECE)=VALUE S FOUND=1 Q PTR