Skip to content

onconova.interoperability.fhir.schemas.therapy_line

TherapyLineProfile

Bases: OnconovaFhirBaseSchema, OnconovaTherapyLine

__model__ class-attribute instance-attribute

__schema__ class-attribute instance-attribute

fhir_to_onconova(obj) classmethod

Source code in onconova/interoperability/fhir/schemas/therapy_line.py
@classmethod
def fhir_to_onconova(
    cls, obj: fhir.OnconovaTherapyLine
) -> schemas.TherapyLineCreate:
    return schemas.TherapyLineCreate(
        externalSource=None,
        externalSourceId=None,
        caseId=obj.fhirpath_single(
            "EpisodeOfCare.patient.reference.getValue()"
        ).replace("Patient/", ""),
        ordinal=obj.fhirpath_single(
            "EpisodeOfCare.extension('http://onconova.github.io/fhir/StructureDefinition/onconova-ext-therapy-line-number').valuePositiveInt.getValue()"
        ),
        intent=cls.map_to_internal(
            "intent",
            obj.fhirpath_single(
                "EpisodeOfCare.extension('http://onconova.github.io/fhir/StructureDefinition/onconova-ext-therapy-line-intent').valueCodeableConcept.coding"
            ),
        ),
        progressionDate=obj.fhirpath_single(
            "EpisodeOfCare.extension('http://onconova.github.io/fhir/StructureDefinition/onconova-ext-therapy-line-progression-date').valueDate.getValue()"
        ),
    )

onconova_to_fhir(obj) classmethod

Source code in onconova/interoperability/fhir/schemas/therapy_line.py
@classmethod
def onconova_to_fhir(cls, obj: schemas.TherapyLine) -> fhir.OnconovaTherapyLine:
    resource = fhir.OnconovaTherapyLine.model_construct()
    resource.id = str(obj.id)
    resource.text = Narrative(
        status="generated",
        div=f'<div xmlns="http://www.w3.org/1999/xhtml">{obj.description}</div>',
    )
    resource.patient = Reference(
        reference=f"Patient/{obj.caseId}",
    )
    if obj.period and (obj.period.start or obj.period.end):
        resource.period = Period(
            start=obj.period.start.isoformat() if obj.period.start else None,
            end=obj.period.end.isoformat() if obj.period.end else None,
        )

    resource.extension = [
        fhir.TherapyLineNumber(
            valuePositiveInt=obj.ordinal,
        ),
        fhir.TherapyLineIntent(
            valueCodeableConcept=construct_fhir_codeable_concept(
                cls.map_to_fhir("intent", obj.intent)
            )
        ),
    ]
    if obj.progressionDate is not None:
        resource.extension.append(
            fhir.TherapyLineProgressionDate(
                valueDate=obj.progressionDate.isoformat()
            )
        )
    if obj.progressionFreeSurvival is not None:
        resource.extension.append(
            fhir.TherapyLineProgressionFreeSurvival(
                valueDuration=Duration(
                    value=obj.progressionFreeSurvival,
                    code="mo",
                    system="http://unitsofmeasure.org",
                )
            )
        )
    return resource
runner