Skip to content

onconova.oncology.models.performance_status

ECOG_INTEPRETATION module-attribute

KARNOFSKY_INTEPRETATION module-attribute

PerformanceStatus

Bases: BaseModel

Model representing a patient's performance status assessment, supporting both ECOG and Karnofsky scoring systems.

Attributes:

Name Type Description
objects QueryablePropertiesManager

Custom manager for queryable properties.

case ForeignKey[PatientCase]

Reference to the patient case being assessed.

date DateField

Date of the performance status assessment.

ecog_score PositiveSmallIntegerField

ECOG Performance Status Score (0-5).

karnofsky_score PositiveSmallIntegerField

Karnofsky Performance Status Score (0-100).

ecog_interpretation SubqueryObjectProperty[ECOGPerformanceStatusInterpretation]

Interpretation of the ECOG score using standardized terminology.

karnofsky_interpretation SubqueryObjectProperty[KarnofskyPerformanceStatusInterpretation]

Interpretation of the Karnofsky score using standardized terminology.

description str

Returns a string description of the performance status based on available score.

Constraints

Ensures at least one of ECOG or Karnofsky scores is set.

References
  • Oken et al., Am. J. Clin. Oncol. 5(6):649-655, 1982.

case class-attribute instance-attribute

date class-attribute instance-attribute

description property

ecog_interpretation class-attribute instance-attribute

ecog_score class-attribute instance-attribute

karnofsky_interpretation class-attribute instance-attribute

karnofsky_score class-attribute instance-attribute

objects class-attribute instance-attribute

Meta

constraints class-attribute instance-attribute

convert_karnofsky_to_ecog()

Reference

[1] Oken et al., Am. J. Clin. Oncol. 5(6):649-655, 1982.

Source code in onconova/oncology/models/performance_status.py
def convert_karnofsky_to_ecog(self) -> int:
    """
    Reference
    ---------
    [1] Oken et al., Am. J. Clin. Oncol. 5(6):649-655, 1982.
    """
    if self.ecog_score is not None:
        return self.ecog_score
    if self.karnofsky_score:
        if self.karnofsky_score == 100:
            return 0
        elif self.karnofsky_score >= 80:
            return 1
        elif self.karnofsky_score >= 60:
            return 2
        elif self.karnofsky_score >= 40:
            return 3
        elif self.karnofsky_score >= 20:
            return 4
        elif self.karnofsky_score == 0:
            return 5
    raise ValueError("Neither an ECOG nor Karnofksy value exist.")
runner