diff --git a/src/Hl7.Fhir.Base/Specification/Terminology/MimeTypeTerminologyService.cs b/src/Hl7.Fhir.Base/Specification/Terminology/MimeTypeTerminologyService.cs index 5fb6dcd1af..18f8d3bd42 100644 --- a/src/Hl7.Fhir.Base/Specification/Terminology/MimeTypeTerminologyService.cs +++ b/src/Hl7.Fhir.Base/Specification/Terminology/MimeTypeTerminologyService.cs @@ -12,14 +12,24 @@ public sealed class MimeTypeTerminologyService : CustomValueSetTerminologyServic private const string MIMETYPE_SYSTEM = "urn:ietf:bcp:13"; public const string MIMETYPE_VALUESET_R4_AND_UP = "http://hl7.org/fhir/ValueSet/mimetypes"; public const string MIMETYPE_VALUESET_STU3 = "http://www.rfc-editor.org/bcp/bcp13.txt"; + private const string XML_CODE = "xml"; + private const string JSON_CODE = "json"; + private const string TTL_CODE = "ttl"; public MimeTypeTerminologyService() : base("MIME type", MIMETYPE_SYSTEM, [MIMETYPE_VALUESET_STU3, MIMETYPE_VALUESET_R4_AND_UP]) { } - + //mime-type format: type "/" [tree "."] subtype ["+" suffix]* [";" parameter]; + //FHIR also allows for the following codes: xml, json, ttl override protected bool ValidateCodeType(string code) { + //This is a temporary fix until we support additional bindings. + if (code == XML_CODE || code == JSON_CODE || code == TTL_CODE) + { + return true; + } + var entries = code.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); return entries.Length == 2; } diff --git a/src/Hl7.Fhir.Support.Tests/Specification/MimeTypeTerminologyServiceTests.cs b/src/Hl7.Fhir.Support.Tests/Specification/MimeTypeTerminologyServiceTests.cs index 58b373dd1c..b03de01fd1 100644 --- a/src/Hl7.Fhir.Support.Tests/Specification/MimeTypeTerminologyServiceTests.cs +++ b/src/Hl7.Fhir.Support.Tests/Specification/MimeTypeTerminologyServiceTests.cs @@ -39,6 +39,15 @@ public async Task MimeTypeValidationTest() result.Parameter.Should().Contain(p => p.Name == "result") .Subject.Value.Should().BeEquivalentTo(new FhirBoolean(true)); + parameters = new ValidateCodeParameters() + .WithValueSet(MIMETYPEVS) + .WithCode(code: "json") + .Build(); + + result = await _service.ValueSetValidateCode(parameters); + result.Parameter.Should().Contain(p => p.Name == "result") + .Subject.Value.Should().BeEquivalentTo(new FhirBoolean(true)); + parameters = new ValidateCodeParameters() .WithValueSet(ADMINGENDERVS) .WithCode(code: "application/json", context: "context") @@ -61,6 +70,11 @@ public async Task MimeTypeValidationTest() validateCode = async () => await _service.ValueSetValidateCode(parameters); await validateCode.Should().ThrowAsync().WithMessage("Unknown system 'http://hl7.org/fhir/administrative-gender'"); + + + + validateCode = async () => await _service.ValueSetValidateCode(parameters); + await validateCode.Should().ThrowAsync().WithMessage("Unknown system 'http://hl7.org/fhir/administrative-gender'"); } [DataRow(MIMETYPE_VERSIONED_VS)]