How BiomedicalConceptProperty values are generated in v1.4 #255
pendingintent
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
This discussion documents the BiomedicalConceptProperty (BCP) generation workflow as resolved in issue #218 and implemented in v1.4.
Source of Property Data
BCPs are populated from two alternative sources depending on whether a SDTM Dataset Specialization (DSS) is associated with the Biomedical Concept:
SDTM path (preferred): When the user has associated a DSS with a BC, the generator iterates the DSS
variables[]array and creates one BCP for each variable that:dataElementConceptIdlinking it to a specific Data Element Concept (DEC) in the BCGeneric path (fallback): When no DSS is associated, the generator iterates the BC
sdataElementConcepts[]` array directly, creating one BCP per DEC.Operational Variable Exclusion List
The exclusion list is based on the reference implementation by Dave Iberson-Hurst in
usdm_excel/cdisc_bc_library.py(_process_propertymethod). Variables whose suffix (after the 2-character domain prefix) appears in this list are not included as BCPs:The variable name
EPOCHis also excluded unconditionally.These are operational SDTM variables that carry derived, standardized, or classification values — not the conceptual properties of the measurement itself.
BCP Attribute Mapping
nameshortName(generic path)labelnameisRequiredmandatoryValuefrom DSS variable (SDTM path) orTrue(generic path)isEnabledTruedatatypedataTypefirst, then DECdataType(SDTM); DECdataType(generic)code.standardCode.codeconceptId(NCIT C-code)code.standardCode.codeSystemhttp://www.cdisc.orgcode.standardCode.codeSystemVersionparentPackagehrefcode.standardCode.decodeshortNameresponseCodesassignedTerm(whenconceptIdandvalueboth present)Key Design Decisions
LBTESTCDthat identify the test (pointing back to the BC itself) are intentionally excluded. Only variables that reference a distinct DEC — representing an independent conceptual property — become BCPs.dataTypetakes priority over DECdataType. The specialization can specify a more precise numeric type (e.g.,float) than the BCs generic DEC (e.g.,string). This follows Daves reference implementation.isRequiredreflectsmandatoryValue. Unlike the reference implementation (which hardcodesTrue), the workbench preserves the distinction between mandatory and optional properties from the SDTM specialization.Validation
The implementation is covered by
tests/test_generate_biomedical_concept_properties.py(23 tests) including explicit assertions that the exclusion list matches the reference implementation incdisc_bc_library.py.Related discussions resolved: #147, #196, #209
Implementation issue: #218
All reactions