Releases: sergeymosyakov/fhir-questionnaire-builder
Release list
QuestionnaireRenderer widget 1.0.16
Embeddable FHIR R4 QuestionnaireRenderer — the builder's right-side runtime as a self-contained, in-page, multi-instance widget. No builder shell, no iframe, no framework.
Assets
| File | Use |
|---|---|
questionnaire-widget.js |
ES module (import) — recommended |
questionnaire-widget.global.js |
Classic <script> global (window.FhirQuestionnaireWidget) |
questionnaire-widget.css |
Widget styles (always include) |
SHA256SUMS.txt |
Verify your download: sha256sum -c SHA256SUMS.txt |
Quick start
<link rel="stylesheet" href="questionnaire-widget.css">
<div id="form"></div>
<script type="module">
import { QuestionnaireRenderer } from './questionnaire-widget.js';
const questionnaire = await (await fetch('my-questionnaire.json')).json();
const widget = new QuestionnaireRenderer(document.getElementById('form'), {
questionnaire, config: { previewMode: 'patient', validation: true },
});
document.querySelector('#save').onclick = () => save(widget.getResponse());
</script>Full guide: WIDGET.md · Live demo: fhirbuilder.com/widget-demo.html
What's Changed
- Bump fhir-structuremap-js to 1.2.1 (ReDoS fix) by @sergeymosyakov in #98
- Modal maximize/restore toggle (desktop) by @sergeymosyakov in #100
- Recognize count() >= 1 / count() > 0 as "any true" over a linkId set by @sergeymosyakov in #102
- build(deps-dev): bump dompurify to 3.4.13, normalize lockfile to LF by @sergeymosyakov in #105
- Add Generate Docs report: questionnaire-to-documentation generator by @sergeymosyakov in #106
- Extend Generate Docs: answer sources, extended item fields, client docs by @sergeymosyakov in #107
- Date/time picker: year drill-down + scroll repositioning by @sergeymosyakov in #109
- Generate Docs: fill in missing FHIR/SDC field coverage by @sergeymosyakov in #112
- build(deps-dev): bump marked from 15.0.12 to 18.0.11 by @dependabot[bot] in #117
- build(deps-dev): bump @supabase/supabase-js from 2.112.4 to 2.115.0 by @dependabot[bot] in #115
- build(deps-dev): bump dompurify from 3.4.13 to 3.4.14 by @dependabot[bot] in #114
- build(deps-dev): bump globals from 17.11.0 to 17.12.0 by @dependabot[bot] in #116
- build(deps-dev): bump @vitest/coverage-v8 from 4.1.11 to 5.0.0 by @dependabot[bot] in #113
- feat: generate draft Questionnaire from StructureDefinition by @sergeymosyakov in #118
- fix: valid FHIR item.type + full slicing/multi-type support for SD generator by @sergeymosyakov in #119
- fix: audit findings — docs drift, license gaps, CORS open-relay, CSS tokens by @sergeymosyakov in #121
- feat: FHIRPath Snippets Gallery (issue #122) by @sergeymosyakov in #123
- docs(skill): check for existing/roadmap issues before creating a new one by @sergeymosyakov in #126
- fix(validate): flag enableWhen entries missing the required question field by @sergeymosyakov in #127
- feat: Expression Gallery — repeatable slots, threshold-category output, weighted condition lists by @sergeymosyakov in #128
- docs: sync gallery file-manifest/ux-features with the 10 shipped patterns by @sergeymosyakov in #129
- fix(choice): keep a comma inside an option code/label from splitting it by @sergeymosyakov in #131
- fix(options): prefer _rawAnswerOptions in 3 more readers by @sergeymosyakov in #134
- refactor(options): _rawAnswerOptions is the only stored answer-options field by @sergeymosyakov in #136
- build(deps-dev): bump marked from 18.0.11 to 18.0.12 by @dependabot[bot] in #137
- build(deps-dev): bump @supabase/supabase-js from 2.115.0 to 2.116.0 by @dependabot[bot] in #138
- build(deps-dev): bump eslint from 10.9.1 to 10.10.0 by @dependabot[bot] in #139
- build(deps-dev): bump dompurify from 3.4.14 to 3.4.15 by @dependabot[bot] in #141
- build(deps-dev): bump @playwright/test from 1.62.1 to 1.63.0 by @dependabot[bot] in #140
- Support questionnaire-itemControl=help (Help-Button) by @sergeymosyakov in #143
- build(deps-dev): bump marked from 18.0.12 to 18.0.13 by @dependabot[bot] in #144
- build(deps-dev): bump vitest from 5.0.0 to 5.0.1 by @dependabot[bot] in #145
- build(deps-dev): bump @vitest/coverage-v8 from 5.0.0 to 5.0.1 by @dependabot[bot] in #146
Full Changelog: widget-v1.0.15...widget-v1.0.16
QuestionnaireRenderer widget 1.0.15
Embeddable FHIR R4 QuestionnaireRenderer — the builder's right-side runtime as a self-contained, in-page, multi-instance widget. No builder shell, no iframe, no framework.
Assets
| File | Use |
|---|---|
questionnaire-widget.js |
ES module (import) — recommended |
questionnaire-widget.global.js |
Classic <script> global (window.FhirQuestionnaireWidget) |
questionnaire-widget.css |
Widget styles (always include) |
SHA256SUMS.txt |
Verify your download: sha256sum -c SHA256SUMS.txt |
Quick start
<link rel="stylesheet" href="questionnaire-widget.css">
<div id="form"></div>
<script type="module">
import { QuestionnaireRenderer } from './questionnaire-widget.js';
const questionnaire = await (await fetch('my-questionnaire.json')).json();
const widget = new QuestionnaireRenderer(document.getElementById('form'), {
questionnaire, config: { previewMode: 'patient', validation: true },
});
document.querySelector('#save').onclick = () => save(widget.getResponse());
</script>Full guide: WIDGET.md · Live demo: fhirbuilder.com/widget-demo.html
What's Changed
- build(deps-dev): bump fast-uri from 3.1.5 to 3.1.7 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #93
Full Changelog: widget-v1.0.14...widget-v1.0.15
QuestionnaireRenderer widget 1.0.14
Embeddable FHIR R4 QuestionnaireRenderer — the builder's right-side runtime as a self-contained, in-page, multi-instance widget. No builder shell, no iframe, no framework.
Assets
| File | Use |
|---|---|
questionnaire-widget.js |
ES module (import) — recommended |
questionnaire-widget.global.js |
Classic <script> global (window.FhirQuestionnaireWidget) |
questionnaire-widget.css |
Widget styles (always include) |
SHA256SUMS.txt |
Verify your download: sha256sum -c SHA256SUMS.txt |
Quick start
<link rel="stylesheet" href="questionnaire-widget.css">
<div id="form"></div>
<script type="module">
import { QuestionnaireRenderer } from './questionnaire-widget.js';
const questionnaire = await (await fetch('my-questionnaire.json')).json();
const widget = new QuestionnaireRenderer(document.getElementById('form'), {
questionnaire, config: { previewMode: 'patient', validation: true },
});
document.querySelector('#save').onclick = () => save(widget.getResponse());
</script>Full guide: WIDGET.md · Live demo: fhirbuilder.com/widget-demo.html
What's Changed
- CQL execution via embedded ELM (cqf-library) by @sergeymosyakov in #69
- Replace docs/ROADMAP.md with GitHub issues labeled roadmap by @sergeymosyakov in #74
- build(deps-dev): bump eslint from 10.9.0 to 10.9.1 by @dependabot[bot] in #78
- Responsive layout: panel visibility, mobile dropdowns, modal sizing (#75, #76) by @sergeymosyakov in #79
- chore: upgrade fhirpath to 5.2.0 by @sergeymosyakov in #81
- Mobile dropdown header row + generalize UserMenu by @sergeymosyakov in #83
- Rail tabs: rotate label, add shared copyright line by @sergeymosyakov in #85
- fix: XSS in language-menu button label + vendor Supabase locally by @sergeymosyakov in #87
- fix: copyright/toast UI polish + CSS-driven responsive breakpoints by @sergeymosyakov in #89
- feat: questionnaire quality-audit report by @sergeymosyakov in #91
- fix: mock ValueSet $expand in audit-report e2e (CI-only flake) by @sergeymosyakov in #92
Full Changelog: widget-v1.0.13...widget-v1.0.14
QuestionnaireRenderer widget 1.0.13
Embeddable FHIR R4 QuestionnaireRenderer — the builder's right-side runtime as a self-contained, in-page, multi-instance widget. No builder shell, no iframe, no framework.
Assets
| File | Use |
|---|---|
questionnaire-widget.js |
ES module (import) — recommended |
questionnaire-widget.global.js |
Classic <script> global (window.FhirQuestionnaireWidget) |
questionnaire-widget.css |
Widget styles (always include) |
SHA256SUMS.txt |
Verify your download: sha256sum -c SHA256SUMS.txt |
Quick start
<link rel="stylesheet" href="questionnaire-widget.css">
<div id="form"></div>
<script type="module">
import { QuestionnaireRenderer } from './questionnaire-widget.js';
const questionnaire = await (await fetch('my-questionnaire.json')).json();
const widget = new QuestionnaireRenderer(document.getElementById('form'), {
questionnaire, config: { previewMode: 'patient', validation: true },
});
document.querySelector('#save').onclick = () => save(widget.getResponse());
</script>Full guide: WIDGET.md · Live demo: fhirbuilder.com/widget-demo.html
What's Changed
- fix(preview): align item label to top, add left margin to itemMedia by @sergeymosyakov in #51
- Fix Show When nested items, checkbox condition bug, and Expression Builder tooltips by @sergeymosyakov in #53
- Add FHIR tooltips to Show When modal, clarify enableWhen precedence by @sergeymosyakov in #55
- build(deps-dev): bump eslint from 10.8.1 to 10.9.0 by @dependabot[bot] in #56
- Fix: preview panel stays stale after Clear form by @sergeymosyakov in #61
- StructureMap Extract: execute targetStructureMap client-side via fhir-structuremap-js by @sergeymosyakov in #62
- FHIR server OAuth login (issue #63) by @sergeymosyakov in #64
- StructureMap population: execute sourceStructureMap client-side by @sergeymosyakov in #65
- Fix: settings page overwrites in-progress typing on auth refresh by @sergeymosyakov in #66
- Widget: isolate auth from the app, notify via events not a page toast by @sergeymosyakov in #67
Full Changelog: widget-v1.0.12...widget-v1.0.13
QuestionnaireRenderer widget 1.0.12
Embeddable FHIR R4 QuestionnaireRenderer — the builder's right-side runtime as a self-contained, in-page, multi-instance widget. No builder shell, no iframe, no framework.
Assets
| File | Use |
|---|---|
questionnaire-widget.js |
ES module (import) — recommended |
questionnaire-widget.global.js |
Classic <script> global (window.FhirQuestionnaireWidget) |
questionnaire-widget.css |
Widget styles (always include) |
SHA256SUMS.txt |
Verify your download: sha256sum -c SHA256SUMS.txt |
Quick start
<link rel="stylesheet" href="questionnaire-widget.css">
<div id="form"></div>
<script type="module">
import { QuestionnaireRenderer } from './questionnaire-widget.js';
const questionnaire = await (await fetch('my-questionnaire.json')).json();
const widget = new QuestionnaireRenderer(document.getElementById('form'), {
questionnaire, config: { previewMode: 'patient', validation: true },
});
document.querySelector('#save').onclick = () => save(widget.getResponse());
</script>Full guide: WIDGET.md · Live demo: fhirbuilder.com/widget-demo.html
What's Changed
- feat(itemControl): atable answer-table rendering for radio/checklist by @sergeymosyakov in #44
- fix(nuget): resolve NU5030 by staging LICENSE inside project dir by @sergeymosyakov in #45
- chore(skills): add security-review and github-actions-hardening skills by @sergeymosyakov in #46
- fix(answer-type): label controls by FHIR type + visualization by @sergeymosyakov in #48
Full Changelog: widget-v1.0.11...widget-v1.0.12
QuestionnaireRenderer widget 1.0.11
Embeddable FHIR R4 QuestionnaireRenderer — the builder's right-side runtime as a self-contained, in-page, multi-instance widget. No builder shell, no iframe, no framework.
Assets
| File | Use |
|---|---|
questionnaire-widget.js |
ES module (import) — recommended |
questionnaire-widget.global.js |
Classic <script> global (window.FhirQuestionnaireWidget) |
questionnaire-widget.css |
Widget styles (always include) |
SHA256SUMS.txt |
Verify your download: sha256sum -c SHA256SUMS.txt |
Quick start
<link rel="stylesheet" href="questionnaire-widget.css">
<div id="form"></div>
<script type="module">
import { QuestionnaireRenderer } from './questionnaire-widget.js';
const questionnaire = await (await fetch('my-questionnaire.json')).json();
const widget = new QuestionnaireRenderer(document.getElementById('form'), {
questionnaire, config: { previewMode: 'patient', validation: true },
});
document.querySelector('#save').onclick = () => save(widget.getResponse());
</script>Full guide: WIDGET.md · Live demo: fhirbuilder.com/widget-demo.html
What's Changed
- feat(terminology): DI-friendly TerminologyService; wire expandAll into the widget by @sergeymosyakov in #42
Full Changelog: widget-v1.0.10...widget-v1.0.11
QuestionnaireRenderer widget 1.0.9
Embeddable FHIR R4 QuestionnaireRenderer — the builder's right-side runtime as a self-contained, in-page, multi-instance widget. No builder shell, no iframe, no framework.
Assets
| File | Use |
|---|---|
questionnaire-widget.js |
ES module (import) — recommended |
questionnaire-widget.global.js |
Classic <script> global (window.FhirQuestionnaireWidget) |
questionnaire-widget.css |
Widget styles (always include) |
SHA256SUMS.txt |
Verify your download: sha256sum -c SHA256SUMS.txt |
Quick start
<link rel="stylesheet" href="questionnaire-widget.css">
<div id="form"></div>
<script type="module">
import { QuestionnaireRenderer } from './questionnaire-widget.js';
const questionnaire = await (await fetch('my-questionnaire.json')).json();
const widget = new QuestionnaireRenderer(document.getElementById('form'), {
questionnaire, config: { previewMode: 'patient', validation: true },
});
document.querySelector('#save').onclick = () => save(widget.getResponse());
</script>Full guide: WIDGET.md · Live demo: fhirbuilder.com/widget-demo.html
What's Changed
- fix: architecture/docs/CSS audit cleanup by @sergeymosyakov in #35
- feat(expr-builder): visualize grouped arithmetic with a trailing round()/abs()/etc wrapper by @sergeymosyakov in #37
- chore(release): switch npm publish to Trusted Publishing (OIDC) by @sergeymosyakov in #38
Full Changelog: widget-v1.0.8...widget-v1.0.9
QuestionnaireRenderer widget 1.0.10
Embeddable FHIR R4 QuestionnaireRenderer — the builder's right-side runtime as a self-contained, in-page, multi-instance widget. No builder shell, no iframe, no framework.
Assets
| File | Use |
|---|---|
questionnaire-widget.js |
ES module (import) — recommended |
questionnaire-widget.global.js |
Classic <script> global (window.FhirQuestionnaireWidget) |
questionnaire-widget.css |
Widget styles (always include) |
SHA256SUMS.txt |
Verify your download: sha256sum -c SHA256SUMS.txt |
Quick start
<link rel="stylesheet" href="questionnaire-widget.css">
<div id="form"></div>
<script type="module">
import { QuestionnaireRenderer } from './questionnaire-widget.js';
const questionnaire = await (await fetch('my-questionnaire.json')).json();
const widget = new QuestionnaireRenderer(document.getElementById('form'), {
questionnaire, config: { previewMode: 'patient', validation: true },
});
document.querySelector('#save').onclick = () => save(widget.getResponse());
</script>Full guide: WIDGET.md · Live demo: fhirbuilder.com/widget-demo.html
What's Changed
- feat(release): package the widget for NuGet (.NET web apps) by @sergeymosyakov in #40
Full Changelog: widget-v1.0.9...widget-v1.0.10
QuestionnaireRenderer widget 1.0.8
Embeddable FHIR R4 QuestionnaireRenderer — the builder's right-side runtime as a self-contained, in-page, multi-instance widget. No builder shell, no iframe, no framework.
Assets
| File | Use |
|---|---|
questionnaire-widget.js |
ES module (import) — recommended |
questionnaire-widget.global.js |
Classic <script> global (window.FhirQuestionnaireWidget) |
questionnaire-widget.css |
Widget styles (always include) |
SHA256SUMS.txt |
Verify your download: sha256sum -c SHA256SUMS.txt |
Quick start
<link rel="stylesheet" href="questionnaire-widget.css">
<div id="form"></div>
<script type="module">
import { QuestionnaireRenderer } from './questionnaire-widget.js';
const questionnaire = await (await fetch('my-questionnaire.json')).json();
const widget = new QuestionnaireRenderer(document.getElementById('form'), {
questionnaire, config: { previewMode: 'patient', validation: true },
});
document.querySelector('#save').onclick = () => save(widget.getResponse());
</script>Full guide: WIDGET.md · Live demo: fhirbuilder.com/widget-demo.html
What's Changed
- fix(preview): font-size inherit, control widths 400px, badge alignment, dropdown font/width, ref-id margin by @sergeymosyakov in #33
Full Changelog: widget-v1.0.7...widget-v1.0.8
QuestionnaireRenderer widget 1.0.7
Embeddable FHIR R4 QuestionnaireRenderer — the builder's right-side runtime as a self-contained, in-page, multi-instance widget. No builder shell, no iframe, no framework.
Assets
| File | Use |
|---|---|
questionnaire-widget.js |
ES module (import) — recommended |
questionnaire-widget.global.js |
Classic <script> global (window.FhirQuestionnaireWidget) |
questionnaire-widget.css |
Widget styles (always include) |
SHA256SUMS.txt |
Verify your download: sha256sum -c SHA256SUMS.txt |
Quick start
<link rel="stylesheet" href="questionnaire-widget.css">
<div id="form"></div>
<script type="module">
import { QuestionnaireRenderer } from './questionnaire-widget.js';
const questionnaire = await (await fetch('my-questionnaire.json')).json();
const widget = new QuestionnaireRenderer(document.getElementById('form'), {
questionnaire, config: { previewMode: 'patient', validation: true },
});
document.querySelector('#save').onclick = () => save(widget.getResponse());
</script>Full guide: WIDGET.md · Live demo: fhirbuilder.com/widget-demo.html
What's Changed
- feat: segmented boolean control + preview UI polish (#28) by @sergeymosyakov in #29
- fix(expr-builder): single boolean comparison re-opens in visual mode (#31) by @sergeymosyakov in #32
Full Changelog: widget-v1.0.6...widget-v1.0.7