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

BDMGTA.m

Go to the documentation of this file.
BDMGTA ; cmi/anch/maw - BDM DMS GUI Table Lookup ;
 ;;2.0;BDM DIABETES MANAGEMENT SYSTEM;**1,4,8**;JUN 14, 2007;Build 53
 ;
 ;
DEBUG(BDMRET,BDMSTR) ;-- debug entry point for Serenji
 D DEBUG^%Serenji("ICD^BDMGT(.BDMRET,.BDMSTR)")
 Q
 ;
DEBUGR(BDMRET) ;-- single entry point debugger
 D DEBUG^%Serenji("ICD^BDMGT(.BDMRET)")
 Q
 ;
MSR(BDMRET) ;-- measurement type
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N BDMMST,BDMMSA,BDMMS,BDMMSTE,BDMI,BDMERR,BDMIEN
 K ^BDMTMP($J)
 S BDMRET="^BDMTMP("_$J_")"
 S BDMI=0
 S BDMERR=""
 S ^BDMTMP($J,BDMI)="T00080MSR"_$C(30)
 S BDMMST=0 F  S BDMMST=$O(^AUTTMSR(BDMMST)) Q:'BDMMST  D
 . S BDMI=BDMI+1
 . S BDMMSA=$P($G(^AUTTMSR(BDMMST,0)),U)
 . S BDMMS=$P($G(^AUTTMSR(BDMMST,0)),U,2)
 . S ^BDMTMP($J,BDMI)=BDMMS_$C(30)
 S ^BDMTMP($J,BDMI+1)=$C(31)_$G(BDMERR)
 Q
 ;
IMM(BDMRET) ;-- immunization table
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N BDMIMM,BDMI,BDMERR,BDMIEN
 K ^BDMTMP($J)
 S BDMRET="^BDMTMP("_$J_")"
 S BDMI=0
 S BDMERR=""
 S ^BDMTMP($J,BDMI)="T00080IMM"_$C(30)
 S BDMIMM=0 F  S BDMIMM=$O(^AUTTIMM("D",BDMIMM)) Q:BDMIMM=""  D
 . S BDMIEN=0 F  S BDMIEN=$O(^AUTTIMM("D",BDMIMM,BDMIEN)) Q:'BDMIEN  D
 .. Q:$P($G(^AUTTIMM(BDMIEN,0)),U,7)
 .. S BDMI=BDMI+1
 .. S ^BDMTMP($J,BDMI)=BDMIMM_$C(30)
 S ^BDMTMP($J,BDMI+1)=$C(31)_$G(BDMERR)
 Q
 ;
FLU(BDMRET) ;-- flu immunization table
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N BDMIMM,BDMI,BDMERR,BDMIEN
 K ^BDMTMP($J)
 S BDMRET="^BDMTMP("_$J_")"
 S BDMI=0
 S BDMERR=""
 S ^BDMTMP($J,BDMI)="T00080IMM"_$C(30)
 S BDMI=1
 S BDMIMM=0 F  S BDMIMM=$O(^AUTTIMM("D",BDMIMM)) Q:BDMIMM=""  D
 . S BDMIEN=0 F  S BDMIEN=$O(^AUTTIMM("D",BDMIMM,BDMIEN)) Q:'BDMIEN  D
 .. ;Q:$P($G(^AUTTIMM(BDMIEN,0)),U,7)
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=15 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=16 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=88 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=111 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=135 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=140 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=141 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 S ^BDMTMP($J,BDMI)=$C(31)_$G(BDMERR)
 Q
 ;
PNU(BDMRET) ;-- pneumovax immunization table
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N BDMIMM,BDMI,BDMERR,BDMIEN
 K ^BDMTMP($J)
 S BDMRET="^BDMTMP("_$J_")"
 S BDMI=0
 S BDMERR=""
 S ^BDMTMP($J,BDMI)="T00080IMM"_$C(30)
 S BDMI=1
 S BDMIMM=0 F  S BDMIMM=$O(^AUTTIMM("D",BDMIMM)) Q:BDMIMM=""  D
 . S BDMIEN=0 F  S BDMIEN=$O(^AUTTIMM("D",BDMIMM,BDMIEN)) Q:'BDMIEN  D
 .. ;Q:$P($G(^AUTTIMM(BDMIEN,0)),U,7)
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=33 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=100 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=109 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=133 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 S ^BDMTMP($J,BDMI)=$C(31)_$G(BDMERR)
 Q
 ;
HEP(BDMRET) ;-- hepb immunization table
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N BDMIMM,BDMI,BDMERR,BDMIEN
 K ^BDMTMP($J)
 S BDMRET="^BDMTMP("_$J_")"
 S BDMI=0
 S BDMERR=""
 S ^BDMTMP($J,BDMI)="T00080IMM"_$C(30)
 S BDMI=1
 S BDMIMM=0 F  S BDMIMM=$O(^AUTTIMM("D",BDMIMM)) Q:BDMIMM=""  D
 . S BDMIEN=0 F  S BDMIEN=$O(^AUTTIMM("D",BDMIMM,BDMIEN)) Q:'BDMIEN  D
 .. ;Q:$P($G(^AUTTIMM(BDMIEN,0)),U,7)
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=8 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=42 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=43 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=44 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=45 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=51 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=52 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=102 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=104 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 S ^BDMTMP($J,BDMI)=$C(31)_$G(BDMERR)
 Q
 ;
TD(BDMRET) ;-- td immunization table
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N BDMIMM,BDMI,BDMERR,BDMIEN
 K ^BDMTMP($J)
 S BDMRET="^BDMTMP("_$J_")"
 S BDMI=0
 S BDMERR=""
 S ^BDMTMP($J,BDMI)="T00080IMM"_$C(30)
 S BDMI=1
 S BDMIMM=0 F  S BDMIMM=$O(^AUTTIMM("D",BDMIMM)) Q:BDMIMM=""  D
 . S BDMIEN=0 F  S BDMIEN=$O(^AUTTIMM("D",BDMIMM,BDMIEN)) Q:'BDMIEN  D
 .. ;Q:$P($G(^AUTTIMM(BDMIEN,0)),U,7)
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=1 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=9 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=20 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=22 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=28 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=35 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=50 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=106 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=107 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=110 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=113 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=115 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=120 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=130 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=132 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=138 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 .. I $P($G(^AUTTIMM(BDMIEN,0)),U,3)=139 S ^BDMTMP($J,BDMI)=BDMIMM_$C(30),BDMI=BDMI+1
 S ^BDMTMP($J,BDMI)=$C(31)_$G(BDMERR)
 Q
 ;
SKT(BDMRET) ;-- skin test table
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N BDMSKT,BDMI,BDMERR,BDMIEN
 K ^BDMTMP($J)
 S BDMRET="^BDMTMP("_$J_")"
 S BDMI=0
 S BDMERR=""
 S ^BDMTMP($J,BDMI)="T00080SKT"_$C(30)
 S BDMSKT=0 F  S BDMSKT=$O(^AUTTSK("B",BDMSKT)) Q:BDMSKT=""  D
 . S BDMIEN=0 F  S BDMIEN=$O(^AUTTSK("B",BDMSKT,BDMIEN)) Q:'BDMIEN  D
 .. S BDMI=BDMI+1
 .. S ^BDMTMP($J,BDMI)=BDMSKT_$C(30)
 S ^BDMTMP($J,BDMI+1)=$C(31)_$G(BDMERR)
 Q
 ;
DXP(BDMRET) ;-- diagnostic procedure result
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N BDMDXP,BDMI,BDMERR,BDMIEN
 K ^BDMTMP($J)
 S BDMRET="^BDMTMP("_$J_")"
 S BDMI=0
 S BDMERR=""
 S ^BDMTMP($J,BDMI)="T00080DXP"_$C(30)
 S BDMDXP=0 F  S BDMDXP=$O(^AUTTDXPR("B",BDMDXP)) Q:BDMDXP=""  D
 . S BDMIEN=0 F  S BDMIEN=$O(^AUTTDXPR("B",BDMDXP,BDMIEN)) Q:'BDMIEN  D
 .. S BDMI=BDMI+1
 .. S ^BDMTMP($J,BDMI)=BDMDXP_$C(30)
 S ^BDMTMP($J,BDMI+1)=$C(31)_$G(BDMERR)
 Q
 ;
XAM(BDMRET) ;-- exam table
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N BDMXAM,BDMI,BDMERR,BDMIEN
 K ^BDMTMP($J)
 S BDMRET="^BDMTMP("_$J_")"
 S BDMI=0
 S BDMERR=""
 S ^BDMTMP($J,BDMI)="T00080XAM"_$C(30)
 S BDMXAM=0 F  S BDMXAM=$O(^AUTTEXAM("B",BDMXAM)) Q:BDMXAM=""  D
 . S BDMIEN=0 F  S BDMIEN=$O(^AUTTEXAM("B",BDMXAM,BDMIEN)) Q:'BDMIEN  D
 .. S BDMI=BDMI+1
 .. S ^BDMTMP($J,BDMI)=BDMXAM_$C(30)
 S ^BDMTMP($J,BDMI+1)=$C(31)_$G(BDMERR)
 Q
 ;
RAD(BDMRET) ;-- rad table
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N BDMRAD,BDMI,BDMERR,BDMIEN
 K ^BDMTMP($J)
 S BDMRET="^BDMTMP("_$J_")"
 S BDMI=0
 S BDMERR=""
 S ^BDMTMP($J,BDMI)="T00080RAD"_$C(30)
 S BDMRAD=0 F  S BDMRAD=$O(^RAMIS(71,"B",BDMRAD)) Q:BDMRAD=""  D
 . S BDMIEN=0 F  S BDMIEN=$O(^RAMIS(71,"B",BDMRAD,BDMIEN)) Q:'BDMIEN  D
 .. S BDMI=BDMI+1
 .. S ^BDMTMP($J,BDMI)=BDMRAD_$C(30)
 S ^BDMTMP($J,BDMI+1)=$C(31)_$G(BDMERR)
 Q
 ;
RFL(BDMRET) ;-- refusal types
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N BDMRFL,BDMI,BDMERR,BDMIEN
 K ^BDMTMP($J)
 S BDMRET="^BDMTMP("_$J_")"
 S BDMI=0
 S BDMERR=""
 S ^BDMTMP($J,BDMI)="T00080REFUSAL"_$C(30)
 S BDMRFL=0 F  S BDMRFL=$O(^AUTTREFT("B",BDMRFL)) Q:BDMRFL=""  D
 . S BDMIEN=0 F  S BDMIEN=$O(^AUTTREFT("B",BDMRFL,BDMIEN)) Q:'BDMIEN  D
 .. S BDMI=BDMI+1
 .. S ^BDMTMP($J,BDMI)=BDMRFL_$C(30)
 S ^BDMTMP($J,BDMI+1)=$C(31)_$G(BDMERR)
 Q
 ;
TAX(BDMRET,BDMSTR) ;-- generic taxonomy table
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N P,BDMRFL,BDMI,BDMERR,BDMIEN,BDMTAXE,BDMTAX,BDMDA,BDMNONC,BDMXRF
 N BDMGL,BDMGRF,BDMP
 S P="|"
 I $P(BDMSTR,P)="Lab" D LABTAX(.BDMRET,.BDMSTR) Q
 I $P(BDMSTR,P)="LAB" D LTAX(.BDMRET) Q
 K ^BDMTMP($J)
 S BDMRET="^BDMTMP("_$J_")"
 S BDMI=0
 S BDMERR=""
 S ^BDMTMP($J,BDMI)="T00080TAXONOMY"_$C(30)
 I $P(BDMSTR,P)="MED" D MEDBLD
 F BDMP=3:1 S BDMTAXE=$P(BDMSTR,P,BDMP) Q:$G(BDMTAXE)=""  D
 . Q:$G(BDMTAXE)=""
 . ;S BDMTAXE=$P(BDMSTR,P)
 . S BDMTAX=$O(^ATXAX("B",BDMTAXE,0))
 . Q:'$G(BDMTAX)
 . S BDMNONC=$P($G(^ATXAX(BDMTAX,0)),U,13)
 . S BDMXRF=$P($G(^ATXAX(BDMTAX,0)),U,14)
 . S BDMFL=$P($G(^ATXAX(BDMTAX,0)),U,15)
 . ;I $G(BDMXRF)="" S BDMXRF="B"
 . I BDMFL=80 S BDMXRF="BA"  ;icd diagnosis x ref
 . I BDMFL=80.1 S BDMXRF="BA"  ;icd op and proc xref
 . ;I $G(BDMXRF)="" S BDMXRF="B"
 . S BDMGL=$G(^DIC(BDMFL,0,"GL"))
 . S BDMDA=0 F  S BDMDA=$O(^ATXAX(BDMTAX,21,BDMDA)) Q:'BDMDA  D
 .. N BDML,BDMH
 .. S BDMI=BDMI+1
 .. S BDML=$P($G(^ATXAX(BDMTAX,21,BDMDA,0)),U)
 .. S BDMH=$P($G(^ATXAX(BDMTAX,21,BDMDA,0)),U,2)
 .. I (BDML=BDMH)!($G(BDMH)="") D  Q
 ... I $G(BDMXRF)="" D  Q
 .... S BDMGRF=BDMGL_""""_BDML_""""_")"
 .... S ^BDMTMP($J,BDMI)=$P($G(@BDMGRF@(0)),U)_$C(30)
 ... S ^BDMTMP($J,BDMI)=BDML_$C(30)
 .. S BDMGRF=BDMGL_""""_BDMXRF_""")"
 .. N BDMIEN
 .. S BDMIEN=$O(@BDMGRF@(BDML),-1)
 .. F  S BDMIEN=$O(@BDMGRF@(BDMIEN)) Q:BDMIEN>BDMH  D
 ... S BDMI=BDMI+1
 ... S ^BDMTMP($J,BDMI)=BDMIEN_$C(30)
 S ^BDMTMP($J,BDMI+1)=$C(31)_$G(BDMERR)
 Q
 ;
LABTAX(BDMRET,BDMSTR) ;-- return the lab taxonomy
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N P,BDMRFL,BDMI,BDMERR,BDMIEN,BDMTAXE,BDMTAX,BDMDA,BDMNONC,BDMXRF
 N BDMGL,BDMGRF,BDMP
 S P="|"
 K ^BDMTMP($J)
 S BDMRET="^BDMTMP("_$J_")"
 S BDMI=0
 S BDMERR=""
 S ^BDMTMP($J,BDMI)="T00080LABTAXONOMY"_$C(30)
 F BDMP=3:1 S BDMTAXE=$P(BDMSTR,P,BDMP) Q:$G(BDMTAXE)=""  D
 . Q:$G(BDMTAXE)=""
 . ;S BDMTAXE=$P(BDMSTR,P)
 . S BDMTAX=$O(^ATXLAB("B",BDMTAXE,0))
 . Q:'$G(BDMTAX)
 . S BDMNONC=$P($G(^ATXLAB(BDMTAX,0)),U,13)
 . S BDMXRF=$P($G(^ATXLAB(BDMTAX,0)),U,14)
 . S BDMFL=60
 . S BDMGL=$G(^DIC(BDMFL,0,"GL"))
 . S BDMDA=0 F  S BDMDA=$O(^ATXLAB(BDMTAX,21,BDMDA)) Q:'BDMDA  D
 .. N BDML,BDMH
 .. S BDMI=BDMI+1
 .. S BDML=$P($G(^ATXLAB(BDMTAX,21,BDMDA,0)),U)
 .. S BDMH=$P($G(^ATXLAB(BDMTAX,21,BDMDA,0)),U,2)
 .. I (BDML=BDMH)!($G(BDMH)="") D  Q
 ... I $G(BDMXRF)="" D  Q
 .... S BDMGRF=BDMGL_""""_BDML_""""_")"
 .... S ^BDMTMP($J,BDMI)=$P($G(@BDMGRF@(0)),U)_$C(30)
 ... S ^BDMTMP($J,BDMI)=BDML_$C(30)
 .. S BDMGRF=BDMGL_""""_BDMXRF_""")"
 .. N BDMIEN
 .. S BDMIEN=$O(@BDMGRF@(BDML),-1)
 .. F  S BDMIEN=$O(@BDMGRF@(BDMIEN)) Q:BDMIEN>BDMH  D
 ... S BDMI=BDMI+1
 ... S ^BDMTMP($J,BDMI)=BDMIEN_$C(30)
 S ^BDMTMP($J,BDMI+1)=$C(31)_$G(BDMERR)
 Q
 ;
LTAX(BDMRET) ;-- generic lab taxonomy table
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N P,BDMRFL,BDMI,BDMERR,BDMIEN,BDMTAXE,BDMTAX,BDMDA,BDMNONC,BDMXRF
 N BDMGL,BDMGRF,BDMP,BDMPKG,BDMTDA,BDMPKGI
 S P="|"
 K ^BDMTMP($J)
 S BDMRET="^BDMTMP("_$J_")"
 S BDMI=0
 S BDMERR=""
 S BDMPKG=$P(BDMSTR,P,2)
 S BDMPKGI=$O(^DIC(9.4,"C",BDMPKG,0))
 S ^BDMTMP($J,BDMI)="T00080LABTAXONOMY"_$C(30)
 S BDMTAX=0 F  S BDMTAX=$O(^ATXLAB("APKG",BDMPKGI,BDMTAX)) Q:'BDMTAX  D
 . ;S BDMTAX=0 F  S BDMTAX=$O(^ATXLAB(BDMTAX)) Q:'BDMTAX  D
 . ;S BDMTAX=$P($G(^ATXLAB(BDMP,0)),U)
 . ;Q:$E($P($G(^ATXLAB(BDMTAX,0)),U),1,2)'="DM"
 . ;S BDMTAXE=$P(BDMSTR,P)
 . ;S BDMTAX=$O(^ATXLAB("B",BDMTAXE,0))
 . ;Q:'$G(BDMTAX)
 . S BDMXRF=$P($G(^ATXLAB(BDMTAX,0)),U,8)
 . I $G(BDMXRF)="" S BDMXRF="B"
 . S BDMFL=$P($G(^ATXLAB(BDMTAX,0)),U,9)
 . S BDMGL=$G(^DIC(BDMFL,0,"GL"))
 . S BDMDA=0 F  S BDMDA=$O(^ATXLAB(BDMTAX,21,BDMDA)) Q:'BDMDA  D
 .. N BDML,BDMH
 .. S BDMI=BDMI+1
 .. S BDML=$P($G(^ATXLAB(BDMTAX,21,BDMDA,0)),U)
 .. S BDMGRF=BDMGL_""""_BDML_""""_")"
 .. N BDMIEN
 .. S BDMI=BDMI+1
 .. S ^BDMTMP($J,BDMI)=$P($G(@BDMGRF@(0)),U)_$C(30)
 S ^BDMTMP($J,BDMI+1)=$C(31)_$G(BDMERR)
 Q
 ;
MEDBLD ;-- setup BDMSTR for medication taxonomy
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N BDMTDA,BDMI,BDMPKG,BDMPKGI
 S BDMI=1
 S BDMPKG=$P(BDMSTR,P,2)
 S BDMPKGI=$O(^DIC(9.4,"C",BDMPKG,0))
 S BDMTDA=0 F  S BDMTDA=$O(^ATXAX(BDMTDA)) Q:'BDMTDA  D
 . ;S BDMTDA=0 F  S BDMTDA=$O(^ATXAX(BDMTDA)) Q:'BDMTDA  D
 . ;Q:$E($P($G(^ATXAX(BDMTDA,0)),U),1,2)'="DM"
 . Q:$P($G(^ATXAX(BDMTDA,0)),U,15)'=50
 . S BDMI=BDMI+1
 . S $P(BDMSTR,P,BDMI)=$P($G(^ATXAX(BDMTDA,0)),U)
 Q
 ;
GETTAX(BDMRET,BDMSTR) ;-- get taxonomies based on user selection
 S X="MERR^BDMGU",@^%ZOSF("TRAP") ; m error trap
 N BDMDA,BDMI,P,BDMPKG,BDMPKGI,BDMI
 S P="|"
 K ^BDMTMP($J)
 S BDMRET="^BDMTMP("_$J_")"
 S BDMI=0
 S BDMERR=""
 S BDMPKG=$P(BDMSTR,P)
 S BDMPKGI=$O(^DIC(9.4,"C",BDMPKG,0))
 S ^BDMTMP($J,BDMI)="T00080TAXONOMIES"_$C(30)
 S BDMDA=0 F  S BDMDA=$O(^ATXAX("APKG",BDMPKGI,BDMDA)) Q:'BDMDA  D
 . N BDMTAX,BDMRO,BDMFL
 . S BDMTAX=$P($G(^ATXAX(BDMDA,0)),U)
 . S BDMRO=$S($P($G(^ATXAX(BDMDA,0)),U,22):"Read Only",1:"Editable")
 . S BDMFL=$P($G(^ATXAX(BDMDA,0)),U,15)
 . S ^BDMTMP("TAX",$J,BDMFL,BDMTAX)=BDMRO_U_$S(BDMFL=50:"Med",1:"Tax")
 S BDMDA=0 F  S BDMDA=$O(^ATXLAB("APKG",BDMPKGI,BDMDA)) Q:'BDMDA  D
 . N BDMTAX,BDMRO,BDMFL
 . S BDMTAX=$P($G(^ATXLAB(BDMDA,0)),U)
 . S BDMRO=$S($P($G(^ATXLAB(BDMDA,0)),U,22):"Read Only",1:"Editable")
 . S BDMFL=$P($G(^ATXLAB(BDMDA,0)),U,9)
 . S ^BDMTMP("TAX",$J,BDMFL,BDMTAX)=BDMRO_U_"Lab"
 S BDMDA=0 F  S BDMDA=$O(^BDMTMP("TAX",$J,BDMDA)) Q:BDMDA=""  D
 . N BDMIEN
 . S BDMIEN=0 F  S BDMIEN=$O(^BDMTMP("TAX",$J,BDMDA,BDMIEN)) Q:BDMIEN=""  D
 .. S BDMI=BDMI+1
 .. S BDMRO=$G(^BDMTMP("TAX",$J,BDMDA,BDMIEN))
 .. S ^BDMTMP($J,BDMI)=BDMIEN_"("_$P(BDMRO,U)_"/"_$P(BDMRO,U,2)_"/"_BDMDA_")"_$C(30)
 S ^BDMTMP($J,BDMI+1)=$C(31)_$G(BDMERR)
 K ^BDMTMP("TAX",$J)
 Q
 ;