Stream: tooling
Topic: URI values cannot have whitespace in Snapshot
Maximilian Reith (Aug 20 2019 at 06:11):
Hey,
i got a lot of validation errors in the snapshot part of some resources. I developed these resources with forge...
HAPI 3.8 Validation Error: URI values cannot have whitespace
<element id="Extension.value[x]:valueIdentifier.system"> <path value="Extension.valueIdentifier.system" /> <short value="NamingSystem der ASV-Teamnummer" /> <definition value="Establishes the namespace for the value - that is, a URL that describes a set values that are unique." /> <comment value="see http://en.wikipedia.org/wiki/Uniform_resource_identifier" /> <requirements value="There are many sets of identifiers. To perform matching of two identifiers, we need to know what set we're dealing with. The system identifies a particular set of unique identifiers." /> <min value="1" /> <max value="1" /> <base> <path value="Identifier.system" /> <min value="0" /> <max value="1" /> </base> <type> <code value="uri" /> </type> <fixedUri value="http://fhir.de/NamingSystem/asv/teamnummer" /> <example> <label value="General" /> <valueUri value="http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri" /> </example>
i think valueUri might be invalid...Could anybody confirm this?
greetings Max
Grahame Grieve (Aug 20 2019 at 06:41):
yes that's the subject of a technical correction... one that I thought we'd done... where are you encountering this?
Maximilian Reith (Aug 20 2019 at 07:01):
FHIR DSTU 3; Forge 22.0 in several Extensions and Profiles(Practitioner, Organziation, Bundle...) or do you need to know the exact position e.g. which element?
Michel Rutten (Aug 20 2019 at 08:51):
Indeed! Apparently, the STU3 Identifier
datatype definition is responsible for introducing the invalid example Uri: http://hl7.org/fhir/stu3/identifier.profile.xml.html
The invalid uri can "leak" into the snapshot of datatypes & resources that constrain Identifier
, causing validation errors. Therefore you cannot fix this in your own derived profiles; this requires a technical correction of STU3.
Grahame Grieve (Aug 20 2019 at 21:15):
ok this is on my list for the R3 technical correction. I'm not sure when I'll be doing that - soon.
Chris Moesel (Aug 21 2019 at 13:08):
I've found that DSTU2/STU3 also has some mapping
URIs with spaces in them as well. I'll see if I can get you a list of the transgressors.
Chris Moesel (Aug 21 2019 at 14:30):
OK. Wrote a little script. Here is what I found if it is helpful. I essentially looked at all types, resources, profiles, and extensions in the downloaded definitions of DSTU2, STU3, and R4 specs.
======================================== DSTU2 ======================================== DSTU2 Type: Identifier snapshot[5].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-do snapshot[21].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-dr snapshot[14].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-obscode snapshot[31].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-obsquantity snapshot[31].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-obsother snapshot[31].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-obsrange snapshot[31].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-obsratio snapshot[31].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-obspanel snapshot[31].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-orderfacility snapshot[15].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-performinglab snapshot[15].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-cctarget snapshot[15].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-patient snapshot[46].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-phpatient snapshot[46].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-pract snapshot[14].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-phpract snapshot[14].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: uslab-spec snapshot[14].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri snapshot[38].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: daf-diagnosticorder snapshot[16].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: daf-diagnosticreport snapshot[14].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: daf-resultobs snapshot[14].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: daf-patient snapshot[19].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri DSTU2 Profile: daf-pract snapshot[18].exampleUri = 'NPI could be used as the identifier system in the US. DSTU2 Profile: daf-spec snapshot[14].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri snapshot[38].exampleUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri ======================================== STU3 ======================================== STU3 Type: Identifier snapshot[5].example[0].valueUri = 'http://www.acme.com/identifiers/patient or urn:ietf:rfc:3986 if the Identifier.value itself is a full uri' ======================================== R4 ======================================== None
Chris Moesel (Aug 21 2019 at 14:31):
Note that those argo/us core profiles are the ones that were actually packaged in the FHIR spec; not the ones in the separately packaged IGs.
Grahame Grieve (Aug 21 2019 at 14:31):
on my list. we won't be fixing r2, I think
Chris Moesel (Aug 21 2019 at 15:04):
Whoops, my bad. It turns out I was loading in the official US Core definitions too. I unloaded those and ran it again -- then updated my list in the post above. Now STU3 is only reporting that one thing you already knew about Identifier.
Last updated: Apr 12 2022 at 19:14 UTC