Skip to content

onconova.interoperability.fhir.schemas.primary_cancer_condition

PrimaryCancerConditionProfile

Bases: OnconovaFhirBaseSchema, OnconovaPrimaryCancerCondition

__model__ class-attribute instance-attribute

__schema__ class-attribute instance-attribute

fhir_to_onconova(obj) classmethod

Source code in onconova/interoperability/fhir/schemas/primary_cancer_condition.py
@classmethod
def fhir_to_onconova(
    cls, obj: fhir.OnconovaPrimaryCancerCondition
) -> schemas.NeoplasticEntityCreate:
    return schemas.NeoplasticEntityCreate(
        externalSource=None,
        externalSourceId=None,
        relationship=(
            NeoplasticEntityRelationshipChoices.LOCAL_RECURRENCE
            if obj.fhirpath_single(
                "Condition.clinicalStatus.coding.code = 'recurrence' and Condition.clinicalStatus.extension('http://onconova.github.io/fhir/StructureDefinition/onconova-ext-primary-cancer-recurrence-type').valueCodeableConcept.coding.code = '255470001'"
            )
            else (
                NeoplasticEntityRelationshipChoices.REGIONAL_RECURRENCE
                if obj.fhirpath_single(
                    "Condition.clinicalStatus.coding.code = 'recurrence' and Condition.clinicalStatus.extension('http://onconova.github.io/fhir/StructureDefinition/onconova-ext-primary-cancer-recurrence-type').valueCodeableConcept.coding.code = '410674003'"
                )
                else NeoplasticEntityRelationshipChoices.PRIMARY
            )
        ),
        caseId=obj.fhirpath_single(
            "Condition.subject.reference.getValue()"
        ).replace("Patient/", ""),
        topography=CodedConcept.model_validate(
            obj.fhirpath_single("Condition.bodySite.coding").model_dump()
        ),
        morphology=(
            CodedConcept.model_validate(
                obj.fhirpath_single(
                    "Condition.extension('http://hl7.org/fhir/us/mcode/StructureDefinition/mcode-histology-morphology-behavior').valueCodeableConcept.coding"
                ).model_dump()
            )
        ),
        differentitation=(
            CodedConcept.model_validate(coding.model_dump())
            if (
                coding := obj.fhirpath_single(
                    "Condition.extension('http://onconova.github.io/fhir/StructureDefinition/onconova-ext-histological-differentiation').valueCodeableConcept.coding"
                )
            )
            else None
        ),
        relatedPrimaryId=obj.fhirpath_single(
            "Condition.clinicalStatus.extension('http://onconova.github.io/fhir/StructureDefinition/onconova-ext-primary-cancer-recurrence-of').valueReference.reference.getValue().replace('Condition/', '')"
        ),
        laterality=(
            CodedConcept.model_validate(coding.model_dump())
            if (
                coding := obj.fhirpath_single(
                    "Condition.bodySite.extension('http://hl7.org/fhir/us/mcode/StructureDefinition/mcode-laterality-qualifier').valueCodeableConcept.coding"
                )
            )
            else None
        ),
        assertionDate=obj.fhirpath_single(
            "Condition.extension('http://hl7.org/fhir/StructureDefinition/condition-assertedDate').valueDateTime.getValue()"
        ),
    )

onconova_to_fhir(obj) classmethod

Source code in onconova/interoperability/fhir/schemas/primary_cancer_condition.py
@classmethod
def onconova_to_fhir(
    cls, obj: schemas.NeoplasticEntity
) -> fhir.OnconovaPrimaryCancerCondition:
    resource: fhir.OnconovaPrimaryCancerCondition = (
        fhir.OnconovaPrimaryCancerCondition.model_construct()
    )  # type: ignore
    resource.id = str(obj.id)
    resource.subject = Reference(
        reference=f"Patient/{obj.caseId}",
    )
    resource.text = Narrative(
        status="generated",
        div=f'<div xmlns="http://www.w3.org/1999/xhtml">{obj.description}</div>',
    )
    resource.bodySite = [
        fhir.OnconovaPrimaryCancerConditionBodySite(
            coding=construct_fhir_codeable_concept(obj.topography).coding,
            extension=(
                [
                    fhir.LateralityQualifier(
                        valueCodeableConcept=construct_fhir_codeable_concept(
                            obj.laterality
                        )
                    )
                ]
                if obj.laterality
                else None
            ),
        )
    ]
    resource.extension = [
        fhir.HistologyMorphologyBehavior(
            valueCodeableConcept=construct_fhir_codeable_concept(obj.morphology)
        ),
        fhir.AssertedDate(valueDateTime=obj.assertionDate.isoformat()),
    ]
    if obj.differentitation:
        resource.extension.append(
            fhir.HistologicalDifferentiation(
                valueCodeableConcept=construct_fhir_codeable_concept(
                    obj.differentitation
                )
            )
        )
    if obj.relationship == NeoplasticEntityRelationshipChoices.METASTATIC:
        raise ValueError(
            "NeoplasticEntity relationship cannot be 'metastatic' for PrimaryCancerCondition"
        )
    if (
        obj.relationship == NeoplasticEntityRelationshipChoices.LOCAL_RECURRENCE
        or obj.relationship
        == NeoplasticEntityRelationshipChoices.REGIONAL_RECURRENCE
    ):
        resource.clinicalStatus = fhir.OnconovaPrimaryCancerConditionClinicalStatus(
            coding=[
                fhir.Coding(
                    code="recurrence",
                    system="http://terminology.hl7.org/CodeSystem/condition-clinical",
                )
            ],
            extension=[
                fhir.PrimaryCancerRecurrenceType(
                    valueCodeableConcept=fhir.CodeableConcept(
                        coding=[
                            (
                                fhir.Coding(
                                    code="255470001",
                                    display="Local",
                                    system="http://snomed.info/sct",
                                )
                                if obj.relationship
                                == NeoplasticEntityRelationshipChoices.LOCAL_RECURRENCE
                                else fhir.Coding(
                                    code="410674003",
                                    display="Regional",
                                    system="http://snomed.info/sct",
                                )
                            )
                        ]
                    )
                ),
                fhir.PrimaryCancerRecurrenceOf(
                    valueReference=Reference(
                        reference=f"Condition/{obj.relatedPrimaryId}",
                    )
                ),
            ],
        )
    return resource
runner