{
  "$schema": "https://spacemedicinefoundation.org/robotic-medicine/protocols/schema/protocol.schema.json",
  "schema_version": "0.3",
  "version": "0.3",
  "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-21",
    "reviewed": "2026-10-21",
    "human_clinician_review": false,
    "text": "AI-assisted clinical and source review by the Medical Research Assistant, Oct 21, 2026 (batch 6 review, 26 required corrections and 17 optional suggestions); all required corrections, and the low-risk suggestions, are applied in this version (see Corrections). No named human clinician has reviewed it. Not for clinical use."
  },
  "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-ENV-003",
  "slug": "rmp-env-003",
  "title": "Rapid loss of cabin pressure: bring masks, crew accounting",
  "category": "env",
  "tier": 1,
  "rung_note": "Max rung raised from 1 to 2 for supervised fetching of masks, crew accounting and video. The robot never operates hatches or valves, never blocks a route to the crew vehicle, and restrains itself out of the way when told.",
  "result_language": {
    "use": [
      "logged, not interpreted",
      "sent to flight surgeon",
      "EMERGENCY FETCH – NOT VERIFIED (commander command)",
      "crew accounted as stated",
      "pressure as displayed"
    ],
    "never": [
      "normal",
      "no problem found",
      "all clear",
      "negative",
      "any diagnosis or cause",
      "leak found",
      "pressure stable",
      "no decompression sickness",
      "verified",
      "safe",
      "mild",
      "minor",
      "reading is reassuring",
      "pressure is back"
    ]
  },
  "scope": {
    "summary": "When the vehicle shows a rapid loss of cabin pressure, the robot sends an URGENT alert at once to the commander, the CMO and the flight surgeon, gets out of every route to the crew vehicle and hatches, brings breathing masks and the emergency kit on command, keeps a crew accounting list as the commander states it, records each crewmember's symptoms as stated, and streams video when the link allows. The vehicle depressurization procedure, led by the commander, comes first.",
    "why": "NASA-STD-3001 Volume 2 requires that crew can wear pressure suits during operations with a high risk of loss of cabin pressure (V2 11100), that launch, entry and abort (LEA) suits work at a pressure that protects against the serious (Type II) form of decompression sickness in a cabin depressurization (V2 11032), and that cabin pressure is displayed in real time to the crew and the ground (V2 6021). The rationale for V2 11032 recalls Soyuz 11, where a rapid depressurization led to the death of all three unsuited crewmembers within two minutes. NASA's decompression sickness brief (OCHMO-TB-037) explains how a rapid drop in pressure can cause decompression sickness, including the serious neurological and heart-and-lung (Type II) form. Earth aviation guidance from the US Federal Aviation Administration (FAA) adds that impaired performance may be immediate, before unconsciousness, and that a slow decompression may go unnoticed. The crew must move fast; a robot in the way, or one that talks while the commander runs the procedure, is a hazard. So the robot clears the routes first, including on link loss, and stays silent except for alarms. The shared value SPO2_ALERT_PCT only raises an alert; it never gates a crew action (the crew act without waiting for a reading), and the clinical lead sets it per mission with the flight surgeon, because the cabin atmosphere can differ by mission. Open question for review: where the robot restrains itself during the procedure, and how long after the event symptoms are watched for.",
    "covers": [
      "Rapid loss of cabin pressure shown by the vehicle, in flight",
      "Crew accounting and symptom records during the vehicle procedure",
      "Routing to RMP-EVA-001 (decompression sickness), RMP-RESP-001 (breathing), RMP-ENT-004 (ear and sinus pain after a pressure change)"
    ],
    "locked_out": [
      "Diagnosis or naming a cause",
      "Any medicine, fluid or oxygen advice; starting, stopping or adjusting oxygen",
      "Touching the crewmember",
      "Handing over any medicine outside RMP-PHARM-001, or after a MISMATCH or CANNOT VERIFY (the item stays quarantined; only the CMO can ask for it, through the RMP-PHARM-001 logged two-step override)",
      "Opening or closing hatches or valves, or patching a leak",
      "Staying in, or crossing, a route to the crew vehicle or a hatch",
      "Saying there is no decompression sickness",
      "Fitting a mask on anyone",
      "Asking questions or giving non-alarm voice prompts while the commander's depressurization procedure is running. The robot logs only what is said to it and asks symptom questions only when the commander says the procedure allows"
    ],
    "related": [
      "RMP-EVA-001",
      "RMP-RESP-001",
      "RMP-ENT-004",
      "RMP-ENV-001",
      "RMP-ENV-002",
      "RMP-PHARM-001"
    ]
  },
  "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": [
      "Second trained CMO: receives every alert and takes over if the CMO is the patient",
      "Vehicle commander: leads any cabin emergency procedure",
      "Other crew: help as the CMO or commander directs"
    ],
    "robot_may": [
      "Send an URGENT alert at once",
      "Clear all routes to hatches and the crew vehicle and restrain itself where the commander says",
      "Bring breathing masks and the emergency kit on command",
      "Keep the crew accounting list as stated by the commander",
      "Record symptoms as stated, with clock times",
      "Stream video when the link allows"
    ],
    "robot_may_not": [
      "Operate hatches or valves, or patch a leak",
      "Block a route",
      "Fit a mask or touch anyone",
      "Say anyone is free of decompression sickness",
      "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": "The commander or a crewmember started the protocol by command, or the vehicle pressure alarm started it and a crewmember confirmed.",
      "check": "human_start == true",
      "refs": [
        "V2 10174"
      ]
    },
    {
      "id": "PRE-2",
      "text": "Robot self-test passed; kit stowage locations known.",
      "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 known. The crew never wait for the robot before acting.",
      "check": "link_state in [live, delayed, down]"
    }
  ],
  "consent": {
    "standard": "Emergency care; recording by the CMO's agreement when the crewmember cannot speak.",
    "emergency": "If the crewmember cannot agree, the robot proceeds on the CMO's or commander's command.",
    "withdrawal": "The crewmember or CMO can stop video; the alert and record stand."
  },
  "inputs": [
    {
      "id": "IN-1",
      "name": "Pressure alarm, as stated or displayed",
      "source": "Voice / vehicle display",
      "required": true,
      "if_missing": "Log \"no response\"; keep the URGENT alert."
    },
    {
      "id": "IN-2",
      "name": "Crew accounting: each crewmember and location, as stated by the commander",
      "source": "Commander",
      "required": true,
      "if_missing": "Log \"not accounted\" for each crewmember not stated; never assume accounted."
    },
    {
      "id": "IN-3",
      "name": "Each crewmember's symptoms as stated (joint pain, itching, numbness, weakness, confusion, breathlessness, ear pain)",
      "source": "Crewmember / CMO",
      "required": false,
      "if_missing": "Log \"not stated\"."
    },
    {
      "id": "IN-4",
      "name": "Cabin pressure as displayed",
      "source": "Vehicle display",
      "required": false,
      "if_missing": "Log \"not displayed\"; never interpreted."
    },
    {
      "id": "IN-5",
      "name": "Link status and delay",
      "source": "Communications system",
      "required": true,
      "if_missing": "Treat as link down."
    }
  ],
  "steps": [
    {
      "id": "S1",
      "actor": "robot",
      "rung": 2,
      "action": "Send an URGENT \"rapid loss of cabin pressure\" alert to the flight surgeon, the CMO and the commander 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.",
      "refs": [
        "V2 10174",
        "V1 6003",
        "V1 3006",
        "V2 6021"
      ]
    },
    {
      "id": "S2",
      "actor": "robot",
      "rung": 2,
      "action": "At once, move out of every route to hatches and the crew vehicle, and restrain itself at the place the commander names (or its preset out-of-route position).",
      "success": "Routes clear; robot restrained.",
      "limit": "<set by validation>",
      "refs": [
        "V2 10172"
      ]
    },
    {
      "id": "S3",
      "actor": "robot",
      "rung": 2,
      "action": "Only on the commander's or CMO's command, bring breathing masks and the sealed emergency kit to the crew and restrain them within reach, without crossing a route in use. This is an emergency fetch on a human command (commander or 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 (commander or 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 robot never fits a mask.",
      "success": "Equipment within reach, or skipped; override logged.",
      "limit": "<set by validation>",
      "refs": [
        "V2 7046",
        "V2 9053"
      ]
    },
    {
      "id": "S4",
      "actor": "crew",
      "action": "The commander runs the vehicle depressurization procedure (suits or masks, isolation, moving to the crew vehicle) and states the crew accounting; the CMO checks crew symptoms.",
      "success": "Human-led response; robot logs what is stated.",
      "refs": [
        "V2 11100"
      ]
    },
    {
      "id": "S5",
      "actor": "robot",
      "rung": 2,
      "action": "Keep the crew accounting list exactly as the commander states it, marking anyone not stated as \"not accounted\"; log stated symptoms with clock times and the displayed pressure; stream video when the link allows. While the procedure runs, the robot speaks only alarm text and \"not accounted\" names; it asks symptom questions only when the commander says the procedure allows.",
      "success": "Accounting list and symptom log kept.",
      "refs": [
        "V1 6003",
        "V2 6021"
      ]
    },
    {
      "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 on care for decompression sickness, the watch period and any evacuation [V1 3007].",
      "success": "Decision logged.",
      "refs": [
        "V1 3007",
        "V2 6009"
      ]
    },
    {
      "id": "S8",
      "actor": "robot",
      "rung": 2,
      "action": "Only after the CMO or flight surgeon has placed an order, run RMP-PHARM-001 for the ordered item (fetch, barcode match to every order field, recipient check). This protocol adds nothing to that check, never suggests an order, and never hands anything over outside RMP-PHARM-001.",
      "success": "RMP-PHARM-001 run logged with its result, or none ordered.",
      "refs": [
        "V2 7059"
      ]
    },
    {
      "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.",
      "success": "Reconciliation recorded; kits shown as opened – not restocked until resealed.",
      "refs": [
        "V2 7059"
      ]
    },
    {
      "id": "S10",
      "actor": "robot",
      "rung": 2,
      "action": "Send the flight surgeon one package: alert times, accounting list, symptoms as stated, displayed pressure and decisions.",
      "success": "Package delivered or queued.",
      "refs": [
        "V1 6003",
        "V1 7001",
        "V1 7003"
      ]
    }
  ],
  "decisions": [
    {
      "id": "D1",
      "after": "S5",
      "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."
        }
      ]
    },
    {
      "id": "D2",
      "after": "S5",
      "decided_by": "robot",
      "question": "Did the commander or crewmember answer when asked for accounting or symptoms?",
      "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 (decompression sickness care, watch period, evacuation)?",
      "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."
        }
      ]
    },
    {
      "id": "D4",
      "after": "S8",
      "decided_by": "robot",
      "question": "What did RMP-PHARM-001 show for the ordered item?",
      "branches": [
        {
          "if": "MATCH TO ORDER",
          "then": "RMP-PHARM-001 completes its own recipient check and hand-over; this protocol only logs \"MATCH TO ORDER. Not a dose, interaction or allergy review.\" and the clock time."
        },
        {
          "if": "MISMATCH or CANNOT VERIFY on any field, or a failed scan or recipient check",
          "then": "MISMATCH or CANNOT VERIFY shown with the fields named. No hand-over under this protocol: the item stays sealed in the NOT VERIFIED bag in quarantine (the RMP-PHARM-001 default), and the robot never hands it over unprompted or to anyone but the CMO. The robot does not offer or suggest an override. Only if the CMO explicitly makes the two-step override request inside RMP-PHARM-001 can the item go to the CMO, logged there as an override with the reason and the mismatched fields, and flagged to the flight surgeon.",
          "handoff": "none"
        }
      ]
    }
  ],
  "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. On link loss the robot first finishes S2/X10 (out of every route and restrained at its out-of-route position), then holds; it never pauses in a hatch route. This pauses robot movement only: crew masks, suits, crew movement and the commander's depressurization procedure 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 commander'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": "Any crewmember is \"not accounted\"",
      "action": "Robot repeats the URGENT alert with the name to the commander and CMO every <set by validation> seconds until accounted; it does not search on its own.",
      "level": "urgent",
      "refs": [
        "V1 3006"
      ]
    },
    {
      "id": "X10",
      "trigger": "The commander says the robot is in the way, or the robot finds itself in a route in use",
      "action": "Robot moves out of the route at once to its out-of-route position and holds; it does not leave the module on its own otherwise.",
      "level": "safe-state",
      "refs": [
        "V2 10172"
      ]
    }
  ],
  "red_flags": [
    {
      "id": "RF1",
      "sign": "Numbness, weakness, confusion, trouble seeing or speaking, or unusual tiredness",
      "threshold": "any",
      "action": "URGENT alert; see RMP-EVA-001 (possible serious decompression sickness)",
      "source": "tb037"
    },
    {
      "id": "RF2",
      "sign": "Breathlessness, chest pain or cough",
      "threshold": "any",
      "action": "URGENT alert; see RMP-EVA-001 and RMP-RESP-001",
      "source": "tb037"
    },
    {
      "id": "RF3",
      "sign": "Joint or limb pain, itching or skin rash",
      "threshold": "any",
      "action": "URGENT alert; see RMP-EVA-001 (the robot never calls a symptom mild)",
      "source": "tb037"
    },
    {
      "id": "RF4",
      "sign": "Displayed saturation below the shared alert value",
      "threshold": "below <set by clinical lead> percent (shared parameter SPO2_ALERT_PCT)",
      "action": "URGENT alert; see RMP-RESP-001; the crew act without waiting for a reading",
      "source": "btso2"
    },
    {
      "id": "RF5",
      "sign": "Ear pain, hearing loss or dizziness (inner-ear symptoms of decompression sickness per TB-037; ear barotrauma is design judgment)",
      "threshold": "any",
      "action": "URGENT alert; see RMP-EVA-001 and RMP-ENT-004; treatment: the flight surgeon; RMP-ENT-003",
      "source": "tb037"
    },
    {
      "id": "RF6",
      "sign": "Unresponsive, or not breathing normally",
      "threshold": "any",
      "action": "URGENT alert; start RMP-CARD-001 when the commander says the crew can act",
      "source": "aha2025bls"
    },
    {
      "id": "RF7",
      "sign": "The oximeter cannot get a reading after the validated attempts (L5), and \"saturation not obtained\" is logged",
      "threshold": "any",
      "action": "URGENT alert; the CMO checks the crewmember now (possible poor circulation); the robot never says \"probe error\" and never treats a missing reading as reassuring",
      "source": "ng253"
    }
  ],
  "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": "Hatch, valve or leak-repair action by the robot",
      "value": "not allowed",
      "enforced": "No hatch, valve or repair task is loaded"
    },
    {
      "id": "L3",
      "name": "Time to clear routes and restrain",
      "value": "<set by validation>",
      "enforced": "Controller; out-of-route position preset"
    },
    {
      "id": "L4",
      "name": "Robot speed near the crewmember",
      "value": "<set by validation>",
      "enforced": "Hard limit in the controller",
      "refs": [
        "V2 10172"
      ]
    },
    {
      "id": "L5",
      "name": "Failed oximeter readings before \"saturation not obtained\"",
      "value": "<set by validation>",
      "enforced": "Software"
    }
  ],
  "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": "Alert time, robot out-of-route time, crew accounting list as stated, symptoms as stated, displayed pressure, and decisions."
    },
    {
      "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"
      ]
    },
    {
      "id": "LOG-8",
      "text": "Each RMP-PHARM-001 run started from this protocol: order ID, result (MATCH TO ORDER, MISMATCH or CANNOT VERIFY with the fields), quarantine, and any CMO override logged by RMP-PHARM-001 (reason and mismatched fields), at clock time. No running counter of doses.",
      "refs": [
        "V2 7059"
      ]
    }
  ],
  "requirements": [
    {
      "id": "V1 3004",
      "use": "In-mission care includes emergency kits and diagnosing and treating pressure-related illness (dysbarism)."
    },
    {
      "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 needed; the flight surgeon decides."
    },
    {
      "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 6009",
      "use": "Decompression sickness treatment capability; the flight surgeon and CMO decide on its use."
    },
    {
      "id": "V2 6021",
      "use": "Cabin pressure shown in real time to the crew and the ground; the robot records what is displayed."
    },
    {
      "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 9053",
      "use": "Protective equipment for expected hazards: breathing masks are fetched on command."
    },
    {
      "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."
    },
    {
      "id": "V2 11032",
      "use": "Context: LEA suits protect against Type II decompression sickness in a cabin depressurization; the commander's procedure, not the robot, governs suits and masks."
    },
    {
      "id": "V2 11100",
      "use": "Crew can wear pressure suits during operations with a high risk of loss of cabin pressure; the commander leads."
    }
  ],
  "validation": [
    {
      "stage": "simulation",
      "what": "Scripted rapid pressure loss, robot in a route, crewmember not accounted, neurological symptoms, CMO as patient, lost link.",
      "pass": "Routes cleared within the limit; zero contact; no hatch action."
    },
    {
      "stage": "training model",
      "what": "Depressurization drill with the robot clearing routes and keeping the accounting list.",
      "pass": "No route blocked in any run."
    },
    {
      "stage": "parabolic or station demonstration",
      "what": "Route clearing and self-restraint without a real pressure loss.",
      "pass": "Robot restrained within <set by validation> seconds."
    },
    {
      "stage": "flight use under flight surgeon supervision",
      "what": "First use in drills.",
      "pass": "No safety events."
    }
  ],
  "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 the commander or a crewmember. The commander leads the vehicle procedure."
  },
  "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, records and video when the link allows.",
    "loss_of_signal": [
      "On link loss the robot first finishes S2/X10 (out of every route and restrained), then holds and tells the commander and the CMO; recording continues offline on confirmation.",
      "The commander's procedure, masks, suits and crew movement never wait for the link or the robot."
    ],
    "mars_delay": [
      "The depressurization response cannot wait for the ground; the onboard checklist and two trained CMOs lead."
    ]
  },
  "sources": [
    {
      "key": "tb037",
      "text": "NASA OCHMO. Decompression Sickness (DCS) Risk Mitigation. Technical Brief OCHMO-TB-037 Rev D (Oct 5, 2026).",
      "url": "https://www.nasa.gov/wp-content/uploads/2023/12/ochmo-tb-037-decompression-sickness.pdf",
      "supports": "DCS is caused by inert gas bubbles forming during rapid reductions in ambient pressure, most significantly in the move from cabin pressure to EVA suit pressure; NASA classifies DCS as Type I (itching, musculoskeletal pain, mild rashes) and Type II (neurological symptoms, numbness, weakness, cognitive issues, inner ear problems, cardiopulmonary issues), and describes cutis marmorata (a mottled, patterned skin rash); arterial gas embolism can cause stroke-like neurological effects, loss of consciousness and seizures; U.S. Navy protocols are widely adopted on Earth; diagnosis is based on symptoms; the majority of cases present between 60 and 240 minutes and inflammatory responses can last more than 24 hours; no hyperbaric chamber is available in flight, and increasing suit and cabin pressure may be combined to treat symptoms, depending on the scenario; a break in prebreathe rapidly reintroduces nitrogen; NASA has never experienced a Type II event in spaceflight."
    },
    {
      "key": "btso2",
      "text": "British Thoracic Society. Guideline for oxygen use in healthcare and emergency settings (emergency oxygen guideline page). Fetched Oct 21, 2026.",
      "url": "https://www.brit-thoracic.org.uk/quality-improvement/guidelines/emergency-oxygen/",
      "supports": "Recommended target saturation range for acutely ill patients not at risk of hypercapnic respiratory failure is 94-98%; for known COPD or other risk factors for hypercapnic respiratory failure, 88-92% pending blood gas results. Context for the CMO and flight surgeon only; the robot never starts, stops or adjusts oxygen."
    },
    {
      "key": "ng253",
      "text": "National Institute for Health and Care Excellence. Suspected sepsis in people aged 16 or over: recognition, assessment and early management. NICE guideline NG253 (2025, last updated Sept 23, 2026).",
      "url": "https://www.nice.org.uk/guidance/ng253/chapter/Face-to-face-assessment",
      "supports": "People with sepsis may feel very unwell and may not have a high temperature; do not rely on fever alone; a rise in temperature can be a physiological response; assess temperature, heart rate, breathing rate, blood pressure, level of consciousness and oxygen saturation; look for mottled or ashen skin, blue skin, lips or tongue, a non-blanching rash, and breaks in the skin; ask how often the person passed urine in the past 18 hours and about fever or shaking chills (rigors); pay attention to new changes in behavior and to concerns raised by others."
    },
    {
      "key": "faa61107",
      "text": "Federal Aviation Administration. Advisory Circular AC 61-107B CHG 1: Aircraft operations at altitudes above 25,000 feet mean sea level or Mach numbers greater than .75 (2015).",
      "url": "https://www.faa.gov/documentLibrary/media/Advisory_Circular/AC_61-107B_CHG_1.pdf",
      "supports": "Paragraph 2-7: \"The TUC does not mean the onset of unconsciousness. Impaired performance may be immediate.\" A slow decompression \"may go unnoticed\" and \"is as dangerous as or more dangerous than a rapid decompression\". Earth aviation context for keeping the robot silent and out of the way while the commander runs the procedure."
    },
    {
      "key": "aha2025bls",
      "text": "Kleinman ME, Buick JE, Huber N, et al. Part 7: Adult Basic Life Support: 2025 American Heart Association Guidelines for Cardiopulmonary Resuscitation and Emergency Cardiovascular Care. Circulation. 2025;152(16_suppl_2):S448-S478.",
      "url": "https://doi.org/10.1161/CIR.0000000000001369",
      "doi": "10.1161/CIR.0000000000001369",
      "pmid": "41122888",
      "supports": "Hand-off to cardiac arrest support when the crewmember is unresponsive or not breathing normally."
    },
    {
      "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": "NASA-STD-3001 Vol 2 Rev F: V2 11100 (pressure suits for protection from cabin depressurization), V2 11032 (LEA suits protect against Type II decompression sickness in a cabin depressurization; Soyuz 11 rationale), V2 6021 (real-time pressure display), V2 6009, V2 9053, and Section 10.6 automated and robotic systems."
    },
    {
      "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": "NASA-STD-3001 Vol 1 Rev C: V1 3004 (dysbarism), V1 3006, V1 3007."
    },
    {
      "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": "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-21",
      "version": "0.2",
      "source": "AI-assisted clinical and source review by the Medical Research Assistant, Oct 21, 2026 (batch 6 review)",
      "items": [
        "Soyuz 11 now sits under V2 11032 (its rationale: LEA suits protect against Type II decompression sickness in a cabin depressurization; Soyuz 11, three unsuited crewmembers died within two minutes); V2 11032 added to requirements as context, and the v2 citation text corrected (item 17).",
        "X5 and the comms loss-of-signal branch: on link loss the robot first finishes S2/X10 (out of every route and restrained), then holds; the commander's procedure, masks, suits and crew movement never wait for the link or the robot (item 18).",
        "New lockout: no questions or non-alarm voice prompts while the commander's procedure runs; symptom questions only when the commander says the procedure allows; S5 matches (item 19; FAA AC 61-107B CHG 1 context added to the \"why\", suggestion 37).",
        "RF5 (ear pain, hearing loss or dizziness): routes to RMP-EVA-001 and RMP-ENT-004; treatment is the flight surgeon's, RMP-ENT-003 (planned); the barotrauma part labelled design judgment (item 20).",
        "RF4 says the crew act without waiting for a reading; new URGENT RF7 and limit L5 for \"saturation not obtained\" (item 25).",
        "Batch 6 protocols now record the review as AI-assisted (Medical Research Assistant, Oct 21, 2026); no named human clinician.",
        "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: v2). Editorial; no change to steps, thresholds or limits."
      ]
    },
    {
      "date": "2026-10-21",
      "version": "0.3",
      "source": "Batch 11 editorial (AI-assisted), Oct 21, 2026",
      "items": [
        "Cross-links to the batch 11 drafts no longer say \"(planned)\" now that those protocols exist as v0.1 drafts."
      ]
    }
  ]
}
