Skip to content

onconova.interoperability.fhir.schemas.comorbidities

ComorbiditiesProfile

Bases: OnconovaFhirBaseSchema, OnconovaComorbidities

__model__ class-attribute instance-attribute

__schema__ class-attribute instance-attribute

fhir_to_onconova(obj) classmethod

Source code in onconova/interoperability/fhir/schemas/comorbidities.py
@classmethod
def fhir_to_onconova(
    cls, obj: fhir.OnconovaComorbidities
) -> schemas.ComorbiditiesAssessmentCreate:
    return schemas.ComorbiditiesAssessmentCreate(
        externalSource=None,
        externalSourceId=None,
        caseId=obj.fhirpath_single(
            "Observation.subject.reference.getValue()"
        ).replace("Patient/", ""),
        date=obj.fhirpath_single("Observation.effectiveDateTime.getValue()"),
        indexConditionId=obj.fhirpath_single(
            "Observation.focus.reference.getValue()"
        ).replace("Condition/", ""),
        panel=(
            cls.map_to_internal("panel", panel)
            if (panel := obj.fhirpath_single("Observation.method.coding"))
            else None
        ),
        presentConditions=(
            [
                CodedConcept.model_validate(condition.model_dump())
                for condition in conditions
            ]
            if (
                conditions := obj.fhirpath_values(
                    "Observation.extension('http://hl7.org/fhir/us/mcode/StructureDefinition/mcode-related-condition').valueCodeableConcept.coding"
                )
            )
            else None
        ),
        absentConditions=(
            [
                CodedConcept.model_validate(condition.model_dump())
                for condition in conditions
            ]
            if (
                conditions := obj.fhirpath_values(
                    "Observation.extension('http://hl7.org/fhir/us/mcode/StructureDefinition/mcode-related-condition-absent').valueCodeableConcept.coding"
                )
            )
            else None
        ),
    )

onconova_to_fhir(obj) classmethod

Source code in onconova/interoperability/fhir/schemas/comorbidities.py
@classmethod
def onconova_to_fhir(
    cls, obj: schemas.ComorbiditiesAssessment
) -> fhir.OnconovaComorbidities:
    resource = fhir.OnconovaComorbidities.model_construct()
    resource.extension = resource.extension or []
    resource.id = str(obj.id)
    resource.text = Narrative(
        status="generated",
        div=f'<div xmlns="http://www.w3.org/1999/xhtml">{obj.description}</div>',
    )
    resource.effectiveDateTime = obj.date.isoformat()
    resource.subject = Reference(
        reference=f"Patient/{obj.caseId}",
    )
    resource.focus = [
        Reference(
            reference=f"Condition/{obj.indexConditionId}",
        )
    ]
    if obj.panel:
        resource.method = construct_fhir_codeable_concept(
            cls.map_to_fhir("panel", obj.panel)
        )
    if obj.score is not None:
        resource.valueQuantity = fhir.OnconovaComorbiditiesValueQuantity(
            value=obj.score, code="1", system="http://unitsofmeasure.org"
        )
    for condition in obj.presentConditions or []:
        resource.extension.append(
            fhir.RelatedCondition(
                valueCodeableConcept=construct_fhir_codeable_concept(condition)
            )
        )
    for condition in obj.absentConditions or []:
        resource.extension.append(
            fhir.RelatedConditionAbsent(
                valueCodeableConcept=construct_fhir_codeable_concept(condition)
            )
        )
    return resource
runner