Add support for mimetype codes from system urn:ietf:bcp:13

This commit is contained in:
Martha Mitran 2024-01-17 14:30:46 -08:00
parent 763894c28f
commit 3a142bb5e4
17 changed files with 10768 additions and 119 deletions

View File

@ -31,11 +31,14 @@ import org.hl7.fhir.instance.model.api.IBaseResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.zip.GZIPInputStream;
@ -150,7 +153,7 @@ public class ClasspathUtil {
}
public static Function<InputStream, InputStream> withBom() {
return t -> new BOMInputStream(t);
return BOMInputStream::new;
}
public static byte[] loadResourceAsByteArray(String theClasspath) {
@ -163,4 +166,29 @@ public class ClasspathUtil {
close(stream);
}
}
/**
* Returns the list of files in a directory which resides in the classpath.
* Please note that the returned paths will be relative.
* This method can be used with other methods in this class to load multiple resource files.
* @param theDirectory the directory in the classpath to lookup
* @return the list of files containing relative path and file name
*/
public static List<String> getFilesFromDirectory(String theDirectory) {
List<String> filenames = new ArrayList<>();
try (InputStream in = ClasspathUtil.class.getResourceAsStream(theDirectory)) {
if (in == null) {
throw new InternalErrorException(Msg.code(1758) + "Unable to find directory: " + theDirectory);
}
try (BufferedReader br = new BufferedReader(new InputStreamReader(in))) {
String fileName;
while ((fileName = br.readLine()) != null) {
filenames.add(theDirectory + "/" + fileName);
}
}
} catch (IOException e) {
throw new InternalErrorException(Msg.code(2479) + e.getMessage());
}
return filenames;
}
}

View File

@ -1,6 +1,10 @@
org.hl7.fhir.common.hapi.validation.support.InMemoryTerminologyServerValidationSupport.displayMismatch=Concept Display "{0}" does not match expected "{1}"
org.hl7.fhir.common.hapi.validation.support.CommonCodeSystemsTerminologyService.unknownCodeSystem=Unknown code "{0}#{1}"
org.hl7.fhir.common.hapi.validation.support.CommonCodeSystemsTerminologyService.invalidCodeInSystem=Code {0} is not valid for system: {1}
org.hl7.fhir.common.hapi.validation.support.CommonCodeSystemsTerminologyService.mismatchCodeSystem=Inappropriate CodeSystem URL "{0}" for ValueSet: {1}
org.hl7.fhir.common.hapi.validation.support.CommonCodeSystemsTerminologyService.codeNotFoundInValueSet=Code "{0}" is not in valueset: {1}
ca.uhn.fhir.jpa.term.TermReadSvcImpl.expansionRefersToUnknownCs=Unknown CodeSystem URI "{0}" referenced from ValueSet
ca.uhn.fhir.jpa.term.TermReadSvcImpl.valueSetNotYetExpanded=ValueSet "{0}" has not yet been pre-expanded. Performing in-memory expansion without parameters. Current status: {1} | {2}
@ -11,9 +15,6 @@ ca.uhn.fhir.jpa.term.TermReadSvcImpl.validationPerformedAgainstPreExpansion=Code
ca.uhn.fhir.jpa.term.TermReadSvcImpl.valueSetNotFoundInTerminologyDatabase=ValueSet can not be found in terminology database: {0}
ca.uhn.fhir.jpa.term.TermReadSvcImpl.valueSetPreExpansionInvalidated=ValueSet with URL "{0}" precaluclated expansion with {1} concept(s) has been invalidated
ca.uhn.fhir.jpa.term.TermReadSvcImpl.valueSetCantInvalidateNotYetPrecalculated=ValueSet with URL "{0}" already has status: {1}
ca.uhn.fhir.jpa.term.TermReadSvcImpl.unknownCodeInSystem=Unknown code "{0}#{1}"
# Core Library Messages
ca.uhn.fhir.context.FhirContext.unknownResourceName=Unknown resource name "{0}" (this name is not known in FHIR version "{1}")
ca.uhn.fhir.context.FhirContext.noStructures=Could not find any HAPI-FHIR structure JARs on the classpath. Note that as of HAPI-FHIR v0.8, a separate FHIR strcture JAR must be added to your classpath (or project pom.xml if you are using Maven)

View File

@ -8,9 +8,12 @@ import ca.uhn.fhir.context.support.IValidationSupport;
import ca.uhn.fhir.context.support.LookupCodeRequest;
import ca.uhn.fhir.context.support.ValidationSupportContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.rest.api.Constants;
import ca.uhn.fhir.rest.api.EncodingEnum;
import ca.uhn.fhir.util.ClasspathUtil;
import ca.uhn.hapi.converters.canonical.VersionCanonicalizer;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
@ -65,12 +68,13 @@ public class CommonCodeSystemsTerminologyService implements IValidationSupport {
public static final String UCUM_CODESYSTEM_URL = "http://unitsofmeasure.org";
public static final String UCUM_VALUESET_URL = "http://hl7.org/fhir/ValueSet/ucum-units";
public static final String ALL_LANGUAGES_VALUESET_URL = "http://hl7.org/fhir/ValueSet/all-languages";
private static final String USPS_CODESYSTEM_URL = "https://www.usps.com/";
private static final String USPS_VALUESET_URL = "http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state";
public static final String USPS_CODESYSTEM_URL = "https://www.usps.com/";
public static final String USPS_VALUESET_URL = "http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state";
private static final Logger ourLog = LoggerFactory.getLogger(CommonCodeSystemsTerminologyService.class);
private static final Map<String, String> USPS_CODES = Collections.unmodifiableMap(buildUspsCodes());
private static final Map<String, String> ISO_4217_CODES = Collections.unmodifiableMap(buildIso4217Codes());
private static final Map<String, String> ISO_3166_CODES = Collections.unmodifiableMap(buildIso3166Codes());
private static final Map<String, String> MIMETYPE_CODES = Collections.unmodifiableMap(buildMimetypeCodes());
private final FhirContext myFhirContext;
private final VersionCanonicalizer myVersionCanonicalizer;
private volatile org.hl7.fhir.r5.model.ValueSet myLanguagesVs;
@ -133,10 +137,7 @@ public class CommonCodeSystemsTerminologyService implements IValidationSupport {
case LANGUAGES_VALUESET_URL:
expectSystem = LANGUAGES_CODESYSTEM_URL;
if (!expectSystem.equals(theCodeSystem) && !(theCodeSystem == null && theOptions.isInferSystem())) {
return new CodeValidationResult()
.setSeverity(IssueSeverity.ERROR)
.setMessage("Inappropriate CodeSystem URL \"" + theCodeSystem + "\" for ValueSet: "
+ theValueSetUrl);
return getValidateCodeResultInError("mismatchCodeSystem", theCodeSystem, theValueSetUrl);
}
IBaseResource languagesVs = myLanguagesVs;
@ -156,32 +157,26 @@ public class CommonCodeSystemsTerminologyService implements IValidationSupport {
.setCode(theCode)
.setDisplay(match.get().getDisplay());
} else {
return new CodeValidationResult()
.setSeverity(IssueSeverity.ERROR)
.setMessage("Code \"" + theCode + "\" is not in valueset: " + theValueSetUrl);
return getValidateCodeResultInError("codeNotFoundInValueSet", theCode, theValueSetUrl);
}
case ALL_LANGUAGES_VALUESET_URL:
expectSystem = LANGUAGES_CODESYSTEM_URL;
if (!expectSystem.equals(theCodeSystem) && !(theCodeSystem == null && theOptions.isInferSystem())) {
return new CodeValidationResult()
.setSeverity(IssueSeverity.ERROR)
.setMessage("Inappropriate CodeSystem URL \"" + theCodeSystem + "\" for ValueSet: "
+ theValueSetUrl);
return getValidateCodeResultInError("mismatchCodeSystem", theCodeSystem, theValueSetUrl);
}
LookupCodeResult outcome = lookupLanguageCode(theCode);
if (outcome.isFound()) {
return new CodeValidationResult().setCode(theCode).setDisplay(outcome.getCodeDisplay());
} else {
return new CodeValidationResult()
.setSeverity(IssueSeverity.ERROR)
.setMessage("Code \"" + theCode + "\" is not in valueset: " + theValueSetUrl);
return getValidateCodeResultInError("codeNotFoundInValueSet", theCode, theValueSetUrl);
}
case MIMETYPES_VALUESET_URL:
// This is a pretty naive implementation - Should be enhanced in future
return new CodeValidationResult().setCode(theCode).setDisplay(theDisplay);
handlerMap = MIMETYPE_CODES;
expectSystem = MIMETYPES_CODESYSTEM_URL;
break;
case UCUM_VALUESET_URL: {
String system = theCodeSystem;
@ -206,9 +201,7 @@ public class CommonCodeSystemsTerminologyService implements IValidationSupport {
}
String actualSystem = defaultIfBlank(theCodeSystem, expectSystem);
String unknownCodeMessage = myFhirContext
.getLocalizer()
.getMessage("ca.uhn.fhir.jpa.term.TermReadSvcImpl.unknownCodeInSystem", actualSystem, theCode);
String unknownCodeMessage = getErrorMessage("unknownCodeSystem", actualSystem, theCode);
return new CodeValidationResult().setSeverity(IssueSeverity.ERROR).setMessage(unknownCodeMessage);
}
@ -253,36 +246,37 @@ public class CommonCodeSystemsTerminologyService implements IValidationSupport {
case UCUM_CODESYSTEM_URL:
return lookupUcumCode(code);
case MIMETYPES_CODESYSTEM_URL:
return lookupMimetypeCode(code);
map = MIMETYPE_CODES;
break;
case COUNTRIES_CODESYSTEM_URL:
map = ISO_3166_CODES;
if (!map.containsKey(code)) {
map = new HashMap<>(map);
map.put(code, code);
}
break;
case CURRENCIES_CODESYSTEM_URL:
map = ISO_4217_CODES;
break;
case USPS_CODESYSTEM_URL:
map = USPS_CODES;
break;
default:
return null;
}
LookupCodeResult retVal = new LookupCodeResult();
retVal.setSearchedForCode(code);
retVal.setSearchedForSystem(system);
String display = map.get(code);
if (isNotBlank(display)) {
LookupCodeResult retVal = new LookupCodeResult();
retVal.setSearchedForCode(code);
retVal.setSearchedForSystem(system);
retVal.setFound(true);
retVal.setCodeDisplay(display);
return retVal;
} else {
// If we get here it means we know the CodeSystem but the code was bad
retVal.setFound(false);
String invalidCodeMessage = getErrorMessage("invalidCodeInSystem", system, code);
retVal.setErrorMessage(invalidCodeMessage);
}
// If we get here it means we know the codesystem but the code was bad
LookupCodeResult retVal = new LookupCodeResult();
retVal.setSearchedForCode(code);
retVal.setSearchedForSystem(system);
retVal.setFound(false);
retVal.setErrorMessage("Code '" + code + "' is not valid for system: " + system);
return retVal;
}
@ -291,61 +285,45 @@ public class CommonCodeSystemsTerminologyService implements IValidationSupport {
initializeBcp47LanguageMap();
}
int langRegionSeparatorIndex = StringUtils.indexOfAny(theCode, '-', '_');
boolean hasRegionAndCodeSegments = langRegionSeparatorIndex > 0;
String language;
String region;
final LookupCodeResult lookupCodeResult = new LookupCodeResult();
lookupCodeResult.setSearchedForSystem(LANGUAGES_CODESYSTEM_URL);
lookupCodeResult.setSearchedForCode(theCode);
final int langRegionSeparatorIndex = StringUtils.indexOfAny(theCode, '-', '_');
final boolean hasRegionAndCodeSegments = langRegionSeparatorIndex > 0;
final boolean found;
final String display;
if (hasRegionAndCodeSegments) {
// we look for languages in lowercase only
// this will allow case insensitivity for language portion of code
language = myLanguagesLanugageMap.get(
String language = myLanguagesLanugageMap.get(
theCode.substring(0, langRegionSeparatorIndex).toLowerCase());
region = myLanguagesRegionMap.get(
String region = myLanguagesRegionMap.get(
theCode.substring(langRegionSeparatorIndex + 1).toUpperCase());
if (language == null || region == null) {
// In case the user provides both a language and a region, they must both be valid for the lookup to
// succeed.
found = language != null && region != null;
display = found ? language + " " + region : null;
if (!found) {
ourLog.warn("Couldn't find a valid bcp47 language-region combination from code: {}", theCode);
return buildNotFoundLookupCodeResult(theCode);
} else {
return buildLookupResultForLanguageAndRegion(theCode, language, region);
}
} else {
// In case user has only provided a language, we build the lookup from only that.
// NB: we only use the lowercase version of the language
language = myLanguagesLanugageMap.get(theCode.toLowerCase());
if (language == null) {
String language = myLanguagesLanugageMap.get(theCode.toLowerCase());
found = language != null;
display = language;
if (!found) {
ourLog.warn("Couldn't find a valid bcp47 language from code: {}", theCode);
return buildNotFoundLookupCodeResult(theCode);
} else {
return buildLookupResultForLanguage(theCode, language);
}
}
}
private LookupCodeResult buildLookupResultForLanguageAndRegion(
@Nonnull String theOriginalCode, @Nonnull String theLanguage, @Nonnull String theRegion) {
LookupCodeResult lookupCodeResult = buildNotFoundLookupCodeResult(theOriginalCode);
lookupCodeResult.setCodeDisplay(theLanguage + " " + theRegion);
lookupCodeResult.setFound(true);
return lookupCodeResult;
}
lookupCodeResult.setFound(found);
lookupCodeResult.setCodeDisplay(display);
private LookupCodeResult buildLookupResultForLanguage(
@Nonnull String theOriginalCode, @Nonnull String theLanguage) {
LookupCodeResult lookupCodeResult = buildNotFoundLookupCodeResult(theOriginalCode);
lookupCodeResult.setCodeDisplay(theLanguage);
lookupCodeResult.setFound(true);
return lookupCodeResult;
}
private LookupCodeResult buildNotFoundLookupCodeResult(@Nonnull String theOriginalCode) {
LookupCodeResult lookupCodeResult = new LookupCodeResult();
lookupCodeResult.setFound(false);
lookupCodeResult.setSearchedForSystem(LANGUAGES_CODESYSTEM_URL);
lookupCodeResult.setSearchedForCode(theOriginalCode);
return lookupCodeResult;
}
@ -392,14 +370,39 @@ public class CommonCodeSystemsTerminologyService implements IValidationSupport {
theLanguagesMap.put(language, description);
}
@Nonnull
private LookupCodeResult lookupMimetypeCode(String theCode) {
// This is a pretty naive implementation - Should be enhanced in future
LookupCodeResult mimeRetVal = new LookupCodeResult();
mimeRetVal.setSearchedForCode(theCode);
mimeRetVal.setSearchedForSystem(MIMETYPES_CODESYSTEM_URL);
mimeRetVal.setFound(true);
return mimeRetVal;
private static Map<String, String> buildMimetypeCodes() {
ourLog.info("Loading the IANA mimetypes into CodeSystem " + MIMETYPES_CODESYSTEM_URL);
final String configPath = "/org/hl7/fhir/common/hapi/validation/support/mimetype/";
final Map<String, String> mediaTypeMap = new HashMap<>();
for (String configFile : ClasspathUtil.getFilesFromDirectory(configPath)) {
String input = ClasspathUtil.loadResource(configFile);
JsonNode jsonNode;
try {
jsonNode = new ObjectMapper().readTree(input);
} catch (JsonProcessingException e) {
throw new ConfigurationException(Msg.code(2480) + e);
}
for (JsonNode mediaTypeNode : jsonNode) {
String template = mediaTypeNode.get("Template").asText();
String name = mediaTypeNode.get("Name").asText();
mediaTypeMap.put(template, name);
}
}
// include additional variants supported by HAPI FHIR server
for (EncodingEnum encodingEnum : EncodingEnum.values()) {
mediaTypeMap.put(encodingEnum.getFormatContentType(), encodingEnum.getFormatContentType());
mediaTypeMap.put(encodingEnum.getResourceContentType(), encodingEnum.getFormatContentType());
mediaTypeMap.put(encodingEnum.getResourceContentTypeNonLegacy(), encodingEnum.getFormatContentType());
}
mediaTypeMap.put(Constants.CT_TEXT, "txt");
ourLog.info("Loaded {} mimetypes", mediaTypeMap.size());
return mediaTypeMap;
}
@Nonnull
@ -437,6 +440,12 @@ public class CommonCodeSystemsTerminologyService implements IValidationSupport {
case CURRENCIES_CODESYSTEM_URL:
map = ISO_4217_CODES;
break;
case USPS_CODESYSTEM_URL:
map = USPS_CODES;
break;
case MIMETYPES_CODESYSTEM_URL:
map = MIMETYPE_CODES;
break;
default:
return null;
}
@ -1373,4 +1382,13 @@ public class CommonCodeSystemsTerminologyService implements IValidationSupport {
codes.put("ZWE", "Zimbabwe");
return codes;
}
protected String getErrorMessage(String errorCode, String param0, String param1) {
return myFhirContext.getLocalizer().getMessage(getClass(), errorCode, param0, param1);
}
protected CodeValidationResult getValidateCodeResultInError(String errorCode, String param0, String param1) {
String message = myFhirContext.getLocalizer().getMessage(getClass(), errorCode, param0, param1);
return new CodeValidationResult().setSeverity(IssueSeverity.ERROR).setMessage(message);
}
}

View File

@ -0,0 +1,797 @@
[
{
"Name": "1d-interleaved-parityfec",
"Template": "audio/1d-interleaved-parityfec",
"Reference": "[RFC6015]"
},
{
"Name": "32kadpcm",
"Template": "audio/32kadpcm",
"Reference": "[RFC3802][RFC2421]"
},
{
"Name": "3gpp",
"Template": "audio/3gpp",
"Reference": "[RFC3839][RFC6381]"
},
{
"Name": "3gpp2",
"Template": "audio/3gpp2",
"Reference": "[RFC4393][RFC6381]"
},
{
"Name": "aac",
"Template": "audio/aac",
"Reference": "[ISO-IEC_JTC_1][Max_Neuendorf]"
},
{
"Name": "ac3",
"Template": "audio/ac3",
"Reference": "[RFC4184]"
},
{
"Name": "AMR",
"Template": "audio/AMR",
"Reference": "[RFC4867]"
},
{
"Name": "AMR-WB",
"Template": "audio/AMR-WB",
"Reference": "[RFC4867]"
},
{
"Name": "amr-wb+",
"Template": "audio/amr-wb+",
"Reference": "[RFC4352]"
},
{
"Name": "aptx",
"Template": "audio/aptx",
"Reference": "[RFC7310]"
},
{
"Name": "asc",
"Template": "audio/asc",
"Reference": "[RFC6295]"
},
{
"Name": "ATRAC-ADVANCED-LOSSLESS",
"Template": "audio/ATRAC-ADVANCED-LOSSLESS",
"Reference": "[RFC5584]"
},
{
"Name": "ATRAC-X",
"Template": "audio/ATRAC-X",
"Reference": "[RFC5584]"
},
{
"Name": "ATRAC3",
"Template": "audio/ATRAC3",
"Reference": "[RFC5584]"
},
{
"Name": "basic",
"Template": "audio/basic",
"Reference": "[RFC2045][RFC2046]"
},
{
"Name": "BV16",
"Template": "audio/BV16",
"Reference": "[RFC4298]"
},
{
"Name": "BV32",
"Template": "audio/BV32",
"Reference": "[RFC4298]"
},
{
"Name": "clearmode",
"Template": "audio/clearmode",
"Reference": "[RFC4040]"
},
{
"Name": "CN",
"Template": "audio/CN",
"Reference": "[RFC3389]"
},
{
"Name": "DAT12",
"Template": "audio/DAT12",
"Reference": "[RFC3190]"
},
{
"Name": "dls",
"Template": "audio/dls",
"Reference": "[RFC4613]"
},
{
"Name": "dsr-es201108",
"Template": "audio/dsr-es201108",
"Reference": "[RFC3557]"
},
{
"Name": "dsr-es202050",
"Template": "audio/dsr-es202050",
"Reference": "[RFC4060]"
},
{
"Name": "dsr-es202211",
"Template": "audio/dsr-es202211",
"Reference": "[RFC4060]"
},
{
"Name": "dsr-es202212",
"Template": "audio/dsr-es202212",
"Reference": "[RFC4060]"
},
{
"Name": "DV",
"Template": "audio/DV",
"Reference": "[RFC6469]"
},
{
"Name": "DVI4",
"Template": "audio/DVI4",
"Reference": "[RFC4856]"
},
{
"Name": "eac3",
"Template": "audio/eac3",
"Reference": "[RFC4598]"
},
{
"Name": "encaprtp",
"Template": "audio/encaprtp",
"Reference": "[RFC6849]"
},
{
"Name": "EVRC",
"Template": "audio/EVRC",
"Reference": "[RFC4788]"
},
{
"Name": "EVRC-QCP",
"Template": "audio/EVRC-QCP",
"Reference": "[RFC3625]"
},
{
"Name": "EVRC0",
"Template": "audio/EVRC0",
"Reference": "[RFC4788]"
},
{
"Name": "EVRC1",
"Template": "audio/EVRC1",
"Reference": "[RFC4788]"
},
{
"Name": "EVRCB",
"Template": "audio/EVRCB",
"Reference": "[RFC5188]"
},
{
"Name": "EVRCB0",
"Template": "audio/EVRCB0",
"Reference": "[RFC5188]"
},
{
"Name": "EVRCB1",
"Template": "audio/EVRCB1",
"Reference": "[RFC4788]"
},
{
"Name": "EVRCNW",
"Template": "audio/EVRCNW",
"Reference": "[RFC6884]"
},
{
"Name": "EVRCNW0",
"Template": "audio/EVRCNW0",
"Reference": "[RFC6884]"
},
{
"Name": "EVRCNW1",
"Template": "audio/EVRCNW1",
"Reference": "[RFC6884]"
},
{
"Name": "EVRCWB",
"Template": "audio/EVRCWB",
"Reference": "[RFC5188]"
},
{
"Name": "EVRCWB0",
"Template": "audio/EVRCWB0",
"Reference": "[RFC5188]"
},
{
"Name": "EVRCWB1",
"Template": "audio/EVRCWB1",
"Reference": "[RFC5188]"
},
{
"Name": "EVS",
"Template": "audio/EVS",
"Reference": "[_3GPP][Kyunghun_Jung]"
},
{
"Name": "example",
"Template": "audio/example",
"Reference": "[RFC4735]"
},
{
"Name": "flexfec",
"Template": "audio/flexfec",
"Reference": "[RFC8627]"
},
{
"Name": "fwdred",
"Template": "audio/fwdred",
"Reference": "[RFC6354]"
},
{
"Name": "G711-0",
"Template": "audio/G711-0",
"Reference": "[RFC7655]"
},
{
"Name": "G719",
"Template": "audio/G719",
"Reference": "[RFC5404][RFC Errata 3245]"
},
{
"Name": "G7221",
"Template": "audio/G7221",
"Reference": "[RFC5577]"
},
{
"Name": "G722",
"Template": "audio/G722",
"Reference": "[RFC4856]"
},
{
"Name": "G723",
"Template": "audio/G723",
"Reference": "[RFC4856]"
},
{
"Name": "G726-16",
"Template": "audio/G726-16",
"Reference": "[RFC4856]"
},
{
"Name": "G726-24",
"Template": "audio/G726-24",
"Reference": "[RFC4856]"
},
{
"Name": "G726-32",
"Template": "audio/G726-32",
"Reference": "[RFC4856]"
},
{
"Name": "G726-40",
"Template": "audio/G726-40",
"Reference": "[RFC4856]"
},
{
"Name": "G728",
"Template": "audio/G728",
"Reference": "[RFC4856]"
},
{
"Name": "G729",
"Template": "audio/G729",
"Reference": "[RFC4856]"
},
{
"Name": "G7291",
"Template": "audio/G7291",
"Reference": "[RFC4749][RFC5459]"
},
{
"Name": "G729D",
"Template": "audio/G729D",
"Reference": "[RFC4856]"
},
{
"Name": "G729E",
"Template": "audio/G729E",
"Reference": "[RFC4856]"
},
{
"Name": "GSM",
"Template": "audio/GSM",
"Reference": "[RFC4856]"
},
{
"Name": "GSM-EFR",
"Template": "audio/GSM-EFR",
"Reference": "[RFC4856]"
},
{
"Name": "GSM-HR-08",
"Template": "audio/GSM-HR-08",
"Reference": "[RFC5993]"
},
{
"Name": "iLBC",
"Template": "audio/iLBC",
"Reference": "[RFC3952]"
},
{
"Name": "ip-mr_v2.5",
"Template": "audio/ip-mr_v2.5",
"Reference": "[RFC6262]"
},
{
"Name": "L8",
"Template": "audio/L8",
"Reference": "[RFC4856]"
},
{
"Name": "L16",
"Template": "audio/L16",
"Reference": "[RFC4856]"
},
{
"Name": "L20",
"Template": "audio/L20",
"Reference": "[RFC3190]"
},
{
"Name": "L24",
"Template": "audio/L24",
"Reference": "[RFC3190]"
},
{
"Name": "LPC",
"Template": "audio/LPC",
"Reference": "[RFC4856]"
},
{
"Name": "matroska",
"Template": "audio/matroska",
"Reference": "[RFC-ietf-cellar-matroska-21]"
},
{
"Name": "MELP",
"Template": "audio/MELP",
"Reference": "[RFC8130]"
},
{
"Name": "MELP600",
"Template": "audio/MELP600",
"Reference": "[RFC8130]"
},
{
"Name": "MELP1200",
"Template": "audio/MELP1200",
"Reference": "[RFC8130]"
},
{
"Name": "MELP2400",
"Template": "audio/MELP2400",
"Reference": "[RFC8130]"
},
{
"Name": "mhas",
"Template": "audio/mhas",
"Reference": "[ISO-IEC_JTC_1][Nils_Peters][Ingo_Hofmann]"
},
{
"Name": "mobile-xmf",
"Template": "audio/mobile-xmf",
"Reference": "[RFC4723]"
},
{
"Name": "MPA",
"Template": "audio/MPA",
"Reference": "[RFC3555]"
},
{
"Name": "mp4",
"Template": "audio/mp4",
"Reference": "[RFC4337][RFC6381]"
},
{
"Name": "MP4A-LATM",
"Template": "audio/MP4A-LATM",
"Reference": "[RFC6416]"
},
{
"Name": "mpa-robust",
"Template": "audio/mpa-robust",
"Reference": "[RFC5219]"
},
{
"Name": "mpeg",
"Template": "audio/mpeg",
"Reference": "[RFC3003]"
},
{
"Name": "mpeg4-generic",
"Template": "audio/mpeg4-generic",
"Reference": "[RFC3640][RFC5691][RFC6295]"
},
{
"Name": "ogg",
"Template": "audio/ogg",
"Reference": "[RFC5334][RFC7845]"
},
{
"Name": "opus",
"Template": "audio/opus",
"Reference": "[RFC7587]"
},
{
"Name": "parityfec",
"Template": "audio/parityfec",
"Reference": "[RFC3009]"
},
{
"Name": "PCMA",
"Template": "audio/PCMA",
"Reference": "[RFC4856]"
},
{
"Name": "PCMA-WB",
"Template": "audio/PCMA-WB",
"Reference": "[RFC5391]"
},
{
"Name": "PCMU",
"Template": "audio/PCMU",
"Reference": "[RFC4856]"
},
{
"Name": "PCMU-WB",
"Template": "audio/PCMU-WB",
"Reference": "[RFC5391]"
},
{
"Name": "prs.sid",
"Template": "audio/prs.sid",
"Reference": "[Linus_Walleij]"
},
{
"Name": "QCELP",
"Template": "audio/QCELP",
"Reference": "[RFC3555][RFC3625]"
},
{
"Name": "raptorfec",
"Template": "audio/raptorfec",
"Reference": "[RFC6682]"
},
{
"Name": "RED",
"Template": "audio/RED",
"Reference": "[RFC3555]"
},
{
"Name": "rtp-enc-aescm128",
"Template": "audio/rtp-enc-aescm128",
"Reference": "[_3GPP]"
},
{
"Name": "rtploopback",
"Template": "audio/rtploopback",
"Reference": "[RFC6849]"
},
{
"Name": "rtp-midi",
"Template": "audio/rtp-midi",
"Reference": "[RFC6295]"
},
{
"Name": "rtx",
"Template": "audio/rtx",
"Reference": "[RFC4588]"
},
{
"Name": "scip",
"Template": "audio/scip",
"Reference": "[SCIP][Michael_Faller][Daniel_Hanson]"
},
{
"Name": "SMV",
"Template": "audio/SMV",
"Reference": "[RFC3558]"
},
{
"Name": "SMV0",
"Template": "audio/SMV0",
"Reference": "[RFC3558]"
},
{
"Name": "SMV-QCP",
"Template": "audio/SMV-QCP",
"Reference": "[RFC3625]"
},
{
"Name": "sofa",
"Template": "audio/sofa",
"Reference": "[AES][Piotr_Majdak]"
},
{
"Name": "sp-midi",
"Template": "audio/sp-midi",
"Reference": "[Athan_Billias][MIDI_Association]"
},
{
"Name": "speex",
"Template": "audio/speex",
"Reference": "[RFC5574]"
},
{
"Name": "t140c",
"Template": "audio/t140c",
"Reference": "[RFC4351]"
},
{
"Name": "t38",
"Template": "audio/t38",
"Reference": "[RFC4612]"
},
{
"Name": "telephone-event",
"Template": "audio/telephone-event",
"Reference": "[RFC4733]"
},
{
"Name": "TETRA_ACELP",
"Template": "audio/TETRA_ACELP",
"Reference": "[ETSI][Miguel_Angel_Reina_Ortega]"
},
{
"Name": "TETRA_ACELP_BB",
"Template": "audio/TETRA_ACELP_BB",
"Reference": "[ETSI][Miguel_Angel_Reina_Ortega]"
},
{
"Name": "tone",
"Template": "audio/tone",
"Reference": "[RFC4733]"
},
{
"Name": "TSVCIS",
"Template": "audio/TSVCIS",
"Reference": "[RFC8817]"
},
{
"Name": "UEMCLIP",
"Template": "audio/UEMCLIP",
"Reference": "[RFC5686]"
},
{
"Name": "ulpfec",
"Template": "audio/ulpfec",
"Reference": "[RFC5109]"
},
{
"Name": "usac",
"Template": "audio/usac",
"Reference": "[ISO-IEC_JTC_1][Max_Neuendorf]"
},
{
"Name": "VDVI",
"Template": "audio/VDVI",
"Reference": "[RFC4856]"
},
{
"Name": "VMR-WB",
"Template": "audio/VMR-WB",
"Reference": "[RFC4348][RFC4424]"
},
{
"Name": "vnd.3gpp.iufp",
"Template": "audio/vnd.3gpp.iufp",
"Reference": "[Thomas_Belling]"
},
{
"Name": "vnd.4SB",
"Template": "audio/vnd.4SB",
"Reference": "[Serge_De_Jaham]"
},
{
"Name": "vnd.audiokoz",
"Template": "audio/vnd.audiokoz",
"Reference": "[Vicki_DeBarros]"
},
{
"Name": "vnd.CELP",
"Template": "audio/vnd.CELP",
"Reference": "[Serge_De_Jaham]"
},
{
"Name": "vnd.cisco.nse",
"Template": "audio/vnd.cisco.nse",
"Reference": "[Rajesh_Kumar]"
},
{
"Name": "vnd.cmles.radio-events",
"Template": "audio/vnd.cmles.radio-events",
"Reference": "[Jean-Philippe_Goulet]"
},
{
"Name": "vnd.cns.anp1",
"Template": "audio/vnd.cns.anp1",
"Reference": "[Ann_McLaughlin]"
},
{
"Name": "vnd.cns.inf1",
"Template": "audio/vnd.cns.inf1",
"Reference": "[Ann_McLaughlin]"
},
{
"Name": "vnd.dece.audio",
"Template": "audio/vnd.dece.audio",
"Reference": "[Michael_A_Dolan]"
},
{
"Name": "vnd.digital-winds",
"Template": "audio/vnd.digital-winds",
"Reference": "[Armands_Strazds]"
},
{
"Name": "vnd.dlna.adts",
"Template": "audio/vnd.dlna.adts",
"Reference": "[Edwin_Heredia]"
},
{
"Name": "vnd.dolby.heaac.1",
"Template": "audio/vnd.dolby.heaac.1",
"Reference": "[Steve_Hattersley]"
},
{
"Name": "vnd.dolby.heaac.2",
"Template": "audio/vnd.dolby.heaac.2",
"Reference": "[Steve_Hattersley]"
},
{
"Name": "vnd.dolby.mlp",
"Template": "audio/vnd.dolby.mlp",
"Reference": "[Mike_Ward]"
},
{
"Name": "vnd.dolby.mps",
"Template": "audio/vnd.dolby.mps",
"Reference": "[Steve_Hattersley]"
},
{
"Name": "vnd.dolby.pl2",
"Template": "audio/vnd.dolby.pl2",
"Reference": "[Steve_Hattersley]"
},
{
"Name": "vnd.dolby.pl2x",
"Template": "audio/vnd.dolby.pl2x",
"Reference": "[Steve_Hattersley]"
},
{
"Name": "vnd.dolby.pl2z",
"Template": "audio/vnd.dolby.pl2z",
"Reference": "[Steve_Hattersley]"
},
{
"Name": "vnd.dolby.pulse.1",
"Template": "audio/vnd.dolby.pulse.1",
"Reference": "[Steve_Hattersley]"
},
{
"Name": "vnd.dra",
"Template": "audio/vnd.dra",
"Reference": "[Jiang_Tian]"
},
{
"Name": "vnd.dts",
"Template": "audio/vnd.dts",
"Reference": "[William_Zou]"
},
{
"Name": "vnd.dts.hd",
"Template": "audio/vnd.dts.hd",
"Reference": "[William_Zou]"
},
{
"Name": "vnd.dts.uhd",
"Template": "audio/vnd.dts.uhd",
"Reference": "[Phillip_Maness]"
},
{
"Name": "vnd.dvb.file",
"Template": "audio/vnd.dvb.file",
"Reference": "[Peter_Siebert]"
},
{
"Name": "vnd.everad.plj",
"Template": "audio/vnd.everad.plj",
"Reference": "[Shay_Cicelsky]"
},
{
"Name": "vnd.hns.audio",
"Template": "audio/vnd.hns.audio",
"Reference": "[Swaminathan]"
},
{
"Name": "vnd.lucent.voice",
"Template": "audio/vnd.lucent.voice",
"Reference": "[Greg_Vaudreuil]"
},
{
"Name": "vnd.ms-playready.media.pya",
"Template": "audio/vnd.ms-playready.media.pya",
"Reference": "[Steve_DiAcetis]"
},
{
"Name": "vnd.nokia.mobile-xmf",
"Template": "audio/vnd.nokia.mobile-xmf",
"Reference": "[Nokia]"
},
{
"Name": "vnd.nortel.vbk",
"Template": "audio/vnd.nortel.vbk",
"Reference": "[Glenn_Parsons]"
},
{
"Name": "vnd.nuera.ecelp4800",
"Template": "audio/vnd.nuera.ecelp4800",
"Reference": "[Michael_Fox]"
},
{
"Name": "vnd.nuera.ecelp7470",
"Template": "audio/vnd.nuera.ecelp7470",
"Reference": "[Michael_Fox]"
},
{
"Name": "vnd.nuera.ecelp9600",
"Template": "audio/vnd.nuera.ecelp9600",
"Reference": "[Michael_Fox]"
},
{
"Name": "vnd.octel.sbc",
"Template": "audio/vnd.octel.sbc",
"Reference": "[Greg_Vaudreuil]"
},
{
"Name": "vnd.presonus.multitrack",
"Template": "audio/vnd.presonus.multitrack",
"Reference": "[Matthias_Juwan]"
},
{
"Name": "vnd.qcelp - DEPRECATED in favor of audio/qcelp",
"Template": "audio/vnd.qcelp",
"Reference": "[RFC3625]"
},
{
"Name": "vnd.rhetorex.32kadpcm",
"Template": "audio/vnd.rhetorex.32kadpcm",
"Reference": "[Greg_Vaudreuil]"
},
{
"Name": "vnd.rip",
"Template": "audio/vnd.rip",
"Reference": "[Martin_Dawe]"
},
{
"Name": "vnd.sealedmedia.softseal.mpeg",
"Template": "audio/vnd.sealedmedia.softseal.mpeg",
"Reference": "[David_Petersen]"
},
{
"Name": "vnd.vmx.cvsd",
"Template": "audio/vnd.vmx.cvsd",
"Reference": "[Greg_Vaudreuil]"
},
{
"Name": "vorbis",
"Template": "audio/vorbis",
"Reference": "[RFC5215]"
},
{
"Name": "vorbis-config",
"Template": "audio/vorbis-config",
"Reference": "[RFC5215]"
}
]

View File

@ -0,0 +1,32 @@
[
{
"Name": "collection",
"Template": "font/collection",
"Reference": "[RFC8081]"
},
{
"Name": "otf",
"Template": "font/otf",
"Reference": "[RFC8081]"
},
{
"Name": "sfnt",
"Template": "font/sfnt",
"Reference": "[RFC8081]"
},
{
"Name": "ttf",
"Template": "font/ttf",
"Reference": "[RFC8081]"
},
{
"Name": "woff",
"Template": "font/woff",
"Reference": "[RFC8081]"
},
{
"Name": "woff2",
"Template": "font/woff2",
"Reference": "[RFC8081]"
}
]

View File

@ -0,0 +1,407 @@
[
{
"Name": "aces",
"Template": "image/aces",
"Reference": "[SMPTE][Howard_Lukk]"
},
{
"Name": "apng",
"Template": "image/apng",
"Reference": "[W3C][W3C_PNG_Working_Group]"
},
{
"Name": "avci",
"Template": "image/avci",
"Reference": "[ISO-IEC_JTC_1][David_Singer]"
},
{
"Name": "avcs",
"Template": "image/avcs",
"Reference": "[ISO-IEC_JTC_1][David_Singer]"
},
{
"Name": "avif",
"Template": "image/avif",
"Reference": "[Alliance_for_Open_Media][Cyril_Concolato]"
},
{
"Name": "bmp",
"Template": "image/bmp",
"Reference": "[RFC7903]"
},
{
"Name": "cgm",
"Template": "image/cgm",
"Reference": "[Alan_Francis]"
},
{
"Name": "dicom-rle",
"Template": "image/dicom-rle",
"Reference": "[DICOM_Standard_Committee][David_Clunie]"
},
{
"Name": "dpx",
"Template": "image/dpx",
"Reference": "[SMPTE][SMPTE_Director_of_Standards_Development]"
},
{
"Name": "emf",
"Template": "image/emf",
"Reference": "[RFC7903]"
},
{
"Name": "example",
"Template": "image/example",
"Reference": "[RFC4735]"
},
{
"Name": "fits",
"Template": "image/fits",
"Reference": "[RFC4047]"
},
{
"Name": "g3fax",
"Template": "image/g3fax",
"Reference": "[RFC1494]"
},
{
"Name": "gif",
"Template": "",
"Reference": "[RFC2045][RFC2046]"
},
{
"Name": "heic",
"Template": "image/heic",
"Reference": "[ISO-IEC_JTC_1][David_Singer]"
},
{
"Name": "heic-sequence",
"Template": "image/heic-sequence",
"Reference": "[ISO-IEC_JTC_1][David_Singer]"
},
{
"Name": "heif",
"Template": "image/heif",
"Reference": "[ISO-IEC_JTC_1][David_Singer]"
},
{
"Name": "heif-sequence",
"Template": "image/heif-sequence",
"Reference": "[ISO-IEC_JTC_1][David_Singer]"
},
{
"Name": "hej2k",
"Template": "image/hej2k",
"Reference": "[ISO-IEC_JTC_1][ITU-T]"
},
{
"Name": "hsj2",
"Template": "image/hsj2",
"Reference": "[ISO-IEC_JTC_1][ITU-T]"
},
{
"Name": "ief",
"Template": "",
"Reference": "[RFC1314]"
},
{
"Name": "j2c",
"Template": "image/j2c",
"Reference": "[ISO-IEC_JTC_1_SC_29_WG_1][ISO-IEC_JTC_1][ITU-T]"
},
{
"Name": "jls",
"Template": "image/jls",
"Reference": "[DICOM_Standard_Committee][David_Clunie]"
},
{
"Name": "jp2",
"Template": "image/jp2",
"Reference": "[RFC3745]"
},
{
"Name": "jpeg",
"Template": "",
"Reference": "[RFC2045][RFC2046]"
},
{
"Name": "jph",
"Template": "image/jph",
"Reference": "[ISO-IEC_JTC_1][ITU-T]"
},
{
"Name": "jphc",
"Template": "image/jphc",
"Reference": "[ISO-IEC_JTC_1][ITU-T]"
},
{
"Name": "jpm",
"Template": "image/jpm",
"Reference": "[RFC3745]"
},
{
"Name": "jpx",
"Template": "image/jpx",
"Reference": "[RFC3745]"
},
{
"Name": "jxr",
"Template": "image/jxr",
"Reference": "[ISO-IEC_JTC_1][ITU-T]"
},
{
"Name": "jxrA",
"Template": "image/jxrA",
"Reference": "[ISO-IEC_JTC_1][ITU-T]"
},
{
"Name": "jxrS",
"Template": "image/jxrS",
"Reference": "[ISO-IEC_JTC_1][ITU-T]"
},
{
"Name": "jxs",
"Template": "image/jxs",
"Reference": "[ISO-IEC_JTC_1]"
},
{
"Name": "jxsc",
"Template": "image/jxsc",
"Reference": "[ISO-IEC_JTC_1]"
},
{
"Name": "jxsi",
"Template": "image/jxsi",
"Reference": "[ISO-IEC_JTC_1]"
},
{
"Name": "jxss",
"Template": "image/jxss",
"Reference": "[ISO-IEC_JTC_1]"
},
{
"Name": "ktx",
"Template": "image/ktx",
"Reference": "[Khronos][Mark_Callow]"
},
{
"Name": "ktx2",
"Template": "image/ktx2",
"Reference": "[Khronos][Mark_Callow]"
},
{
"Name": "naplps",
"Template": "image/naplps",
"Reference": "[Ilya_Ferber]"
},
{
"Name": "png",
"Template": "image/png",
"Reference": "[W3C][PNG_Working_Group]"
},
{
"Name": "prs.btif",
"Template": "image/prs.btif",
"Reference": "[Ben_Simon]"
},
{
"Name": "prs.pti",
"Template": "image/prs.pti",
"Reference": "[Juern_Laun]"
},
{
"Name": "pwg-raster",
"Template": "image/pwg-raster",
"Reference": "[Michael_Sweet]"
},
{
"Name": "svg+xml",
"Template": "image/svg+xml",
"Reference": "[W3C][http://www.w3.org/TR/SVG/mimereg.html]"
},
{
"Name": "t38",
"Template": "image/t38",
"Reference": "[RFC3362]"
},
{
"Name": "tiff",
"Template": "image/tiff",
"Reference": "[RFC3302]"
},
{
"Name": "tiff-fx",
"Template": "image/tiff-fx",
"Reference": "[RFC3950]"
},
{
"Name": "vnd.adobe.photoshop",
"Template": "image/vnd.adobe.photoshop",
"Reference": "[Kim_Scarborough]"
},
{
"Name": "vnd.airzip.accelerator.azv",
"Template": "image/vnd.airzip.accelerator.azv",
"Reference": "[Gary_Clueit]"
},
{
"Name": "vnd.cns.inf2",
"Template": "image/vnd.cns.inf2",
"Reference": "[Ann_McLaughlin]"
},
{
"Name": "vnd.dece.graphic",
"Template": "image/vnd.dece.graphic",
"Reference": "[Michael_A_Dolan]"
},
{
"Name": "vnd.djvu",
"Template": "image/vnd.djvu",
"Reference": "[Leon_Bottou]"
},
{
"Name": "vnd.dwg",
"Template": "image/vnd.dwg",
"Reference": "[Jodi_Moline]"
},
{
"Name": "vnd.dxf",
"Template": "image/vnd.dxf",
"Reference": "[Jodi_Moline]"
},
{
"Name": "vnd.dvb.subtitle",
"Template": "image/vnd.dvb.subtitle",
"Reference": "[Peter_Siebert][Michael_Lagally]"
},
{
"Name": "vnd.fastbidsheet",
"Template": "image/vnd.fastbidsheet",
"Reference": "[Scott_Becker]"
},
{
"Name": "vnd.fpx",
"Template": "image/vnd.fpx",
"Reference": "[Marc_Douglas_Spencer]"
},
{
"Name": "vnd.fst",
"Template": "image/vnd.fst",
"Reference": "[Arild_Fuldseth]"
},
{
"Name": "vnd.fujixerox.edmics-mmr",
"Template": "image/vnd.fujixerox.edmics-mmr",
"Reference": "[Masanori_Onda]"
},
{
"Name": "vnd.fujixerox.edmics-rlc",
"Template": "image/vnd.fujixerox.edmics-rlc",
"Reference": "[Masanori_Onda]"
},
{
"Name": "vnd.globalgraphics.pgb",
"Template": "image/vnd.globalgraphics.pgb",
"Reference": "[Martin_Bailey]"
},
{
"Name": "vnd.microsoft.icon",
"Template": "image/vnd.microsoft.icon",
"Reference": "[Simon_Butcher]"
},
{
"Name": "vnd.mix",
"Template": "image/vnd.mix",
"Reference": "[Saveen_Reddy]"
},
{
"Name": "vnd.ms-modi",
"Template": "image/vnd.ms-modi",
"Reference": "[Gregory_Vaughan]"
},
{
"Name": "vnd.mozilla.apng",
"Template": "image/vnd.mozilla.apng",
"Reference": "[Stuart_Parmenter]"
},
{
"Name": "vnd.net-fpx",
"Template": "image/vnd.net-fpx",
"Reference": "[Marc_Douglas_Spencer]"
},
{
"Name": "vnd.pco.b16",
"Template": "image/vnd.pco.b16",
"Reference": "[PCO_AG][Jan_Zeman]"
},
{
"Name": "vnd.radiance",
"Template": "image/vnd.radiance",
"Reference": "[Randolph_Fritz][Greg_Ward]"
},
{
"Name": "vnd.sealed.png",
"Template": "image/vnd.sealed.png",
"Reference": "[David_Petersen]"
},
{
"Name": "vnd.sealedmedia.softseal.gif",
"Template": "image/vnd.sealedmedia.softseal.gif",
"Reference": "[David_Petersen]"
},
{
"Name": "vnd.sealedmedia.softseal.jpg",
"Template": "image/vnd.sealedmedia.softseal.jpg",
"Reference": "[David_Petersen]"
},
{
"Name": "vnd.svf",
"Template": "image/vnd.svf",
"Reference": "[Jodi_Moline]"
},
{
"Name": "vnd.tencent.tap",
"Template": "image/vnd.tencent.tap",
"Reference": "[Ni_Hui]"
},
{
"Name": "vnd.valve.source.texture",
"Template": "image/vnd.valve.source.texture",
"Reference": "[Henrik_Andersson]"
},
{
"Name": "vnd.wap.wbmp",
"Template": "image/vnd.wap.wbmp",
"Reference": "[Peter_Stark]"
},
{
"Name": "vnd.xiff",
"Template": "image/vnd.xiff",
"Reference": "[Steven_Martin]"
},
{
"Name": "vnd.zbrush.pcx",
"Template": "image/vnd.zbrush.pcx",
"Reference": "[Chris_Charabaruk]"
},
{
"Name": "webp",
"Template": "image/webp",
"Reference": "[RFC-zern-webp-12]"
},
{
"Name": "wmf",
"Template": "image/wmf",
"Reference": "[RFC7903]"
},
{
"Name": "x-emf - DEPRECATED in favor of image/emf",
"Template": "image/emf",
"Reference": "[RFC7903]"
},
{
"Name": "x-wmf - DEPRECATED in favor of image/wmf",
"Template": "image/wmf",
"Reference": "[RFC7903]"
}
]

View File

@ -0,0 +1,128 @@
[
{
"Name": "bhttp",
"Template": "message/bhttp",
"Reference": "[RFC9292]"
},
{
"Name": "CPIM",
"Template": "message/CPIM",
"Reference": "[RFC3862]"
},
{
"Name": "delivery-status",
"Template": "message/delivery-status",
"Reference": "[RFC1894]"
},
{
"Name": "disposition-notification",
"Template": "message/disposition-notification",
"Reference": "[RFC8098]"
},
{
"Name": "example",
"Template": "message/example",
"Reference": "[RFC4735]"
},
{
"Name": "external-body",
"Template": "",
"Reference": "[RFC2045][RFC2046]"
},
{
"Name": "feedback-report",
"Template": "message/feedback-report",
"Reference": "[RFC5965]"
},
{
"Name": "global",
"Template": "message/global",
"Reference": "[RFC6532]"
},
{
"Name": "global-delivery-status",
"Template": "message/global-delivery-status",
"Reference": "[RFC6533]"
},
{
"Name": "global-disposition-notification",
"Template": "message/global-disposition-notification",
"Reference": "[RFC6533]"
},
{
"Name": "global-headers",
"Template": "message/global-headers",
"Reference": "[RFC6533]"
},
{
"Name": "http",
"Template": "message/http",
"Reference": "[RFC9112]"
},
{
"Name": "imdn+xml",
"Template": "message/imdn+xml",
"Reference": "[RFC5438]"
},
{
"Name": "mls",
"Template": "message/mls",
"Reference": "[RFC9420]"
},
{
"Name": "news (OBSOLETED by [RFC5537])",
"Template": "message/news",
"Reference": "[RFC5537][Henry_Spencer]"
},
{
"Name": "ohttp-req",
"Template": "message/ohttp-req",
"Reference": "[RFC9458]"
},
{
"Name": "ohttp-res",
"Template": "message/ohttp-res",
"Reference": "[RFC9458]"
},
{
"Name": "partial",
"Template": "",
"Reference": "[RFC2045][RFC2046]"
},
{
"Name": "rfc822",
"Template": "",
"Reference": "[RFC2045][RFC2046]"
},
{
"Name": "s-http (OBSOLETE)",
"Template": "message/s-http",
"Reference": "[RFC2660][status-change-http-experiments-to-historic]"
},
{
"Name": "sip",
"Template": "message/sip",
"Reference": "[RFC3261]"
},
{
"Name": "sipfrag",
"Template": "message/sipfrag",
"Reference": "[RFC3420]"
},
{
"Name": "tracking-status",
"Template": "message/tracking-status",
"Reference": "[RFC3886]"
},
{
"Name": "vnd.si.simp (OBSOLETED by request)",
"Template": "message/vnd.si.simp",
"Reference": "[Nicholas_Parks_Young]"
},
{
"Name": "vnd.wfa.wsc",
"Template": "message/vnd.wfa.wsc",
"Reference": "[Mick_Conley]"
}
]

View File

@ -0,0 +1,207 @@
[
{
"Name": "3mf",
"Template": "model/3mf",
"Reference": "[http://www.3mf.io/specification][_3MF][Michael_Sweet]"
},
{
"Name": "e57",
"Template": "model/e57",
"Reference": "[ASTM]"
},
{
"Name": "example",
"Template": "model/example",
"Reference": "[RFC4735]"
},
{
"Name": "gltf-binary",
"Template": "model/gltf-binary",
"Reference": "[Khronos][Saurabh_Bhatia]"
},
{
"Name": "gltf+json",
"Template": "model/gltf+json",
"Reference": "[Khronos][Uli_Klumpp]"
},
{
"Name": "JT",
"Template": "model/JT",
"Reference": "[ISO-TC_184-SC_4][Michael_Zink]"
},
{
"Name": "iges",
"Template": "model/iges",
"Reference": "[Curtis_Parks]"
},
{
"Name": "mesh",
"Template": "",
"Reference": "[RFC2077]"
},
{
"Name": "mtl",
"Template": "model/mtl",
"Reference": "[DICOM_Standard_Committee][DICOM_WG_17][Carolyn_Hull]"
},
{
"Name": "obj",
"Template": "model/obj",
"Reference": "[DICOM_Standard_Committee][DICOM_WG_17][Carolyn_Hull]"
},
{
"Name": "prc",
"Template": "model/prc",
"Reference": "[ISO-TC_171-SC_2][Betsy_Fanning]"
},
{
"Name": "step",
"Template": "model/step",
"Reference": "[ISO-TC_184-SC_4][Dana_Tripp]"
},
{
"Name": "step+xml",
"Template": "model/step+xml",
"Reference": "[ISO-TC_184-SC_4][Dana_Tripp]"
},
{
"Name": "step+zip",
"Template": "model/step+zip",
"Reference": "[ISO-TC_184-SC_4][Dana_Tripp]"
},
{
"Name": "step-xml+zip",
"Template": "model/step-xml+zip",
"Reference": "[ISO-TC_184-SC_4][Dana_Tripp]"
},
{
"Name": "stl",
"Template": "model/stl",
"Reference": "[DICOM_Standard_Committee][DICOM_WG_17][Carolyn_Hull]"
},
{
"Name": "u3d",
"Template": "model/u3d",
"Reference": "[PDF_Association][Peter_Wyatt]"
},
{
"Name": "vnd.bary",
"Template": "model/vnd.bary",
"Reference": "[Displaced_Micro-Mesh_SDK_Support]"
},
{
"Name": "vnd.cld",
"Template": "model/vnd.cld",
"Reference": "[Robert_Monaghan]"
},
{
"Name": "vnd.collada+xml",
"Template": "model/vnd.collada+xml",
"Reference": "[James_Riordon]"
},
{
"Name": "vnd.dwf",
"Template": "model/vnd.dwf",
"Reference": "[Jason_Pratt]"
},
{
"Name": "vnd.flatland.3dml",
"Template": "model/vnd.flatland.3dml",
"Reference": "[Michael_Powers]"
},
{
"Name": "vnd.gdl",
"Template": "model/vnd.gdl",
"Reference": "[Attila_Babits]"
},
{
"Name": "vnd.gs-gdl",
"Template": "model/vnd.gs-gdl",
"Reference": "[Attila_Babits]"
},
{
"Name": "vnd.gtw",
"Template": "model/vnd.gtw",
"Reference": "[Yutaka_Ozaki]"
},
{
"Name": "vnd.moml+xml",
"Template": "model/vnd.moml+xml",
"Reference": "[Christopher_Brooks]"
},
{
"Name": "vnd.mts",
"Template": "model/vnd.mts",
"Reference": "[Boris_Rabinovitch]"
},
{
"Name": "vnd.opengex",
"Template": "model/vnd.opengex",
"Reference": "[Eric_Lengyel]"
},
{
"Name": "vnd.parasolid.transmit.binary",
"Template": "model/vnd.parasolid.transmit.binary",
"Reference": "[Parasolid]"
},
{
"Name": "vnd.parasolid.transmit.text",
"Template": "model/vnd.parasolid.transmit.text",
"Reference": "[Parasolid]"
},
{
"Name": "vnd.pytha.pyox",
"Template": "model/vnd.pytha.pyox",
"Reference": "[Daniel_Flassig]"
},
{
"Name": "vnd.rosette.annotated-data-model",
"Template": "model/vnd.rosette.annotated-data-model",
"Reference": "[Benson_Margulies]"
},
{
"Name": "vnd.sap.vds",
"Template": "model/vnd.sap.vds",
"Reference": "[SAP_SE][Igor_Afanasyev]"
},
{
"Name": "vnd.usda",
"Template": "model/vnd.usda",
"Reference": "[Sebastian_Grassia]"
},
{
"Name": "vnd.usdz+zip",
"Template": "model/vnd.usdz+zip",
"Reference": "[Sebastian_Grassia]"
},
{
"Name": "vnd.valve.source.compiled-map",
"Template": "model/vnd.valve.source.compiled-map",
"Reference": "[Henrik_Andersson]"
},
{
"Name": "vnd.vtu",
"Template": "model/vnd.vtu",
"Reference": "[Boris_Rabinovitch]"
},
{
"Name": "vrml",
"Template": "",
"Reference": "[RFC2077]"
},
{
"Name": "x3d-vrml",
"Template": "model/x3d-vrml",
"Reference": "[Web3D][Web3D_X3D]"
},
{
"Name": "x3d+fastinfoset",
"Template": "model/x3d+fastinfoset",
"Reference": "[Web3D_X3D]"
},
{
"Name": "x3d+xml",
"Template": "model/x3d+xml",
"Reference": "[Web3D][Web3D_X3D]"
}
]

View File

@ -0,0 +1,87 @@
[
{
"Name": "alternative",
"Template": "",
"Reference": "[RFC2046][RFC2045]"
},
{
"Name": "appledouble",
"Template": "multipart/appledouble",
"Reference": "[Patrik_Faltstrom]"
},
{
"Name": "byteranges",
"Template": "multipart/byteranges",
"Reference": "[RFC9110]"
},
{
"Name": "digest",
"Template": "",
"Reference": "[RFC2046][RFC2045]"
},
{
"Name": "encrypted",
"Template": "multipart/encrypted",
"Reference": "[RFC1847]"
},
{
"Name": "example",
"Template": "multipart/example",
"Reference": "[RFC4735]"
},
{
"Name": "form-data",
"Template": "multipart/form-data",
"Reference": "[RFC7578]"
},
{
"Name": "header-set",
"Template": "multipart/header-set",
"Reference": "[Dave_Crocker]"
},
{
"Name": "mixed",
"Template": "",
"Reference": "[RFC2046][RFC2045]"
},
{
"Name": "multilingual",
"Template": "multipart/multilingual",
"Reference": "[RFC8255]"
},
{
"Name": "parallel",
"Template": "",
"Reference": "[RFC2046][RFC2045]"
},
{
"Name": "related",
"Template": "multipart/related",
"Reference": "[RFC2387]"
},
{
"Name": "report",
"Template": "multipart/report",
"Reference": "[RFC6522]"
},
{
"Name": "signed",
"Template": "multipart/signed",
"Reference": "[RFC1847]"
},
{
"Name": "vnd.bint.med-plus",
"Template": "multipart/vnd.bint.med-plus",
"Reference": "[Heinz-Peter_Schütz]"
},
{
"Name": "voice-message",
"Template": "multipart/voice-message",
"Reference": "[RFC3801]"
},
{
"Name": "x-mixed-replace",
"Template": "multipart/x-mixed-replace",
"Reference": "[W3C][Robin_Berjon]"
}
]

View File

@ -0,0 +1,472 @@
[
{
"Name": "1d-interleaved-parityfec",
"Template": "text/1d-interleaved-parityfec",
"Reference": "[RFC6015]"
},
{
"Name": "cache-manifest",
"Template": "text/cache-manifest",
"Reference": "[W3C][Robin_Berjon]"
},
{
"Name": "calendar",
"Template": "text/calendar",
"Reference": "[RFC5545]"
},
{
"Name": "cql",
"Template": "text/cql",
"Reference": "[HL7][Bryn_Rhodes]"
},
{
"Name": "cql-expression",
"Template": "text/cql-expression",
"Reference": "[HL7][Bryn_Rhodes]"
},
{
"Name": "cql-identifier",
"Template": "text/cql-identifier",
"Reference": "[HL7][Bryn_Rhodes]"
},
{
"Name": "css",
"Template": "text/css",
"Reference": "[RFC2318]"
},
{
"Name": "csv",
"Template": "text/csv",
"Reference": "[RFC4180][RFC7111]"
},
{
"Name": "csv-schema",
"Template": "text/csv-schema",
"Reference": "[National_Archives_UK][David_Underdown]"
},
{
"Name": "directory - DEPRECATED by RFC6350",
"Template": "text/directory",
"Reference": "[RFC2425][RFC6350]"
},
{
"Name": "dns",
"Template": "text/dns",
"Reference": "[RFC4027]"
},
{
"Name": "ecmascript (OBSOLETED in favor of text/javascript)",
"Template": "text/ecmascript",
"Reference": "[RFC9239]"
},
{
"Name": "encaprtp",
"Template": "text/encaprtp",
"Reference": "[RFC6849]"
},
{
"Name": "enriched",
"Template": "",
"Reference": "[RFC1896]"
},
{
"Name": "example",
"Template": "text/example",
"Reference": "[RFC4735]"
},
{
"Name": "fhirpath",
"Template": "text/fhirpath",
"Reference": "[HL7][Bryn_Rhodes]"
},
{
"Name": "flexfec",
"Template": "text/flexfec",
"Reference": "[RFC8627]"
},
{
"Name": "fwdred",
"Template": "text/fwdred",
"Reference": "[RFC6354]"
},
{
"Name": "gff3",
"Template": "text/gff3",
"Reference": "[Sequence_Ontology]"
},
{
"Name": "grammar-ref-list",
"Template": "text/grammar-ref-list",
"Reference": "[RFC6787]"
},
{
"Name": "hl7v2",
"Template": "text/hl7v2",
"Reference": "[HL7][Marc_Duteau]"
},
{
"Name": "html",
"Template": "text/html",
"Reference": "[W3C][Robin_Berjon]"
},
{
"Name": "javascript",
"Template": "text/javascript",
"Reference": "[RFC9239]"
},
{
"Name": "jcr-cnd",
"Template": "text/jcr-cnd",
"Reference": "[Peeter_Piegaze]"
},
{
"Name": "markdown",
"Template": "text/markdown",
"Reference": "[RFC7763]"
},
{
"Name": "mizar",
"Template": "text/mizar",
"Reference": "[Jesse_Alama]"
},
{
"Name": "n3",
"Template": "text/n3",
"Reference": "[W3C][Eric_Prudhommeaux]"
},
{
"Name": "parameters",
"Template": "text/parameters",
"Reference": "[RFC7826]"
},
{
"Name": "parityfec",
"Template": "text/parityfec",
"Reference": "[RFC3009]"
},
{
"Name": "plain",
"Template": "",
"Reference": "[RFC2046][RFC3676][RFC5147]"
},
{
"Name": "provenance-notation",
"Template": "text/provenance-notation",
"Reference": "[W3C][Ivan_Herman]"
},
{
"Name": "prs.fallenstein.rst",
"Template": "text/prs.fallenstein.rst",
"Reference": "[Benja_Fallenstein]"
},
{
"Name": "prs.lines.tag",
"Template": "text/prs.lines.tag",
"Reference": "[John_Lines]"
},
{
"Name": "prs.prop.logic",
"Template": "text/prs.prop.logic",
"Reference": "[Hans-Dieter_A._Hiep]"
},
{
"Name": "prs.texi",
"Template": "text/prs.texi",
"Reference": "[Matin_Bavardi]"
},
{
"Name": "raptorfec",
"Template": "text/raptorfec",
"Reference": "[RFC6682]"
},
{
"Name": "RED",
"Template": "text/RED",
"Reference": "[RFC4102]"
},
{
"Name": "rfc822-headers",
"Template": "text/rfc822-headers",
"Reference": "[RFC6522]"
},
{
"Name": "richtext",
"Template": "",
"Reference": "[RFC2045][RFC2046]"
},
{
"Name": "rtf",
"Template": "text/rtf",
"Reference": "[Paul_Lindner]"
},
{
"Name": "rtp-enc-aescm128",
"Template": "text/rtp-enc-aescm128",
"Reference": "[_3GPP]"
},
{
"Name": "rtploopback",
"Template": "text/rtploopback",
"Reference": "[RFC6849]"
},
{
"Name": "rtx",
"Template": "text/rtx",
"Reference": "[RFC4588]"
},
{
"Name": "SGML",
"Template": "text/SGML",
"Reference": "[RFC1874]"
},
{
"Name": "shaclc",
"Template": "text/shaclc",
"Reference": "[W3C_SHACL_Community_Group][Vladimir_Alexiev]"
},
{
"Name": "shex",
"Template": "text/shex",
"Reference": "[W3C][Eric_Prudhommeaux]"
},
{
"Name": "spdx",
"Template": "text/spdx",
"Reference": "[Linux_Foundation][Rose_Judge]"
},
{
"Name": "strings",
"Template": "text/strings",
"Reference": "[IEEE-ISTO-PWG-PPP]"
},
{
"Name": "t140",
"Template": "text/t140",
"Reference": "[RFC4103]"
},
{
"Name": "tab-separated-values",
"Template": "text/tab-separated-values",
"Reference": "[Paul_Lindner]"
},
{
"Name": "troff",
"Template": "text/troff",
"Reference": "[RFC4263]"
},
{
"Name": "turtle",
"Template": "text/turtle",
"Reference": "[W3C][Eric_Prudhommeaux]"
},
{
"Name": "ulpfec",
"Template": "text/ulpfec",
"Reference": "[RFC5109]"
},
{
"Name": "uri-list",
"Template": "text/uri-list",
"Reference": "[RFC2483]"
},
{
"Name": "vcard",
"Template": "text/vcard",
"Reference": "[RFC6350]"
},
{
"Name": "vnd.a",
"Template": "text/vnd.a",
"Reference": "[Regis_Dehoux]"
},
{
"Name": "vnd.abc",
"Template": "text/vnd.abc",
"Reference": "[Steve_Allen]"
},
{
"Name": "vnd.ascii-art",
"Template": "text/vnd.ascii-art",
"Reference": "[Kim_Scarborough]"
},
{
"Name": "vnd.curl",
"Template": "text/vnd.curl",
"Reference": "[Robert_Byrnes]"
},
{
"Name": "vnd.debian.copyright",
"Template": "text/vnd.debian.copyright",
"Reference": "[Charles_Plessy]"
},
{
"Name": "vnd.DMClientScript",
"Template": "text/vnd.DMClientScript",
"Reference": "[Dan_Bradley]"
},
{
"Name": "vnd.dvb.subtitle",
"Template": "text/vnd.dvb.subtitle",
"Reference": "[Peter_Siebert][Michael_Lagally]"
},
{
"Name": "vnd.esmertec.theme-descriptor",
"Template": "text/vnd.esmertec.theme-descriptor",
"Reference": "[Stefan_Eilemann]"
},
{
"Name": "vnd.exchangeable",
"Template": "text/vnd.exchangeable",
"Reference": "[Martin_Cizek]"
},
{
"Name": "vnd.familysearch.gedcom",
"Template": "text/vnd.familysearch.gedcom",
"Reference": "[Gordon_Clarke]"
},
{
"Name": "vnd.ficlab.flt",
"Template": "text/vnd.ficlab.flt",
"Reference": "[Steve_Gilberd]"
},
{
"Name": "vnd.fly",
"Template": "text/vnd.fly",
"Reference": "[John-Mark_Gurney]"
},
{
"Name": "vnd.fmi.flexstor",
"Template": "text/vnd.fmi.flexstor",
"Reference": "[Kari_E._Hurtta]"
},
{
"Name": "vnd.gml",
"Template": "text/vnd.gml",
"Reference": "[Mi_Tar]"
},
{
"Name": "vnd.graphviz",
"Template": "text/vnd.graphviz",
"Reference": "[John_Ellson]"
},
{
"Name": "vnd.hans",
"Template": "text/vnd.hans",
"Reference": "[Hill_Hanxv]"
},
{
"Name": "vnd.hgl",
"Template": "text/vnd.hgl",
"Reference": "[Heungsub_Lee]"
},
{
"Name": "vnd.in3d.3dml",
"Template": "text/vnd.in3d.3dml",
"Reference": "[Michael_Powers]"
},
{
"Name": "vnd.in3d.spot",
"Template": "text/vnd.in3d.spot",
"Reference": "[Michael_Powers]"
},
{
"Name": "vnd.IPTC.NewsML",
"Template": "text/vnd.IPTC.NewsML",
"Reference": "[IPTC]"
},
{
"Name": "vnd.IPTC.NITF",
"Template": "text/vnd.IPTC.NITF",
"Reference": "[IPTC]"
},
{
"Name": "vnd.latex-z",
"Template": "text/vnd.latex-z",
"Reference": "[Mikusiak_Lubos]"
},
{
"Name": "vnd.motorola.reflex",
"Template": "text/vnd.motorola.reflex",
"Reference": "[Mark_Patton]"
},
{
"Name": "vnd.ms-mediapackage",
"Template": "text/vnd.ms-mediapackage",
"Reference": "[Jan_Nelson]"
},
{
"Name": "vnd.net2phone.commcenter.command",
"Template": "text/vnd.net2phone.commcenter.command",
"Reference": "[Feiyu_Xie]"
},
{
"Name": "vnd.radisys.msml-basic-layout",
"Template": "text/vnd.radisys.msml-basic-layout",
"Reference": "[RFC5707]"
},
{
"Name": "vnd.senx.warpscript",
"Template": "text/vnd.senx.warpscript",
"Reference": "[Pierre_Papin]"
},
{
"Name": "vnd.si.uricatalogue (OBSOLETED by request)",
"Template": "text/vnd.si.uricatalogue",
"Reference": "[Nicholas_Parks_Young]"
},
{
"Name": "vnd.sun.j2me.app-descriptor",
"Template": "text/vnd.sun.j2me.app-descriptor",
"Reference": "[Gary_Adams]"
},
{
"Name": "vnd.sosi",
"Template": "text/vnd.sosi",
"Reference": "[Petter_Reinholdtsen]"
},
{
"Name": "vnd.trolltech.linguist",
"Template": "text/vnd.trolltech.linguist",
"Reference": "[David_Lee_Lambert]"
},
{
"Name": "vnd.wap.si",
"Template": "text/vnd.wap.si",
"Reference": "[WAP-Forum]"
},
{
"Name": "vnd.wap.sl",
"Template": "text/vnd.wap.sl",
"Reference": "[WAP-Forum]"
},
{
"Name": "vnd.wap.wml",
"Template": "text/vnd.wap.wml",
"Reference": "[Peter_Stark]"
},
{
"Name": "vnd.wap.wmlscript",
"Template": "text/vnd.wap.wmlscript",
"Reference": "[Peter_Stark]"
},
{
"Name": "vtt",
"Template": "text/vtt",
"Reference": "[W3C][Silvia_Pfeiffer]"
},
{
"Name": "wgsl",
"Template": "text/wgsl",
"Reference": "[W3C][David_Neto]"
},
{
"Name": "xml",
"Template": "text/xml",
"Reference": "[RFC7303]"
},
{
"Name": "xml-external-parsed-entity",
"Template": "text/xml-external-parsed-entity",
"Reference": "[RFC7303]"
}
]

View File

@ -0,0 +1,457 @@
[
{
"Name": "1d-interleaved-parityfec",
"Template": "video/1d-interleaved-parityfec",
"Reference": "[RFC6015]"
},
{
"Name": "3gpp",
"Template": "video/3gpp",
"Reference": "[RFC3839][RFC6381]"
},
{
"Name": "3gpp2",
"Template": "video/3gpp2",
"Reference": "[RFC4393][RFC6381]"
},
{
"Name": "3gpp-tt",
"Template": "video/3gpp-tt",
"Reference": "[RFC4396]"
},
{
"Name": "AV1",
"Template": "video/AV1",
"Reference": "[Alliance_for_Open_Media]"
},
{
"Name": "BMPEG",
"Template": "video/BMPEG",
"Reference": "[RFC3555]"
},
{
"Name": "BT656",
"Template": "video/BT656",
"Reference": "[RFC3555]"
},
{
"Name": "CelB",
"Template": "video/CelB",
"Reference": "[RFC3555]"
},
{
"Name": "DV",
"Template": "video/DV",
"Reference": "[RFC6469]"
},
{
"Name": "encaprtp",
"Template": "video/encaprtp",
"Reference": "[RFC6849]"
},
{
"Name": "example",
"Template": "video/example",
"Reference": "[RFC4735]"
},
{
"Name": "FFV1",
"Template": "video/FFV1",
"Reference": "[RFC9043]"
},
{
"Name": "flexfec",
"Template": "video/flexfec",
"Reference": "[RFC8627]"
},
{
"Name": "H261",
"Template": "video/H261",
"Reference": "[RFC4587]"
},
{
"Name": "H263",
"Template": "video/H263",
"Reference": "[RFC3555]"
},
{
"Name": "H263-1998",
"Template": "video/H263-1998",
"Reference": "[RFC4629]"
},
{
"Name": "H263-2000",
"Template": "video/H263-2000",
"Reference": "[RFC4629]"
},
{
"Name": "H264",
"Template": "video/H264",
"Reference": "[RFC6184]"
},
{
"Name": "H264-RCDO",
"Template": "video/H264-RCDO",
"Reference": "[RFC6185]"
},
{
"Name": "H264-SVC",
"Template": "video/H264-SVC",
"Reference": "[RFC6190]"
},
{
"Name": "H265",
"Template": "video/H265",
"Reference": "[RFC7798]"
},
{
"Name": "H266",
"Template": "video/H266",
"Reference": "[RFC9328]"
},
{
"Name": "iso.segment",
"Template": "video/iso.segment",
"Reference": "[David_Singer][ISO-IEC_JTC_1]"
},
{
"Name": "JPEG",
"Template": "video/JPEG",
"Reference": "[RFC3555]"
},
{
"Name": "jpeg2000",
"Template": "video/jpeg2000",
"Reference": "[RFC5371][RFC5372]"
},
{
"Name": "jxsv",
"Template": "video/jxsv",
"Reference": "[RFC9134]"
},
{
"Name": "matroska",
"Template": "video/matroska",
"Reference": "[RFC-ietf-cellar-matroska-21]"
},
{
"Name": "matroska-3d",
"Template": "video/matroska-3d",
"Reference": "[RFC-ietf-cellar-matroska-21]"
},
{
"Name": "mj2",
"Template": "video/mj2",
"Reference": "[RFC3745]"
},
{
"Name": "MP1S",
"Template": "video/MP1S",
"Reference": "[RFC3555]"
},
{
"Name": "MP2P",
"Template": "video/MP2P",
"Reference": "[RFC3555]"
},
{
"Name": "MP2T",
"Template": "video/MP2T",
"Reference": "[RFC3555]"
},
{
"Name": "mp4",
"Template": "video/mp4",
"Reference": "[RFC4337][RFC6381]"
},
{
"Name": "MP4V-ES",
"Template": "video/MP4V-ES",
"Reference": "[RFC6416]"
},
{
"Name": "MPV",
"Template": "video/MPV",
"Reference": "[RFC3555]"
},
{
"Name": "mpeg",
"Template": "",
"Reference": "[RFC2045][RFC2046]"
},
{
"Name": "mpeg4-generic",
"Template": "video/mpeg4-generic",
"Reference": "[RFC3640]"
},
{
"Name": "nv",
"Template": "video/nv",
"Reference": "[RFC4856]"
},
{
"Name": "ogg",
"Template": "video/ogg",
"Reference": "[RFC5334][RFC7845]"
},
{
"Name": "parityfec",
"Template": "video/parityfec",
"Reference": "[RFC3009]"
},
{
"Name": "pointer",
"Template": "video/pointer",
"Reference": "[RFC2862]"
},
{
"Name": "quicktime",
"Template": "video/quicktime",
"Reference": "[RFC6381][Paul_Lindner]"
},
{
"Name": "raptorfec",
"Template": "video/raptorfec",
"Reference": "[RFC6682]"
},
{
"Name": "raw",
"Template": "video/raw",
"Reference": "[RFC4175]"
},
{
"Name": "rtp-enc-aescm128",
"Template": "video/rtp-enc-aescm128",
"Reference": "[_3GPP]"
},
{
"Name": "rtploopback",
"Template": "video/rtploopback",
"Reference": "[RFC6849]"
},
{
"Name": "rtx",
"Template": "video/rtx",
"Reference": "[RFC4588]"
},
{
"Name": "scip",
"Template": "video/scip",
"Reference": "[SCIP][Michael_Faller][Daniel_Hanson]"
},
{
"Name": "smpte291",
"Template": "video/smpte291",
"Reference": "[RFC8331]"
},
{
"Name": "SMPTE292M",
"Template": "video/SMPTE292M",
"Reference": "[RFC3497]"
},
{
"Name": "ulpfec",
"Template": "video/ulpfec",
"Reference": "[RFC5109]"
},
{
"Name": "vc1",
"Template": "video/vc1",
"Reference": "[RFC4425]"
},
{
"Name": "vc2",
"Template": "video/vc2",
"Reference": "[RFC8450]"
},
{
"Name": "vnd.CCTV",
"Template": "video/vnd.CCTV",
"Reference": "[Frank_Rottmann]"
},
{
"Name": "vnd.dece.hd",
"Template": "video/vnd.dece.hd",
"Reference": "[Michael_A_Dolan]"
},
{
"Name": "vnd.dece.mobile",
"Template": "video/vnd.dece.mobile",
"Reference": "[Michael_A_Dolan]"
},
{
"Name": "vnd.dece.mp4",
"Template": "video/vnd.dece.mp4",
"Reference": "[Michael_A_Dolan]"
},
{
"Name": "vnd.dece.pd",
"Template": "video/vnd.dece.pd",
"Reference": "[Michael_A_Dolan]"
},
{
"Name": "vnd.dece.sd",
"Template": "video/vnd.dece.sd",
"Reference": "[Michael_A_Dolan]"
},
{
"Name": "vnd.dece.video",
"Template": "video/vnd.dece.video",
"Reference": "[Michael_A_Dolan]"
},
{
"Name": "vnd.directv.mpeg",
"Template": "video/vnd.directv.mpeg",
"Reference": "[Nathan_Zerbe]"
},
{
"Name": "vnd.directv.mpeg-tts",
"Template": "video/vnd.directv.mpeg-tts",
"Reference": "[Nathan_Zerbe]"
},
{
"Name": "vnd.dlna.mpeg-tts",
"Template": "video/vnd.dlna.mpeg-tts",
"Reference": "[Edwin_Heredia]"
},
{
"Name": "vnd.dvb.file",
"Template": "video/vnd.dvb.file",
"Reference": "[Peter_Siebert][Kevin_Murray]"
},
{
"Name": "vnd.fvt",
"Template": "video/vnd.fvt",
"Reference": "[Arild_Fuldseth]"
},
{
"Name": "vnd.hns.video",
"Template": "video/vnd.hns.video",
"Reference": "[Swaminathan]"
},
{
"Name": "vnd.iptvforum.1dparityfec-1010",
"Template": "video/vnd.iptvforum.1dparityfec-1010",
"Reference": "[Shuji_Nakamura]"
},
{
"Name": "vnd.iptvforum.1dparityfec-2005",
"Template": "video/vnd.iptvforum.1dparityfec-2005",
"Reference": "[Shuji_Nakamura]"
},
{
"Name": "vnd.iptvforum.2dparityfec-1010",
"Template": "video/vnd.iptvforum.2dparityfec-1010",
"Reference": "[Shuji_Nakamura]"
},
{
"Name": "vnd.iptvforum.2dparityfec-2005",
"Template": "video/vnd.iptvforum.2dparityfec-2005",
"Reference": "[Shuji_Nakamura]"
},
{
"Name": "vnd.iptvforum.ttsavc",
"Template": "video/vnd.iptvforum.ttsavc",
"Reference": "[Shuji_Nakamura]"
},
{
"Name": "vnd.iptvforum.ttsmpeg2",
"Template": "video/vnd.iptvforum.ttsmpeg2",
"Reference": "[Shuji_Nakamura]"
},
{
"Name": "vnd.motorola.video",
"Template": "video/vnd.motorola.video",
"Reference": "[Tom_McGinty]"
},
{
"Name": "vnd.motorola.videop",
"Template": "video/vnd.motorola.videop",
"Reference": "[Tom_McGinty]"
},
{
"Name": "vnd.mpegurl",
"Template": "video/vnd.mpegurl",
"Reference": "[Heiko_Recktenwald]"
},
{
"Name": "vnd.ms-playready.media.pyv",
"Template": "video/vnd.ms-playready.media.pyv",
"Reference": "[Steve_DiAcetis]"
},
{
"Name": "vnd.nokia.interleaved-multimedia",
"Template": "video/vnd.nokia.interleaved-multimedia",
"Reference": "[Petteri_Kangaslampi]"
},
{
"Name": "vnd.nokia.mp4vr",
"Template": "video/vnd.nokia.mp4vr",
"Reference": "[Miska_M._Hannuksela]"
},
{
"Name": "vnd.nokia.videovoip",
"Template": "video/vnd.nokia.videovoip",
"Reference": "[Nokia]"
},
{
"Name": "vnd.objectvideo",
"Template": "video/vnd.objectvideo",
"Reference": "[John_Clark]"
},
{
"Name": "vnd.radgamettools.bink",
"Template": "video/vnd.radgamettools.bink",
"Reference": "[Henrik_Andersson]"
},
{
"Name": "vnd.radgamettools.smacker",
"Template": "video/vnd.radgamettools.smacker",
"Reference": "[Henrik_Andersson]"
},
{
"Name": "vnd.sealed.mpeg1",
"Template": "video/vnd.sealed.mpeg1",
"Reference": "[David_Petersen]"
},
{
"Name": "vnd.sealed.mpeg4",
"Template": "video/vnd.sealed.mpeg4",
"Reference": "[David_Petersen]"
},
{
"Name": "vnd.sealed.swf",
"Template": "video/vnd.sealed.swf",
"Reference": "[David_Petersen]"
},
{
"Name": "vnd.sealedmedia.softseal.mov",
"Template": "video/vnd.sealedmedia.softseal.mov",
"Reference": "[David_Petersen]"
},
{
"Name": "vnd.uvvu.mp4",
"Template": "video/vnd.uvvu.mp4",
"Reference": "[Michael_A_Dolan]"
},
{
"Name": "vnd.youtube.yt",
"Template": "video/vnd.youtube.yt",
"Reference": "[Google]"
},
{
"Name": "vnd.vivo",
"Template": "video/vnd.vivo",
"Reference": "[John_Wolfe]"
},
{
"Name": "VP8",
"Template": "video/VP8",
"Reference": "[RFC7741]"
},
{
"Name": "VP9",
"Template": "video/VP9",
"Reference": "[RFC-ietf-payload-vp9-16]"
}
]

View File

@ -3,15 +3,23 @@ package org.hl7.fhir.common.hapi.validation.support;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.support.ConceptValidationOptions;
import ca.uhn.fhir.context.support.IValidationSupport;
import ca.uhn.fhir.context.support.ValidationSupportContext;
import ca.uhn.fhir.context.support.IValidationSupport.CodeValidationResult;
import ca.uhn.fhir.context.support.IValidationSupport.LookupCodeResult;
import ca.uhn.fhir.context.support.LookupCodeRequest;
import ca.uhn.fhir.context.support.ValidationSupportContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.rest.api.Constants;
import ca.uhn.fhir.rest.api.EncodingEnum;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.r4.model.CodeSystem;
import org.hl7.fhir.r4.model.ValueSet;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import static org.hl7.fhir.common.hapi.validation.support.CommonCodeSystemsTerminologyService.MIMETYPES_CODESYSTEM_URL;
import static org.hl7.fhir.common.hapi.validation.support.CommonCodeSystemsTerminologyService.MIMETYPES_VALUESET_URL;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@ -32,35 +40,35 @@ public class CommonCodeSystemsTerminologyServiceTest {
@Test
public void testUcum_LookupCode_Good() {
IValidationSupport.LookupCodeResult outcome = mySvc.lookupCode(newSupport(), new LookupCodeRequest("http://unitsofmeasure.org", "Cel"));
LookupCodeResult outcome = mySvc.lookupCode(newSupport(), new LookupCodeRequest("http://unitsofmeasure.org", "Cel"));
assert outcome != null;
assertTrue(outcome.isFound());
}
@Test
public void testUcum_LookupCode_Good2() {
IValidationSupport.LookupCodeResult outcome = mySvc.lookupCode(newSupport(), new LookupCodeRequest("http://unitsofmeasure.org", "kg/m2"));
LookupCodeResult outcome = mySvc.lookupCode(newSupport(), new LookupCodeRequest("http://unitsofmeasure.org", "kg/m2"));
assert outcome != null;
assertTrue(outcome.isFound());
}
@Test
public void testUcum_LookupCode_Bad() {
IValidationSupport.LookupCodeResult outcome = mySvc.lookupCode(newSupport(), new LookupCodeRequest("http://unitsofmeasure.org", "AAAAA"));
LookupCodeResult outcome = mySvc.lookupCode(newSupport(), new LookupCodeRequest("http://unitsofmeasure.org", "AAAAA"));
assert outcome != null;
assertFalse(outcome.isFound());
}
@Test
public void testUcum_LookupCode_UnknownSystem() {
IValidationSupport.LookupCodeResult outcome = mySvc.lookupCode(newSupport(), new LookupCodeRequest("http://foo", "AAAAA"));
LookupCodeResult outcome = mySvc.lookupCode(newSupport(), new LookupCodeRequest("http://foo", "AAAAA"));
assertNull(outcome);
}
@Test
public void lookupCode_languageOnlyLookup_isCaseInsensitive() {
IValidationSupport.LookupCodeResult outcomeUpper = mySvc.lookupCode(newSupport(), new LookupCodeRequest("urn:ietf:bcp:47", "SGN", "Sign Languages", null));
IValidationSupport.LookupCodeResult outcomeLower = mySvc.lookupCode(newSupport(), new LookupCodeRequest("urn:ietf:bcp:47", "sgn", "Sign Languages", null));
LookupCodeResult outcomeUpper = mySvc.lookupCode(newSupport(), new LookupCodeRequest("urn:ietf:bcp:47", "SGN", "Sign Languages", null));
LookupCodeResult outcomeLower = mySvc.lookupCode(newSupport(), new LookupCodeRequest("urn:ietf:bcp:47", "sgn", "Sign Languages", null));
assertNotNull(outcomeUpper);
assertNotNull(outcomeLower);
assertTrue(outcomeLower.isFound());
@ -69,8 +77,8 @@ public class CommonCodeSystemsTerminologyServiceTest {
@Test
public void lookupCode_languageAndRegionLookup_isCaseInsensitive() {
IValidationSupport.LookupCodeResult outcomeUpper = mySvc.lookupCode(newSupport(), new LookupCodeRequest("urn:ietf:bcp:47", "EN-US", "English", null));
IValidationSupport.LookupCodeResult outcomeLower = mySvc.lookupCode(newSupport(), new LookupCodeRequest("urn:ietf:bcp:47", "en-us", "English", null));
LookupCodeResult outcomeUpper = mySvc.lookupCode(newSupport(), new LookupCodeRequest("urn:ietf:bcp:47", "EN-US", "English", null));
LookupCodeResult outcomeLower = mySvc.lookupCode(newSupport(), new LookupCodeRequest("urn:ietf:bcp:47", "en-us", "English", null));
assertNotNull(outcomeUpper);
assertNotNull(outcomeLower);
assertTrue(outcomeLower.isFound());
@ -81,7 +89,7 @@ public class CommonCodeSystemsTerminologyServiceTest {
public void testUcum_ValidateCode_Good() {
ValueSet vs = new ValueSet();
vs.setUrl("http://hl7.org/fhir/ValueSet/ucum-units");
IValidationSupport.CodeValidationResult outcome = mySvc.validateCodeInValueSet(newSupport(), newOptions(), "http://unitsofmeasure.org", "mg", null, vs);
CodeValidationResult outcome = mySvc.validateCodeInValueSet(newSupport(), newOptions(), "http://unitsofmeasure.org", "mg", null, vs);
assert outcome != null;
assertTrue(outcome.isOk());
assertEquals("(milligram)", outcome.getDisplay());
@ -91,7 +99,7 @@ public class CommonCodeSystemsTerminologyServiceTest {
public void testUcum_ValidateCode_Good_SystemInferred() {
ValueSet vs = new ValueSet();
vs.setUrl("http://hl7.org/fhir/ValueSet/ucum-units");
IValidationSupport.CodeValidationResult outcome = mySvc.validateCodeInValueSet(newSupport(), newOptions().setInferSystem(true), null, "mg", null, vs);
CodeValidationResult outcome = mySvc.validateCodeInValueSet(newSupport(), newOptions().setInferSystem(true), null, "mg", null, vs);
assert outcome != null;
assertTrue(outcome.isOk());
assertEquals("(milligram)", outcome.getDisplay());
@ -101,7 +109,7 @@ public class CommonCodeSystemsTerminologyServiceTest {
public void testUcum_ValidateCode_Bad() {
ValueSet vs = new ValueSet();
vs.setUrl("http://hl7.org/fhir/ValueSet/ucum-units");
IValidationSupport.CodeValidationResult outcome = mySvc.validateCodeInValueSet(newSupport(), newOptions(), "http://unitsofmeasure.org", "aaaaa", null, vs);
CodeValidationResult outcome = mySvc.validateCodeInValueSet(newSupport(), newOptions(), "http://unitsofmeasure.org", "aaaaa", null, vs);
assertNotNull(outcome);
assertFalse(outcome.isOk());
assertEquals("Error processing unit 'aaaaa': The unit 'aaaaa' is unknown' at position 0", outcome.getMessage());
@ -110,7 +118,7 @@ public class CommonCodeSystemsTerminologyServiceTest {
@Test
public void testLanguagesLanguagesCs_GoodCode() {
IValidationSupport.CodeValidationResult outcome = mySvc.validateLookupCode(newSupport(), "en-CA", "urn:ietf:bcp:47");
CodeValidationResult outcome = mySvc.validateLookupCode(newSupport(), "en-CA", "urn:ietf:bcp:47");
assert outcome != null;
assertTrue(outcome.isOk());
assertEquals("English Canada", outcome.getDisplay());
@ -118,13 +126,13 @@ public class CommonCodeSystemsTerminologyServiceTest {
@Test
public void testLanguagesLanguagesCs_BadCode() {
IValidationSupport.CodeValidationResult outcome = mySvc.validateLookupCode(newSupport(), "en-FOO", "urn:ietf:bcp:47");
CodeValidationResult outcome = mySvc.validateLookupCode(newSupport(), "en-FOO", "urn:ietf:bcp:47");
assertNull(outcome);
}
@Test
public void testLanguages_CommonLanguagesVs_GoodCode() {
IValidationSupport.CodeValidationResult outcome = mySvc.validateCode(newSupport(), newOptions(), "urn:ietf:bcp:47", "en-US", null, "http://hl7.org/fhir/ValueSet/languages");
CodeValidationResult outcome = mySvc.validateCode(newSupport(), newOptions(), "urn:ietf:bcp:47", "en-US", null, "http://hl7.org/fhir/ValueSet/languages");
assert outcome != null;
assertTrue(outcome.isOk());
assertEquals("English (United States)", outcome.getDisplay());
@ -132,21 +140,21 @@ public class CommonCodeSystemsTerminologyServiceTest {
@Test
public void testLanguages_CommonLanguagesVs_OnlyLanguage_NoRegion() {
IValidationSupport.LookupCodeResult nl = mySvc.lookupCode(newSupport(), new LookupCodeRequest("urn:ietf:bcp:47", "nl"));
assertTrue(nl.isFound());
LookupCodeResult nl = mySvc.lookupCode(newSupport(), new LookupCodeRequest("urn:ietf:bcp:47", "nl"));
assertTrue(nl != null && nl.isFound());
assertEquals("Dutch", nl.getCodeDisplay());
}
@Test
public void testLanguages_CommonLanguagesVs_LanguageAndRegion() {
IValidationSupport.LookupCodeResult nl = mySvc.lookupCode(newSupport(), new LookupCodeRequest("urn:ietf:bcp:47", "nl-NL"));
assertTrue(nl.isFound());
LookupCodeResult nl = mySvc.lookupCode(newSupport(), new LookupCodeRequest("urn:ietf:bcp:47", "nl-NL"));
assertTrue(nl != null && nl.isFound());
assertEquals("Dutch Netherlands", nl.getCodeDisplay());
}
@Test
public void testLanguages_CommonLanguagesVs_BadCode() {
IValidationSupport.CodeValidationResult outcome = mySvc.validateCode(newSupport(), newOptions(), "urn:ietf:bcp:47", "FOO", null, "http://hl7.org/fhir/ValueSet/languages");
CodeValidationResult outcome = mySvc.validateCode(newSupport(), newOptions(), "urn:ietf:bcp:47", "FOO", null, "http://hl7.org/fhir/ValueSet/languages");
assert outcome != null;
assertFalse(outcome.isOk());
assertEquals("Code \"FOO\" is not in valueset: http://hl7.org/fhir/ValueSet/languages", outcome.getMessage());
@ -154,7 +162,7 @@ public class CommonCodeSystemsTerminologyServiceTest {
@Test
public void testLanguages_CommonLanguagesVs_BadSystem() {
IValidationSupport.CodeValidationResult outcome = mySvc.validateCode(newSupport(), newOptions(), "FOO", "en-US", null, "http://hl7.org/fhir/ValueSet/languages");
CodeValidationResult outcome = mySvc.validateCode(newSupport(), newOptions(), "FOO", "en-US", null, "http://hl7.org/fhir/ValueSet/languages");
assert outcome != null;
assertFalse(outcome.isOk());
assertEquals("Inappropriate CodeSystem URL \"FOO\" for ValueSet: http://hl7.org/fhir/ValueSet/languages", outcome.getMessage());
@ -162,7 +170,7 @@ public class CommonCodeSystemsTerminologyServiceTest {
@Test
public void testLanguages_AllLanguagesVs_GoodCode() {
IValidationSupport.CodeValidationResult outcome = mySvc.validateCode(newSupport(), newOptions(), "urn:ietf:bcp:47", "en-US", null, "http://hl7.org/fhir/ValueSet/all-languages");
CodeValidationResult outcome = mySvc.validateCode(newSupport(), newOptions(), "urn:ietf:bcp:47", "en-US", null, "http://hl7.org/fhir/ValueSet/all-languages");
assert outcome != null;
assertTrue(outcome.isOk());
assertEquals("English United States", outcome.getDisplay());
@ -170,7 +178,7 @@ public class CommonCodeSystemsTerminologyServiceTest {
@Test
public void testLanguages_AllLanguagesVs_BadCode() {
IValidationSupport.CodeValidationResult outcome = mySvc.validateCode(newSupport(), newOptions(), "urn:ietf:bcp:47", "FOO", null, "http://hl7.org/fhir/ValueSet/all-languages");
CodeValidationResult outcome = mySvc.validateCode(newSupport(), newOptions(), "urn:ietf:bcp:47", "FOO", null, "http://hl7.org/fhir/ValueSet/all-languages");
assert outcome != null;
assertFalse(outcome.isOk());
assertEquals("Code \"FOO\" is not in valueset: http://hl7.org/fhir/ValueSet/all-languages", outcome.getMessage());
@ -178,7 +186,7 @@ public class CommonCodeSystemsTerminologyServiceTest {
@Test
public void testLanguages_AllLanguagesVs_BadSystem() {
IValidationSupport.CodeValidationResult outcome = mySvc.validateCode(newSupport(), newOptions(), "FOO", "en-US", null, "http://hl7.org/fhir/ValueSet/all-languages");
CodeValidationResult outcome = mySvc.validateCode(newSupport(), newOptions(), "FOO", "en-US", null, "http://hl7.org/fhir/ValueSet/all-languages");
assert outcome != null;
assertFalse(outcome.isOk());
assertEquals("Inappropriate CodeSystem URL \"FOO\" for ValueSet: http://hl7.org/fhir/ValueSet/all-languages", outcome.getMessage());
@ -238,6 +246,98 @@ public class CommonCodeSystemsTerminologyServiceTest {
}
}
@Test
public void testFetchCodeSystem_withMimeType_returnsResult() {
CodeSystem cs = (CodeSystem) mySvc.fetchCodeSystem(MIMETYPES_CODESYSTEM_URL);
assertNotNull(cs);
assertEquals(2085, cs.getConcept().size());
}
@ParameterizedTest
@ValueSource(strings = { EncodingEnum.JSON_PLAIN_STRING, Constants.CT_FHIR_JSON_NEW, Constants.CT_FHIR_JSON, Constants.CT_TEXT })
public void testValidateCode_withMimetypeKnown_returnValidResult(String code) {
// test
CodeValidationResult result = mySvc.validateCode(newSupport(), newOptions(), MIMETYPES_CODESYSTEM_URL, code, null, MIMETYPES_VALUESET_URL);
// verify
assertNotNull(result);
assertEquals(code, result.getCode());
assertTrue(result.isOk());
assertNull(result.getSeverity());
assertNull(result.getMessage());
assertNotNull(result.getDisplay());
}
@Test
public void testValidateCode_withMimetypeUnknown_returnInvalidResult() {
// setup
final String system = MIMETYPES_CODESYSTEM_URL;
final String code = "someCode";
// test
CodeValidationResult result = mySvc.validateCode(newSupport(), newOptions(), system, code, null, null);
// verify
assertNotNull(result);
assertFalse(result.isOk());
assertNull(result.getDisplay());
assertEquals(IValidationSupport.IssueSeverity.ERROR, result.getSeverity());
assertEquals(mySvc.getErrorMessage("invalidCodeInSystem", system, code), result.getMessage());
}
@Test
public void testValidateCode_withMimetypeUnknown_returnUnknownResult() {
// setup
final String system = MIMETYPES_CODESYSTEM_URL;
final String code = "someCode";
// test
CodeValidationResult result = mySvc.validateCode(newSupport(), newOptions(), system, code, null, MIMETYPES_VALUESET_URL);
// verify
assertNotNull(result);
assertFalse(result.isOk());
assertNull(result.getDisplay());
assertEquals(IValidationSupport.IssueSeverity.ERROR, result.getSeverity());
assertEquals(mySvc.getErrorMessage("unknownCodeSystem", system, code), result.getMessage());
}
@ParameterizedTest
@ValueSource(strings = { EncodingEnum.JSON_PLAIN_STRING, Constants.FORMAT_TURTLE, Constants.CT_FHIR_JSON_NEW, Constants.CT_FHIR_JSON, Constants.CT_TEXT })
public void testLookupCode_withMimetype_returnFoundResult(String code) {
// setup
final String system = MIMETYPES_CODESYSTEM_URL;
// test
LookupCodeResult result = mySvc.lookupCode(newSupport(), new LookupCodeRequest(system, code));
// verify
assertNotNull(result);
assertEquals(system, result.getSearchedForSystem());
assertEquals(code, result.getSearchedForCode());
assertTrue(result.isFound());
assertNotNull(result.getCodeDisplay());
}
@Test
public void testLookupCode_withMimetype_returnNotFoundResult() {
// setup
final String system = MIMETYPES_CODESYSTEM_URL;
final String code = "someCode";
// test
LookupCodeResult result = mySvc.lookupCode(newSupport(), new LookupCodeRequest(system, code));
// verify
assertNotNull(result);
assertEquals(system, result.getSearchedForSystem());
assertEquals(code, result.getSearchedForCode());
assertFalse(result.isFound());
assertNull(result.getCodeDisplay());
assertEquals(mySvc.getErrorMessage("invalidCodeInSystem", system, code), result.getErrorMessage());
}
private ValidationSupportContext newSupport() {
return new ValidationSupportContext(myCtx.getValidationSupport());
}

View File

@ -63,18 +63,18 @@ public class InMemoryTerminologyServerValidationSupportTest {
String valueSetUrl = "http://hl7.org/fhir/ValueSet/mimetypes";
// ValidateCode
outcome = myChain.validateCode(valCtx, options, null, "txt", null, valueSetUrl);
outcome = myChain.validateCode(valCtx, options, null, "xml", null, valueSetUrl);
assertTrue(outcome.isOk());
assertEquals("Code was validated against in-memory expansion of ValueSet: http://hl7.org/fhir/ValueSet/mimetypes", outcome.getSourceDetails());
assertEquals("txt", outcome.getCode());
assertEquals("xml", outcome.getCode());
// ValidateCodeInValueSet
IBaseResource valueSet = myChain.fetchValueSet(valueSetUrl);
assertNotNull(valueSet);
outcome = myChain.validateCodeInValueSet(valCtx, options, null, "txt", null, valueSet);
outcome = myChain.validateCodeInValueSet(valCtx, options, null, "xml", null, valueSet);
assertTrue(outcome.isOk());
assertEquals("Code was validated against in-memory expansion of ValueSet: http://hl7.org/fhir/ValueSet/mimetypes", outcome.getSourceDetails());
assertEquals("txt", outcome.getCode());
assertEquals("xml", outcome.getCode());
}
@Test

View File

@ -4,6 +4,7 @@ import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.support.DefaultProfileValidationSupport;
import ca.uhn.fhir.context.support.IValidationSupport;
import ca.uhn.fhir.parser.IParser;
import ca.uhn.fhir.rest.api.Constants;
import ca.uhn.fhir.util.TestUtil;
import ca.uhn.fhir.validation.FhirValidator;
import ca.uhn.fhir.validation.ResultSeverityEnum;
@ -156,7 +157,7 @@ public class QuestionnaireResponseValidatorDstu3Test {
answerValues[10] = new Coding().setSystem("http://codesystems.com/system").setCode("code0");
answerValues[11] = new Coding().setSystem("http://codesystems.com/system").setCode("code0");
answerValues[12] = new StringType("some value");
answerValues[13] = new Attachment().setData("some data".getBytes()).setContentType("txt");
answerValues[13] = new Attachment().setData("some data".getBytes()).setContentType(Constants.CT_OCTET_STREAM);
answerValues[14] = new Reference(QUESTIONNAIRE_URL);
answerValues[15] = new Quantity(42);

View File

@ -4,6 +4,7 @@ import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.support.DefaultProfileValidationSupport;
import ca.uhn.fhir.context.support.IValidationSupport;
import ca.uhn.fhir.parser.IParser;
import ca.uhn.fhir.rest.api.Constants;
import ca.uhn.fhir.util.TestUtil;
import ca.uhn.fhir.validation.FhirValidator;
import ca.uhn.fhir.validation.ResultSeverityEnum;
@ -128,7 +129,7 @@ public class QuestionnaireResponseValidatorR4Test {
answerValues[10] = new Coding().setSystem("http://codesystems.com/system").setCode("code0");
answerValues[11] = new Coding().setSystem("http://codesystems.com/system").setCode("code0");
answerValues[12] = new StringType("some value");
answerValues[13] = new Attachment().setData("some data".getBytes()).setContentType("txt");
answerValues[13] = new Attachment().setData("some data".getBytes()).setContentType(Constants.CT_OCTET_STREAM);
answerValues[14] = new Reference("http://example.com/Questionnaire/q1");
answerValues[15] = new Quantity(42);

View File

@ -4,6 +4,7 @@ import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.support.DefaultProfileValidationSupport;
import ca.uhn.fhir.context.support.IValidationSupport;
import ca.uhn.fhir.parser.IParser;
import ca.uhn.fhir.rest.api.Constants;
import ca.uhn.fhir.validation.FhirValidator;
import ca.uhn.fhir.validation.ResultSeverityEnum;
import ca.uhn.fhir.validation.SingleValidationMessage;
@ -151,7 +152,7 @@ public class QuestionnaireResponseValidatorR5Test {
answerValues[9] = new UriType("http://example.com");
answerValues[10] = new Coding().setSystem("http://codesystems.com/system").setCode("code0");
answerValues[11] = new Coding().setSystem("http://codesystems.com/system").setCode("code0");
answerValues[12] = new Attachment().setData("some data".getBytes()).setContentType("txt");
answerValues[12] = new Attachment().setData("some data".getBytes()).setContentType(Constants.CT_OCTET_STREAM);
answerValues[13] = new Reference("http://example.com/Questionnaire/q1");
answerValues[14] = new Quantity(42);