HAPI FHIR validation and PDex $multi-member-match request - is this a HAPI FHIR bug?

79 views
Skip to first unread message

Jan Vissers

unread,
May 29, 2025, 12:03:41 PM5/29/25
to HAPI FHIR
Hi,

Fairly new to HAPI FHIR (and FHIR in general). I've been experimenting with HAPI FHIR validation feature. My experiment is trying to validate a PDex $multi-member-match request input request, see: https://build.fhir.org/ig/HL7/davinci-epdx/Parameters-payer-multi-member-match-in.html.

However, I'm stuck with an error, which I cannot seem to get resolved - and I believe that this might be a HAPI FHIR bug.

I'll show the output of the validator below, and attach a small Java program that I'm testing this with.

Running PDEXMultiMemberMatchValidation
See: https://build.fhir.org/ig/HL7/davinci-epdx/Parameters-payer-multi-member-match-in.json.html
2025-05-29 17:06:28,752 INFO ca.uhn.fhir.util.VersionUtil [main] HAPI FHIR version 8.0.0 - Rev 091beb6d18
2025-05-29 17:06:28,761 INFO ca.uhn.fhir.context.FhirContext [main] Creating new FHIR context for FHIR version [R4]
2025-05-29 17:06:29,673 INFO ca.uhn.fhir.util.XmlUtil [main] FHIR XML procesing will use StAX implementation 'Woodstox' version '6.5.1'
2025-05-29 17:06:31,306 INFO ca.uhn.fhir.validation.FhirValidator [main] Ph-schematron library not found on classpath, will not attempt to perform schematron validation
HRex Consent Policy ValueSet contents:
 - http://hl7.org/fhir/us/davinci-hrex/StructureDefinition-hrex-consent.html#regular
 - http://hl7.org/fhir/us/davinci-hrex/StructureDefinition-hrex-consent.html#sensitive
HRex Consent StructureDefinition details:
 - URL: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-consent
 - Version: 1.1.0
 - HRex Slice: hrex
 - Binding ValueSet: null
 - Fixed URI: None
2025-05-29 17:06:31,669 INFO ca.uhn.fhir.context.FhirContext [main] Creating new FHIR context for FHIR version [R5]
2025-05-29 17:06:31,748 INFO ca.uhn.fhir.context.support.DefaultProfileValidationSupport [main] Loading structure definitions from classpath: /org/hl7/fhir/r4/model/profile/profiles-resources.xml
2025-05-29 17:06:32,373 INFO ca.uhn.fhir.context.support.DefaultProfileValidationSupport [main] Loading structure definitions from classpath: /org/hl7/fhir/r4/model/profile/profiles-types.xml
2025-05-29 17:06:32,418 INFO ca.uhn.fhir.context.support.DefaultProfileValidationSupport [main] Loading structure definitions from classpath: /org/hl7/fhir/r4/model/profile/profiles-others.xml
2025-05-29 17:06:32,572 INFO ca.uhn.fhir.context.support.DefaultProfileValidationSupport [main] Loading structure definitions from classpath: /org/hl7/fhir/r4/model/extension/extension-definitions.xml
2025-05-29 17:06:35,206 INFO ca.uhn.fhir.context.support.DefaultProfileValidationSupport [main] Loading CodeSystem/ValueSet from classpath: /org/hl7/fhir/r4/model/valueset/valuesets.xml
2025-05-29 17:06:35,382 WARN ca.uhn.fhir.parser.LenientErrorHandler [main] Unknown element 'author' found while parsing
2025-05-29 17:06:35,382 INFO ca.uhn.fhir.context.support.DefaultProfileValidationSupport [main] Loading CodeSystem/ValueSet from classpath: /org/hl7/fhir/r4/model/valueset/v2-tables.xml
2025-05-29 17:06:35,527 WARN ca.uhn.fhir.parser.LenientErrorHandler [main] Unknown element 'author' found while parsing
2025-05-29 17:06:35,527 INFO ca.uhn.fhir.context.support.DefaultProfileValidationSupport [main] Loading CodeSystem/ValueSet from classpath: /org/hl7/fhir/r4/model/valueset/v3-codesystems.xml
2025-05-29 17:06:35,593 WARN ca.uhn.fhir.parser.LenientErrorHandler [main] Unknown element 'author' found while parsing
Validation results:
Severity: INFORMATION
Location: Parameters.parameter[0].part[0].resource/*Patient/patient-1*/.identifier[0]
SliceMsg: [Parameters.parameter[0].part[0].resource/*Patient/patient-1*/.identifier[0]: Does not match slice 'umb' (discriminator: $this.where(type.coding.where((system = 'http://hl7.org/fhir/us/davinci-hrex/CodeSystem/hrex-temp') and (code = 'UMB')).exists()).exists())]
Message: This element does not match any known slice defined in the profile http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics|1.1.0 (this may not be a problem, but you should check that it's not intended to match a slice)

Severity: WARNING
Location: Parameters.parameter[0].part[0].resource/*Patient/patient-1*/.identifier[0].type
SliceMsg: <none>
Message: None of the codings provided are in the value set 'IdentifierType' (http://hl7.org/fhir/ValueSet/identifier-type|4.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://terminology.hl7.org/CodeSystem/v2-0203#MB)

Severity: WARNING
Location: Parameters.parameter[0].part[1].resource/*Coverage/coverage-1*/.identifier[0].type
SliceMsg: <none>
Message: None of the codings provided are in the value set 'IdentifierType' (http://hl7.org/fhir/ValueSet/identifier-type|4.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://terminology.hl7.org/CodeSystem/v2-0203#MB)

Severity: INFORMATION
Location: Parameters.parameter[0].part[2].resource/*Consent/consent-1*/.policy[0]
SliceMsg: [Parameters.parameter[0].part[2].resource/*Consent/consent-1*/.policy[0]: Does not match slice 'hrex' (discriminator: (uri memberOf 'http://hl7.org/fhir/us/davinci-hrex/ValueSet/hrex-consent-policy'))]
Message: This element does not match any known slice defined in the profile http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-consent|1.1.0 (this may not be a problem, but you should check that it's not intended to match a slice)

Severity: ERROR
Location: Parameters.parameter[0].part[2].resource/*Consent/consent-1*/
SliceMsg: <none>
Message: Slice 'Consent.policy:hrex': a matching slice is required, but not found (from http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-consent|1.1.0). Note that other slices are allowed in addition to this required slice

Severity: WARNING
Location: Parameters.parameter[0].part[2].resource/*Consent/consent-1*/.provision.actor[0].role
SliceMsg: <none>
Message: None of the codings provided are in the value set 'SecurityRoleType' (http://hl7.org/fhir/ValueSet/security-role-type|4.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://terminology.hl7.org/CodeSystem/provenance-participant-type#performer)

Severity: WARNING
Location: Parameters.parameter[0].part[3].resource/*Coverage/coverage-link-1*/.identifier[0].type
SliceMsg: <none>
Message: None of the codings provided are in the value set 'IdentifierType' (http://hl7.org/fhir/ValueSet/identifier-type|4.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://terminology.hl7.org/CodeSystem/v2-0203#MB)


Am I doing something wrong, or is this a problem with HAPI FHIR (or maybe the PDEX IG)?

Thanks,
- Jan.
PDEXMultiMemberMatchValidation.java

James Agnew

unread,
May 29, 2025, 12:11:51 PM5/29/25
to Jan Vissers, HAPI FHIR
Does your payload validate without errors if you validate it using https://validator.fhir.org/ when configured to use the same IG?

--
You received this message because you are subscribed to the Google Groups "HAPI FHIR" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hapi-fhir+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/hapi-fhir/e093f12f-d0ed-49a6-b1cf-737985816dbfn%40googlegroups.com.

Jan Vissers

unread,
May 29, 2025, 12:23:58 PM5/29/25
to James Agnew, HAPI FHIR
I will have to check that, and will get back to you. I looked at that validator, but was a bit confused about how to operate it.

Op do 29 mei 2025 18:11 schreef James Agnew <james...@gmail.com>:

James Agnew

unread,
May 29, 2025, 12:30:59 PM5/29/25
to Jan Vissers, HAPI FHIR
The bit that can be confusing (at least I always miss it): There is a tab at the top labelled "options". You have to click that first and on that tab you can select which IGs to validate against. Once you've picked them (and any other options), you can return to the first tab and paste in the thing you want to validate.

Cheers,
James

Jan Vissers

unread,
May 29, 2025, 12:36:38 PM5/29/25
to James Agnew, HAPI FHIR
Yup, I tried that earlier - but the validate never returns. I must be doing something wrong, I'll check again later. I believe you should also be able to run this from the command line.

Op do 29 mei 2025 18:30 schreef James Agnew <james...@gmail.com>:

Jan Vissers

unread,
May 30, 2025, 3:07:00 AM5/30/25
to HAPI FHIR
I ran it just now, and that validator actually reports more ERRORS - here is the output.

java -jar validator_cli.jar -version 4.0 \
-ig ig-packages/hl7.fhir.us.davinci-hrex-1.1.0.tgz \
-ig ig-packages/hl7.fhir.us.davinci-pdex-2.1.0-ballot.tgz \
-ig ig-packages/hl7.fhir.us.core-7.0.0.tgz \
-profile http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/pdex-parameters-multi-member-match-bundle-in \
example-bulk-member-match.json \
-output-style compact  
FHIR Validation tool Version 6.5.22 (Git# e9e5a3d6309e). Built 2025-05-28T23:29:40.995Z (33 hours old)
  Java:   23.0.2 from /home/jvissers/.sdkman/candidates/java/23.0.2-oracle on amd64 (64bit). 15888MB available
  Paths:  Current = /home/jvissers/Downloads, Package Cache = /home/jvissers/.fhir/packages
  Params: -version 4.0 -ig ig-packages/hl7.fhir.us.davinci-hrex-1.1.0.tgz -ig ig-packages/hl7.fhir.us.davinci-pdex-2.1.0-ballot.tgz -ig ig-packages/hl7.fhir.us.core-7.0.0.tgz -profile http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/pdex-parameters-multi-member-match-bundle-in example-bulk-member-match.json -output-style compact
  Locale: /
  Jurisdiction: United States of America
Loading
  Load FHIR v4.0 from hl7.fhir.r4.core#4.0.1  Load hl7.terminology.r4#6.2.0 - 4288 resources (00:03.111)
  Load hl7.fhir.uv.extensions.r4#5.2.0 - 759 resources (00:00.959)
 - 8265 resources (00:00.000)
  Load hl7.fhir.uv.extensions.r5#5.2.0 - 759 resources (00:01.077)
  Load hl7.terminology#6.4.0 - 4346 resources (00:00.318)
  Load hl7.terminology.r5#6.2.0 - 4288 resources (00:00.789)
  Load hl7.fhir.uv.extensions#5.2.0 - 759 resources (00:00.003)
  Terminology server http://tx.fhir.org - Version Connected to Terminology Server at http://tx.fhir.org (00:02.036)
  Load hl7.terminology.r4#6.1.0 - 4279 resources (00:00.681)
  Load hl7.fhir.uv.extensions.r4#5.1.0 - 1397 resources (00:00.635)
  Load hl7.terminology.r4#5.5.0 - 4225 resources (00:01.353)
  Load hl7.fhir.uv.smart-app-launch#2.0.0 - 1 resources (00:00.000)
  Load us.nlm.vsac#0.18.0 - 30140 resources (00:00.266)
  Load hl7.fhir.r4.examples#4.0.1 - 4581 resources (00:01.419)
  Load hl7.fhir.uv.sdc#3.0.0 - 138 resources (00:00.006)
  Load us.cdc.phinvads#0.12.0 - 1967 resources (00:00.046)
  Load hl7.terminology.r5#5.3.0 - 4202 resources (00:01.514)
  Load hl7.fhir.uv.extensions#5.1.0-snapshot1 - 1379 resources (00:00.005)
  Load hl7.fhir.us.core#7.0.0 - 217 resources (00:00.000)
  Load hl7.terminology.r4#5.0.0 - 4175 resources (00:02.971)
  Load hl7.fhir.uv.extensions.r4#1.0.0 - 1329 resources (00:00.658)
  Load hl7.fhir.uv.bulkdata#2.0.0 - 7 resources (00:00.033)
  Load hl7.fhir.uv.smart-app-launch#2.1.0 - 8 resources (00:00.052)
  Load us.nlm.vsac#0.11.0 - 14323 resources (00:00.134)
  Load ihe.formatcode.fhir#1.1.0 - 3 resources (00:00.000)
  Load hl7.fhir.us.core#6.1.0 - 213 resources (00:00.278)
  Load hl7.fhir.us.core.v610#6.1.0 - 0 resources (00:00.000)
  Load hl7.fhir.us.core#3.1.1 - 146 resources (00:00.100)
  Load hl7.fhir.us.core.v311#3.1.1 - 0 resources (00:00.000)
  Load us.nlm.vsac#0.19.0 - 15332 resources (00:00.158)
  Load ig-packages/hl7.fhir.us.davinci-hrex-1.1.0.tgz#1.1.0 - 28 resources (00:00.088)
  Load hl7.fhir.us.core.3.1.1#3.1.1 - 0 resources (00:00.051)
  Load hl7.terminology.r4#6.0.2 - 4244 resources (00:07.126)
  Load hl7.terminology.r5#5.5.0 - 4225 resources (00:04.252)
  Load hl7.fhir.uv.extensions#5.1.0 - 1397 resources (00:00.006)
  Load hl7.fhir.us.davinci-hrex#1.1.0-ballot - 31 resources (00:00.013)
  Load us.nlm.vsac#0.7.0 - 12403 resources (00:00.172)
  Load hl7.fhir.us.carin-bb#2.1.0-snapshot1 - 96 resources (00:00.000)
  Load hl7.terminology.r4#5.3.0 - 4202 resources (00:09.945)
  Load hl7.fhir.us.udap-security#0.1.0 - 2 resources (00:00.099)
  Load hl7.fhir.us.davinci-hrex#1.0.0 - 26 resources (00:00.000)
  Load hl7.fhir.us.davinci-crd#2.0.0 - 42 resources (00:00.006)
  Load hl7.fhir.uv.subscriptions-backport.r4#1.1.0 - 24 resources (00:00.044)
  Load hl7.fhir.us.davinci-pas#2.0.1 - 97 resources (00:00.005)
  Load hl7.fhir.uv.bulkdata#1.0.1 - 5 resources (00:00.084)
  Load hl7.fhir.us.davinci-pdex-plan-net#1.1.0 - 112 resources (00:00.044)
  Load hl7.fhir.us.davinci-pas#1.2.0-ballot - 81 resources (00:00.064)
  Load hl7.fhir.us.carin-bb#2.0.0 - 91 resources (00:00.042)
  Load hl7.fhir.uv.sdc#3.0.0-preview - 138 resources (00:00.067)
  Load hl7.fhir.us.davinci-dtr#1.1.0-ballot - 12 resources (00:00.000)
  Load hl7.fhir.us.davinci-cdex#2.0.0 - 22 resources (00:00.045)
  Load hl7.fhir.us.davinci-atr#2.0.0 - 33 resources (00:00.000)
  Load hl7.terminology.r4#3.1.0 - 4118 resources (00:10.717)
  Load hl7.fhir.us.core#5.0.1 - 193 resources (00:00.001)
  Load hl7.terminology.r4#4.0.0 - 4165 resources (00:12.603)
  Load hl7.fhir.us.udap-security#1.0.0 - 1 resources (00:00.000)
  Load hl7.fhir.uv.subscriptions-backport#0.1.0 - 23 resources (00:00.073)
  Load hl7.fhir.us.ndh#1.0.0-ballot - 257 resources (00:00.289)
  Load hl7.fhir.uv.tools#0.4.0 - 93 resources (00:01.531)
  Load hl7.fhir.us.davinci-crd#current - 52 resources (00:00.007)
  Load hl7.fhir.us.davinci-dtr#2.0.0 - 29 resources (00:00.006)
  Load hl7.fhir.uv.extensions#5.1.0-ballot1 - 1364 resources (00:00.043)
  Load ig-packages/hl7.fhir.us.davinci-pdex-2.1.0-ballot.tgz#2.1.0-ballot - 80 resources (00:00.176)
  Load ig-packages/hl7.fhir.us.core-7.0.0.tgz#7.0.0 - 0 resources (00:00.047)
  Package Summary: [hl7.fhir.r4.core#4.0.1, hl7.fhir.xver-extensions#0.1.0, hl7.terminology.r4#6.2.0, hl7.fhir.uv.extensions.r4#5.2.0, hl7.fhir.uv.extensions.r5#5.2.0, hl7.terminology#6.4.0, hl7.terminology.r5#6.2.0, hl7.fhir.uv.extensions#5.2.0, hl7.terminology.r4#6.1.0, hl7.fhir.uv.extensions.r4#5.1.0, hl7.terminology.r4#5.5.0, hl7.fhir.uv.smart-app-launch#2.0.0, us.nlm.vsac#0.18.0, hl7.fhir.r4.examples#4.0.1, hl7.fhir.uv.sdc#3.0.0, us.cdc.phinvads#0.12.0, hl7.terminology.r5#5.3.0, hl7.fhir.uv.extensions#5.1.0-snapshot1, hl7.fhir.us.core#7.0.0, hl7.terminology.r4#5.0.0, hl7.fhir.uv.extensions.r4#1.0.0, hl7.fhir.uv.bulkdata#2.0.0, hl7.fhir.uv.smart-app-launch#2.1.0, us.nlm.vsac#0.11.0, ihe.formatcode.fhir#1.1.0, hl7.fhir.us.core#6.1.0, hl7.fhir.us.core.v610#6.1.0, hl7.fhir.us.core#3.1.1, hl7.fhir.us.core.v311#3.1.1, us.nlm.vsac#0.19.0, hl7.fhir.us.davinci-hrex#1.1.0, hl7.fhir.us.core.3.1.1#3.1.1, hl7.terminology.r4#6.0.2, hl7.terminology.r5#5.5.0, hl7.fhir.uv.extensions#5.1.0, hl7.fhir.us.davinci-hrex#1.1.0-ballot, us.nlm.vsac#0.7.0, hl7.fhir.us.carin-bb#2.1.0-snapshot1, hl7.terminology.r4#5.3.0, hl7.fhir.us.udap-security#0.1.0, hl7.fhir.us.davinci-hrex#1.0.0, hl7.fhir.us.davinci-crd#2.0.0, hl7.fhir.uv.subscriptions-backport.r4#1.1.0, hl7.fhir.us.davinci-pas#2.0.1, hl7.fhir.uv.bulkdata#1.0.1, hl7.fhir.us.davinci-pdex-plan-net#1.1.0, hl7.fhir.us.davinci-pas#1.2.0-ballot, hl7.fhir.us.carin-bb#2.0.0, hl7.fhir.uv.sdc#3.0.0-preview, hl7.fhir.us.davinci-dtr#1.1.0-ballot, hl7.fhir.us.davinci-cdex#2.0.0, hl7.fhir.us.davinci-atr#2.0.0, hl7.terminology.r4#3.1.0, hl7.fhir.us.core#5.0.1, hl7.terminology.r4#4.0.0, hl7.fhir.us.udap-security#1.0.0, hl7.fhir.uv.subscriptions-backport#0.1.0, hl7.fhir.us.ndh#1.0.0-ballot, hl7.fhir.uv.tools#0.4.0, hl7.fhir.us.davinci-crd#current, hl7.fhir.us.davinci-dtr#2.0.0, hl7.fhir.uv.extensions#5.1.0-ballot1, hl7.fhir.us.davinci-pdex#2.1.0-ballot]
  Terminology Cache at /tmp/default-tx-cache
  Get set...  go (00:05.043)
Cached new session. Cache size = 1
Validating
  Profiles: [http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/pdex-parameters-multi-member-match-bundle-in]
  Validate example-bulk-member-match.json
Validate Parameters against http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/pdex-parameters-multi-member-match-bundle-in|2.1.0-ballot..........20..........40..........60..........80.........|
 00:03.453
Done. Times: Loading: 01:11.456, validation: 00:03.453. Memory = 2Gb


----------------------------------------------------------------------------------
example-bulk-member-match.json 08:59:06
[23, 16] Parameters.parameter[0].part[0].resource/*Patient/1*/.identifier[0]: Information - This element does not match any known slice defined in the profile http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics|1.1.0-ballot (this may not be a problem, but you should check that it's not intended to match a slice)
[24, 18] Parameters.parameter[0].part[0].resource/*Patient/1*/.identifier[0].type: Warning - None of the codings provided are in the value set 'IdentifierType' (http://hl7.org/fhir/ValueSet/identifier-type|4.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://terminology.hl7.org/CodeSystem/v2-0203#MB)
[32, 76] Parameters.parameter[0].part[0].resource/*Patient/1*/.identifier[0].system: Error - Example URLs are not allowed in this context (http://example.org/old-payer/identifiers/member)
[64, 18] Parameters.parameter[0].part[1].resource/*Coverage/9876B1*/.identifier[0].type: Warning - None of the codings provided are in the value set 'IdentifierType' (http://hl7.org/fhir/ValueSet/identifier-type|4.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://terminology.hl7.org/CodeSystem/v2-0203#MB)
[72, 57] Parameters.parameter[0].part[1].resource/*Coverage/9876B1*/.identifier[0].system: Error - Example URLs are not allowed in this context (http://example.org/old-payer)
[78, 14] Parameters.parameter[0].part[1].resource/*Coverage/9876B1*/.beneficiary: Error - Unable to find a profile match for Patient/1 among choices: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics
[78, 14] Parameters.parameter[0].part[1].resource/*Coverage/9876B1*/.beneficiary: Information - Details for Patient/1 matching against profile http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics|1.1.0-ballot
[164, 14] Parameters.parameter[0].part[2].resource/*Consent/consent-1*/.patient: Error - Unable to find a profile match for Patient/1 among choices: http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient|6.1.0
[164, 14] Parameters.parameter[0].part[2].resource/*Consent/consent-1*/.patient: Information - Details for Patient/1 matching against profile http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient|6.1.0
[168, 16] Parameters.parameter[0].part[2].resource/*Consent/consent-1*/.performer[0]: Error - Unable to find a profile match for Patient/1 among choices: http://hl7.org/fhir/StructureDefinition/RelatedPerson, http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient|6.1.0, http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-organization, http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitioner, http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitionerrole
[168, 16] Parameters.parameter[0].part[2].resource/*Consent/consent-1*/.performer[0]: Information - Details for Patient/1 matching against profile http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient|6.1.0
[177, 107] Parameters.parameter[0].part[2].resource/*Consent/consent-1*/.policy[0].uri: Error - No definition could be found for URL value 'http://hl7.org/fhir/us/davinci-hrex/StructureDefinition-hrex-consent.html#regular'
[188, 20] Parameters.parameter[0].part[2].resource/*Consent/consent-1*/.provision.actor[0].role: Warning - None of the codings provided are in the value set 'SecurityRoleType' (http://hl7.org/fhir/ValueSet/security-role-type|4.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://terminology.hl7.org/CodeSystem/provenance-participant-type#performer)
[223, 18] Parameters.parameter[0].part[2].resource/*Consent/consent-1*/.provision.action[0]: Information - Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/consentaction|1.0.0
[246, 18] Parameters.parameter[0].part[3].resource/*Coverage/AA87654*/.identifier[0].type: Warning - None of the codings provided are in the value set 'IdentifierType' (http://hl7.org/fhir/ValueSet/identifier-type|4.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://terminology.hl7.org/CodeSystem/v2-0203#MB)
[254, 78] Parameters.parameter[0].part[3].resource/*Coverage/AA87654*/.identifier[0].system: Error - Example URLs are not allowed in this context (http://example.org/new-payer/identifiers/coverage)
[260, 14] Parameters.parameter[0].part[3].resource/*Coverage/AA87654*/.beneficiary: Error - Unable to find a profile match for Patient/1 among choices: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics
[260, 14] Parameters.parameter[0].part[3].resource/*Coverage/AA87654*/.beneficiary: Information - Details for Patient/1 matching against profile http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics|1.1.0-ballot
[297, 16] Parameters.parameter[1].part[0].resource/*Patient/2*/.identifier[0]: Information - This element does not match any known slice defined in the profile http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics|1.1.0-ballot (this may not be a problem, but you should check that it's not intended to match a slice)
[298, 18] Parameters.parameter[1].part[0].resource/*Patient/2*/.identifier[0].type: Warning - None of the codings provided are in the value set 'IdentifierType' (http://hl7.org/fhir/ValueSet/identifier-type|4.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://terminology.hl7.org/CodeSystem/v2-0203#MB)
[306, 76] Parameters.parameter[1].part[0].resource/*Patient/2*/.identifier[0].system: Error - Example URLs are not allowed in this context (http://example.org/old-payer/identifiers/member)
[338, 18] Parameters.parameter[1].part[1].resource/*Coverage/876B10*/.identifier[0].type: Warning - None of the codings provided are in the value set 'IdentifierType' (http://hl7.org/fhir/ValueSet/identifier-type|4.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://terminology.hl7.org/CodeSystem/v2-0203#MB)
[346, 57] Parameters.parameter[1].part[1].resource/*Coverage/876B10*/.identifier[0].system: Error - Example URLs are not allowed in this context (http://example.org/old-payer)
[352, 14] Parameters.parameter[1].part[1].resource/*Coverage/876B10*/.beneficiary: Error - Unable to find a profile match for Patient/2 among choices: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics
[352, 14] Parameters.parameter[1].part[1].resource/*Coverage/876B10*/.beneficiary: Information - Details for Patient/2 matching against profile http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics|1.1.0-ballot
[438, 14] Parameters.parameter[1].part[2].resource/*Consent/consent-2*/.patient: Error - Unable to find a profile match for Patient/2 among choices: http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient|6.1.0
[438, 14] Parameters.parameter[1].part[2].resource/*Consent/consent-2*/.patient: Information - Details for Patient/2 matching against profile http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient|6.1.0
[442, 16] Parameters.parameter[1].part[2].resource/*Consent/consent-2*/.performer[0]: Error - Unable to find a profile match for Patient/2 among choices: http://hl7.org/fhir/StructureDefinition/RelatedPerson, http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient|6.1.0, http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-organization, http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitioner, http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitionerrole
[442, 16] Parameters.parameter[1].part[2].resource/*Consent/consent-2*/.performer[0]: Information - Details for Patient/2 matching against profile http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient|6.1.0
[451, 107] Parameters.parameter[1].part[2].resource/*Consent/consent-2*/.policy[0].uri: Error - No definition could be found for URL value 'http://hl7.org/fhir/us/davinci-hrex/StructureDefinition-hrex-consent.html#regular'
[462, 20] Parameters.parameter[1].part[2].resource/*Consent/consent-2*/.provision.actor[0].role: Warning - None of the codings provided are in the value set 'SecurityRoleType' (http://hl7.org/fhir/ValueSet/security-role-type|4.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://terminology.hl7.org/CodeSystem/provenance-participant-type#performer)
[497, 18] Parameters.parameter[1].part[2].resource/*Consent/consent-2*/.provision.action[0]: Information - Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/consentaction|1.0.0
[520, 18] Parameters.parameter[1].part[3].resource/*Coverage/AA87654*/.identifier[0].type: Warning - None of the codings provided are in the value set 'IdentifierType' (http://hl7.org/fhir/ValueSet/identifier-type|4.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://terminology.hl7.org/CodeSystem/v2-0203#MB)
[528, 78] Parameters.parameter[1].part[3].resource/*Coverage/AA87654*/.identifier[0].system: Error - Example URLs are not allowed in this context (http://example.org/new-payer/identifiers/coverage)
[534, 14] Parameters.parameter[1].part[3].resource/*Coverage/AA87654*/.beneficiary: Error - Unable to find a profile match for Patient/2 among choices: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics
[534, 14] Parameters.parameter[1].part[3].resource/*Coverage/AA87654*/.beneficiary: Information - Details for Patient/2 matching against profile http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-patient-demographics|1.1.0-ballot

Done. Times: Loading: 01:11.456, validation: 00:03.453. Max Memory = 15Gb


FWIW - my actual validator code:

public class GroupParamValidator {

   private final FhirValidator fhirValidator;

   GroupParamValidator(FhirContext context) throws IOException {
     var npmPackageSupport = new NpmPackageValidationSupport(context);
     npmPackageSupport.loadPackageFromClasspath("hl7.fhir.us.davinci-pdex-2.1.0-ballot.tgz");
     npmPackageSupport.loadPackageFromClasspath("hl7.fhir.us.davinci-hrex-1.1.0.tgz");
     npmPackageSupport.loadPackageFromClasspath("hl7.fhir.us.core-7.0.0.tgz");

     var supportChain = new ValidationSupportChain(
         npmPackageSupport,
         new DefaultProfileValidationSupport(context),
         new InMemoryTerminologyServerValidationSupport(context),
         new CommonCodeSystemsTerminologyService(context),
         new SnapshotGeneratingValidationSupport(context));
     context.setValidationSupport(supportChain);

     var instanceValidator = new FhirInstanceValidator(context);

     fhirValidator = context.newValidator();
     fhirValidator.registerValidatorModule(instanceValidator);
   }

   ValidationResult validateGroupParam(Parameters groupParameters) {
     return fhirValidator.validateWithResult(groupParameters);
   }
}


Reports:
I'm not sure what the make of this tbh. Hope you can.

- Jan.

Op donderdag 29 mei 2025 om 18:36:38 UTC+2 schreef Jan Vissers:

James Agnew

unread,
May 30, 2025, 10:21:23 AM5/30/25
to Jan Vissers, HAPI FHIR
If the official validator is also saying that the payload is invalid, are you sure the issues it is reporting aren't legitimate? FWIW I might recommend starting a discussion over at https://chat.fhir.org . This group has lots of developers and framework experts but I think the content/validation experts are more likely to be found over there.

I'm not an expert in the specific profiles you are validating here so I don't actually know if the validator issues are valid or not. It's possible that this is a validator bug, or it might just be that the issues are actual issues in the data which need validating.

Cheers,
James

Jan Vissers

unread,
May 30, 2025, 11:26:40 AM5/30/25
to James Agnew, HAPI FHIR
Reply all
Reply to author
Forward
0 new messages