{
  "$schema": "https://spacemedicinefoundation.org/robotic-medicine/protocols/schema/protocol.schema.json",
  "schema_version": "0.3",
  "version": "0.4",
  "status": "draft",
  "conceptual": true,
  "not_for_clinical_use": true,
  "max_autonomy": 2,
  "missions": [
    "leo",
    "commercial",
    "moon",
    "mars"
  ],
  "updated": "2026-10-21",
  "review": {
    "state": "reviewed-ai-assisted",
    "requested": "2026-10-20",
    "reviewed": "2026-10-20",
    "human_clinician_review": false,
    "text": "AI-assisted clinical and source review by the Medical Research Assistant, Oct 20, 2026 (batch 3 review, 54 corrections); all corrections are applied in this version. No named human clinician has reviewed it."
  },
  "fixed_rules": {
    "flight_surgeon_is_medical_authority": true,
    "cmo_acts_under_delegated_care": true,
    "human_starts_and_restarts_robot": true,
    "robot_never_diagnoses": true,
    "no_drug_or_fluid_advice_by_robot": true,
    "safe_state_on_fault_or_no_response": true,
    "lost_link_pause_then_cmo_decides": true
  },
  "robot_lockouts": {
    "diagnosis": true,
    "drug_or_fluid_advice": true,
    "starting_stopping_or_adjusting_oxygen_or_any_medicine": true,
    "self_start_or_self_restart": true,
    "changing_own_protocol_thresholds_or_limits": true,
    "handing_over_a_mismatched_item_as_verified": true
  },
  "id": "RMP-RESP-003",
  "slug": "rmp-resp-003",
  "title": "Severe allergic reaction (possible anaphylaxis): urgent alert, bring the sealed emergency kit and oxygen kit on command, record vital signs (no drug advice)",
  "category": "resp",
  "tier": 1,
  "rung_note": "Max rung raised from 1 to 2 for supervised fetching and recording, as in batch 1. The robot never opens the kit, chooses, prepares or gives a medicine, or starts oxygen.",
  "result_language": {
    "use": [
      "logged, not interpreted",
      "sent to flight surgeon",
      "reading as shown on the device",
      "dose time as stated by the CMO",
      "EMERGENCY FETCH – NOT VERIFIED (CMO command)"
    ],
    "never": [
      "normal",
      "no problem found",
      "all clear",
      "negative",
      "any diagnosis or cause",
      "anaphylaxis",
      "not anaphylaxis",
      "just a rash",
      "mild",
      "resolved",
      "safe",
      "verified",
      "time for the next dose",
      "minor"
    ]
  },
  "scope": {
    "summary": "If a crewmember or the CMO says a crewmember may be having an allergic reaction, the robot sends an URGENT alert at once, brings the sealed emergency (anaphylaxis) kit and the closed oxygen kit to the CMO on command, shows the allergy list from the medical record, records the vital signs and oxygen saturation the CMO measures and the medicines and times the CMO states on a clock-time timeline, and after the event reconciles the kits through RMP-PHARM-001 as an inventory record only. Afterwards it offers prompt-only check-ins for the watch period the flight surgeon sets. The CMO assesses, decides and gives every treatment.",
    "why": "Anaphylaxis is a sudden, rapidly progressing reaction with airway, breathing or circulation problems, usually with skin or mucosal changes; skin changes can be absent in up to 20% of reactions, and in up to 30% there is no obvious trigger (Resuscitation Council UK, 2021). NASA records list 11 mild-to-moderate allergic reactions among US astronauts through 2006. The guideline stresses calling for help early, and notes biphasic reactions in about 5% of patients, also after milder reactions, with a median time of around 12 hours. Intramuscular adrenaline (epinephrine) is the first-line treatment for anaphylaxis (RCUK 2021; WAO 2020), given by the CMO under the onboard checklist; epinephrine is in the ISS flight formulary (HRP report, 2017). The robot never names, suggests or times a medicine; this is stated only so the kit contents and the checklist can be checked. Severe gastrointestinal symptoms (severe crampy belly pain, repeated vomiting) together with skin or mucosal changes also make anaphylaxis highly likely (WAO 2020). A helper that raises the alarm at once, brings the sealed kit and keeps an exact clock-time record lets the CMO keep both hands on the patient.",
    "covers": [
      "Possible allergic reaction in flight: new swelling of the lips, tongue or throat, hoarse voice, wheeze or breathlessness, faintness, or hives, flushing or itching, especially after a new food, medicine, product or exposure",
      "Prompt-only check-ins during the watch period after a reaction"
    ],
    "locked_out": [
      "Opening the emergency kit, or choosing, preparing, dosing or giving any medicine (including adrenaline); the CMO decides and gives every medicine",
      "Prompting or suggesting a repeat dose (the CMO and onboard checklist decide)",
      "Dose-interval cues: no running counter, tone, colour change or spoken cue tied to any interval after a dose; elapsed time is given only when the CMO asks",
      "Recording a check made after the kit was used as a check before use",
      "Starting, stopping or adjusting oxygen (the oxygen kit is fetched closed)",
      "Positioning the patient, or any airway procedure",
      "Deciding whether it is anaphylaxis, or that it is mild",
      "Touching, holding or restraining the crewmember"
    ],
    "related": [
      "RMP-PHARM-001",
      "RMP-PHARM-003",
      "RMP-RESP-001",
      "RMP-RESP-002",
      "RMP-CARD-001",
      "RMP-SKIN-004",
      "RMP-NEURO-004",
      "RMP-GI-002"
    ]
  },
  "roles": {
    "medical_authority": "Flight surgeon (ground). Holds medical authority for every run.",
    "onboard_lead": "Crew medical officer (CMO), acting under delegated care; uses the pre-approved onboard checklist when there is no link.",
    "others": [
      "Crewmember with the reaction: answers if able; never asked to wait for the robot",
      "Second trained CMO: receives alerts if the CMO is the patient, and helps the CMO",
      "Pharmacy lead and flight surgeon: set the contents of the sealed emergency kit before flight"
    ],
    "robot_may": [
      "Send an URGENT alert at once on a crewmember's word",
      "Bring the sealed emergency kit and the closed oxygen kit to the CMO on command, and restrain them within reach",
      "Show the crewmember's allergy list from the medical record to the CMO",
      "Record the vital signs, oxygen saturation and observations the CMO enters, and the medicines and times the CMO states",
      "Show a clock-time timeline of the reaction start, each stated medicine and dose time, and each CMO entry; give elapsed time only when the CMO asks, in the same words each time",
      "Reconcile the kits after the event through RMP-PHARM-001 as an inventory record (not a check before use) and show them as opened – not restocked until resealed",
      "Offer prompt-only check-ins during the watch period"
    ],
    "robot_may_not": [
      "Open the kit, or choose, prepare, dose or give any medicine",
      "Suggest a dose, a repeat dose or a timing",
      "Start or adjust oxygen",
      "Position or touch the patient",
      "Say it is or is not anaphylaxis, or that it is mild or over",
      "Fetch the suspected trigger medicine again for that crewmember without a new logged order through RMP-PHARM-001",
      "Ask the crewmember to move toward the robot, to another module, or to the kit (the robot goes to the patient)",
      "Give any dose-interval cue, or say the kit was verified",
      "Start without a human command"
    ],
    "commercial": "On commercial flights, 'flight surgeon' and 'CMO' mean the operator's designated medical authority and trained onboard responder. If no trained responder is aboard, this protocol is not used. (NASA-STD-3001 requires two CMOs per vehicle for NASA programs [V1 3006]; FAA rules set no medical standards for spaceflight participants.)"
  },
  "preconditions": [
    {
      "id": "PRE-1",
      "text": "A crewmember or the CMO started the protocol by command. Nothing starts it automatically.",
      "check": "human_start == true",
      "refs": [
        "V2 10174"
      ]
    },
    {
      "id": "PRE-2",
      "text": "Robot self-test passed; it knows the stowage location of the sealed emergency kit and the oxygen kit, and the kit seals were checked at the last inventory.",
      "refs": [
        "V2 10161",
        "V2 7059"
      ]
    },
    {
      "id": "PRE-3",
      "text": "Robot and supplies restrained when not moving.",
      "refs": [
        "V2 7046"
      ]
    },
    {
      "id": "PRE-4",
      "text": "Link status and current delay known. The CMO never waits for the robot or the link before treating.",
      "check": "link_state in [live, delayed, down]"
    }
  ],
  "consent": {
    "standard": "Recording and questions by voice, with the crewmember's agreement when they can give it; any question can be declined, and an explicit \"no\" is logged as declined for that question only.",
    "emergency": "If the crewmember cannot answer, the URGENT alert stands, the robot asks nothing more, and the CMO leads; recording of the CMO's entries continues as part of the medical record.",
    "withdrawal": "The crewmember can stop video at any time; the URGENT alert and the record of what was given are kept."
  },
  "inputs": [
    {
      "id": "IN-1",
      "name": "Reported symptoms and when they started",
      "source": "Crewmember or CMO, by voice",
      "required": true,
      "if_missing": "Log \"no response\" and keep the URGENT alert (D2). Never logged as declined."
    },
    {
      "id": "IN-2",
      "name": "Possible trigger (new food, medicine, product or exposure), as reported",
      "source": "Crewmember or CMO, by voice",
      "required": false,
      "if_missing": "Log \"not known\". A missing trigger never lowers the alert (up to 30% have none)."
    },
    {
      "id": "IN-3",
      "name": "Allergy list and medicines from the medical record (shown to the CMO; the robot does not advise)",
      "source": "Medical record and dose log (RMP-PHARM-003)",
      "required": false,
      "if_missing": "Note \"record not available\"."
    },
    {
      "id": "IN-4",
      "name": "Heart rate, blood pressure, breathing rate and oxygen saturation, measured by the CMO (recorded, not interpreted)",
      "source": "Entered by the CMO or read from a device the CMO placed",
      "required": false,
      "if_missing": "Log \"not measured\". A missing value is never treated as reassuring; an oximeter with no reading is logged as \"no reading\" and flagged (RF3)."
    },
    {
      "id": "IN-5",
      "name": "Medicines given, with times, as stated by the CMO",
      "source": "Stated by the CMO; logged as stated",
      "required": false,
      "if_missing": "Log \"not stated\"; the robot never asks whether to give one."
    },
    {
      "id": "IN-6",
      "name": "Link status and delay",
      "source": "Communications system",
      "required": true,
      "if_missing": "Treat as link down."
    }
  ],
  "steps": [
    {
      "id": "S1",
      "actor": "robot",
      "rung": 2,
      "action": "On a crewmember's or the CMO's word, send an URGENT \"possible severe allergic reaction\" alert to the flight surgeon and the CMO at once. Every URGENT alert goes to the CMO and the flight surgeon at the same time (queued for the flight surgeon if the link is down). If the CMO is the patient, is busy treating, or does not answer, the alert goes to the second trained CMO, or the crewmember named before flight [V1 3006]. An URGENT alert that is not acknowledged within <set by validation> seconds is repeated and sent to the next named crewmember.",
      "success": "Alert acknowledged, or escalated to the next named crewmember.",
      "refs": [
        "V2 10174",
        "V1 6003",
        "V1 3006"
      ]
    },
    {
      "id": "S2",
      "actor": "robot",
      "rung": 2,
      "action": "On the CMO's command, bring the sealed emergency kit and the closed oxygen kit to the CMO at once and restrain them within reach. The robot never opens them. This is an emergency fetch on a human command (CMO): no barcode check runs before hand-over and nothing waits for one. The robot reads the kit's own label and seal status only if that adds no delay, says \"EMERGENCY FETCH – NOT VERIFIED (CMO command)\", and \"seal not intact\" if so, and hands the kit over anyway. The fetch is logged as an override: time, who asked, the reason as stated, kit ID and seal status. It never says \"verified\". The CMO never waits for the robot: if the CMO or a crewmember already has the kit, the robot skips this step.",
      "success": "Kits within reach, or step skipped; override logged.",
      "limit": "<set by validation>",
      "refs": [
        "V2 7046"
      ]
    },
    {
      "id": "S3",
      "actor": "crew",
      "action": "The CMO removes or stops the possible trigger if possible (for example an infusion), assesses airway, breathing and circulation, and decides and gives every treatment under the onboard checklist, with the flight surgeon when the link allows. The second trained CMO helps or takes over if the CMO is the patient.",
      "success": "Treatment decisions made by humans; the robot logs what is stated.",
      "refs": [
        "V1 3004"
      ]
    },
    {
      "id": "S4",
      "actor": "robot",
      "rung": 2,
      "action": "Show the allergy list from the medical record to the CMO, then ask the red-flag questions by voice if the crewmember can answer (swallowing, throat, breathing, faintness). D1 is checked after every answer.",
      "success": "Answers logged, or \"no response\" logged."
    },
    {
      "id": "S5",
      "actor": "robot",
      "rung": 2,
      "action": "Record the vital signs, oxygen saturation and observations the CMO enters, and each medicine and time the CMO states. Show them as a timeline of clock times: reaction start, each stated medicine and dose time, and each CMO entry. Give elapsed time only when the CMO asks (\"time since the last dose?\"), answering in the same words each time. No running counter, tone, colour change or spoken cue is tied to any interval after a dose.",
      "success": "Entries time-stamped on the timeline.",
      "refs": [
        "V1 3004"
      ]
    },
    {
      "id": "S6",
      "actor": "robot",
      "rung": 2,
      "action": "After any URGENT alert: After an URGENT alert the robot does not leave on its own: it stays at its rest position in the module, with its screen and voice link available, until a human has taken over or tells it to go. It never follows, blocks or touches anyone. It keeps time-stamping what humans say they did, and repeats the alert if it is not acknowledged.",
      "success": "Robot at rest in the module until a human releases it; alert acknowledged or escalated.",
      "refs": [
        "V2 10173",
        "V1 3006"
      ]
    },
    {
      "id": "S7",
      "actor": "ground",
      "action": "The flight surgeon (or the CMO under the onboard checklist when there is no link) decides further treatment, the watch period, work limits and any evacuation [V1 3007]. If the trigger may be a medicine, the flight surgeon records it in the medical record. The robot logs the decisions.",
      "success": "Decision logged.",
      "refs": [
        "V1 3007"
      ]
    },
    {
      "id": "S8",
      "actor": "robot",
      "rung": 2,
      "action": "During the watch period of <set by flight surgeon> hours after the reaction, offer a check-in every <set by flight surgeon> hours. At each scheduled time the robot prompts the crewmember on their own screen; it approaches only when the crewmember (or the CMO) accepts, and a prompt never starts the robot. Any return of symptoms is URGENT (RF5).",
      "success": "Each prompt accepted, postponed or answered; log closed by a human.",
      "refs": [
        "V2 10174"
      ]
    },
    {
      "id": "S9",
      "actor": "robot",
      "rung": 2,
      "action": "When the CMO says the event is over, run RMP-PHARM-001 reconciliation on each kit fetched: record the items the CMO or crew state were used, the remaining contents against the kit list, seal status and expiry, labelled \"inventory reconciliation after emergency use – not a check before use\". Flag the override to the flight surgeon and the pharmacy lead, and show each kit as \"opened – not restocked\" until a human restocks and reseals it. Nothing in this step is recorded as a check before the kit was used.",
      "success": "Reconciliation recorded and labelled; override flagged; kit shown as opened – not restocked until resealed.",
      "refs": [
        "V2 7059"
      ]
    },
    {
      "id": "S10",
      "actor": "robot",
      "rung": 2,
      "action": "Send the flight surgeon one package: symptom times, possible trigger, CMO entries, medicines and times as stated, alerts and acknowledgements.",
      "success": "Package delivered or queued.",
      "refs": [
        "V1 6003",
        "V1 7001",
        "V1 7003"
      ]
    }
  ],
  "decisions": [
    {
      "id": "D1",
      "after": "S4",
      "decided_by": "robot",
      "question": "Checked after every answer and at any point in the run (even mid-question or mid-step): does any answer, reading or observation meet a red flag?",
      "branches": [
        {
          "if": "Yes",
          "then": "Stop the current question or step at once and apply the action listed for each matching red flag (URGENT alert, flag, or stop), with the answer or reading itself, never a cause. Every URGENT alert goes to the CMO and the flight surgeon at the same time (queued for the flight surgeon if the link is down). If the CMO is the patient, is busy treating, or does not answer, the alert goes to the second trained CMO, or the crewmember named before flight [V1 3006]. An URGENT alert that is not acknowledged within <set by validation> seconds is repeated and sent to the next named crewmember."
        },
        {
          "if": "No",
          "then": "Continue. The alert from S1 stands; skin changes alone never cancel it."
        }
      ]
    },
    {
      "id": "D2",
      "after": "S4",
      "decided_by": "robot",
      "question": "Did the crewmember answer the question?",
      "branches": [
        {
          "if": "Yes",
          "then": "Continue."
        },
        {
          "if": "Declined explicitly (the crewmember says no to a question)",
          "then": "Log \"declined\" for that question only; the alert already sent stands."
        },
        {
          "if": "No response, or the answer does not make sense",
          "then": "URGENT: log \"no response\" (never \"declined\"); the CMO, or the second trained CMO if the CMO is the patient, checks the crewmember in person at once."
        }
      ]
    },
    {
      "id": "D3",
      "after": "S7",
      "decided_by": "ground",
      "question": "What is the plan (treatment, watch period, work limits)?",
      "branches": [
        {
          "if": "Link live",
          "then": "Flight surgeon decides; robot logs."
        },
        {
          "if": "Link down or delay too long",
          "then": "The CMO decides under the pre-approved onboard checklist; the flight surgeon reviews the log at the next contact."
        }
      ]
    }
  ],
  "stop_rules": [
    {
      "id": "X1",
      "trigger": "The patient (or the crewmember being examined) says stop, or withdraws consent",
      "action": "Robot stops all motion at once, backs away to its rest position and tells the CMO. Recording stops unless the patient agrees to keep it running.",
      "level": "stop",
      "refs": [
        "V2 10165"
      ]
    },
    {
      "id": "X2",
      "trigger": "Any crewmember presses stop or takes over control",
      "action": "Protective stop; robot holds its stopped position; only a human may restart it.",
      "level": "safe-state",
      "refs": [
        "V2 10165",
        "V2 10168",
        "V2 10174"
      ]
    },
    {
      "id": "X3",
      "trigger": "Robot fault, sensor fault, or a force, speed or reach limit is reached",
      "action": "Protective stop and hand control to the CMO; log the fault.",
      "level": "safe-state",
      "refs": [
        "V2 10172",
        "V2 10168"
      ]
    },
    {
      "id": "X4",
      "trigger": "CMO is asked to take over and does not respond (for example, the CMO is the patient)",
      "action": "Robot stays stopped; the next named crewmember is called.",
      "level": "safe-state",
      "refs": [
        "V2 10173",
        "V2 7045"
      ]
    },
    {
      "id": "X5",
      "trigger": "Loss of link, or delay longer than the limit for live guidance",
      "action": "Robot pauses its own movement in its stopped position and tells the CMO and the commander. This pauses robot movement only: the CMO's emergency-kit treatment, crew oxygen and CPR continue under the onboard checklist and never wait for the link or the robot. The CMO decides whether the robot continues offline under the pre-approved onboard checklist; the robot resumes only on the CMO's confirmation. Everything is logged and sent to the flight surgeon at the next contact.",
      "level": "pause",
      "refs": [
        "V2 10172",
        "V2 10173"
      ]
    },
    {
      "id": "X6",
      "trigger": "An URGENT alert is not acknowledged within the set time",
      "action": "Robot repeats the alert and sends it to the next named crewmember (the second trained CMO first if the CMO is the patient), and keeps repeating at the set interval. It stays where it is: it does not leave on its own.",
      "level": "urgent",
      "refs": [
        "V1 3006",
        "V2 10173"
      ]
    },
    {
      "id": "X7",
      "trigger": "The crewmember stops responding, or seems confused or drowsy, at any point",
      "action": "URGENT alert at once, even mid-question or mid-step; the robot stops its current task, stays at its rest position and does not continue the run; a crewmember checks in person.",
      "level": "urgent"
    },
    {
      "id": "X8",
      "trigger": "A crewmember asks the robot what is wrong, or for medicine, fluid or treatment advice",
      "action": "Robot declines, says it cannot assess or advise, and routes the question to the CMO or flight surgeon.",
      "level": "stop"
    },
    {
      "id": "X9",
      "trigger": "The CMO or a crewmember needs the robot's space to reach the patient",
      "action": "Robot moves to its rest position at once and holds; it still does not leave the module on its own.",
      "level": "safe-state",
      "refs": [
        "V2 10172"
      ]
    }
  ],
  "red_flags": [
    {
      "id": "RF1",
      "sign": "Airway: swelling of the tongue, lips or throat, a feeling that the throat is closing, trouble swallowing, hoarse voice, or noisy breathing in",
      "threshold": "any",
      "action": "URGENT alert to the CMO and flight surgeon",
      "source": "rcuk"
    },
    {
      "id": "RF2",
      "sign": "Breathing: wheeze, persistent cough, breathlessness, tiring with the effort of breathing, or oxygen saturation below the alert level",
      "threshold": "any symptom; saturation below <set by clinical lead> (for context, the guideline gives below 94% as hypoxaemia)",
      "action": "URGENT alert",
      "source": "rcuk"
    },
    {
      "id": "RF3",
      "sign": "Circulation: pale or clammy skin, fast heart rate, low blood pressure, dizziness, fainting, reduced alertness, or an oximeter that cannot get a reading",
      "threshold": "any; heart rate or blood pressure beyond <set by clinical lead>",
      "action": "URGENT alert; the CMO checks in person at once",
      "source": "rcuk"
    },
    {
      "id": "RF4",
      "sign": "Skin or mucosal changes only (hives, flushing, itching, or swelling of the skin away from the lips, tongue and throat, which are RF1) after a possible trigger",
      "threshold": "any",
      "action": "Flag: the CMO assesses in person now. The flag stays open and the CMO sets a re-check time (a prompt only, after <set by flight surgeon> minutes); the red-flag questions stay live, and any airway, breathing, circulation or severe gastrointestinal symptom is URGENT at once (RF1-RF3, RF6)",
      "source": "rcuk"
    },
    {
      "id": "RF5",
      "sign": "Symptoms come back after improvement",
      "threshold": "any, during the watch period of <set by flight surgeon> hours (for context, biphasic reactions occur in around 5% of patients, with a median time of around 12 hours, and 6-12 hours of observation may miss over half)",
      "action": "URGENT alert",
      "source": "rcuk"
    },
    {
      "id": "RF6",
      "sign": "Severe crampy belly pain or repeated vomiting, together with skin or mucosal changes, or after an allergen known to affect this crewmember",
      "threshold": "any",
      "action": "URGENT alert; the CMO checks in person at once",
      "source": "wao"
    },
    {
      "id": "RF7",
      "sign": "The possible trigger is a medicine the crewmember was given",
      "threshold": "any",
      "action": "Flag to the flight surgeon and CMO (information only; stopping a medicine is a crew action under the checklist); the robot fetches that medicine for that crewmember again only on a new logged order (RMP-PHARM-001)",
      "source": "rcuk"
    },
    {
      "id": "RF8",
      "sign": "Nausea or mild belly discomfort alone, with no airway, breathing or circulation problem and no skin or mucosal change",
      "threshold": "any",
      "action": "Flag: the CMO assesses in person; the red-flag questions stay live; see RMP-GI-002",
      "source": "rcuk"
    }
  ],
  "safety_limits": [
    {
      "id": "L1",
      "name": "Contact with the crewmember",
      "value": "not allowed",
      "enforced": "Keep-out zone in the robot controller",
      "refs": [
        "V2 10172"
      ]
    },
    {
      "id": "L2",
      "name": "Opening the emergency kit or handling any medicine outside its sealed kit",
      "value": "not allowed",
      "enforced": "No grasp mode for kit contents; kit handled closed only"
    },
    {
      "id": "L3",
      "name": "Robot speed near crew",
      "value": "<set by validation>",
      "enforced": "Hard limit in the controller",
      "refs": [
        "V2 10172"
      ]
    },
    {
      "id": "L4",
      "name": "Closest approach to the patient and CMO",
      "value": "<set by validation>",
      "enforced": "Distance sensing; the robot stays outside it"
    }
  ],
  "logs": [
    {
      "id": "LOG-1",
      "text": "Every input, robot action, decision (with who made it) and hand-off, time-stamped to the second.",
      "refs": [
        "V2 10163",
        "V2 10164"
      ]
    },
    {
      "id": "LOG-2",
      "text": "Mode changes and safety-limit events are announced to the operator as they happen and logged.",
      "refs": [
        "V2 10162",
        "V2 10172"
      ]
    },
    {
      "id": "LOG-3",
      "text": "Records are stored and sent as private medical data, encrypted, with access limited to the medical team.",
      "refs": [
        "V1 6003",
        "V1 7003"
      ]
    },
    {
      "id": "LOG-4",
      "text": "Results are kept in a permanent, retrievable format so the flight surgeon can see trends.",
      "refs": [
        "V1 7001"
      ]
    },
    {
      "id": "LOG-5",
      "text": "Symptom onset, each CMO entry and each stated medicine and time on a clock-time timeline, so the flight surgeon can follow the course of the reaction."
    },
    {
      "id": "LOG-6",
      "text": "Each URGENT alert, who received it, the time it was acknowledged (or the escalation to the next named crewmember), and the time a human released the robot.",
      "refs": [
        "V2 10163"
      ]
    },
    {
      "id": "LOG-7",
      "text": "Each emergency fetch as an override (time, who asked, reason as stated, kit ID, seal status) and the later inventory reconciliation, labelled \"not a check before use\".",
      "refs": [
        "V2 7059"
      ]
    }
  ],
  "requirements": [
    {
      "id": "V1 3004",
      "use": "In-mission care includes medical kits (b), recording vital signs (h) and recording treatment (l); administering and managing medicines (m) is a human capability."
    },
    {
      "id": "V1 3006",
      "use": "Two trained CMOs per vehicle for NASA programs; the second trained CMO receives alerts when the CMO is the patient (see the commercial-flight note)."
    },
    {
      "id": "V1 3007",
      "use": "Medical evacuation when illness is beyond onboard capability; the flight surgeon decides."
    },
    {
      "id": "V1 5003",
      "use": "CMO training includes medical procedures and equipment; the CMO treats."
    },
    {
      "id": "V1 6003",
      "use": "Logs and alerts sent to the ground are private medical communications."
    },
    {
      "id": "V1 7001",
      "use": "Records kept so the flight surgeon can see trends."
    },
    {
      "id": "V1 7003",
      "use": "Secure handling of medical records."
    },
    {
      "id": "V2 7045",
      "use": "Usable by non-physician crew, including when the CMO is the patient."
    },
    {
      "id": "V2 7046",
      "use": "Patient, caregiver and supplies restrained."
    },
    {
      "id": "V2 7059",
      "use": "Kit inventory and seal status are tracked; after an emergency fetch the robot reconciles the kit through RMP-PHARM-001 as an inventory record (never a check before use) and shows it as \"opened – not restocked\" until resealed."
    },
    {
      "id": "V2 10161",
      "use": "Robot shows its status and health."
    },
    {
      "id": "V2 10162",
      "use": "Mode changes are announced to the operator."
    },
    {
      "id": "V2 10163",
      "use": "Robot records and shares its data."
    },
    {
      "id": "V2 10164",
      "use": "Shows whether the human or the robot is expected to act."
    },
    {
      "id": "V2 10165",
      "use": "Human can override and shut down the robot."
    },
    {
      "id": "V2 10168",
      "use": "Human can take over."
    },
    {
      "id": "V2 10172",
      "use": "Protective stop when a limit is exceeded."
    },
    {
      "id": "V2 10173",
      "use": "Robot stays stopped if no one takes over."
    },
    {
      "id": "V2 10174",
      "use": "Only a human starts or restarts the robot."
    }
  ],
  "validation": [
    {
      "stage": "simulation",
      "what": "Scripted reactions of every red-flag type, reactions without skin changes or without a known trigger, symptoms that return, a CMO who is the patient, no response and lost link.",
      "pass": "Every red flag acts at once; zero medicine, dose or timing suggestions; zero dose-interval cues; zero kit openings; every emergency fetch logged as an override and never as verified; unacknowledged alerts escalate."
    },
    {
      "stage": "training model",
      "what": "CMO training sessions on a manikin with the robot fetching the sealed kits and recording.",
      "pass": "Kits delivered within <set by validation> seconds of the command; the CMO is never delayed or obstructed."
    },
    {
      "stage": "parabolic or station demonstration",
      "what": "Fetching and restraining the sealed emergency kit and closed oxygen kit in weightlessness, without a patient.",
      "pass": "Kits delivered closed and restrained; seals intact."
    },
    {
      "stage": "flight use under flight surgeon supervision",
      "what": "First use as a recording aid in drills, then in real events alongside the onboard checklist.",
      "pass": "No safety events; the record is complete and accurate."
    }
  ],
  "signoff": {
    "protocol": [
      "Clinical lead for the specialty (sets every clinical threshold marked <set by clinical lead>)",
      "Flight surgeon, as medical authority",
      "Robotics and medical-device safety board",
      "Program approval for the mission"
    ],
    "restart_after_stop": "Human only. After any emergency or protective stop, a crewmember must restart the robot; the robot never restarts itself.",
    "each_run": "Started by a crewmember or the CMO. Every alert goes to the CMO and flight surgeon at once; the CMO treats under the onboard checklist; the flight surgeon decides when the link allows."
  },
  "change_control": [
    "Every change gets a new version number and a written reason; earlier versions are kept.",
    "Any change to steps, thresholds, limits or software that touches the patient repeats validation from the simulation stage before use.",
    "Software and learned-skill updates follow a pre-agreed change plan (what may change, how it is tested, how to roll back), modeled on the FDA predetermined change control plan approach.",
    "If a new version misbehaves, the robot rolls back to the last validated version and the event is reviewed by the flight surgeon and safety board.",
    "The robot never changes its own protocol, thresholds or limits."
  ],
  "comms": {
    "live": "Low Earth orbit: the flight surgeon receives the alert at once and can join by voice and video.",
    "loss_of_signal": [
      "The robot pauses any movement and tells the CMO; on the CMO's confirmation it keeps recording offline.",
      "The CMO's emergency-kit treatment, crew oxygen and CPR continue under the onboard checklist and never wait for the link or the robot.",
      "The CMO (or the second trained CMO) treats under the pre-approved onboard checklist; nothing waits for the link.",
      "At the next contact the robot sends one package: times, entries, stated medicines and alerts."
    ],
    "mars_delay": [
      "Replies may take up to about 21-23 minutes each way, with blackouts of about 2-3 weeks; treatment cannot wait for the ground, so the onboard checklist and two trained CMOs lead.",
      "The watch period and check-in schedule after a reaction are set before flight."
    ]
  },
  "sources": [
    {
      "key": "rcuk",
      "text": "Resuscitation Council UK. Emergency treatment of anaphylaxis: guidelines for healthcare providers (May 2021; printed review date May 2026, which has passed. The RCUK guideline page, as fetched on Oct 20, 2026, still lists May 2021 as the most recent version; a newer version was not found).",
      "url": "https://www.resus.org.uk/sites/default/files/2021-05/Emergency%20Treatment%20of%20Anaphylaxis%20May%202021_0.pdf",
      "supports": "Anaphylaxis is characterised by sudden onset and rapid progression of symptoms, Airway and/or Breathing and/or Circulation problems, and usually skin or mucosal changes; airway problems include throat or tongue swelling, hoarse voice and stridor; breathing problems include wheeze, persistent cough, increased work of breathing, tiredness and hypoxaemia (SpO2 below 94%); circulation problems include pale clammy skin, fast heart rate, low blood pressure, dizziness, decreased conscious level and collapse; skin or mucosal changes alone are not a sign of anaphylaxis and may be absent in up to 20% of reactions; in up to 30% of cases there may be no obvious trigger; gastrointestinal symptoms without airway, breathing or circulation problems do not usually indicate anaphylaxis; call for help early; biphasic reactions occur in around 5% of patients, also after milder reactions, with a median time of around 12 hours, and observation for 6-12 hours may miss over half of them; adrenaline is the first-line treatment, given intramuscularly, and is repeated after 5 minutes if airway, breathing or circulation problems persist; medication accounts for 39% of anaphylaxis-related deaths (Table 1), and allergens given by a parenteral route (for example an IV drug or intramuscular injection) cause a more rapid onset; patients must not walk or stand during acute reactions."
    },
    {
      "key": "wao",
      "text": "Cardona V, Ansotegui IJ, Ebisawa M, et al. World Allergy Organization anaphylaxis guidance 2020. World Allergy Organ J. 2020;13(10):100472.",
      "url": "https://doi.org/10.1016/j.waojou.2020.100472",
      "doi": "10.1016/j.waojou.2020.100472",
      "pmid": "33204386",
      "supports": "Anaphylaxis is highly likely with acute skin or mucosal involvement plus respiratory or cardiovascular involvement, or severe gastrointestinal symptoms (severe crampy abdominal pain, repetitive vomiting), especially after exposure to non-food allergens; intramuscular epinephrine (adrenaline) continues to be the first-line treatment; remove exposure to the trigger if possible (for example, discontinue administration of drugs or therapeutic agents)."
    },
    {
      "key": "golden",
      "text": "Golden DBK, Wang J, Waserman S, et al. Anaphylaxis: a 2023 practice parameter update. Ann Allergy Asthma Immunol. 2024;132(2):124-176.",
      "url": "https://doi.org/10.1016/j.anai.2023.09.015",
      "doi": "10.1016/j.anai.2023.09.015",
      "pmid": "38108678",
      "supports": "AAAAI/ACAAI practice parameter on anaphylaxis, including epinephrine use. Only the citation and abstract were checked; the \"first-line\" statement in this protocol rests on RCUK 2021 and WAO 2020."
    },
    {
      "key": "ermed",
      "text": "NASA Human Research Program. Evidence Report: Risk of Adverse Health Outcomes and Decrements in Performance due to In-Flight Medical Conditions (2017).",
      "url": "https://humanresearchroadmap.nasa.gov/evidence/reports/Medical.pdf",
      "supports": "Table 2: 11 mild-to-moderate allergic reactions among US astronauts (Shuttle, Mir and ISS through 2006). Epinephrine is among the compounds in the ISS operational flight formulary (2017 report; current kit contents and form not verified)."
    },
    {
      "key": "ismpadc",
      "text": "Institute for Safe Medication Practices. Guidelines for the safe use of automated dispensing cabinets (2019).",
      "url": "https://www.ismp.org/system/files/resources/2019-11/ISMP170-ADC%20Guideline-020719_final.pdf",
      "supports": "Override is limited to medicines needed in emergent circumstances where waiting could harm the patient (3.3b); limit what is available on override (3.4b); require documentation of the override rationale (3.4d); routinely analyze override reports (3.6). Used for the emergency-fetch pattern by analogy (a robot fetching a sealed kit is not a dispensing cabinet)."
    },
    {
      "key": "ismp",
      "text": "Institute for Safe Medication Practices. Lack of proper escalation process for BCMA scanning failures. ISMP Medication Safety Alert! Acute Care, March 21, 2024.",
      "url": "https://www.ismp.org/sites/default/files/newsletter-issues/20240321.pdf",
      "supports": "Unsafe practices include scanning after medication administration; procedures must include an escalation process for barcode scanning failures. Used so that the reconciliation after an emergency fetch is never recorded as a check before use."
    },
    {
      "key": "tb044",
      "text": "NASA OCHMO. Medical Operations. Technical Brief OCHMO-TB-044 (2025).",
      "url": "https://www.nasa.gov/wp-content/uploads/2025/08/ochmo-tb-044-medical-operations.pdf",
      "supports": "The crew surgeon keeps medical authority when care is delegated; crew medical officers train on the JSC 48522 medical checklist."
    },
    {
      "key": "v1",
      "text": "NASA. NASA-STD-3001, Space Flight Human-System Standard, Volume 1: Crew Health, Revision C (2023).",
      "url": "https://www.nasa.gov/wp-content/uploads/2023/11/nasa-std-3001-vol-1-rev-c-with-signature.pdf",
      "supports": "Requirement IDs beginning V1."
    },
    {
      "key": "v2",
      "text": "NASA. NASA-STD-3001, Volume 2: Human Factors, Habitability, and Environmental Health (Rev F, 2026), including Section 10.6 Automated and Robotic Systems.",
      "url": "https://standards.nasa.gov/standard/NASA/NASA-STD-3001_VOL_2",
      "supports": "Requirement IDs beginning V2."
    },
    {
      "key": "marsdelay",
      "text": "NASA. Mars communications disruption and delay (fact sheet, 2023 Moon to Mars Architecture Concept Review).",
      "url": "https://www.nasa.gov/wp-content/uploads/2024/01/mars-communications-disruption-and-delay.pdf",
      "supports": "One-way Earth-Mars delay up to about 21-23 minutes, plus blackouts of about 2-3 weeks near solar conjunction."
    },
    {
      "key": "pccp",
      "text": "U.S. Food and Drug Administration. Marketing submission recommendations for a predetermined change control plan for artificial intelligence-enabled device software functions (guidance).",
      "url": "https://www.fda.gov/regulatory-information/search-fda-guidance-documents/marketing-submission-recommendations-predetermined-change-control-plan-artificial-intelligence",
      "supports": "A model for planning, validating and rolling back software updates."
    },
    {
      "key": "faa460",
      "text": "U.S. Code of Federal Regulations, Title 14, Part 460: Human space flight requirements.",
      "url": "https://www.ecfr.gov/current/title-14/chapter-III/subchapter-C/part-460",
      "supports": "Federal rules for crew and spaceflight participants on licensed commercial flights; they set no medical standards for spaceflight participants."
    }
  ],
  "corrections": [
    {
      "date": "2026-10-20",
      "version": "0.2",
      "source": "AI-assisted clinical and source review by the Medical Research Assistant, Oct 20, 2026 (batch 3 review)",
      "items": [
        "Scope \"why\" names intramuscular adrenaline as first-line, given only by the CMO (RCUK 2021, WAO 2020; epinephrine in the ISS formulary per the 2017 HRP report); S3 adds removing or stopping the trigger. The robot still names no medicine (item 9).",
        "MANDATORY (item 10): S2 is an emergency fetch with no barcode check before hand-over, logged as an override and announced as \"EMERGENCY FETCH – NOT VERIFIED (CMO command)\", with \"seal not intact\" if so; it is never called verified.",
        "MANDATORY (item 11): new S9 reconciles the kits through RMP-PHARM-001 after the event, labelled \"inventory reconciliation after emergency use – not a check before use\", flags the override to the flight surgeon and pharmacy lead, and shows the kit as \"opened – not restocked\" until resealed.",
        "MANDATORY (item 12): the per-dose time-since counter is replaced by a clock-time timeline; elapsed time only when the CMO asks, in the same words each time; no tone, colour or spoken cue tied to a dose interval; \"dose-interval cues\" added to the lockouts.",
        "MANDATORY (item 13): RF6 is now URGENT for severe crampy belly pain or repeated vomiting with skin or mucosal changes, or after a known allergen (WAO 2020); milder gastrointestinal symptoms alone are the new RF8 Flag (RCUK).",
        "RF4 stays a Flag but stays open, with a CMO-set re-check prompt; swelling of the lips, tongue or throat is RF1 (item 14).",
        "RF7 now cites RCUK Table 1 (medication accounts for 39% of anaphylaxis-related deaths) and stays information only (item 15).",
        "The robot never asks the crewmember to move toward it, to another module or to the kit (item 16; RCUK, by analogy).",
        "Sources: WAO 2020 and the AAAAI/ACAAI 2023 practice parameter (abstract only) added; the RCUK 2021 entry notes that its printed review date (May 2026) has passed and that the RCUK page, as fetched on Oct 20, 2026, still lists May 2021 as the most recent version (item 17).",
        "Flight-surgeon windows and schedules that were prose only are now placeholder tokens the build can track, with context figures only where the review quoted a source (item 50).",
        "One emergency-fetch pattern: kits are fetched on a human command with no barcode gate, logged as an override (\"EMERGENCY FETCH – NOT VERIFIED\"), never called verified, reconciled afterwards through RMP-PHARM-001 as an inventory record only (never a check before use), and shown as \"opened – not restocked\" until resealed (item 51; ISMP).",
        "\"Mild\" and \"minor\" are never-words in every batch 3 protocol (item 54).",
        "Cross-links added for the new routes; the build checks that each target exists in the library, and planned protocols link to their library entry (item 53)."
      ]
    },
    {
      "date": "2026-10-21",
      "version": "0.2",
      "source": "Batch 5 editorial (AI-assisted), Oct 21, 2026; batch 4 review item 49",
      "items": [
        "Inherited stop-rule and requirement wording: \"holds a safe position\" → \"holds its stopped position\"; \"stays in its safe state\" → \"stays stopped\"; \"take over safely\" → \"take over\"; \"Robot stays safe if no one takes over\" → \"Robot stays stopped if no one takes over\". Schema level name safe-state and never-word list entry \"safe\" unchanged."
      ]
    },
    {
      "date": "2026-10-21",
      "version": "0.3",
      "source": "Batch 7 editorial (AI-assisted), Oct 21, 2026",
      "items": [
        "Citation labels changed to the site's year-only convention: \"(approved for public release <date>)\" now reads \"(YYYY)\", and NASA-STD-3001 Volume 2 \"Revision F (approved July 14, 2026)\" now reads \"(Rev F, 2026)\" (sources: ermed, v2). Editorial; no change to steps, thresholds or limits.",
        "X5 and the comms loss-of-signal branch now say only the robot pauses: crew the CMO's emergency-kit treatment under the checklist, oxygen and CPR never wait for the link or the robot (batch 6 review item 24 / suggestion 40). Editorial; robot behaviour unchanged."
      ]
    },
    {
      "date": "2026-10-21",
      "version": "0.4",
      "source": "Batch 7 review and batch 8 editorial (AI-assisted), Oct 21, 2026",
      "items": [
        "X5 and the comms loss-of-signal branch reworded: \"the CMO's emergency-kit treatment, crew oxygen and CPR continue under the onboard checklist and never wait for the link or the robot\" (batch 7 review item 14). Editorial."
      ]
    }
  ]
}
