{
  "$schema": "https://spacemedicinefoundation.org/robotic-medicine/protocols/schema/protocol.schema.json",
  "schema_version": "0.3",
  "version": "0.2",
  "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 8 review, 17 required corrections and 16 optional suggestions); all required corrections 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-005",
  "slug": "rmp-env-005",
  "title": "Chemical on skin or in the eyes: decontamination supplies and a clock-time record (the crew rinse)",
  "category": "env",
  "tier": 2,
  "rung_note": "Max rung 2 for supervised fetching of the eyewash kit and decontamination supplies to the clean side, showing the onboard checklist and the chemical's first-aid section, recording times as stated, and stowing sealed bags of contaminated clothing. The robot never rinses, wipes or undresses anyone, and never enters or pauses in a contaminated module.",
  "result_language": {
    "use": [
      "as stated by the crewmember",
      "time as stated",
      "sent to flight surgeon",
      "sealed bag stowed",
      "chemical not stated"
    ],
    "never": [
      "normal",
      "no problem found",
      "all clear",
      "negative",
      "any diagnosis or cause",
      "harmless",
      "non-toxic",
      "rinsed enough",
      "decontaminated",
      "clean now",
      "no burn",
      "stop rinsing",
      "safe",
      "mild",
      "minor",
      "pH normal",
      "irrigation complete",
      "rinsed out"
    ]
  },
  "scope": {
    "summary": "When a chemical gets on a crewmember's skin or in their eyes, the robot alerts the flight surgeon and the CMO, brings the eyewash kit and decontamination supplies to the clean side where the crew rinse, shows the onboard checklist and the first-aid section of that chemical's entry in the vehicle hazardous-materials list, records rinse start and stop times as stated, and stows sealed bags of contaminated clothing. Skin injury goes to RMP-SKIN-002 and eye injury to RMP-EYE-001, as in RMP-ENV-002.",
    "why": "For ammonia, the U.S. Agency for Toxic Substances and Disease Registry (ATSDR) says rapid skin and eye decontamination is critical: people who are able may help with their own decontamination; contaminated clothing is removed while flushing and double-bagged; liquid-exposed skin and hair are flushed with water for at least 5 minutes; exposed eyes are irrigated with plain water or saline for at least 15 minutes, and its emergency department section says \"Continue irrigation for at least 15 minutes or until the pH of the conjunctival fluid has returned to normal\"; rescuers avoid chilling the person; and after a swallowed exposure, vomiting is not induced. The College of Optometrists advises irrigating a chemical eye injury for at least 20 minutes. These are Earth sources; for chemicals other than ammonia the steps come from the onboard checklist and the chemical's entry in the hazardous-materials list, and their use here is design judgment. The robot never says when to stop rinsing: the CMO decides under the checklist. As in RMP-EYE-001, only the CMO ends eye irrigation, using a stable physiologic pH (pH paper, if in the kit), not time alone. NASA-STD-3001 requires a means to remove or isolate released chemical contaminants (V2 6063). A leak, spill or alarm is a vehicle emergency led by the commander (RMP-ENV-002 for ammonia, RMP-ENV-001 for smoke). A dedicated sealed decontamination pack (gloves and eye protection for helpers, double bags, towels, a blanket against chilling and pH paper) is kept separate from the eyewash kit, and the eyewash kit is always fetched first, so eye irrigation never waits (design judgment).",
    "covers": [
      "Chemical splashes on skin or in the eyes, from a leak, a spill or handling (cleaning products, coolant, battery or payload chemicals)",
      "Supplies to the clean side; times and body areas as stated; sealed bags of contaminated clothing",
      "Eye injury: RMP-EYE-001; skin injury: RMP-SKIN-002 (chemical burn); breathing problems: RMP-RESP-001; ammonia leak: RMP-ENV-002; smoke: RMP-ENV-001"
    ],
    "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)",
      "Rinsing, wiping or undressing a crewmember",
      "Entering or pausing in a contaminated module or a hatch route",
      "Opening a sealed bag of contaminated clothing",
      "Saying when rinsing is enough, or that a chemical is harmless",
      "Spraying, neutralising or cleaning up a spill (the crew follow the vehicle procedure)"
    ],
    "related": [
      "RMP-ENV-002",
      "RMP-SKIN-002",
      "RMP-EYE-001",
      "RMP-RESP-001",
      "RMP-ENV-001",
      "RMP-INF-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",
      "The exposed crewmember: helps with their own rinsing when able"
    ],
    "robot_may": [
      "Alert the flight surgeon, the CMO and, for a leak or spill, the commander",
      "Bring the eyewash kit and decontamination supplies to the clean side",
      "Show the onboard checklist and the chemical's first-aid section",
      "Record times and body areas as stated",
      "Stow sealed bags of contaminated clothing"
    ],
    "robot_may_not": [
      "Rinse, wipe or undress anyone",
      "Enter or pause in a contaminated module",
      "Say when to stop rinsing",
      "Name a cause or a chemical not stated",
      "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, the CMO or the commander started the protocol by command after a chemical got on skin or in the eyes.",
      "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": "Chemical name or label, as stated or as on the container",
      "source": "Crewmember / CMO / container label",
      "required": false,
      "if_missing": "Log \"chemical not stated\"; the most cautious path applies: copious water irrigation, never shortened; eyes irrigated to the RMP-EYE-001 endpoint, decided by the CMO; clothing removed and double-bagged; the container or label kept for identification; and the flight surgeon's toxicology advice."
    },
    {
      "id": "IN-2",
      "name": "Body areas affected and whether the eyes are involved, as stated",
      "source": "Crewmember / CMO",
      "required": true,
      "if_missing": "Log \"not stated\"; treat as eyes involved until the CMO says otherwise."
    },
    {
      "id": "IN-3",
      "name": "Source: leak, spill, alarm or handling, as stated",
      "source": "Crewmember / commander",
      "required": true,
      "if_missing": "Log \"not stated\"; tell the commander."
    },
    {
      "id": "IN-4",
      "name": "Rinse start and stop times, as stated",
      "source": "CMO / crewmember",
      "required": true,
      "if_missing": "Log \"not stated\"."
    },
    {
      "id": "IN-5",
      "name": "Oxygen saturation as displayed, if the CMO places a probe",
      "source": "Pulse oximeter (crew-placed)",
      "required": false,
      "if_missing": "Log \"reading not obtained\"."
    },
    {
      "id": "IN-6",
      "name": "Link status and delay",
      "source": "Communications system",
      "required": true,
      "if_missing": "Treat as link down; the crew rinse at once."
    }
  ],
  "steps": [
    {
      "id": "S1",
      "actor": "robot",
      "rung": 2,
      "action": "Send an URGENT \"chemical on skin or in the eyes\" alert to the flight surgeon and the CMO at once, and to the commander if a leak, spill or alarm is stated. 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": [
        "V1 3006",
        "V2 10174"
      ]
    },
    {
      "id": "S2",
      "actor": "crew",
      "action": "The crew start rinsing at once under the onboard checklist, without waiting for the robot or the link: the crewmember helps if able, contaminated clothing comes off while rinsing and is double-bagged and sealed, and the eyes are irrigated as the checklist states (RMP-EYE-001), and contact lenses come out if they are easily removable without further harm to the eye (ATSDR). Helpers wear the gloves and eye protection from the pack. A leak, spill or alarm is led by the commander's vehicle procedure (RMP-ENV-002 for ammonia).",
      "success": "Rinsing started, as stated by the CMO.",
      "refs": [
        "V2 6063"
      ]
    },
    {
      "id": "S3",
      "actor": "robot",
      "rung": 2,
      "action": "On a human command, bring first the eyewash kit, then the sealed decontamination pack (gloves and eye protection for helpers, double bags for contaminated clothing, towels, a blanket to prevent chilling and pH paper, as the kit list states), only to the clean side the commander or CMO names; it never enters or pauses in a contaminated module or a hatch route. A chemical on skin or in the eyes is a stated emergency (S1 is already URGENT). This is an emergency fetch on a human command (CMO, crewmember or commander): 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, crewmember or commander 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\".",
      "success": "Eyewash kit, then the decontamination pack, at the clean side; emergency fetch logged.",
      "limit": "<set by validation>",
      "refs": [
        "V2 7046",
        "V2 7059"
      ]
    },
    {
      "id": "S4",
      "actor": "robot",
      "rung": 2,
      "action": "Show on screen, by the name the crew state, the onboard checklist and the first-aid section of that chemical's entry in the vehicle hazardous-materials list. Record rinse start and stop times and body areas exactly as stated, as clock-time entries on a timeline. Only the CMO or crew decide when rinsing stops.",
      "success": "Times and areas logged as stated.",
      "refs": [
        "V1 6003"
      ]
    },
    {
      "id": "S5",
      "actor": "robot",
      "rung": 2,
      "action": "Ask the crewmember, on screen or by voice, about eye pain or blurred vision, skin pain or burning, breathing, and whether anything was swallowed; log the answers word for word.",
      "success": "Answers logged or \"no response\".",
      "refs": [
        "V1 6003"
      ]
    },
    {
      "id": "S6",
      "actor": "robot",
      "rung": 2,
      "action": "Take only double-bagged, sealed bags of contaminated clothing and wipes that the crew have closed, from the clean side to the place the commander names, never opening them. The robot then waits at the clean side for the decontamination step the vehicle procedure states, and is cleaned under RMP-INF-002 before its next task.",
      "success": "Sealed bags stowed; robot cleaned before reuse.",
      "refs": [
        "V2 6063",
        "V2 7064"
      ]
    },
    {
      "id": "S7",
      "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": "S8",
      "actor": "ground",
      "action": "The flight surgeon (or the CMO under the onboard checklist when there is no link) decides on further care, eye and skin follow-up, and the toxicology review.",
      "success": "Decision logged.",
      "refs": [
        "V1 5003"
      ]
    },
    {
      "id": "S9",
      "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": "S10",
      "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": "Kit reconciled or shown as \"opened – not restocked\".",
      "refs": [
        "V2 7059"
      ]
    },
    {
      "id": "S11",
      "actor": "robot",
      "rung": 2,
      "action": "Send the flight surgeon one package: chemical as stated, body areas, rinse times as stated, answers, where the sealed bags were stowed, alerts and decisions.",
      "success": "Package delivered or queued.",
      "refs": [
        "V1 6003",
        "V1 7003"
      ]
    }
  ],
  "decisions": [
    {
      "id": "D1",
      "after": "S3",
      "decided_by": "robot",
      "question": "Which kit fetch was it, and what did the checked kit fetch show?",
      "branches": [
        {
          "if": "EMERGENCY FETCH (an URGENT red flag had fired, or a crewmember or the CMO stated an emergency)",
          "then": "Hand-over already done as an emergency fetch, logged as an override; reconciled afterwards (not a check before use)."
        },
        {
          "if": "KIT ID AND SEAL MATCH",
          "then": "Hand the kit over closed; log \"KIT ID AND SEAL MATCH. Not a check of the contents.\" and the clock time."
        },
        {
          "if": "MISMATCH, seal not intact or CANNOT VERIFY",
          "then": "Shown with the reason. No hand-over under this protocol: the kit stays sealed 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 kit go to the CMO, logged there as an override with the reason, and flagged to the flight surgeon. If the need becomes an emergency, a crewmember or the CMO states it and the emergency fetch applies.",
          "handoff": "none"
        }
      ]
    },
    {
      "id": "D2",
      "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": "D3",
      "after": "S5",
      "decided_by": "robot",
      "question": "Did the crewmember answer the symptom questions?",
      "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": "D4",
      "after": "S8",
      "decided_by": "ground",
      "question": "What further care and follow-up are needed?",
      "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": "D5",
      "after": "S9",
      "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": "Only the robot pauses: before it holds, it moves to a position clear of a hatch route, a crewmember's route or a contaminated module (it never pauses in one), and tells the CMO. This pauses robot movement only: crew rinsing, eye irrigation, masks and the commander's vehicle 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; it resumes only on the CMO's confirmation.",
      "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": "Chemical on the robot, or the robot was inside a contaminated area",
      "action": "Robot holds at the clean-side point the commander names, announces it, touches nothing and no one, and waits for the decontamination step and cleaning under RMP-INF-002; it enters a clean module only on the commander's word.",
      "level": "safe-state",
      "refs": [
        "V2 6063",
        "V2 10172"
      ]
    },
    {
      "id": "X10",
      "trigger": "A leak, spill or cabin alarm is stated",
      "action": "The commander's vehicle procedure leads (RMP-ENV-002 for ammonia, RMP-ENV-001 for smoke); the robot moves only on the commander's command and never pauses in a hatch route.",
      "level": "urgent",
      "refs": [
        "V2 10173"
      ]
    }
  ],
  "red_flags": [
    {
      "id": "RF1",
      "sign": "Chemical in the eye, or eye pain, redness or blurred vision after exposure",
      "threshold": "any",
      "action": "URGENT alert; see RMP-EYE-001 (crew-led eye irrigation)",
      "source": "cochem"
    },
    {
      "id": "RF2",
      "sign": "Skin pain, burning, redness or blistering after exposure",
      "threshold": "any",
      "action": "URGENT alert; see RMP-SKIN-002 (chemical burn)",
      "source": "atsdrnh3"
    },
    {
      "id": "RF3",
      "sign": "Cough, breathlessness, hoarse voice or throat tightness",
      "threshold": "any",
      "action": "URGENT alert; see RMP-RESP-001",
      "source": "atsdrnh3"
    },
    {
      "id": "RF4",
      "sign": "Displayed oxygen saturation (pulse oximeter) 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": "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"
    },
    {
      "id": "RF6",
      "sign": "Chemical swallowed, as stated",
      "threshold": "any",
      "action": "URGENT alert; the flight surgeon decides; the robot never suggests vomiting or drinking anything",
      "source": "atsdrnh3"
    },
    {
      "id": "RF7",
      "sign": "Chemical unknown, a large skin area, or the face involved (design judgment)",
      "threshold": "any",
      "action": "URGENT alert"
    },
    {
      "id": "RF8",
      "sign": "Confusion or drowsiness (design judgment)",
      "threshold": "any",
      "action": "URGENT alert; a crewmember checks in person"
    },
    {
      "id": "RF9",
      "sign": "Shivering or feeling very cold while rinsing",
      "threshold": "any",
      "action": "Flag to the CMO",
      "source": "atsdrnh3"
    }
  ],
  "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": "Robot entry into a contaminated module or a hatch route",
      "value": "not allowed",
      "enforced": "Keep-out map in the robot controller; the commander names the clean side"
    },
    {
      "id": "L3",
      "name": "Rinsing, wiping or undressing by the robot",
      "value": "not allowed",
      "enforced": "No such task is loaded"
    },
    {
      "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": "Chemical as stated, body areas, rinse start and stop times as stated, answers, sealed bags stowed and where."
    },
    {
      "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 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 5003",
      "use": "The CMO is trained for toxic exposures and leads care under the onboard checklist."
    },
    {
      "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 6063",
      "use": "Released chemicals are removed or isolated: contaminated clothing stays in sealed bags and the robot stays out of contaminated areas."
    },
    {
      "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 7064",
      "use": "Sealed bags of contaminated clothing and wipes go to the waste stowage the commander names."
    },
    {
      "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 splashes to eye and skin, unknown chemical, swallowed chemical, a leak alarm, robot contaminated, CMO as patient, lost link.",
      "pass": "Rinsing never waits; zero robot entries into the contaminated area; every red flag raised."
    },
    {
      "stage": "training model",
      "what": "Decontamination drill with a mock splash.",
      "pass": "Supplies at the clean side; sealed bags never opened."
    },
    {
      "stage": "parabolic or station demonstration",
      "what": "Supply fetch and sealed-bag stowage in weightlessness.",
      "pass": "No free liquid from the bags."
    },
    {
      "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 a crewmember, the CMO or the commander. The crew rinse; the commander leads any 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 and toxicology support advise when the link allows.",
    "loss_of_signal": [
      "Only the robot pauses non-essential motion, at a position clear of hatch routes and crew routes, and tells the CMO; it resumes offline only on the CMO's confirmation.",
      "Crew rinsing, eye irrigation, masks and the commander's vehicle procedure continue under the onboard checklist and never wait for the link or the robot.",
      "Rinsing never waits for the link; the CMO decides under the onboard checklist."
    ],
    "mars_delay": [
      "The hazardous-materials list and the onboard checklist are loaded before flight."
    ]
  },
  "sources": [
    {
      "key": "atsdrnh3",
      "text": "Agency for Toxic Substances and Disease Registry (CDC). Medical Management Guidelines for Ammonia (NH3). Fetched Oct 21, 2026.",
      "url": "https://wwwn.cdc.gov/TSP/MMG/MMGDetails.aspx?mmgid=7&toxid=2",
      "supports": "Ammonia medical management guideline: \"Rapid skin and eye decontamination is critical\"; victims who are able may assist with their own decontamination; remove contaminated clothing while flushing exposed areas and double-bag it; flush liquid-exposed skin and hair with water for at least 5 minutes; irrigate exposed or irritated eyes with plain water or saline for at least 15 minutes; avoid chilling (hypothermia) during decontamination; after ingestion do not induce vomiting. Ammonia-specific; use for other chemicals is design judgment."
    },
    {
      "key": "cochem",
      "text": "The College of Optometrists. Clinical Management Guidelines: Trauma (chemical) (last updated March 13, 2026) Primary-care optometry guidance (public sections only).",
      "url": "https://www.college-optometrists.org/clinical-guidance/clinical-management-guidelines/trauma_chemical",
      "supports": "Flush the eye immediately with sterile salt solution, or tap water if that is not available, and continue to irrigate for at least 20 minutes before seeking medical attention; damage is generally greatest with alkalis such as ammonia; severe cases need immediate referral to hospital eye services or emergency care. (Only the publicly visible sections were read; the full guideline needs a login.)"
    },
    {
      "key": "issds2015",
      "text": "NASA. ISS Daily Summary Report 01/14/15 (2015).",
      "url": "https://www.nasa.gov/blogs/stationreport/2015/01/14/iss-daily-summary-report-01-14-15/",
      "supports": "Ammonia leak false alarm on the ISS: \"The crew performed emergency procedures and subsequently evacuated the US Segment and isolated themselves to the Russian Segment\"; later \"the Crew ingressed the US Segment wearing protective ammonia masks and tested the atmosphere as a precaution.\" Operational context only; the flight procedure itself is not public. URL confirmed live (HTTP 200), Oct 21, 2026."
    },
    {
      "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": "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": "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 3006, V1 5003, V1 6003, V1 7003."
    },
    {
      "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 6063 (remove or isolate released contaminants), V2 7064, V2 7059, and Section 10.6 automated and robotic systems."
    },
    {
      "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 8 review)",
      "items": [
        "Eye endpoint matches RMP-EYE-001: why adds the ATSDR line \"until the pH of the conjunctival fluid has returned to normal\"; only the CMO ends irrigation, by a stable physiologic pH, not time alone; pH paper in the pack; \"pH normal\", \"irrigation complete\" and \"rinsed out\" are never-words (fix 10).",
        "S3 is now an emergency fetch on a human command, eyewash kit first, then a separate sealed decontamination pack (fixes 12 and 25); helpers wear gloves and eye protection, and contaminated clothing is double-bagged (S2, S6) (fix 11).",
        "Unknown chemical (IN-1): the most cautious path is spelled out (copious water, never shortened; eyes to the RMP-EYE-001 endpoint; double-bagging; container or label kept; the flight surgeon's toxicology advice); S2 adds the ATSDR contact-lens line (suggestion 24).",
        "Batch 8 protocols now record the review as AI-assisted (Medical Research Assistant, Oct 21, 2026); no named human clinician."
      ]
    }
  ]
}
