FS FormScript

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 warning
  • WHO-smart-ccc-measurements — 1 advisory warning
  • WHO-smart-ccc-danger-signs — 7 advisory warnings
  • WHO-smart-ccc-breastfeeding — 7 advisory warnings
  • numde-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 field that contains another field
  • 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 field may 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 as GAP-NESTED-LEAF. The one case the language still cannot hold is a repeating question with children, and that is recorded as GAP-NESTED-REPEATING.

Reproducing this

text
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