{
  "$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-EYE-004",
  "slug": "rmp-eye-004",
  "title": "Eye ultrasound assist with a crew-held probe on the closed eyelid (diagnostic only): checked kit fetch, preset check, display holding and clip labelling",
  "category": "eyes",
  "tier": 3,
  "rung_note": "Max rung 2 for supervised fetching of the ultrasound kit, reading the displayed preset name and output index, holding the display and reference card, and labelling and relaying clips, as in RMP-RESP-004. The CMO holds the probe on the closed eyelid; the robot never touches the face or eye.",
  "result_language": {
    "use": [
      "clip recorded",
      "image not obtained",
      "non-diagnostic, for human review",
      "preset as displayed",
      "sent to flight surgeon"
    ],
    "never": [
      "normal",
      "no problem found",
      "all clear",
      "negative",
      "any diagnosis or cause",
      "normal",
      "abnormal",
      "swelling",
      "no swelling",
      "disc edema",
      "optic disc edema",
      "globe flattening",
      "flattened",
      "detachment",
      "retinal detachment",
      "bleeding",
      "SANS",
      "no SANS",
      "looks fine",
      "reassuring",
      "safe setting",
      "safe",
      "mild",
      "minor"
    ]
  },
  "scope": {
    "summary": "For a scheduled eye ultrasound the flight surgeon sets (for example for spaceflight-associated neuro-ocular syndrome, SANS), or when the flight surgeon or CMO asks for one, the robot brings the ultrasound kit by a checked kit fetch and reads the preset name and output index shown on the unit; if the eye preset is not shown, nothing is scanned until the CMO selects it. The CMO holds the probe on the closed eyelid over a protective film and gel, with no pressure. The robot holds the display and the reference card, relays live images and voice to the ground imaging expert when the link allows, and labels each clip with the eye, view and clock time. Every image is \"non-diagnostic, for human review\". After any stated or suspected eye injury (blunt or penetrating), chemical splash or something in the eye, nothing is scanned unless the flight surgeon directs it: RMP-EYE-001 applies.",
    "why": "In flight, ultrasound is used to look for globe flattening and optic nerve head changes before, during and after missions, though it is less reliable than MRI, and crew get about an hour of ocular ultrasound training (OCHMO-MTB-001). The first eye ultrasound in space was done by a minimally trained crewmember through the closed eyelid with remote guidance (Chiao 2005). The eye has its own, lower ultrasound output limits (FDA 2023: ophthalmic thermal index at most 1.0, mechanical index at most 0.23), so the robot only reads that the eye preset is shown and never changes a setting; whether those values are met is the device's certification, not the robot's check (design judgment). A probe is never used on a possibly penetrated eye (College of Optometrists penetrating trauma guidance); holding the scan after any blunt injury, splash or something in the eye too, unless the flight surgeon directs it, is design judgment; and new vision symptoms stay URGENT, as in RMP-EYE-002.",
    "covers": [
      "Scheduled or requested eye ultrasound with a crew-held probe on the closed eyelid",
      "Eye injury or chemical exposure: RMP-EYE-001; routine vision checks: RMP-EYE-002; retinal photo and OCT: RMP-EYE-003"
    ],
    "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, moving or pressing the probe, or touching the face or eye",
      "Changing the preset, gain or any output setting",
      "Measuring an image, or saying what an image shows or does not show",
      "Scanning an eye after any stated or suspected eye injury, chemical splash or something in the eye, unless the flight surgeon directs it",
      "Eye drops of any kind",
      "Showing a clip on a shared display, or using clips for robot or AI training, research or outreach without separate written consent"
    ],
    "related": [
      "RMP-EYE-001",
      "RMP-EYE-002",
      "RMP-EYE-003",
      "RMP-RESP-004",
      "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": [
      "Prompt the crewmember at the scheduled time",
      "Bring the ultrasound kit by a checked kit fetch (or an emergency fetch)",
      "Read the displayed preset name and output index",
      "Hold the display and the reference card without contact",
      "Relay live images and voice to the ground imaging expert",
      "Label, store and send clips"
    ],
    "robot_may_not": [
      "Hold or move the probe, or touch the face or eye",
      "Change any setting",
      "Say what an image shows",
      "Scan an eye after any stated or suspected injury, unless the flight surgeon directs it"
    ],
    "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 eye scan starts only when the crewmember (or the CMO) accepts the on-screen prompt; a loaded schedule alone never starts it. An unaccepted prompt is logged \"not accepted\" and the CMO is told. A crewmember or the CMO can also start it by command.",
      "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 to the eye scan and to clips being recorded and sent to the flight surgeon and the ground imaging expert. Clips go only to the people the flight surgeon names.",
    "emergency": "If the crewmember cannot agree, no scan is done; any eye symptom raises an URGENT alert (RMP-EYE-001 for an injury).",
    "withdrawal": "The crewmember can stop the scan at any time; the flight surgeon decides on clips already taken."
  },
  "inputs": [
    {
      "id": "IN-1",
      "name": "The flight surgeon's scan list (eyes and views), schedule and the eye (ophthalmic) preset name",
      "source": "Flight surgeon",
      "required": true,
      "if_missing": "The robot shows \"scan list not loaded\" and runs only on a human command."
    },
    {
      "id": "IN-2",
      "name": "The preset name and output index as displayed on the unit",
      "source": "Ultrasound unit display",
      "required": true,
      "if_missing": "Show \"EYE PRESET NOT SELECTED\"; no scan until the CMO selects the eye preset."
    },
    {
      "id": "IN-3",
      "name": "Eye symptoms in the crewmember's words (vision change, eye pain, injury, flashes or a curtain, double vision, headache)",
      "source": "Crewmember",
      "required": true,
      "if_missing": "Log \"no response\"; D4 applies."
    },
    {
      "id": "IN-4",
      "name": "Ultrasound clips, each with the eye and view the CMO names",
      "source": "Ultrasound unit",
      "required": false,
      "if_missing": "Log \"image not obtained\" (never a reassuring value) and continue."
    },
    {
      "id": "IN-5",
      "name": "Link status and delay",
      "source": "Communications system",
      "required": true,
      "if_missing": "Treat as link down; clips are stored and forwarded."
    }
  ],
  "steps": [
    {
      "id": "S1",
      "actor": "robot",
      "rung": 2,
      "action": "At the scheduled time (or on a human command), show the crewmember an on-screen prompt that an eye scan is due, and tell the flight surgeon and the CMO (URGENT if any red flag is stated). The scan starts only when the crewmember or the CMO accepts the prompt; an unaccepted prompt is logged \"not accepted\". Show the eye symptom prompt first (any eye injury, chemical splash or something in the eye is 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": "Prompt accepted; answers logged.",
      "refs": [
        "V2 10174",
        "V1 3003",
        "V1 3006"
      ]
    },
    {
      "id": "S2",
      "actor": "robot",
      "rung": 2,
      "action": "On the CMO's command, run a checked kit fetch of the ultrasound medical kit (unit, sealed gel, eyelid protective film and probe-cover pack): 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": "robot",
      "rung": 2,
      "action": "Read the preset name and output index shown on the unit's display and log them as displayed. If the eye (ophthalmic) preset named in the scan list is not shown, show \"EYE PRESET NOT SELECTED\" and hold; no scan starts until the CMO selects the eye preset. The robot never changes a setting and never says a setting is suitable.",
      "success": "Eye preset shown and logged, or holding.",
      "refs": [
        "V1 7001"
      ]
    },
    {
      "id": "S4",
      "actor": "crew",
      "action": "The crewmember closes the eye; the CMO places the protective film and gel on the closed eyelid and holds the probe with no pressure on the eye, scanning the eyes and views on the scan list or as the ground expert guides. The crewmember can stop at any time. No scan is done after any eye injury (blunt or penetrating), chemical splash or something in the eye, stated or suspected, unless the flight surgeon directs it.",
      "success": "Scan done or stopped.",
      "refs": [
        "V1 3004"
      ]
    },
    {
      "id": "S5",
      "actor": "robot",
      "rung": 2,
      "action": "Hold the ultrasound display and the reference card where the CMO can see them, no closer than the set display distance, and relay live images and voice to the ground imaging expert when the link allows; when the link is down, show the onboard scan checklist and store clips for forwarding. Label and store each clip with the eye, view and clock time, marked \"non-diagnostic, for human review\".",
      "success": "Clips labelled, or \"image not obtained\".",
      "limit": "<set by validation>",
      "refs": [
        "V1 6003",
        "V1 7001"
      ]
    },
    {
      "id": "S6",
      "actor": "crew",
      "action": "After the scan, the crew clean the probe and any shared surface under RMP-INF-002; a probe on intact skin is noncritical equipment, and a probe cover never allows a lower level of cleaning. The eyelid film and gel are removed by the CMO and go in a sealed waste bag. A probe that touched broken skin is semicritical equipment: the crew tag it \"not for use\" under RMP-INF-002 until it has had high-level disinfection.",
      "success": "Cleaning recorded as stated under RMP-INF-002.",
      "refs": [
        "V2 7046"
      ]
    },
    {
      "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 with the ground imaging expert (or the CMO under the onboard checklist when there is no link) reviews the clips and decides on care, repeat scans and any other imaging under RMP-EYE-003.",
      "success": "Decision logged.",
      "refs": [
        "V1 3004"
      ]
    },
    {
      "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: answers as stated, the preset as displayed, labelled clips, times, alerts and decisions; clips go only to the people the flight surgeon names.",
      "success": "Package delivered or queued.",
      "refs": [
        "V1 6003",
        "V1 7003"
      ]
    }
  ],
  "decisions": [
    {
      "id": "D1",
      "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": "D2",
      "after": "S1",
      "decided_by": "crew",
      "question": "Is any eye injury (blunt or penetrating), a chemical splash or something in the eye stated or suspected in this event?",
      "branches": [
        {
          "if": "Yes, or not sure",
          "then": "No scan unless the flight surgeon directs it: URGENT alert; RMP-EYE-001 applies. The robot does not bring the probe."
        },
        {
          "if": "No",
          "then": "Continue."
        }
      ]
    },
    {
      "id": "D3",
      "after": "S3",
      "decided_by": "robot",
      "question": "Is the eye (ophthalmic) preset named in the scan list shown on the unit?",
      "branches": [
        {
          "if": "Yes",
          "then": "Continue to the scan."
        },
        {
          "if": "No, or cannot read the display",
          "then": "Show \"EYE PRESET NOT SELECTED\" and hold; the CMO selects the eye preset, and the robot reads the display again."
        }
      ]
    },
    {
      "id": "D4",
      "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": "D5",
      "after": "S1",
      "decided_by": "robot",
      "question": "Did the crewmember answer the eye 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": "D6",
      "after": "S8",
      "decided_by": "ground",
      "question": "What is the plan (care, repeat scan, other imaging)?",
      "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": "D7",
      "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 or a crewmember's route (it never pauses in one), and tells the CMO. This pauses robot movement only: crew scanning 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 unit's displayed preset changes away from the eye preset during a scan",
      "action": "Robot shows \"EYE PRESET NOT SELECTED\" and tells the CMO at once; the CMO lifts the probe until the eye preset is shown again.",
      "level": "stop"
    },
    {
      "id": "X10",
      "trigger": "The crewmember says the probe hurts, or asks to stop",
      "action": "Robot tells the CMO at once and holds the display; the CMO lifts the probe.",
      "level": "stop"
    },
    {
      "id": "X11",
      "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": "An eye injury, a chemical splash or something in the eye, as stated",
      "threshold": "any",
      "action": "Stop; URGENT alert; see RMP-EYE-001",
      "source": "copen"
    },
    {
      "id": "RF2",
      "sign": "Sudden loss or dimming of vision in one or both eyes",
      "threshold": "any",
      "action": "URGENT alert to the CMO and flight surgeon",
      "source": "coref"
    },
    {
      "id": "RF3",
      "sign": "A shadow or curtain across part of the vision, or new flashes of light, or a shower of new floaters",
      "threshold": "any",
      "action": "URGENT alert",
      "source": "coref"
    },
    {
      "id": "RF4",
      "sign": "Sudden severe eye pain, pain on moving the eye, or eye pain with feeling sick or vomiting",
      "threshold": "any",
      "action": "URGENT alert",
      "source": "coref"
    },
    {
      "id": "RF5",
      "sign": "New double vision, or a new drooping eyelid",
      "threshold": "any",
      "action": "URGENT alert; see RMP-NEURO-002",
      "source": "coref"
    },
    {
      "id": "RF6",
      "sign": "A new headache with any change in vision, or a sudden severe headache",
      "threshold": "any",
      "action": "URGENT alert; see RMP-NEURO-002",
      "source": "nice150"
    },
    {
      "id": "RF7",
      "sign": "The crewmember says their near or distance vision is getting worse",
      "threshold": "any",
      "action": "Flag to the flight surgeon",
      "source": "mader"
    },
    {
      "id": "RF8",
      "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": "Probe holding or movement by the robot",
      "value": "not allowed",
      "enforced": "No probe task is loaded; the robot holds only the display and reference card"
    },
    {
      "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": "Changing the preset, gain or any output setting by the robot",
      "value": "not allowed",
      "enforced": "Read-only display interface; no settings task is loaded"
    },
    {
      "id": "L6",
      "name": "Scanning without the eye (ophthalmic) preset shown (FDA 2023 ophthalmic output limits)",
      "value": "not allowed",
      "enforced": "The robot holds and shows \"EYE PRESET NOT SELECTED\" until the eye preset is displayed"
    }
  ],
  "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": "Prompt and acceptance; answers as stated; preset name and output index as displayed with times; each clip with eye, view and time; images not obtained; who viewed the clips."
    },
    {
      "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 3003",
      "use": "In-mission preventive health care and monitoring of physiological and psychosocial well-being."
    },
    {
      "id": "V1 3004",
      "use": "In-mission medical care includes eye imaging; the flight surgeon and imaging expert read 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 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 scans with a non-eye preset, a preset change mid-scan, a suspected penetrating injury, a vision red flag, CMO as patient, lost link.",
      "pass": "Zero scans without the eye preset; zero scans of a possibly penetrated eye; zero contact."
    },
    {
      "stage": "training model",
      "what": "Eye ultrasound drill on a phantom with remote guidance.",
      "pass": "Every clip labelled with eye, view and time."
    },
    {
      "stage": "parabolic or station demonstration",
      "what": "Display holding in weightlessness.",
      "pass": "Display distance held."
    },
    {
      "stage": "flight use under flight surgeon supervision",
      "what": "First scheduled eye scan.",
      "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": "Scheduled or asked for by the flight surgeon or CMO and accepted by the crewmember. The CMO holds the probe; the flight surgeon and imaging expert read 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 ground imaging expert guides live when the link allows (about 2 seconds of delay was workable on the ISS, Chiao 2005).",
    "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 scanning already under way and all other care continue under the onboard checklist and never wait for the link or the robot.",
      "The scan follows the onboard checklist; clips are stored and forwarded."
    ],
    "mars_delay": [
      "Mars: no live guidance; the CMO follows the onboard checklist and clips are reviewed with delay."
    ]
  },
  "sources": [
    {
      "key": "mtb001",
      "text": "NASA OCHMO. Spaceflight Associated Neuro-ocular Syndrome (SANS). Medical Technical Brief OCHMO-MTB-001 (2024).",
      "url": "https://www.nasa.gov/wp-content/uploads/2024/02/ochmo-mtb-001-sans.pdf",
      "supports": "70% of crew show one or more signs of SANS and 18% are diagnosed with clinically concerning SANS on long missions; optic disc edema and chorioretinal folds are monitored with fundoscopy, photography and OCT before, during and after flight; crew train on OCT, fundoscope and ocular ultrasound, but it may be months before that training is used."
    },
    {
      "key": "chiao2005",
      "text": "Chiao L, Sharipov S, Sargsyan AE, et al. Ocular examination for trauma; clinical ultrasound aboard the International Space Station. J Trauma. 2005;58(5):885-889.",
      "url": "https://doi.org/10.1097/01.TA.0000162456.37962.01",
      "doi": "10.1097/01.TA.0000162456.37962.01",
      "pmid": "15920397",
      "supports": "Abstract: the first ocular ultrasound in space was done on the ISS by a minimally trained crewmember with remote guidance from the ground, through the closed eyelid, with about 2 seconds of signal delay; images were adequate for the ground experts. Read Oct 21, 2026 (saved copy in src/b11)."
    },
    {
      "key": "fdaus2023",
      "text": "US Food and Drug Administration. Marketing Clearance of Diagnostic Ultrasound Systems and Transducers. Guidance for industry and FDA staff (2023).",
      "url": "https://www.fda.gov/regulatory-information/search-fda-guidance-documents/marketing-clearance-diagnostic-ultrasound-systems-and-transducers",
      "supports": "Ophthalmic (eye) use has its own lower acoustic output limits: under Track 3, a thermal index of at most 1.0, a derated spatial-peak temporal-average intensity of at most 50 mW/cm2 and a mechanical index of at most 0.23; the Track 1 ophthalmic intensity limit is 17 mW/cm2. Read Oct 21, 2026 (saved copy in src/b11)."
    },
    {
      "key": "copen",
      "text": "The College of Optometrists. Clinical Management Guidelines: Trauma (penetrating) (last updated March 13, 2026) Primary-care optometry guidance (public sections only).",
      "url": "https://www.college-optometrists.org/clinical-guidance/clinical-management-guidelines/trauma_penetrating",
      "supports": "Penetrating trauma is a full-thickness injury of the cornea or outer coat of the eye; first aid is followed by emergency referral, with an ophthalmologist seeing the patient as soon as possible the same day; foreign bodies are identified but not removed. (Public sections only.)"
    },
    {
      "key": "coref",
      "text": "The College of Optometrists. Guidance for Professional Practice, Annex 4: Urgency of referrals table. Primary-care optometry guidance.",
      "url": "https://www.college-optometrists.org/clinical-guidance/guidance/guidance-annexes/annex-4-urgency-of-referrals-table",
      "supports": "Emergency (as soon as possible): sudden complete loss of vision; retinal detachment with the macula on; severe eye pain with nausea or vomiting. Emergency (within 24 hours): sudden visual loss of unknown cause; floaters or flashes of light (photopsia); papilloedema (optic disc swelling); acute onset double vision, squint, drooping eyelid or nerve palsy; pain on eye movement; sudden severe eye pain. Urgent: sudden change in vision; optic neuritis; new pupil defects."
    },
    {
      "key": "nice150",
      "text": "National Institute for Health and Care Excellence. Headaches in over 12s: diagnosis and management. Clinical guideline CG150.",
      "url": "https://www.nice.org.uk/guidance/cg150/chapter/Recommendations",
      "supports": "Headache features that need further investigation or referral include worsening headache with fever, sudden-onset headache reaching maximum intensity within 5 minutes, new-onset neurological deficit, and impaired level of consciousness."
    },
    {
      "key": "mader",
      "text": "Mader TH, Gibson CR, Pass AF, et al. Optic disc edema, globe flattening, choroidal folds, and hyperopic shifts observed in astronauts after long-duration space flight. Ophthalmology. 2011;118(10):2058-2069.",
      "url": "https://doi.org/10.1016/j.ophtha.2011.06.021",
      "doi": "10.1016/j.ophtha.2011.06.021",
      "pmid": "21849212",
      "supports": "Postflight questionnaires from about 300 astronauts documented that about 29% on short and 60% on long-duration missions experienced a degradation in distant and near visual acuity; some of these vision changes remain unresolved years after flight. Only the abstract was read."
    },
    {
      "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": "cdcdis",
      "text": "U.S. Centers for Disease Control and Prevention. Guideline for Disinfection and Sterilization in Healthcare Facilities (2008): summary of recommendations.",
      "url": "https://www.cdc.gov/infection-control/hcp/disinfection-sterilization/summary-recommendations.html",
      "supports": "3.b: at least high-level disinfection for semicritical equipment that touches mucous membranes or non-intact skin; 3.c: low-level disinfection for noncritical surfaces and equipment that touch intact skin; 4.b: follow the disinfectant label's safety precautions and use directions, including contact time; 4.c: disinfect noncritical devices when visibly soiled and on a regular basis. Content read through the web search index on Oct 21, 2026 (the CDC site returned HTTP 403 to automated fetch); copy in src/b7/cdc_summary_searchindex.txt."
    },
    {
      "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 3003, V1 3004, V1 3006, V1 6003, 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": [
        "R8: D2 now asks whether any eye injury (blunt or penetrating), a chemical splash or something in the eye is stated or suspected in this event; yes or not sure means no scan unless the flight surgeon directs it, an URGENT alert and RMP-EYE-001. S4, the summary and the lockouts match. Sources: College of Optometrists (penetrating); the blunt-injury rule is design judgment.",
        "Batch 11 protocols now record the review as AI-assisted (Medical Research Assistant, Oct 21, 2026); no named human clinician."
      ]
    }
  ]
}
