Multi-drug Chemotherapy

This section illustrates multi-drug chemotherapy with complex dosing and timing arrangements.

This example is based on the version of RCHOPS-21 documented by NHS Thames Valley Cancer Network.

Limitations

The following elements of the plan are not yet included (mainly for brevity of the example):

  • Vincristine dose modification due to hepatic impairment;

  • Concurrent meds only shown in summarised form;

  • Exception pathways to handle patient reactions not shown.

Plan Definition

The following shows the pre-medication phase.

RCHOPS21 pre
Figure 1. RCHOPS21 pre-med phase

The following shows the main regime, including conditional addition of Rituximab / methotrexate for high IPI patients.

RCHOPS21 admin
Figure 2. RCHOPS21 administration phase

RCHOPS21 Decision Logic Module

dlm RCHOPS21

definitions -- Descriptive

    language = {
        original_language: [ISO_639-1::en]
    }
    ;

    description = {
        lifecycle_state: "unmanaged",
        original_author: {
            name:           "Thomas Beale",
            email:          "thomas.beale@openEHR.org",
            organisation:   "openEHR Foundation <http://www.openEHR.org>",
            date:           "2021-01-10"
        },
        details: {
            "en" : {
                language: [ISO_639-1::en],
                purpose: "NHS CHOPS-21 chemotherapy guideline ...."
            }
        }
    }
    ;

use
    BSA: Body_surface_area.v0.5.0

preconditions
    has_lymphoma_diagnosis

definitions -- Reference

    paracetamol_dose: Quantity = 1g;
    chlorphenamine_dose: Quantity = 10mg;
    prednisolone_dose_per_m2: Quantity = 40mg;
    rituximab_dose_per_m2: Quantity = 375mg;
    doxorubicin_dose_per_m2: Quantity = 50mg;
    vincristine_dose_per_m2: Quantity = 1.4mg;
    cyclophosphamide_dose_per_m2: Quantity = 750mg;
    cycle_period: Duration = 3w;
    cycle_repeats: Integer = 6;

input -- State

    has_lymphoma_diagnosis: Boolean
        time_window = tw_current_episode

input -- Tracked state

    staging: Terminology_term «ann_arbor_staging»
        currency = 30 days
        time_window = tw_current_episode
        ;

    has_metastases: Boolean
        currency = 30 days
        time_window = tw_current_episode
        ;

    |
    | Neutrophils
    |
    neutrophils: Real
        currency = 3d,
        ranges["/L"] =
            --------------------------------
            |>1 x 10^9|:          #high,
            |0.5 - 1 x 10^9|:     #low,
            |<0.5 x 10^9|:        #very_low
            --------------------------------
        ;

    |
    | Platelets
    |
    platelets: Real
        currency = 12h,
        ranges["/L"] =
            ------------------------------
            |>75 x 10^9|:       #normal,
            |50 - 74 x 10^9|:   #low,
            |<50 x 10^9|:       #very_low
            ------------------------------
        ;

    |
    | Bilirubins
    |
    bilirubin: Real
        currency = 12h,
        ranges["mmol/L"] =
            ----------------------------
            |<20|:          #normal,
            |20 - 51|:      #high,
            |51 - 85|:      #very_high,
            |>85|:          #crit_high
            ---------------------------
        ;

    |
    | Glomerular filtration rate
    |
    gfr: Real
        currency = 24h,
        ranges["mL/min"] =
            ----------------------
            |>20|:      #normal,
            |10 - 20|:  #low,
            |<10|:      #very_low
            ----------------------
        ;

    |
    | Lactate dehydrogenase
    |
    ldh: Real
        currency = 24h,
        ranges["mL/min"] =
            --------------------------
            |>20 |:         #normal,
            |10 - 20|:      #low,
            |<10|:          #very_low
            --------------------------
        ;

rules -- Conditions

    high_ipi:
        Result := ipi_risk ∈ {#ipi_high_risk, #ipi_intermediate_high_risk}
        ;

rules -- Main

    |
    | patient fit to undertake regime
    |
    patient_fit:
        Result := not
            (platelets.in_range (#very_low) or
             neutrophils.in_range (#very_low))
        ;

    prednisolone_dose: Quantity
        Result := prednisolone_dose_per_m2 * BSA.bsa_m2
        ;

    rituximab_dose: Quantity
        Result := rituximab_dose_per_m2 * BSA.bsa_m2
        ;

    doxorubicin_dose: Quantity
        Result := doxorubicin_dose_per_m2 * BSA.bsa_m2
            * case bilirubin.range in
                ====================
                #high:        0.5,
                #very_high:   0.25,
                #crit_high:   0.0
                ====================
        ;

    |
    | TODO: hepatic impairment dose modification
    |
    vincristine_dose: Quantity
        Result := vincristine_dose_per_m2 * BSA.bsa_m2
        ;

    |
    | CHECK: is low platelets and GFR dose modification
    | cumulative?
    |
    cyclophosphamide_dose: Quantity
        Result := cyclophosphamide_dose_per_m2 * BSA.bsa_m2
            * case platelets.range in
                ===================
                #normal:      1,
                #low:         0.75
                ===================
                ;
            * case gfr.range in
                ===================
                #normal:      1,
                #low:         0.75,
                #very_low:    0.5
                ===================
        ;

    |
    | International Prognostic Index
    | ref: https:|en.wikipedia.org/wiki/International_Prognostic_Index
    |
    | One point is assigned for each of the following risk factors:
    |     Age greater than 60 years
    |     Stage III or IV disease
    |     Elevated serum LDH
    |     ECOG/Zubrod performance status of 2, 3, or 4
    |     More than 1 extranodal site
    |
    | The sum of the points allotted correlates with the following risk groups:
    |     Low risk (0-1 points) - 5-year survival of 73%
    |     Low-intermediate risk (2 points) - 5-year survival of 51%
    |     High-intermediate risk (3 points) - 5-year survival of 43%
    |     High risk (4-5 points) - 5-year survival of 26%
    |
    ipi_raw_score: Integer
        Result.add (
            ---------------------------------------------
            age > 60                             ? 1 : 0,
            staging ∈ {#stage_III, #stage_IV} ? 1 : 0,
            ldh.in_range (#normal)              ? 1 : 0,
            ecog > 1                             ? 1 : 0,
            extranodal_sites > 1                 ? 1 : 0
            ---------------------------------------------
        )
        ;

    ipi_risk: Terminology_code
        Result :=
            case ipi_raw_score in
                =======================================
                |0..1|  : #ipi_low_risk,
                |2|     : #ipi_intermediate_low_risk,
                |3|     : #ipi_intermediate_high_risk,
                |4..5|  : #ipi_high_risk;
                =======================================
        ;

definitions -- Terminology

    terminology = {
        term_definitions: {
            "en" : {
                "paracetamol_dose" : {
                    text: "paracetamol dose",
                    description: "paracetamol base dose level per sq. m of BSA"
                },
                "chlorphenamine_dose" : {
                    text: "chlorphenamine dose",
                    description: "chlorphenamine base dose level per sq. m of BSA"
                },
                "staging" : {
                    text: "Cancer staging",
                    description: "Cancer staging (Ann Arbor system)"
                },
                "has_metastases" : {
                    text: "Metastatic status",
                    description: "Status of metastasis of cancer"
                },
                "neutrophils" : {
                    text: "neutrophils",
                    description: "neutrophils level"
                },
                "platelets" : {
                    text: "platelets",
                    description: "platelets level"
                },
                "ipi_low_risk" : {
                    text: "low risk: 5y survival - 73%",
                    description: ".."
                },
                "ipi_intermediate_low_risk" : {
                    text: "intermediate-low risk: 5y survival - 51%",
                    description: ".."
                },
                "ipi_intermediate_high_risk" : {
                    text: "intermediate-high risk: 5y survival - 43%",
                    description: "..."
                },
                "ipi_high_risk" : {
                    text: "high risk: 5y survival - 26%",
                    description: "..."
                }
            }
        }
    }