Skip to content

Commit 3619bd7

Browse files
committed
Update readme
1 parent 842f0c9 commit 3619bd7

File tree

2 files changed

+83
-3
lines changed

2 files changed

+83
-3
lines changed

README.md

Lines changed: 82 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Aidbox Forms Renderer
22

3-
Minimal React renderer for HL7® FHIR® Questionnaires. State is always a canonical `QuestionnaireResponse`, so the data you display is the data you can submit.
3+
Minimal React renderer for HL7® FHIR® Questionnaires
44

55
```tsx
66
import { Renderer, type Questionnaire, type QuestionnaireResponse } from "aidbox-forms-renderer";
@@ -30,4 +30,84 @@ export function IntakeForm() {
3030

3131
Useful scripts: `npm run dev` (playground), `npm run build` (type-check + bundle), `npm test`, `npm run lint`.
3232

33-
Architecture and rationale live as doc comments in the source (`lib/state/`, `lib/form-provider.tsx`, `lib/questionnaire-renderer.tsx`).
33+
34+
35+
# Development Roadmap (Q4 2025)
36+
37+
This roadmap divides implementation milestones by month.
38+
Each milestone lists the core features and extensions required to reach full compliance with the **HL7 FHIR Structured Data Capture (SDC)** specification.
39+
40+
## 🎯 **October 2025 — Core Questionnaire Rendering**
41+
42+
Focus: Establish baseline FHIR Questionnaire support and base rendering logic.
43+
44+
* [ ] **Core Questionnaire Resource**
45+
* [ ] Support `Questionnaire.item` elements (text, type, linkId, required, repeats)
46+
* [ ] Implement display of `prefix`, `text`, `item.type`
47+
* [ ] Apply constraints: `minLength`, `maxLength`, `minValue`, `maxValue`, `maxOccurs`
48+
* [ ] Enable `readOnly`, `initial`, and `defaultValue` behavior
49+
* [ ] Support FHIR `enableWhen` conditions and nested groups
50+
* [ ] Render `item.control` and `item.control.displayCategory` extensions (basic)
51+
* [ ] **Questionnaire Navigation & Layout**
52+
* [ ] Implement group hierarchy rendering
53+
* [ ] Respect `hidden` and `displayCategory` controls
54+
* [ ] Add label localization and prefix rendering
55+
* [ ] **Input Controls**
56+
* [ ] Map FHIR types → UI components (`string`, `boolean`, `integer`, `choice`, `date`, `quantity`, etc.)
57+
* [ ] Render choice options (`answerOption`, `answerValueSet`)
58+
* [ ] Support open-choice types
59+
* [ ] **Basic Validation**
60+
* [ ] Validate required questions
61+
* [ ] Validate numeric and string bounds
62+
* [ ] Validate answer cardinality (`repeats`, `maxOccurs`)
63+
64+
## ⚙️ **November 2025 — Advanced Form Rendering & Behavior**
65+
66+
Focus: Interactive logic, calculations, adaptive elements, and modular assembly.
67+
68+
* [ ] **Advanced Form Rendering**
69+
* [ ] Implement `sdc-questionnaire-itemControl` full support
70+
* [ ] Handle `appearance` extension rendering hints
71+
* [ ] Support `rendering-style`, `rendering-xhtml`, and `markdown` items
72+
* [ ] **Form Behavior & Calculation**
73+
* [ ] Implement calculated expressions via `calculatedExpression`
74+
* [ ] Dynamic enablement: `enableWhenExpression`
75+
* [ ] Validation expressions: `constraint`, `constraintExpression`
76+
* [ ] Item visibility & computed display expressions
77+
* [ ] Value propagation (`derivedFrom`, `answerExpression`)
78+
* [ ] **Adaptive & Modular Forms**
79+
* [ ] Implement `assemble-expectation` and sub-questionnaire resolution
80+
* [ ] Support adaptive `next-question` operations (`sdc-questionnaireresponse-adapt`)
81+
* [ ] Dynamic loading of next sections via adaptive operation (`Questionnaire/$next-question`)
82+
* [ ] Support inclusion of external subforms and library dependencies
83+
* [ ] **User Interaction Layer**
84+
* [ ] Autosave progress to `QuestionnaireResponse`
85+
* [ ] Support for resuming saved sessions
86+
* [ ] Dynamic updates to visible fields based on answers
87+
88+
## 🧩 **December 2025 — Data Population & Extraction**
89+
90+
Focus: Form prefill, structured output mapping, and integration services.
91+
92+
* [ ] **Form Population**
93+
* [ ] Implement population via:
94+
* [ ] `initialExpression`
95+
* [ ] `itemPopulationContext`
96+
* [ ] `candidateExpression`
97+
* [ ] Support FHIR `$populate` operation (StructureMap-based)
98+
* [ ] Integrate population service from external data sources (Patient, Observation, etc.)
99+
* [ ] **Form Data Extraction**
100+
* [ ] Implement FHIR `$extract` operation
101+
* [ ] Map responses → resources using `structureMap`
102+
* [ ] Handle `extract` extensions: `sdc-questionnaire-extract`, `itemExtractionContext`
103+
* [ ] **Export and Serialization**
104+
* [ ] Generate valid `QuestionnaireResponse`
105+
* [ ] Support export in JSON and XML
106+
* [ ] Validate `QuestionnaireResponse` against source `Questionnaire`
107+
* [ ] **Polish & QA**
108+
* [ ] Test all `must-support` extensions from SDC profiles
109+
* [ ] Ensure conformance with:
110+
* [ ] `sdc-questionnaire-render`
111+
* [ ] `sdc-questionnaire-adapt`
112+
* [ ] `sdc-questionnaire-extract`
113+
* [ ] Accessibility and internationalization compliance

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta charset="UTF-8" />
55
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7-
<title>FHIRPath Editor</title>
7+
<title>Aidbox Forms Renderer</title>
88
</head>
99
<body>
1010
<div id="root" class="contents"></div>

0 commit comments

Comments
 (0)