Skip to content

Commit cf169e4

Browse files
author
records-bot
committed
sync: monorepo @ validator 0.4.1 / validation-types 0.1.5
Snapshot of medvertical/records monorepo state, exported via oss:export-validator. Tracks the npm publication of: @records-fhir/validator@0.4.1 @records-fhir/validation-types@0.1.5 Run npm i @records-fhir/validator@0.4.1 for the matching distribution. The conformance evidence in conformance-results/ matches the published tarball.
1 parent 815c9b8 commit cf169e4

11 files changed

Lines changed: 91596 additions & 110 deletions

README.md

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ requiring a JVM, database, or Records server.
1212
[![FHIR](https://img.shields.io/badge/FHIR-R4%20%7C%20R4B%20%7C%20R5%20%7C%20R6-blue)](#fhir-version-support)
1313
[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](./LICENSE)
1414
[![HL7 parity](https://img.shields.io/badge/HL7%20JSON%20parity-496%2F496-brightgreen)](#validation-evidence)
15-
[![MII scope](https://img.shields.io/badge/MII%202026%20scope-241%2F241-brightgreen)](#mii-2026-reference-scope)
15+
[![MII scope](https://img.shields.io/badge/MII%202026%20scope-231%2F231-brightgreen)](#mii-2026-reference-scope)
16+
[![FHIR Schema](https://img.shields.io/badge/FHIR%20Schema%20dual--path-0%20Records--only-brightgreen)](#fhir-schema-dual-path-scope)
1617

1718
## Quick Start
1819

@@ -204,9 +205,13 @@ npm run conformance -- --tx-server none --output-file conformance-results/report
204205

205206
Additional historical and scoped evidence artifacts:
206207

208+
- [`conformance-results/validator-claims-2026-07-01.md`](./conformance-results/validator-claims-2026-07-01.md)
209+
- [`conformance-results/report-2026-07-01.json`](./conformance-results/report-2026-07-01.json)
210+
- [`conformance-results/mii-triangulation-2026-07-01.json`](./conformance-results/mii-triangulation-2026-07-01.json)
211+
- [`conformance-results/fhir-schema-dual-path-all-2026-07-01.json`](./conformance-results/fhir-schema-dual-path-all-2026-07-01.json)
212+
- [`conformance-results/fhir-schema-dual-path-actions-2026-07-01.md`](./conformance-results/fhir-schema-dual-path-actions-2026-07-01.md)
207213
- [`conformance-results/hl7-validator-testkit-2026-05-20.json`](./conformance-results/hl7-validator-testkit-2026-05-20.json)
208214
- [`conformance-results/baseline-backlog-discovery-2026-05-03.json`](./conformance-results/baseline-backlog-discovery-2026-05-03.json)
209-
- [`conformance-results/mii-triangulation-alpha7-2026-05-19.json`](./conformance-results/mii-triangulation-alpha7-2026-05-19.json)
210215

211216
The 438 pre-filtered entries are not counted as failures because they do not
212217
exercise the thing this harness measures: JSON FHIR resource validation with a
@@ -256,19 +261,41 @@ Spec dispatch coverage for the measured R4 base package constraints is 100%.
256261
## MII 2026 Reference Scope
257262

258263
MII conformance is measured in a separate lane from the HL7
259-
`FHIR/fhir-test-cases` score. The current scoped MII-2026 reference run
260-
was generated on 2026-05-19 against the official MII FHIR Validator container
261-
`mii-fhir-validator:0.0.1-alpha.7` at `http://localhost:8081`. It matches
262-
the reference validator on 241/241 measured resources from the refreshed MII
263-
2026 corpus under the `mii-2026-reference` profile scope and
264-
`mii-local-blaze` terminology mode, with 12 classified corpus/profile-drift
265-
skips. The source-repository report is
266-
`conformance-results/mii-triangulation-alpha7-2026-05-19.json`.
264+
`FHIR/fhir-test-cases` score. The current scoped MII-2026 reference run was
265+
generated on 2026-07-01 against the official MII FHIR Validator container
266+
`mii-fhir-validator:0.0.1-alpha.7` at `http://localhost:8081`. It matches the
267+
reference validator on 231/231 measured resources from the refreshed MII 2026
268+
corpus under the `mii-2026-reference` profile scope and `mii-local-blaze`
269+
terminology mode, with 22 classified skips: 12 corpus/profile-drift skips and
270+
10 reference-terminology-incomplete skips. The run prewarmed 128/128
271+
reference-scope profiles before executing the cases. The source-repository
272+
report is `conformance-results/mii-triangulation-2026-07-01.json`.
267273

268274
This is a scoped parity claim for the measured package-example corpus. It is
269275
not an MII certification claim and does not imply full site-level MII
270276
Must-Support readiness.
271277

278+
## FHIR Schema Dual-Path Scope
279+
280+
FHIR Schema is being evaluated as a cleaner intermediate representation for
281+
the same StructureDefinition semantics, not as a replacement for conformance
282+
evidence. The current engine remains StructureDefinition-first. The FHIR Schema
283+
graph path runs in parallel and is compared against both the current
284+
StructureDefinition path and Java/reference `OperationOutcome` evidence where a
285+
reference report exists.
286+
287+
The current all-scope MII dual-path lane covers 555 real fixtures. Of those, 512
288+
have Java/reference coverage through the attached Java CLI supplement
289+
`conformance-results/fhir-schema-reference-cli-supplement-all-2026-07-01.json`.
290+
The final report is
291+
`conformance-results/fhir-schema-dual-path-all-2026-07-01.json`.
292+
293+
The lane reports 416 clean cases, 58 exact Graph/Records comparable matches, 26
294+
graph-only cases, 0 Records-only cases, 0 divergent cases, 55 missing-profile
295+
cases, and 0 execution errors. This lane is an implementation-reduction and
296+
convergence signal; it does not broaden the public headline parity claim beyond
297+
the explicitly measured FHIR JSON comparison lanes.
298+
272299
## Examples
273300

274301
- [Standalone validation](./packages/validator/examples/standalone-validate.mjs)
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
{
2+
"generatedAt": "2026-07-01T09:53:02.717Z",
3+
"sourceSummary": {
4+
"selectedFixtures": 555,
5+
"referenceCases": 512
6+
},
7+
"actions": [
8+
{
9+
"id": "shared-local-strictness",
10+
"priority": "P2",
11+
"bucket": "local-engines-align-reference-unconfirmed",
12+
"count": 25,
13+
"decision": "Do not change default runtime behavior without explicit product/spec decision.",
14+
"rationale": "Both local paths agree, but Java reference evidence does not confirm the comparable key.",
15+
"nextStep": "Review each classification as either intentional stricter product policy or reference/runtime normalization.",
16+
"issueKeys": {
17+
"structure-min|code.coding": 12,
18+
"pattern|category.coding": 5,
19+
"structure-min|category": 4,
20+
"pattern|value.code": 3,
21+
"structure-min|code.coding.code": 1
22+
},
23+
"classifications": {
24+
"local-code-coding-slice-cardinality": 12,
25+
"local-category-coding-pattern": 5,
26+
"local-category-cardinality": 4,
27+
"local-value-code-pattern": 3,
28+
"local-code-coding-child-cardinality": 1
29+
},
30+
"sampleFixtures": [
31+
"quality-corpus/r4/profiled/mii-2026/mii-2026-consent-consent-example-mii-consent-einwilligung-1.json",
32+
"quality-corpus/r4/profiled/mii-2026/mii-2026-consent-consent-example-mii-consent-einwilligung-2.json",
33+
"quality-corpus/r4/profiled/mii-2026/mii-2026-consent-consent-example-mii-consent-einwilligung.json",
34+
"quality-corpus/r4/profiled/mii-2026/mii-2026-consent-consent-example-mii-consent-result-type-consent-status.json",
35+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-bilanz-abnahme-haemofiltration-einzelmesswerte.json"
36+
]
37+
},
38+
{
39+
"id": "graph-only-strictness",
40+
"priority": "P2",
41+
"bucket": "graph-only-unconfirmed",
42+
"count": 26,
43+
"decision": "Keep in parallel evidence; do not promote automatically.",
44+
"rationale": "The FHIR Schema graph is stricter than Records and not confirmed by Java reference evidence.",
45+
"nextStep": "Promote only if Java/spec evidence confirms the category or product policy explicitly opts into stricter validation.",
46+
"issueKeys": {
47+
"structure-min|category.coding": 14,
48+
"fixed|extension:stellungzurop.value.coding.system": 9,
49+
"structure-min|identifier:maskierterversichertenidentifer.value": 1,
50+
"structure-max|code.coding": 1,
51+
"structure-min|code.coding": 1
52+
},
53+
"classifications": {
54+
"category-coding-slice-cardinality": 14,
55+
"extension-slice-fixed-value": 9,
56+
"identifier-slice-child-cardinality": 1,
57+
"code-coding-identity-vs-full-pattern": 1,
58+
"forbidden-code-coding-slice-cardinality": 1,
59+
"required-code-coding-slice-cardinality": 1
60+
},
61+
"sampleFixtures": [
62+
"quality-corpus/r4/profiled/mii-2026/mii-2026-base-patient-patient-mii-exa-person-patient-pseudonymisiert.json",
63+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-bilanz-abnahme-haemofiltration-einzelmesswerte.json",
64+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-bilanz-ausfuhr-drainage-generisch.json",
65+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-bilanz-ausfuhr-fluessigkeit-gesamt.json",
66+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-bilanz-ausfuhr-gallenfluessigkeit.json"
67+
]
68+
},
69+
{
70+
"id": "java-confirmed-records-gaps",
71+
"priority": "P3",
72+
"bucket": "graph-aligns-reference-records-missing",
73+
"count": 0,
74+
"decision": "No action: no Java-confirmed Records runtime gap in this report.",
75+
"rationale": "This bucket means the schema graph and Java reference agree while Records misses the comparable behavior.",
76+
"nextStep": "Keep as release-gate canary; fail if this bucket becomes non-empty.",
77+
"issueKeys": {},
78+
"sampleFixtures": []
79+
},
80+
{
81+
"id": "java-confirmed-graph-gaps",
82+
"priority": "P3",
83+
"bucket": "records-aligns-reference-graph-missing",
84+
"count": 0,
85+
"decision": "No action: no Java-confirmed graph-only gap in this report.",
86+
"rationale": "This bucket means Records and Java agree while the schema graph misses the comparable behavior.",
87+
"nextStep": "Keep as graph-promotion gate.",
88+
"issueKeys": {},
89+
"sampleFixtures": []
90+
},
91+
{
92+
"id": "reference-coverage-gaps",
93+
"priority": "P3",
94+
"bucket": "no-reference",
95+
"count": 0,
96+
"decision": "Generate or attach reference evidence before making parity claims for these cases.",
97+
"rationale": "Cases without reference evidence cannot confirm whether local behavior should change.",
98+
"nextStep": "Extend Java CLI supplement or repair the MII HTTP reference environment for these fixtures.",
99+
"sampleFixtures": []
100+
},
101+
{
102+
"id": "profile-scope-gaps",
103+
"priority": "P3",
104+
"bucket": "profile-missing",
105+
"count": 55,
106+
"decision": "Keep out of parity numerators; this report is the documented scope exclusion set.",
107+
"rationale": "No-profile fixtures and intentionally unmapped profiles are corpus/scope issues, not validator runtime failures.",
108+
"nextStep": "Add meta.profile to corpus fixtures where valid, or keep the profile in the documented exclusion set.",
109+
"classifications": {
110+
"noProfile": 43,
111+
"intentionallyUnmapped": 12
112+
},
113+
"sampleFixtures": [
114+
"quality-corpus/r4/profiled/mii-2026/mii-2026-biobank-document-reference-document-reference-kulturprotokoll.json",
115+
"quality-corpus/r4/profiled/mii-2026/mii-2026-biobank-document-reference-document-reference-protocol-crisprtp53.json",
116+
"quality-corpus/r4/profiled/mii-2026/mii-2026-biobank-service-request-service-request-gewebe-biopsie.json",
117+
"quality-corpus/r4/profiled/mii-2026/mii-2026-medikation-procedure-procedure-mii-exa-medikation-procedure-thiotepa.json",
118+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-device-device-mii-exa-molgen-device-illumina-novaseq.json",
119+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-device-device-mii-exa-molgen-device-sequencer-2.json",
120+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-device-device-mii-exa-molgen-device-sequencer-nextseq.json",
121+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-device-device-mii-exa-molgen-device-sequencer.json",
122+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-device-device-mii-exa-molgen-device-thermofisher-ionchef.json",
123+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-document-reference-document-reference-mii-exa-molgen-documentreference-bed-file.json",
124+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-document-reference-document-reference-mii-exa-molgen-documentreference-fastq.json",
125+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-media-media-mii-exa-molgen-media-coverage-plot.json",
126+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-observation-observation-mii-exa-molgen-phenotypic-feature-1.json",
127+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-observation-observation-mii-exa-molgen-phenotypic-feature-2.json",
128+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-observation-observation-mii-exa-molgen-phenotypic-feature-3.json",
129+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-observation-observation-mii-exa-molgen-phenotypic-feature-4.json",
130+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-patient-patient-mii-exa-molgen-patient-2.json",
131+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-patient-patient-mii-exa-molgen-patient-brca1.json",
132+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-patient-patient-mii-exa-molgen-patient-fgfr2-fusion.json",
133+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-patient-patient-mii-exa-molgen-patient-srcc.json",
134+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-patient-patient-mii-exa-molgen-patient.json",
135+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-plan-definition-plan-definition-mii-exa-molgen-protocol-agilent-sureselect.json",
136+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-practitioner-practitioner-mii-exa-molgen-practitioner-lab.json",
137+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-practitioner-practitioner-mii-exa-molgen-practitioner-ordering.json",
138+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-practitioner-practitioner-mii-exa-molgen-practitioner-physician.json",
139+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-specimen-specimen-mii-exa-molgen-specimen-blood-edta.json",
140+
"quality-corpus/r4/profiled/mii-2026/mii-2026-molgen-specimen-specimen-mii-exa-molgen-specimen-dna-library.json",
141+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-adverse-event-adverse-event-mii-exa-onko-oxaliplatin-neuropathy.json",
142+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-diagnostic-report-diagnostic-report-patient-kim-musterperson-patho-report-1.json",
143+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-encounter-encounter-mii-exa-onko-krk-bundle-encounter.json",
144+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-encounter-encounter-mii-exa-onko-mamma-bundle-encounter.json",
145+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-encounter-encounter-mii-exa-onko-melanom-bundle-encounter.json",
146+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-encounter-encounter-mii-exa-onko-prostata-bundle-encounter.json",
147+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-patient-patient-mii-exa-onko-folfox-patient.json",
148+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-patient-patient-mii-exa-onko-krk-bundle-patient.json",
149+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-patient-patient-mii-exa-onko-mamma-bundle-patient.json",
150+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-patient-patient-mii-exa-onko-melanom-bundle-patient.json",
151+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-patient-patient-mii-exa-onko-molecular-board-patient.json",
152+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-patient-patient-mii-exa-onko-prostata-bundle-patient.json",
153+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-patient-patient-patient-kim-musterperson.json",
154+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-research-study-research-study-mii-exa-onko-studie-prob.json",
155+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-service-request-service-request-mii-exa-onko-molecular-surgery-request.json",
156+
"quality-corpus/r4/profiled/mii-2026/mii-2026-onkologie-specimen-specimen-patient-kim-musterperson-specimen-1.json",
157+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-bilanz-einfuhr-abgepumpte-muttermilch.json",
158+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-bilanz-einfuhr-muttermilch.json",
159+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-bilanz-einfuhr-oraler-fluessigkeit.json",
160+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-bilanz-einfuhr-saeuglingsnahrung.json",
161+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-bilanz-einfuhr-spendermilch.json",
162+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-score-rass.json",
163+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-untersuchung-pupillenbefund.json",
164+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-untersuchung-pupillenform.json",
165+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-untersuchung-pupillengroesse.json",
166+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-untersuchung-pupillenlichtreaktion-direkt.json",
167+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-untersuchung-pupillenlichtreaktion-indirekt.json",
168+
"quality-corpus/r4/profiled/mii-2026/mii-2026-icu-observation-mii-exa-icu-untersuchung-pupillensymmetrie.json"
169+
]
170+
}
171+
]
172+
}

0 commit comments

Comments
 (0)