{
  "$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 11 review: 10 required corrections, R1 to R10; 9 optional suggestions not applied in this version); all required corrections that apply to this protocol 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-ENT-003",
  "slug": "rmp-ent-003",
  "title": "Ear or sinus pain, including after a pressure change: symptom questions first, checked kit fetch, otoscope camera display and relay (the CMO holds the otoscope)",
  "category": "ent",
  "tier": 3,
  "rung_note": "Max rung raised from 1 to 2 for the symptom prompt, a checked kit fetch of the ear, nose and throat kit, holding the otoscope display and relaying images with consent, and labelling them for human review. The CMO holds the video otoscope; the robot never touches the ear, nose or face.",
  "result_language": {
    "use": [
      "image recorded",
      "image not obtained",
      "non-diagnostic, for human review",
      "as stated by the crewmember",
      "sent to flight surgeon"
    ],
    "never": [
      "normal",
      "no problem found",
      "all clear",
      "negative",
      "any diagnosis or cause",
      "normal",
      "abnormal",
      "infection",
      "infected",
      "ear infection",
      "perforation",
      "perforated",
      "no perforation",
      "wax",
      "barotrauma",
      "fluid",
      "red",
      "looks fine",
      "reassuring",
      "safe",
      "mild",
      "minor"
    ]
  },
  "scope": {
    "summary": "When a crewmember has ear or sinus pain or fullness (including after a cabin, suit or airlock pressure change), the robot first asks symptom questions on screen and raises an URGENT alert for any red flag. On the CMO's command it brings the ear, nose and throat kit (video otoscope and single-use specula) by a checked kit fetch. With the crewmember's consent, it holds the otoscope display where the CMO can see it, relays live images to the flight surgeon when the link allows, and labels each image with the ear and clock time, marked \"non-diagnostic, for human review\". The CMO holds the otoscope and puts the used speculum in a sealed waste bag.",
    "why": "Ear and sinus problems after a pressure change are a known spaceflight concern, and ear and sinus barotrauma is listed among in-flight conditions (NASA in-flight medical conditions evidence report); inner-ear symptoms after a pressure change (sudden hearing loss, spinning vertigo or ringing) are treated as possible decompression sickness, which lists inner-ear problems among its serious signs (NASA TB-037; RMP-EVA-001). Sudden hearing loss needs prompt recognition, which may improve recovery (Chandrasekhar 2019), so it is URGENT. Swelling around the eye or forehead, a severe frontal headache or new neurological signs with sinus symptoms may be a complication (NICE NG79), and fever is URGENT, as in RMP-ENT-004. Swelling behind the ear, facial weakness, and ear discharge or bleeding are labelled design judgment. The robot's role (prompt, fetch, display, relay, label) is design judgment; the flight surgeon judges every image.",
    "covers": [
      "Ear pain or fullness, sinus pain or pressure, including after a cabin, suit or airlock pressure change",
      "Pressure changes during an EVA: RMP-EVA-001; congestion and sinus symptoms: RMP-ENT-004; tooth pain with a pressure change: RMP-ENT-002"
    ],
    "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)",
      "Holding or inserting the otoscope or speculum, or touching the ear, nose or face",
      "Saying what an image shows, or whether the eardrum is intact",
      "Any ear drops, ear cleaning or pressure-equalizing advice",
      "Recording or relaying any image without consent",
      "Showing an image on a shared display, or using images for robot or AI training, research or outreach without separate written consent"
    ],
    "related": [
      "RMP-ENT-004",
      "RMP-ENT-002",
      "RMP-EVA-001",
      "RMP-ENV-003",
      "RMP-INF-001",
      "RMP-INF-002",
      "RMP-NEURO-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": [
      "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": [
      "Ask symptom questions on screen first",
      "Bring the ear, nose and throat kit by a checked kit fetch",
      "Hold the otoscope display without contact, with consent",
      "Relay live images to the flight surgeon",
      "Label, store and send images"
    ],
    "robot_may_not": [
      "Hold or insert the otoscope or touch anyone",
      "Say what an image shows",
      "Give ear drops or any advice",
      "Record or relay images without consent"
    ],
    "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 crewmember or the CMO started the protocol by command for ear or sinus pain or fullness.",
      "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": "The crewmember agrees before any otoscope image is recorded or relayed; images go only to the CMO, the flight surgeon and people the flight surgeon names.",
    "emergency": "If the crewmember cannot agree, no image is recorded; any red flag raises an URGENT alert.",
    "withdrawal": "The crewmember can stop at any time; the flight surgeon decides on images already taken."
  },
  "inputs": [
    {
      "id": "IN-1",
      "name": "Symptoms in the crewmember's words: which ear or side, pain, fullness, hearing change, vertigo, ringing, discharge, fever, and any recent pressure change (cabin, suit, airlock or EVA)",
      "source": "Crewmember",
      "required": true,
      "if_missing": "Log \"no response\"; D2 applies."
    },
    {
      "id": "IN-2",
      "name": "Otoscope images, each with the ear the CMO names",
      "source": "Video otoscope",
      "required": false,
      "if_missing": "Log \"image not obtained\" and continue."
    },
    {
      "id": "IN-3",
      "name": "Link status and delay",
      "source": "Communications system",
      "required": true,
      "if_missing": "Treat as link down; images are queued."
    }
  ],
  "steps": [
    {
      "id": "S1",
      "actor": "robot",
      "rung": 2,
      "action": "Tell the CMO and the flight surgeon that an ear or sinus check has started (URGENT if any red flag is stated). Show the symptom prompt on screen first (sudden hearing loss, spinning vertigo, or a recent pressure change are asked first) and log answers word for word. 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": "Notice acknowledged; answers logged, or \"no response\".",
      "refs": [
        "V1 3004",
        "V1 3006"
      ]
    },
    {
      "id": "S2",
      "actor": "robot",
      "rung": 2,
      "action": "On the CMO's command, run a checked kit fetch of the ear, nose and throat medical kit (video otoscope and sealed single-use specula): check the kit ID and seal before hand-over, and quarantine a kit whose ID or seal does not match (no hand-over; the CMO is told). Any medicine goes only through RMP-PHARM-001. If an URGENT red flag has fired or a human states an emergency, bring it instead as an emergency fetch: 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\".",
      "success": "Kit within reach after a matched ID and seal, or quarantined, or emergency fetch logged.",
      "limit": "<set by validation>",
      "refs": [
        "V2 7046",
        "V2 7059"
      ]
    },
    {
      "id": "S3",
      "actor": "crew",
      "action": "The CMO fits a new single-use speculum and holds the video otoscope; the crewmember is restrained and can stop at any time.",
      "success": "Ready to look.",
      "refs": [
        "V1 3004"
      ]
    },
    {
      "id": "S4",
      "actor": "robot",
      "rung": 2,
      "action": "Only after the crewmember agrees (D3), hold the otoscope display where the CMO can see it, no closer than the set display distance, and relay live images to the flight surgeon when the link allows. Label and store each image with the ear the CMO names and the clock time, marked \"non-diagnostic, for human review\"; the robot never says what an image shows.",
      "success": "Images labelled, or \"image not obtained\".",
      "limit": "<set by validation>",
      "refs": [
        "V1 6003",
        "V1 7001"
      ]
    },
    {
      "id": "S5",
      "actor": "crew",
      "action": "The CMO puts the used speculum in a sealed waste bag and cleans the otoscope and any shared surface under RMP-INF-002.",
      "success": "Speculum in sealed waste; cleaning recorded as stated.",
      "refs": [
        "V2 7046"
      ]
    },
    {
      "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) reviews the answers and images and decides on care, hearing tests and any limits on pressure changes or EVA.",
      "success": "Decision logged.",
      "refs": [
        "V1 3004",
        "V1 6006"
      ]
    },
    {
      "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": "Kit reconciled or shown as \"opened – not restocked\".",
      "refs": [
        "V2 7059"
      ]
    },
    {
      "id": "S10",
      "actor": "robot",
      "rung": 2,
      "action": "Send the flight surgeon one package: answers as stated, labelled images, times, alerts and decisions; images go only to the people the flight surgeon names.",
      "success": "Package delivered or queued.",
      "refs": [
        "V1 6003",
        "V1 7003"
      ]
    }
  ],
  "decisions": [
    {
      "id": "D1",
      "after": "S1",
      "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": "S1",
      "decided_by": "robot",
      "question": "Did the crewmember answer the symptom prompt, or say they want to skip it?",
      "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": "S3",
      "decided_by": "robot",
      "question": "Before any otoscope image is recorded: did the crewmember agree to this session's images?",
      "branches": [
        {
          "if": "Yes",
          "then": "Continue to S4; the crewmember can say stop at any time."
        },
        {
          "if": "No, or no answer",
          "then": "No image is recorded or relayed; log \"image not taken – no consent\" and tell the CMO."
        }
      ]
    },
    {
      "id": "D4",
      "after": "S2",
      "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": "D5",
      "after": "S7",
      "decided_by": "ground",
      "question": "What is the plan (care, hearing tests, pressure-change or EVA 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."
        }
      ]
    },
    {
      "id": "D6",
      "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": "Only the robot pauses: before it holds, it moves to a position clear of a hatch route or a crewmember's route (it never pauses in one), and tells the CMO. This pauses robot movement only: crew care already under way and all other care 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": "The crewmember says the otoscope hurts, or asks to stop",
      "action": "Robot tells the CMO at once and holds the display; the CMO removes the otoscope.",
      "level": "stop"
    },
    {
      "id": "X10",
      "trigger": "Someone needs the space or route the robot is in",
      "action": "Robot moves clear at once without contact and holds; it never pauses in a hatch route.",
      "level": "safe-state",
      "refs": [
        "V2 10172"
      ]
    }
  ],
  "red_flags": [
    {
      "id": "RF1",
      "sign": "Sudden hearing loss in one or both ears, as stated",
      "threshold": "any",
      "action": "URGENT alert to the CMO and flight surgeon; hearing tests as the flight surgeon decides",
      "source": "chandrasekhar2019"
    },
    {
      "id": "RF2",
      "sign": "Spinning vertigo, ringing in the ear, or sudden hearing loss after an EVA or a cabin, suit or airlock pressure change, as stated",
      "threshold": "any",
      "action": "URGENT alert; see RMP-EVA-001 (possible decompression sickness) and RMP-ENT-004",
      "source": "tb037"
    },
    {
      "id": "RF3",
      "sign": "Severe ear or sinus pain after an EVA or a cabin, suit or airlock pressure change, as stated",
      "threshold": "any",
      "action": "URGENT alert; see RMP-ENT-004 (ear or sinus barotrauma)",
      "source": "ermed"
    },
    {
      "id": "RF4",
      "sign": "Swelling or redness around the eye, a bulging eye, double vision, or newly reduced vision",
      "threshold": "any",
      "action": "URGENT alert to the CMO and flight surgeon",
      "source": "ng79"
    },
    {
      "id": "RF5",
      "sign": "Swelling over the forehead, severe headache at the front of the head, stiff neck, or new weakness, numbness or confusion",
      "threshold": "any",
      "action": "URGENT alert; see RMP-NEURO-002",
      "source": "ng79"
    },
    {
      "id": "RF6",
      "sign": "Swelling, redness or tenderness behind the ear, or new weakness of one side of the face, as stated (design judgment)",
      "threshold": "any",
      "action": "URGENT alert to the CMO and flight surgeon"
    },
    {
      "id": "RF7",
      "sign": "Fever or shaking chills",
      "threshold": "<set by clinical lead> degrees (shared parameter FEVER_ALERT_C: body temperature in degrees Celsius, the same value in RMP-GI-003, RMP-ENT-002, RMP-SKIN-002 and RMP-RENAL-004) or higher, or any shaking chills",
      "action": "URGENT alert; see RMP-INF-001",
      "source": "ng253"
    },
    {
      "id": "RF8",
      "sign": "Discharge or bleeding from the ear, as stated (design judgment)",
      "threshold": "any",
      "action": "Flag to the flight surgeon at once; the CMO examines"
    },
    {
      "id": "RF9",
      "sign": "Tooth pain that starts or gets worse with a pressure change, as stated",
      "threshold": "any",
      "action": "Flag to the flight surgeon; see RMP-ENT-002",
      "source": "menon"
    },
    {
      "id": "RF10",
      "sign": "Unresponsive, or not breathing normally",
      "threshold": "any",
      "action": "URGENT alert; start RMP-CARD-001 now",
      "source": "aha2025bls"
    }
  ],
  "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": "Holding or inserting the otoscope or speculum by the robot",
      "value": "not allowed",
      "enforced": "No such task is loaded; the robot holds only the display"
    },
    {
      "id": "L3",
      "name": "Robot speed near the crewmember",
      "value": "<set by validation>",
      "enforced": "Hard limit in the controller",
      "refs": [
        "V2 10172"
      ]
    },
    {
      "id": "L4",
      "name": "Display distance from the crewmember",
      "value": "<set by validation>",
      "enforced": "Hard limit in the controller",
      "refs": [
        "V2 10172"
      ]
    },
    {
      "id": "L5",
      "name": "Image shown on a shared display, or used for robot or AI training, research or outreach without separate written consent",
      "value": "not allowed",
      "enforced": "Images are stored only in the crewmember's medical record, encrypted in storage and in transit as the program requires; access is limited to the CMO, the flight surgeon and people the flight surgeon names.",
      "refs": [
        "V1 7003"
      ]
    }
  ],
  "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": "Answers as stated with times; consent before images; each image with ear and time; images not obtained; who viewed the images."
    },
    {
      "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"
      ]
    },
    {
      "id": "LOG-9",
      "text": "Each checked kit fetch: time, who asked, kit ID, seal status and result (KIT ID AND SEAL MATCH, MISMATCH, seal not intact or CANNOT VERIFY), and any quarantine.",
      "refs": [
        "V2 7059"
      ]
    }
  ],
  "requirements": [
    {
      "id": "V1 3004",
      "use": "In-mission medical care includes ear, nose and throat care; the flight surgeon judges every image."
    },
    {
      "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 6003",
      "use": "Logs and alerts sent to the ground are private medical communications."
    },
    {
      "id": "V1 6006",
      "use": "Ear or sinus findings after a pressure change inform the flight surgeon's EVA decisions."
    },
    {
      "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 checks with sudden hearing loss, vertigo after a pressure change, a missed consent, CMO as patient, lost link.",
      "pass": "Every red flag URGENT before any image; zero images without consent; zero contact."
    },
    {
      "stage": "training model",
      "what": "Otoscope drill on an ear model with remote review.",
      "pass": "Every image labelled with ear and time; every speculum in sealed waste."
    },
    {
      "stage": "parabolic or station demonstration",
      "what": "Display holding in weightlessness.",
      "pass": "Display distance held."
    },
    {
      "stage": "flight use under flight surgeon supervision",
      "what": "First use for ear or sinus pain.",
      "pass": "No safety or privacy 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 crewmember or the CMO. Symptom questions come first; the CMO holds the otoscope and the flight surgeon judges every image."
  },
  "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 views live images 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 care already under way and all other care continue under the onboard checklist and never wait for the link or the robot.",
      "Images are queued; any red flag goes to the CMO at once."
    ],
    "mars_delay": [
      "Mars: images arrive with delay; the CMO decides under the onboard checklist."
    ]
  },
  "sources": [
    {
      "key": "chandrasekhar2019",
      "text": "Chandrasekhar SS, Tsai Do BS, Schwartz SR, et al. Clinical practice guideline: sudden hearing loss (update). Otolaryngol Head Neck Surg. 2019;161(1 Suppl):S1-S45.",
      "url": "https://pubmed.ncbi.nlm.nih.gov/31369359/",
      "doi": "10.1177/0194599819859885",
      "pmid": "31369359",
      "supports": "Abstract: for adults (18 and over); prompt recognition of sudden hearing loss may improve recovery; clinicians should distinguish sensorineural from conductive hearing loss, and audiometry should be done within 14 days of onset. Read Oct 21, 2026 (saved copy in src/b11)."
    },
    {
      "key": "ermed",
      "text": "NASA Human Research Program. Evidence Report: Risk of Adverse Health Outcomes and Decrements in Performance due to Medical Conditions that occur in Flight, as well as Private Medical Conditions, in Exploration Missions (In-Flight Medical Conditions).",
      "url": "https://humanresearchroadmap.nasa.gov/evidence/reports/Medical.pdf",
      "supports": "Table 2 (US astronauts, Shuttle, Mir and ISS through Expedition 13 / 2006): headache (space adaptation) 233, headache (late) 49, headache (CO2 induced) 20; choking/obstructed airway 3; smoke inhalation 3. Table 1 (ISS through Expedition 40): headache 33."
    },
    {
      "key": "ng79",
      "text": "National Institute for Health and Care Excellence. Sinusitis (acute): antimicrobial prescribing. NICE guideline NG79 (2017).",
      "url": "https://www.nice.org.uk/guidance/ng79/chapter/Recommendations",
      "supports": "Refer to hospital if acute sinusitis comes with severe systemic infection; eye-socket complications (swelling or redness around the eye, a displaced eyeball, double vision, eye-movement problems, or newly reduced vision); or brain complications (swelling over the forehead, signs of meningitis, severe frontal headache, or focal neurological signs)."
    },
    {
      "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": "menon",
      "text": "Menon A. Review of Spaceflight Dental Emergencies. NASA/TM-2012-217368 (NASA Johnson Space Center, September 2012).",
      "url": "https://ntrs.nasa.gov/api/citations/20120002807/downloads/20120002807.pdf",
      "supports": "No written record of an in-flight dental emergency in US astronauts, but a NASA dentist described an in-flight crown displacement temporarily repaired by the crewmember with onboard supplies; cosmonauts reported lost fillings and crowns in flight, thought to be dislodged by launch vibration, and incapacitating dental pain on a 96-day flight; repair must weigh the risk of aspiration (inhaling) of a loose crown; Integrated Medical Model estimates (events per person-year) include dental abscess 0.0230, exposed pulp 0.0201, crown replacement 0.00518 and filling replacement 0.00511, and a dental abscess was the condition most likely to end in evacuation from the ISS in that model; fillings can be linked with tooth pain on pressure change (barodontalgia)."
    },
    {
      "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": "Adult basic life support: initial recognition of cardiac arrest, activation of the emergency response, high-quality CPR and use of an automated external defibrillator; also respiratory arrest and foreign-body airway obstruction. Earth guidance; the onboard checklist leads. Abstract read via PubMed Oct 21, 2026; full text not read."
    },
    {
      "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": "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, V1 3006, V1 6003, V1 6006, V1 7001, 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": "Requirement IDs beginning V2."
    },
    {
      "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": "Batch 11 AI-assisted clinical review (Medical Research Assistant), Oct 21, 2026",
      "items": [
        "R9: ermed is kept for ear and sinus barotrauma (severe ear or sinus pain after a pressure change, now its own red flag, RF3). Inner-ear symptoms after a pressure change (spinning vertigo, ringing, sudden hearing loss) now cite NASA TB-037, which lists inner-ear problems among serious decompression sickness signs (RF2, and the why). Later red flags are renumbered by one.",
        "Batch 11 protocols now record the review as AI-assisted (Medical Research Assistant, Oct 21, 2026); no named human clinician."
      ]
    }
  ]
}
