Zira
12/05/2025, 9:27 PMmedplum-patient-intake-demo and I'm receiving an error when clicking on the "Languages Spoken" input field:
> CodeSystem urn:ietf:bcp:47 not found
There does exist a ValueSet in my system for "http://hl7.org/fhir/ValueSet/languages". All the language entries are there, and each has a:
- code
- display
- designation
This ValueSet references a CodeSystem (I assume) called "urn:ietf:bcp:47", which does not exist in my system.
My questions:
1. Is this demo not meant to work out-of-the-box? In other words, why is the required CodeSystem missing? (Or maybe my database is stale and this is a newer demo?)
2. Why is it a requirement to create a corresponding CodeSystem when the entries are going to be identical to the ValueSet entries (i.e. code, display, designation)? Isn't this redundant data?
Edit:
An additional question:
3. Why do some `ValueSet`s (i.e. https://hl7.org/fhir/valueset-languages.html) specify a CLD/Content Logical Definition and no Expansion (which seems to require a backing CodeSystem, and some `ValueSet`s (e.g. http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state) specify an Expansion with no CLD (which seems to work without a backing CodeSystem)?cody
12/08/2025, 7:00 PMValueSet/$expand if the corresponding CodeSystem was missing, and it would simply use the embedded codes. That was not technically correct, but it was often what people expected.
2. We wrote the medplum-patient-intake-demo based on that behavior
3. We subsequently implemented a more strict CodeSystem requirement
4. The demo is broken 😿
The obvious fix for us is to add a urn:ietf:bcp:47 CodeSystem resource with those values. We can do that asap.
Separately, I thought that we had explored adding a fallback to the old behavior where we would silently ignore the missing CodeSystem, and would then support the incorrect "just use the `ValueSet`" model. Let me check with the team on that.Zira
12/08/2025, 10:39 PMCodeSystem/$import endpoint to import the coding from the http://hl7.org/fhir/ValueSet/languages ValueSet and it seems to be working. 🙂