in src/engine/step5/template_definitions.py [0:0]
def get_descendent_concepts_template_from_vocab_code(schema, vocab, concept_codes):
"""
Renders a pre-defined sub-sql query schema returning a column of `concept_id`s of a specific standard concept with OMOP CDM concept code and its
descendents using the vocabulary `vocab` and the vocab concept code.
Assumption: ICD10 codes don't have ";"
Args:
config (module): General tool configuration.
general_query (str): General SQL query.
args_dict (dict): Dictionary of processed arguments from step 2.
Returns:
str: Rendered query by replacing argument and template placeholders.
Example args
schema = cmsdesynpuf23m
vocab = ICD10
concept_code = A97;G47.00
"""
# support for 1+ codes (drug or condition)
concept_codes_conditions = [
f"concept_code='{concept_code.strip()}'"
for concept_code in concept_codes.split(";")
if concept_code.strip()
]
join_codes_condition = "( " + " OR ".join(concept_codes_conditions) + " )"
out = (
f"( SELECT descendant_concept_id AS concept_id FROM "
+ f"(SELECT * FROM "
+ f"(SELECT concept_id_2 FROM "
+ f"( "
+ f"(SELECT concept_id FROM "
+ f"{schema}.concept WHERE vocabulary_id='{vocab}' AND {join_codes_condition}) "
+ f"JOIN "
+ f"( SELECT concept_id_1, concept_id_2 FROM "
+ f"{schema}.concept_relationship WHERE relationship_id='Maps to' ) "
+ f"ON concept_id=concept_id_1) "
+ f") JOIN {schema}.concept ON concept_id_2=concept_id) "
+ f"JOIN {schema}.concept_ancestor ON concept_id=ancestor_concept_id "
+ f") "
)
return out