How to Version a FHIR Questionnaire for Regulatory Submission Under FDA PRO Guidance

How to Version a FHIR Questionnaire for Regulatory Submission Under FDA PRO Guidance

FDA PRO guidance treats a patient-reported outcome instrument as validated evidence. Any change to the wording, the response set, the skip logic, or the scoring rule is a change to the evidence trail, and the regulator expects a version identifier that a reviewer can follow from a QuestionnaireResponse in the trial dataset back to the exact instrument that produced it. FHIR Questionnaire has the machinery for this, but only if the trial team wires it correctly from the first canonical publish.

Below is the version-management workflow that holds up under FDA PRO review, expressed in FHIR Questionnaire terms. For the SDC and forms reference, the surrounding stack is documented elsewhere.

Pin Version, Status, and Canonical URL From the First Publish

Three Questionnaire elements carry the regulatory weight and have to be set correctly at the first publish. The canonical URL identifies the instrument across every study that uses it. The version element carries the semantic version. The status element gates whether the runtime will accept new responses against it.

  1. Questionnaire.url. Fixed for the lifetime of the instrument. Convention is a stable domain that the sponsor controls, plus a stable slug (https://sponsor.example/fhir/Questionnaire/promis-29). Do not rewrite it across amendments.
  2. Questionnaire.version. Semantic, three-part (2.1.0), and monotonic. Bump the major on breaking item changes, minor on additive changes, patch on rule fixes.
  3. Questionnaire.status. Move from draft to active at the moment the instrument is locked for the protocol version, and to retired when the amended protocol supersedes it. Never mutate an active Questionnaire in place.

The Questionnaire.copyright and Questionnaire.experimental elements are used less often for PRO, but the reviewer will look at them if either is missing on a scored instrument.

QUESTIONNAIRE VERSION LIFECYCLE

canonical url · version stable slug + semantic version TRACEABILITY ANCHOR

DRAFT status = draft under review before protocol lock

ACTIVE status = active runtime accepts responses

RETIRED status = retired last patient on old protocol done

NEW VERSION bumped version · same url Provenance records amendment

LOCK

SUPERSEDE

AMEND

PUBLISH

NEVER MUTATE AN ACTIVE QUESTIONNAIRE IN PLACE

Persist the Version on Every QuestionnaireResponse

The QuestionnaireResponse carries a questionnaire reference. For traceability, pin the canonical URL plus the version, using the canonical-reference form https://sponsor.example/fhir/Questionnaire/promis-29|2.1.0. That single string is what a downstream reviewer follows from a subject's response back to the exact instrument version that produced it.

SDC's ExtractDefinition is the standard mechanism; whether the extraction is built in-house or lives inside an engine like Formbox, the extraction contract that produces the downstream Observation carries the version identifier forward on the Observation's derivedFrom reference. That is the piece a monitoring extract or a submission dataset uses to demonstrate that every observation in the trial is traceable to a specific instrument version.

Trial teams that want to walk this end to end before touching a production runtime can prototype the Questionnaire and QuestionnaireResponse in the browser at form-builder.aidbox.app, which consumes standard FHIR JSON and shows the canonical-reference behavior directly.

Ship the Amendment Without Breaking History

When a protocol amendment changes a PRO item, publish a new Questionnaire version rather than editing the existing one. The old version stays in the FHIR store at status active until the last patient on the old protocol completes, then moves to retired. A Provenance record captures the transition so a reviewer can trace which amendment triggered the version bump. The new version publishes with a bumped version element and a stable url. Runtime routing sends new responses to the new version; historical responses keep pointing at the old.

Two operational pieces support this pattern:

  • Version routing in the Questionnaire runtime, keyed on protocol arm and enrollment date.
  • Retirement policy in the study data manager's SOPs, so a retired Questionnaire is not silently reactivated by a template-copy operation.

The reference for the surrounding Questionnaire orchestration lives in the FHIR Questionnaire orchestration 2026 reference guide; the multi-site trial research context sits in Best SDC form engines for multi-site trial research in 2026. A working version scheme fades into the regulatory package; a broken one shows up as a data query at CSR lock.