The FormScript corpus
Real questionnaires, published by real organisations, converted to FormScript by scripts/corpus/convert-fhir.ts. This report is generated by npm run corpus:report, which re-reads every converted document and runs it through the lexer, the parser, the analyzer and the engine before writing a word of it.
The headline
- 73 sources from 24 publishers, covering 31 domains: 71 questionnaires and 2 answer sets.
- 69 forms converted from 4563 source questions into 3079 FormScript fields.
- 69 of 69 parse and analyse with no error.
- 69 of 69 evaluate: the engine builds a transaction and produces an output document from each one.
- 5 carry an advisory from the language itself (see below).
- 2 questionnaires rejected outright, with a code — so 69 + 2 + 2 = 73.
- 4624 gaps were recorded, of which 274 lossy — something the source said that FormScript cannot say.
The lossy gaps are the interesting half. They are where the language stops.
The rejects
The rejects come first, because they are the measurement.
| source | code | why |
|---|---|---|
codetanzania-emis |
REJECT-NOT-A-QUESTIONNAIRE |
the file holds a list of 1 entries with the keys 'assess, stage, phase, title, questions'; it is not a FHIR Questionnaire |
crowd-frame-survey |
REJECT-NOT-A-QUESTIONNAIRE |
the file holds a list of 3 entries with the keys 'index, description, position, type, allow_back, questions'; it is not a FHIR Questionnaire |
The domains
| domain | forms |
|---|---|
| child health assessment | 12 |
| — | 11 |
| WHO child care and development | 7 |
| WHO antenatal care | 3 |
| substance use screening | 3 |
| clinical decision support | 3 |
| medication therapy | 3 |
| vital signs | 2 |
| clinical reasoning | 2 |
| research adverse event | 2 |
| patient reported outcome | 2 |
| clinical registry | 2 |
| social determinants of health | 1 |
| research consent | 1 |
| research protocol | 1 |
| research initiation | 1 |
| research continuing review | 1 |
| research determination | 1 |
| research recruitment | 1 |
| newborn delivery | 1 |
| mental health screening | 1 |
| HIV care | 1 |
| general health assessment | 1 |
| patient intake | 1 |
| sick note | 1 |
| advance care planning | 1 |
| specification example | 1 |
| internationalisation | 1 |
| insurance coverage | 1 |
The sources
| document | published by | questions | fields | outputs | sha256 |
|---|---|---|---|---|---|
r4-questionnaire-example |
FHIR R4 (v4.0.1) | 10 | 6 | 6 | 5c8adb2de88a |
r4-questionnaire-lifelines |
FHIR R4 (v4.0.1) | 9 | 7 | 7 | e1247d40bb0d |
r4-questionnaire-bluebook |
FHIR R4 (v4.0.1) | 14 | 10 | 10 | 5665f56932e7 |
r4-questionnaire-gcs |
FHIR R4 (v4.0.1) | 3 | 3 | 3 | 5ac030e6715b |
r4-questionnaire-zika |
FHIR R4 (v4.0.1) | 6 | 6 | 6 | 4532c3a694d1 |
r4-questionnaire-ussg-fht |
FHIR R4 (v4.0.1) | 49 | 40 | 21 | 1ff31f327f07 |
r4-questionnaire-phq9 |
FHIR R4 (v4.0.1) | 10 | 10 | 10 | bcb46e8e566f |
r5-questionnaire-practitioner-info |
FHIR R5 (v5.0.0) | 12 | 10 | 7 | 76d79254c986 |
r5-questionnaire-child-rel-demo |
FHIR R5 (v5.0.0) | 8 | 5 | 2 | 58584b63a6ae |
sdc-questionnaire-cardiology |
HL7 SDC implementation guide | 142 | 124 | 124 | dc18be5e68ae |
sdc-questionnaire-rxterms |
HL7 SDC implementation guide | 4 | 3 | 1 | edcd7d258ee6 |
WHO-smart-anc |
WorldHealthOrganization/smart-anc | 12 | 12 | 12 | 2c7c992ac807 |
WHO-smart-anc-b4 |
WorldHealthOrganization/smart-anc | 1 | 1 | 1 | af31e4eeae09 |
WHO-smart-anc-end |
WorldHealthOrganization/smart-anc | 11 | 11 | 11 | a20183a409a6 |
WHO-smart-ccc-treatment |
WorldHealthOrganization/smart-ccc | 124 | 62 | 62 | 5279cddb3821 |
WHO-smart-ccc-registration-e |
WorldHealthOrganization/smart-ccc | 14 | 13 | 13 | 0da7089e4e2b |
WHO-smart-ccc-registration-p |
WorldHealthOrganization/smart-ccc | 37 | 34 | 34 | d4cbcf13745e |
WHO-smart-ccc-measurements |
WorldHealthOrganization/smart-ccc | 30 | 24 | 24 | 95564eba2c1a |
WHO-smart-ccc-danger-signs |
WorldHealthOrganization/smart-ccc | 26 | 16 | 16 | 6f99f20d9745 |
WHO-smart-ccc-breastfeeding |
WorldHealthOrganization/smart-ccc | 21 | 18 | 18 | 9eccefd4adac |
WHO-smart-ccc-classification |
WorldHealthOrganization/smart-ccc | 140 | 120 | 120 | 81fc61373b3e |
uscore-taps |
HL7/US-Core | 7 | 5 | 5 | a76ce63548e0 |
uscore-audit-c |
HL7/US-Core | 6 | 4 | 4 | be83bc520f1e |
uscore-prapare |
HL7/US-Core | 28 | 21 | 21 | dc091a22b660 |
uscore-exercise-vital-sign |
HL7/US-Core | 2 | 2 | 2 | 83f9a970695f |
uscore-hunger-vital-sign |
HL7/US-Core | 4 | 3 | 3 | 435d5960d89c |
ecdx-example1 |
HL7/davinci-ecdx | 2 | 2 | 2 | bfe89b039045 |
ecdx-example2 |
HL7/davinci-ecdx | 2 | 2 | 2 | 40cbc28b40df |
cds-hypoxemia |
HL7-DaVinci/CDS-Library | 18 | 16 | 12 | c860362471e5 |
crmi-shareable |
HL7/crmi-ig | 4 | 4 | 4 | 4e197c46c6e7 |
crmi-publishable |
HL7/crmi-ig | 4 | 4 | 4 | 24e5274970b2 |
sirb-consent |
HL7/fhir-sirb | 350 | 189 | 164 | 439557c91119 |
sirb-protocol |
HL7/fhir-sirb | 663 | 437 | 402 | 434c74495904 |
sirb-adverse-event |
HL7/fhir-sirb | 172 | 86 | 73 | c0d4833daa35 |
sirb-initiate-study |
HL7/fhir-sirb | 146 | 73 | 45 | 4d0685c3d1cf |
sirb-nonmedical-event |
HL7/fhir-sirb | 203 | 99 | 98 | 99fa0255c6ed |
sirb-continuing-review |
HL7/fhir-sirb | 222 | 133 | 133 | 3157afff7cb5 |
sirb-determination-letter |
HL7/fhir-sirb | 65 | 29 | 29 | f462773ce717 |
sirb-recruitment-materials |
HL7/fhir-sirb | 240 | 126 | 113 | fd112312cad1 |
au-hca-1-4wk |
hl7au/au-fhir-childhealth | 90 | 66 | 66 | d1711fda3601 |
au-hca-6-8wk |
hl7au/au-fhir-childhealth | 83 | 61 | 61 | 3ceb80d63e9b |
au-hca-4-9mnt |
hl7au/au-fhir-childhealth | 78 | 56 | 56 | 7e7b09b5f791 |
au-hca-12mnt |
hl7au/au-fhir-childhealth | 78 | 56 | 56 | fbc6b4238630 |
au-hca-18mnt |
hl7au/au-fhir-childhealth | 69 | 49 | 49 | 6da8cc5f18f8 |
au-hca-2yr |
hl7au/au-fhir-childhealth | 74 | 53 | 53 | 166d9cfd5507 |
au-hca-3yr |
hl7au/au-fhir-childhealth | 75 | 53 | 53 | 4f6b6c1fdd06 |
au-hca-4yr |
hl7au/au-fhir-childhealth | 81 | 58 | 58 | 2c72445cb14c |
au-hca-summary |
hl7au/au-fhir-childhealth | 32 | 24 | 32 | 42fa93d5de8c |
au-my-info |
hl7au/au-fhir-childhealth | 10 | 9 | 9 | 945a0f7602e9 |
au-baby-info |
hl7au/au-fhir-childhealth | 6 | 5 | 5 | c16d4ef25da0 |
au-lifestyle |
hl7au/au-fhir-childhealth | 20 | 15 | 15 | ab2a987a59cf |
au-nb-delivery |
hl7au/au-fhir-childhealth | 32 | 28 | 28 | 8edc0707fa26 |
au-next-vst |
hl7au/au-fhir-childhealth | 7 | 6 | 6 | cf1cb11ad3a8 |
cq-phq9 |
cqframework/sample-content-ig | 10 | 10 | 10 | 758e6935be87 |
cq-mypain |
cqframework/cds4cpm | 78 | 67 | 67 | 8a00287d74cf |
cq-mypain-ufl |
cqframework/cds4cpm | 76 | 66 | 66 | 0474eaac620d |
cq-hiv-nachce |
cqframework/hiv-cds | 1 | 1 | 1 | d38be8f22807 |
numde-gecco |
NUMde/compass-implementation-guide | 277 | 213 | 213 | 56c7f0c274f6 |
numde-generic |
NUMde/compass-implementation-guide | 45 | 32 | 32 | 043c816b4e7b |
aehrc-mbs715 |
aehrc/item-715-data | 187 | 133 | 131 | 858a48dccf98 |
medplum-patient-intake |
medplum/medplum | 80 | 62 | 44 | 47a0897365e5 |
medplum-sick-note |
medplum/medplum | 3 | 3 | 3 | cdf07551219d |
iknl-acp |
IKNL/PZP-FHIR-R4 | 131 | 95 | 90 | 0dc0469c6274 |
sample-ig |
FHIR/sample-ig | 10 | 6 | 6 | 129844095473 |
multi-lang-ig |
FHIR/multi-lang-test-ig | 10 | 6 | 6 | 7e8b3bdd4773 |
us-cql-gmtp |
HL7/us-cql-ig | 29 | 23 | 23 | b553fbc61722 |
us-cql-mnac |
HL7/us-cql-ig | 24 | 16 | 16 | bbe530f7ca5a |
us-cql-mboda |
HL7/us-cql-ig | 20 | 15 | 15 | 01391c128176 |
us-cql-coverage |
HL7/us-cql-ig | 26 | 22 | 22 | 0f36b6059698 |
The upstream files are not redistributed. corpus/manifest/fhir-sources.json pins each one by URL and SHA-256;
npm run corpus:fetch reads them again and checks the bytes it gets against the pin.
What the toolchain said
| document | lexed | parsed | analysed | warnings | transaction | output keys |
|---|---|---|---|---|---|---|
r4-questionnaire-example |
ok | ok | ok | 0 | committed | 2 |
r4-questionnaire-lifelines |
ok | ok | ok | 0 | committed | 7 |
r4-questionnaire-bluebook |
ok | ok | ok | 0 | committed | 8 |
r4-questionnaire-gcs |
ok | ok | ok | 0 | committed | 3 |
r4-questionnaire-zika |
ok | ok | ok | 0 | committed | 1 |
r4-questionnaire-ussg-fht |
ok | ok | ok | 0 | committed | 21 |
r4-questionnaire-phq9 |
ok | ok | ok | 0 | committed | 10 |
r5-questionnaire-practitioner-info |
ok | ok | ok | 0 | committed | 7 |
r5-questionnaire-child-rel-demo |
ok | ok | ok | 0 | committed | 2 |
sdc-questionnaire-cardiology |
ok | ok | ok | 0 | committed | 71 |
sdc-questionnaire-rxterms |
ok | ok | ok | 0 | committed | 1 |
WHO-smart-anc |
ok | ok | ok | 0 | committed | 12 |
WHO-smart-anc-b4 |
ok | ok | ok | 0 | committed | 1 |
WHO-smart-anc-end |
ok | ok | ok | 0 | committed | 11 |
WHO-smart-ccc-treatment |
ok | ok | ok | 0 | committed | 62 |
WHO-smart-ccc-registration-e |
ok | ok | ok | 1 | committed | 13 |
WHO-smart-ccc-registration-p |
ok | ok | ok | 0 | committed | 34 |
WHO-smart-ccc-measurements |
ok | ok | ok | 1 | committed | 24 |
WHO-smart-ccc-danger-signs |
ok | ok | ok | 7 | committed | 16 |
WHO-smart-ccc-breastfeeding |
ok | ok | ok | 7 | committed | 18 |
WHO-smart-ccc-classification |
ok | ok | ok | 0 | committed | 120 |
uscore-taps |
ok | ok | ok | 0 | committed | 5 |
uscore-audit-c |
ok | ok | ok | 0 | committed | 4 |
uscore-prapare |
ok | ok | ok | 0 | committed | 21 |
uscore-exercise-vital-sign |
ok | ok | ok | 0 | committed | 2 |
uscore-hunger-vital-sign |
ok | ok | ok | 0 | committed | 3 |
ecdx-example1 |
ok | ok | ok | 0 | committed | 2 |
ecdx-example2 |
ok | ok | ok | 0 | committed | 2 |
cds-hypoxemia |
ok | ok | ok | 0 | committed | 12 |
crmi-shareable |
ok | ok | ok | 0 | committed | 4 |
crmi-publishable |
ok | ok | ok | 0 | committed | 4 |
sirb-consent |
ok | ok | ok | 0 | committed | 119 |
sirb-protocol |
ok | ok | ok | 0 | committed | 279 |
sirb-adverse-event |
ok | ok | ok | 0 | committed | 42 |
sirb-initiate-study |
ok | ok | ok | 0 | committed | 41 |
sirb-nonmedical-event |
ok | ok | ok | 0 | committed | 41 |
sirb-continuing-review |
ok | ok | ok | 0 | committed | 116 |
sirb-determination-letter |
ok | ok | ok | 0 | committed | 29 |
sirb-recruitment-materials |
ok | ok | ok | 0 | committed | 23 |
au-hca-1-4wk |
ok | ok | ok | 0 | committed | 66 |
au-hca-6-8wk |
ok | ok | ok | 0 | committed | 61 |
au-hca-4-9mnt |
ok | ok | ok | 0 | committed | 56 |
au-hca-12mnt |
ok | ok | ok | 0 | committed | 56 |
au-hca-18mnt |
ok | ok | ok | 0 | committed | 49 |
au-hca-2yr |
ok | ok | ok | 0 | committed | 53 |
au-hca-3yr |
ok | ok | ok | 0 | committed | 53 |
au-hca-4yr |
ok | ok | ok | 0 | committed | 58 |
au-hca-summary |
ok | ok | ok | 0 | committed | 32 |
au-my-info |
ok | ok | ok | 0 | committed | 9 |
au-baby-info |
ok | ok | ok | 0 | committed | 5 |
au-lifestyle |
ok | ok | ok | 0 | committed | 15 |
au-nb-delivery |
ok | ok | ok | 0 | committed | 28 |
au-next-vst |
ok | ok | ok | 0 | committed | 6 |
cq-phq9 |
ok | ok | ok | 0 | committed | 10 |
cq-mypain |
ok | ok | ok | 0 | committed | 67 |
cq-mypain-ufl |
ok | ok | ok | 0 | committed | 66 |
cq-hiv-nachce |
ok | ok | ok | 0 | committed | 1 |
numde-gecco |
ok | ok | ok | 0 | committed | 99 |
numde-generic |
ok | ok | ok | 5 | committed | 26 |
aehrc-mbs715 |
ok | ok | ok | 0 | committed | 120 |
medplum-patient-intake |
ok | ok | ok | 0 | committed | 43 |
medplum-sick-note |
ok | ok | ok | 0 | committed | 1 |
iknl-acp |
ok | ok | ok | 0 | committed | 68 |
sample-ig |
ok | ok | ok | 0 | committed | 2 |
multi-lang-ig |
ok | ok | ok | 0 | committed | 2 |
us-cql-gmtp |
ok | ok | ok | 0 | committed | 17 |
us-cql-mnac |
ok | ok | ok | 0 | committed | 13 |
us-cql-mboda |
ok | ok | ok | 0 | committed | 14 |
us-cql-coverage |
ok | ok | ok | 0 | committed | 22 |
The output document holds fewer keys than the form declares outputs in some documents. That is the language working: a field that is inapplicable — its when did not hold — is omitted from the output document, because "not asked" and "asked and left blank" are different facts (Spec-4.35). The Zika assessment and the cardiology form are the two with conditional questions.
What could not be carried over
Every gap names the FHIR path that produced it. A gap is either lossy — something meaningful was dropped — or informational, which records something that does not change what the form means.
| code | what it means | times | lossy | documents |
|---|---|---|---|---|
GAP-CHOICE-SYSTEM |
An option was qualified by a coding system in FHIR. FormScript's option keys are bare strings, so the system was dropped and the code alone is the key. | 2366 | 0 | 29 |
GAP-EXTENSION |
The item carried an extension with no FormScript equivalent. | 942 | 0 | 30 |
GAP-ENABLEWHEN-CODING |
A condition compared against a coded answer. The code was kept; the coding system was dropped. | 286 | 0 | 17 |
GAP-PREFIX |
The item carried a prefix, which was folded into its label. | 188 | 0 | 8 |
GAP-CALCULATED |
The item carried a calculated expression in FHIRPath. It was translated into a FormScript expression where the two languages agree, and dropped where they do not. | 156 | 140 | 21 |
GAP-ARRAY-BOUND |
FHIR does not bound how many answers a question may take. FormScript's cost model needs a bound on any iterated collection, so the array was declared with one. | 127 | 0 | 24 |
GAP-REPEATS-LEAF |
A question that takes several answers became an array field. The answer set survives; the way a person picks several answers is the renderer's business. | 127 | 0 | 24 |
GAP-VALUESET |
A question drew its options from a value set. A value set the questionnaire contains was expanded into the field's options; one that has to be fetched from a terminology server was left open. | 108 | 102 | 18 |
GAP-CHOICE-EMPTY |
A choice question had no options, so it became an open string field. | 103 | 0 | 21 |
GAP-ENABLEWHEN-ARRAY |
The condition asks whether any of the answers of a multi-answer question equals a value. It was written as a membership test, because FHIR's '=' means 'at least one answer equals'. | 38 | 0 | 6 |
GAP-TYPE-ATTACHMENT |
An attachment question became a file. FormScript's file carries a mime type and a size, not a title or a creation date. | 34 | 0 | 9 |
GAP-TYPE-QUANTITY |
A quantity question kept its magnitude and lost its unit. FormScript has no quantity type. | 34 | 0 | 8 |
GAP-TYPE-OPEN-CHOICE |
An open choice may be answered freely, so the field stays a string and the options it offered travel in its hint. | 32 | 0 | 4 |
GAP-NESTED-REPEATING |
A question that repeats and has child questions became a repeating group, and the question's own answer was dropped. FormScript cannot hold a repeating question with children. | 16 | 16 | 6 |
GAP-MIMETYPE |
An item declared a mime type. FormScript carries that on the file type, which this item does not use. | 15 | 0 | 1 |
GAP-CHOICE-DUPLICATE |
Two options shared a key. The later one was qualified with its coding system, or renamed when the system did not tell them apart. | 12 | 0 | 2 |
GAP-ANSWER-EXPRESSION |
The item carried an answer expression in FHIRPath. It was translated into a FormScript expression where the two languages agree, and dropped where they do not. | 11 | 2 | 8 |
GAP-CONSTRAINT-REGEX-DIALECT |
A FHIRPath regular-expression constraint became a pattern constraint. The source expression is ECMA-flavoured; the pattern is read as RE2. | 6 | 0 | 1 |
GAP-ITEMCONTROL-UNKNOWN |
The item is marked with a control code that is not a question — but it carries answers, so it was converted as an ordinary question. | 6 | 0 | 1 |
GAP-ENABLEWHEN-IN-REPEAT |
A condition referred to a question inside a repeating group. FormScript has no way to name one, so the condition was dropped. | 5 | 5 | 2 |
GAP-TYPE-REFERENCE |
A reference question has no FormScript equivalent. | 4 | 4 | 3 |
GAP-CONSTRAINT-REGEX |
A FHIRPath constraint used a regular expression that RE2 — the dialect FormScript's pattern constraint uses — cannot express. | 3 | 3 | 1 |
GAP-ENTRYFORMAT |
The item declared an entry format. FormScript has no equivalent property. | 1 | 0 | 1 |
GAP-MAXSIZE |
The item declared a maximum size, which FormScript carries on the file type. | 1 | 0 | 1 |
GAP-RENDERING |
The item asked for a rendering FormScript has no hint for. | 1 | 0 | 1 |
GAP-TYPE-CODING |
An item used a type that is not a FHIR Questionnaire item type, so it became a string. | 1 | 1 | 1 |
GAP-TYPE-TIME |
A time question became a string. FormScript has no time type. | 1 | 1 | 1 |
Advisories from the language itself
5 of the forms carry W-VAL-01, which Spec-10.11 requires: a required constraint on a boolean field is reported at compile time with a message that suggests accepted. The converter keeps required, because that is what the source asked for: FHIR's required on a boolean means the question must be answered, not the answer must be yes. The advisory is the language steering, and the corpus keeps it visible.
WHO-smart-ccc-registration-e— 1 advisory warningWHO-smart-ccc-measurements— 1 advisory warningWHO-smart-ccc-danger-signs— 7 advisory warningsWHO-smart-ccc-breastfeeding— 7 advisory warningsnumde-generic— 5 advisory warnings
Document by document
Each row is one converted form. The gap codes say what was lost; corpus/reports/fhir-conversion.json
holds every gap with the FHIR path that produced it.
| document | title | questions | outputs | lossy | what was lost |
|---|---|---|---|---|---|
r4-questionnaire-example |
Cancer Quality Forum Questionnaire 2012 | 10 | 6 | 5 | GAP-VALUESET×5 |
r4-questionnaire-lifelines |
— | 9 | 7 | 0 | nothing |
r4-questionnaire-bluebook |
NSW Government My Personal Health Record | 14 | 10 | 0 | nothing |
r4-questionnaire-gcs |
Glasgow Coma Score | 3 | 3 | 0 | nothing |
r4-questionnaire-zika |
Example Zika Virus Exposure Assessment | 6 | 6 | 0 | nothing |
r4-questionnaire-ussg-fht |
US Surgeon General - Family Health Portrait | 49 | 21 | 21 | GAP-VALUESET×19, GAP-TYPE-TIME×1, GAP-TYPE-REFERENCE×1 |
r4-questionnaire-phq9 |
Patient Health Questionnaire (PHQ-9) | 10 | 10 | 10 | GAP-VALUESET×9, GAP-CALCULATED×1 |
r5-questionnaire-practitioner-info |
— | 12 | 7 | 1 | GAP-TYPE-CODING×1 |
r5-questionnaire-child-rel-demo |
Demo form on R5 spec QR page | 8 | 2 | 1 | GAP-NESTED-REPEATING×1 |
sdc-questionnaire-cardiology |
Cardiology Form | 142 | 124 | 3 | GAP-CONSTRAINT-REGEX×3 |
sdc-questionnaire-rxterms |
RxTerms Lookup | 4 | 1 | 3 | GAP-VALUESET×1, GAP-ANSWER-EXPRESSION×1, GAP-CALCULATED×1 |
WHO-smart-anc |
ANC.A. Registration | 12 | 12 | 1 | GAP-VALUESET×1 |
WHO-smart-anc-b4 |
ANC.B4 Confirm pregnancy | 1 | 1 | 0 | nothing |
WHO-smart-anc-end |
ANC.End End | 11 | 11 | 5 | GAP-VALUESET×5 |
WHO-smart-ccc-treatment |
Ccc.Treatment | 124 | 62 | 0 | nothing |
WHO-smart-ccc-registration-e |
CccB.Registration.E | 14 | 13 | 2 | GAP-CALCULATED×2 |
WHO-smart-ccc-registration-p |
CccA.Registration.P | 37 | 34 | 4 | GAP-CALCULATED×4 |
WHO-smart-ccc-measurements |
Ccc.B6.Measurements | 30 | 24 | 4 | GAP-CALCULATED×4 |
WHO-smart-ccc-danger-signs |
Ccc.B7.LTI-DangerSigns | 26 | 16 | 1 | GAP-CALCULATED×1 |
WHO-smart-ccc-breastfeeding |
Ccc.B22.BreastFeeding | 21 | 18 | 1 | GAP-CALCULATED×1 |
WHO-smart-ccc-classification |
Ccc.B23.Classification | 140 | 120 | 0 | nothing |
uscore-taps |
Tobacco, Alcohol, Prescription medications, and other Substance use screen [TAPS] | 7 | 5 | 0 | nothing |
uscore-audit-c |
Alcohol Use Disorder Identification Test - Consumption [AUDIT-C] | 6 | 4 | 0 | nothing |
uscore-prapare |
Protocol for Responding to and Assessing Patients' Assets, Risks, and Experiences [PRAPARE] | 28 | 21 | 0 | nothing |
uscore-exercise-vital-sign |
Exercise Vital Sign (EVS) | 2 | 2 | 0 | nothing |
uscore-hunger-vital-sign |
Hunger Vital Sign Example | 4 | 3 | 0 | nothing |
ecdx-example1 |
Home Oxygen Therapy Questionnaire | 2 | 2 | 0 | nothing |
ecdx-example2 |
Home Oxygen Therapy Questionnaire | 2 | 2 | 0 | nothing |
cds-hypoxemia |
Hypoxemia Questionnaire | 18 | 12 | 7 | GAP-CALCULATED×6, GAP-TYPE-REFERENCE×1 |
crmi-shareable |
ANC.B5 Quick check Shareable Example | 4 | 4 | 3 | GAP-VALUESET×3 |
crmi-publishable |
ANC.B5 Quick check Publishable Example | 4 | 4 | 3 | GAP-VALUESET×3 |
sirb-consent |
Consent Questionnaire | 350 | 164 | 25 | GAP-CALCULATED×24, GAP-NESTED-REPEATING×1 |
sirb-protocol |
Protocol Questionnaire | 663 | 402 | 10 | GAP-CALCULATED×7, GAP-NESTED-REPEATING×2, GAP-ANSWER-EXPRESSION×1 |
sirb-adverse-event |
Adverse Medical Event Questionnaire | 172 | 73 | 8 | GAP-CALCULATED×8 |
sirb-initiate-study |
Initiate a Study Questionnaire | 146 | 45 | 22 | GAP-CALCULATED×20, GAP-ENABLEWHEN-IN-REPEAT×2 |
sirb-nonmedical-event |
Unanticipated Problems Involving Risk to Subjects or Others (UPIRTSO)/Adverse Non-Medical Event Questionnaire | 203 | 98 | 14 | GAP-CALCULATED×14 |
sirb-continuing-review |
Continuing Review | 222 | 133 | 31 | GAP-CALCULATED×30, GAP-NESTED-REPEATING×1 |
sirb-determination-letter |
sIRB Determination Questionnaire | 65 | 29 | 7 | GAP-CALCULATED×7 |
sirb-recruitment-materials |
Recruitment Materials | 240 | 113 | 8 | GAP-CALCULATED×8 |
au-hca-1-4wk |
Health Check Assessment 1-4 Week Questionnaire | 90 | 66 | 0 | nothing |
au-hca-6-8wk |
Health Check Assessment 6-8 Week Questionnaire | 83 | 61 | 0 | nothing |
au-hca-4-9mnt |
Health Check Assessment 4-9 Week Questionnaire | 78 | 56 | 0 | nothing |
au-hca-12mnt |
Health Check Assessment 12 Months Questionnaire | 78 | 56 | 0 | nothing |
au-hca-18mnt |
Health Check Assessment 3 Year Questionnaire | 69 | 49 | 0 | nothing |
au-hca-2yr |
Health Check Assessment 3 Year Questionnaire | 74 | 53 | 0 | nothing |
au-hca-3yr |
Health Check Assessment 3 Year Questionnaire | 75 | 53 | 0 | nothing |
au-hca-4yr |
Health Check Assessment 4 Year Questionnaire | 81 | 58 | 0 | nothing |
au-hca-summary |
Health Check Summary | 32 | 32 | 8 | GAP-NESTED-REPEATING×8 |
au-my-info |
My Information Questionnaire | 10 | 9 | 0 | nothing |
au-baby-info |
Baby's Information Questionnaire | 6 | 5 | 0 | nothing |
au-lifestyle |
My Alcohol, Tobacco and Other Drug screening Questionnaire | 20 | 15 | 0 | nothing |
au-nb-delivery |
Newborn Delivery Questionnaire | 32 | 28 | 0 | nothing |
au-next-vst |
Progress Notes and Next Visit Details Questionnaire | 7 | 6 | 0 | nothing |
cq-phq9 |
Patient Health Questionnaire (PHQ-9) | 10 | 10 | 10 | GAP-VALUESET×9, GAP-CALCULATED×1 |
cq-mypain |
MyPain Questionnaire | 78 | 67 | 0 | nothing |
cq-mypain-ufl |
MyPain Questionnaire | 76 | 66 | 0 | nothing |
cq-hiv-nachce |
NACHC.E2 Chlamydia test | 1 | 1 | 1 | GAP-VALUESET×1 |
numde-gecco |
— | 277 | 213 | 0 | nothing |
numde-generic |
Generischer COMPASS FHIR Questionnaire | 45 | 32 | 0 | nothing |
aehrc-mbs715 |
Aboriginal and Torres Strait Islander health check – Adults (25–49 years) | 187 | 131 | 5 | GAP-VALUESET×4, GAP-CALCULATED×1 |
medplum-patient-intake |
Patient Intake Questionnaire | 80 | 44 | 25 | GAP-VALUESET×20, GAP-ENABLEWHEN-IN-REPEAT×3, GAP-TYPE-REFERENCE×2 |
medplum-sick-note |
Sick Note Questionnaire | 3 | 3 | 0 | nothing |
iknl-acp |
Uniform vastleggen proactieve zorgplanning (PZP) o.b.v. zibs2020 - Release 17-08-2026 | 131 | 90 | 12 | GAP-VALUESET×9, GAP-NESTED-REPEATING×3 |
sample-ig |
Cancer Quality Forum Questionnaire 2012 | 10 | 6 | 5 | GAP-VALUESET×5 |
multi-lang-ig |
Example Questionnaire | 10 | 6 | 5 | GAP-VALUESET×5 |
us-cql-gmtp |
Example Genetic/Molecular Testing Preauthorization Questionnaire | 29 | 23 | 2 | GAP-VALUESET×2 |
us-cql-mnac |
Example Medical Necessity For Authorization Of Catheters Questionnaire | 24 | 16 | 0 | nothing |
us-cql-mboda |
Example Medical Benefit Outpatient Drug Authorization Questionnaire | 20 | 15 | 0 | nothing |
us-cql-coverage |
Example Patient and Coverage Questionnaire | 26 | 22 | 1 | GAP-VALUESET×1 |
A real answer set, replayed
The SDC implementation guide publishes the answers a real clinician gave in the cardiology form — MOMO ABBAS. This script pushes those answers through the FormScript document the converter produced and checks the output document against the answers that went in.
- 43 answers in the response
- 43 of them carried into the converted form
- 0 could not be carried, and the reason is recorded
- 42 output values matched the answers exactly, 0 did not
The corpus holds 2 answer sets. This one is replayed because the questionnaire it answers is in the corpus; the other belongs to a form that is not, so there is nothing to push it through.
Questions the corpus has raised for the specification
These are not defects the corpus fixes. They are design questions the corpus found, and each one is checked when this report is written rather than asserted from memory. The probe is what settles the question: the specification is checked against it, not the other way round.
Does a field have to be a leaf?
- the specification says: Spec-7.1 said "leaf"; Spec-7.16 says a field may contain blocks
- the probe is: a
fieldthat contains anotherfield - what the toolchain does: the analyzer reports 0 errors and 0 warnings; the engine evaluates it and projects 2 output keys
- what the corpus did: The corpus asked, and the specification answered in r9: a
fieldmay contain blocks, and a field that does is a composite field (Spec-7.16). A source question that has child questions is now converted into a composite field, so its own answer is kept instead of being dropped asGAP-NESTED-LEAF. The one case the language still cannot hold is a repeating question with children, and that is recorded asGAP-NESTED-REPEATING.
Reproducing this
npm run corpus:fetch # read the upstream files, refresh the manifest
npm run corpus:convert # convert them, write the gap log
npm run corpus:replay # push a real answer set through a converted form
npm run corpus:report # re-check every document and write this report