moved Locale to IWorkerContext

moved LocaleHandling into BaseValidator
This commit is contained in:
patrick-werner 2020-02-26 12:59:24 +01:00
parent 5984a0c693
commit f8d4b2b49d
5 changed files with 272 additions and 7 deletions

View File

@ -30,7 +30,9 @@ import java.util.EnumSet;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;
@ -94,6 +96,8 @@ import com.google.gson.JsonObject;
public abstract class BaseWorkerContext implements IWorkerContext {
private Locale locale;
public class MetadataResourceVersionComparator<T extends CanonicalResource> implements Comparator<T> {
private List<T> list;
@ -417,6 +421,19 @@ public abstract class BaseWorkerContext implements IWorkerContext {
this.expandCodesLimit = expandCodesLimit;
}
@Override
public Locale getLocale() {
if (Objects.nonNull(locale)){
return locale;
} else {
return Locale.US;
}
}
@Override
public void setLocale(Locale locale) {
this.locale = locale;
}
@Override
public ValueSetExpansionOutcome expandVS(ElementDefinitionBindingComponent binding, boolean cacheOk, boolean heirarchical) throws FHIRException {
ValueSet vs = null;

View File

@ -24,6 +24,7 @@ import java.util.EnumSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
@ -327,7 +328,11 @@ public interface IWorkerContext {
* @throws FHIRException
*/
public ValueSetExpansionOutcome expandVS(ConceptSetComponent inc, boolean hierarchical) throws TerminologyServiceException;
Locale getLocale();
void setLocale(Locale locale);
public class ValidationResult {
private ConceptDefinitionComponent definition;
private IssueSeverity severity;

View File

@ -53,7 +53,10 @@ POSSIBILITY OF SUCH DAMAGE.
import java.text.MessageFormat;
import java.util.List;
import java.util.ResourceBundle;
import org.apache.commons.lang3.StringUtils;
import org.hl7.fhir.dstu3.model.Resource;
import org.hl7.fhir.r5.context.IWorkerContext;
import org.hl7.fhir.utilities.validation.ValidationMessage;
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity;
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueType;
@ -62,7 +65,19 @@ import org.hl7.fhir.utilities.validation.ValidationMessage.Source;
public class BaseValidator {
protected Source source;
protected IWorkerContext context;
private ResourceBundle messages;
public BaseValidator(IWorkerContext context){
this.context = context;
messages = ResourceBundle.getBundle("Messages", context.getLocale() );
}
public void setContext(IWorkerContext context) {
this.context = context;
messages = ResourceBundle.getBundle("Messages", context.getLocale() );
}
/**
* Test a rule and add a {@link IssueSeverity#FATAL} validation message if the validation fails
*
@ -134,7 +149,7 @@ public class BaseValidator {
private String formatMessage(String theMessage, Object... theMessageArguments) {
String message;
if (theMessageArguments != null && theMessageArguments.length > 0) {
message = MessageFormat.format(theMessage, theMessageArguments);
message = MessageFormat.format(messages.getString(theMessage), theMessageArguments);
} else {
message = theMessage;
}
@ -546,5 +561,4 @@ public class BaseValidator {
}
return thePass;
}
}

View File

@ -37,12 +37,11 @@ import org.hl7.fhir.validation.BaseValidator;
public class ProfileValidator extends BaseValidator {
IWorkerContext context;
private boolean checkAggregation = false;
private boolean checkMustSupport = false;
public void setContext(IWorkerContext context) {
this.context = context;
public ProfileValidator(IWorkerContext context) {
super(context);
}
public boolean isCheckAggregation() {

View File

@ -0,0 +1,230 @@
The_element__is_not_marked_as_mustSupport_in_the_profile__Consider_not_using_the_element_or_marking_the_element_as_mustSupport_in_the_profile = The element {0} is not marked as 'mustSupport' in the profile {1}. Consider not using the element, or marking the element as must-Support in the profile
Expected__but_found__line_elements = Expected {0} but found {1} line elements
_for_ = {0} for '{1}#{2}'
Unknown_Code_System_ = Unknown Code System '{0}'
Unknown_Code_ = Unknown Code ({0}#{1})
Display_should_be_ = Display should be '{0}'
Invalid_System_URI_ = Invalid System URI: {0}
Invalid_System_URI___cannot_use_a_value_set_URI_as_a_system = Invalid System URI: {0} - cannot use a value set URI as a system
Code_System_URI__is_unknown_so_the_code_cannot_be_validated = Code System URI '{0}' is unknown so the code cannot be validated
Expected__but_found__coding_elements = Expected {0} but found {1} coding elements
Binding_for__missing_cc = Binding for {0} missing (cc)
ValueSet__not_found_by_validator = ValueSet {0} not found by validator
No_code_provided_and_a_code_is_required_from_the_value_set__ = No code provided, and a code is required from the value set {0} ({1})
No_code_provided_and_a_code_must_be_provided_from_the_value_set__max_value_set_ = No code provided, and a code must be provided from the value set {0} (max value set {1})
No_code_provided_and_a_code_should_be_provided_from_the_value_set__ = No code provided, and a code should be provided from the value set {0} ({1})
Could_not_confirm_that_the_codes_provided_are_in_the_value_set__and_a_code_from_this_value_set_is_required_class__ = Could not confirm that the codes provided are in the value set {0} and a code from this value set is required (class = {1})
Could_not_confirm_that_the_codes_provided_are_in_the_value_set__and_a_code_should_come_from_this_value_set_unless_it_has_no_suitable_code_class__ = Could not confirm that the codes provided are in the value set {0} and a code should come from this value set unless it has no suitable code (class = {1})
Could_not_confirm_that_the_codes_provided_are_in_the_value_set__and_a_code_is_recommended_to_come_from_this_value_set_class__ = Could not confirm that the codes provided are in the value set {0} and a code is recommended to come from this value set (class = {1})
None_of_the_codes_provided_are_in_the_value_set___and_a_code_from_this_value_set_is_required_codes__ = None of the codes provided are in the value set {0} ({1}, and a code from this value set is required) (codes = {2})
None_of_the_codes_provided_are_in_the_value_set___and_a_code_should_come_from_this_value_set_unless_it_has_no_suitable_code_codes__ = None of the codes provided are in the value set {0} ({1}, and a code should come from this value set unless it has no suitable code) (codes = {2})
None_of_the_codes_provided_are_in_the_value_set___and_a_code_is_recommended_to_come_from_this_value_set_codes__ = None of the codes provided are in the value set {0} ({1}, and a code is recommended to come from this value set) (codes = {2})
Error__validating_CodeableConcept = Error {0} validating CodeableConcept
Binding_by_URI_reference_cannot_be_checked = Binding by URI reference cannot be checked
Binding_for_path__has_no_source_so_cant_be_checked = Binding for path {0} has no source, so can't be checked
Code_0_is_not_a_valid_code_in_code_system_1 = Code {0} is not a valid code in code system {1}
Codingsystem_must_be_an_absolute_reference_not_a_local_reference = Coding.system must be an absolute reference, not a local reference
The_Coding_references_a_value_set_not_a_code_system_ = The Coding references a value set, not a code system ('{0}')
Binding_for__missing = Binding for {0} missing
The_value_provided_could_not_be_validated_in_the_absence_of_a_terminology_server = The value provided could not be validated in the absence of a terminology server
Could_not_confirm_that_the_codes_provided_are_in_the_value_set__and_a_code_from_this_value_set_is_required = Could not confirm that the codes provided are in the value set {0}, and a code from this value set is required
Could_not_confirm_that_the_codes_provided_are_in_the_value_set__and_a_code_should_come_from_this_value_set_unless_it_has_no_suitable_code = Could not confirm that the codes provided are in the value set {0}, and a code should come from this value set unless it has no suitable code
Could_not_confirm_that_the_codes_provided_are_in_the_value_set__and_a_code_is_recommended_to_come_from_this_value_set = Could not confirm that the codes provided are in the value set {0}, and a code is recommended to come from this value set
The_Coding_provided_is_not_in_the_value_set__and_a_code_is_required_from_this_value_set = The Coding provided is not in the value set {0}, and a code is required from this value set{1}
The_Coding_provided_is_not_in_the_value_set__and_a_code_should_come_from_this_value_set_unless_it_has_no_suitable_code = The Coding provided is not in the value set {0}, and a code should come from this value set unless it has no suitable code{1}
The_Coding_provided_is_not_in_the_value_set__and_a_code_is_recommended_to_come_from_this_value_set = The Coding provided is not in the value set {0}, and a code is recommended to come from this value set{1}
Error__validating_Coding = Error {0} validating Coding
Error__validating_Coding_ = Error {0} validating Coding: {1}
None_of_the_codes_provided_could_be_validated_against_the_maximum_value_set___error__ = None of the codes provided could be validated against the maximum value set {0} ({1}), (error = {2})
None_of_the_codes_provided_are_in_the_maximum_value_set___and_a_code_from_this_value_set_is_required_codes__ = None of the codes provided are in the maximum value set {0} ({1}, and a code from this value set is required) (codes = {2})
Error__validating_CodeableConcept_using_maxValueSet = Error {0} validating CodeableConcept using maxValueSet
The_code_provided_could_not_be_validated_against_the_maximum_value_set___error__ = The code provided could not be validated against the maximum value set {0} ({1}), (error = {2})
The_code_provided_is_not_in_the_maximum_value_set___and_a_code_from_this_value_set_is_required_code__ = The code provided is not in the maximum value set {0} ({1}, and a code from this value set is required) (code = {2}#{3})
The_code_provided_is_not_in_the_maximum_value_set__ = The code provided is not in the maximum value set {0} ({1}{2}
The_Coding_provided_is_not_in_the_value_set__and_a_code_is_required_from_this_value_set_ = The Coding provided is not in the value set {0}, and a code is required from this value set. {1}
The_Coding_provided_is_not_in_the_value_set__and_a_code_should_come_from_this_value_set_unless_it_has_no_suitable_code_ = The Coding provided is not in the value set {0}, and a code should come from this value set unless it has no suitable code. {1}
The_Coding_provided_is_not_in_the_value_set__and_a_code_is_recommended_to_come_from_this_value_set_ = The Coding provided is not in the value set {0}, and a code is recommended to come from this value set. {1}
Extension_url__is_not_valid_invalidVersion = Extension url '{0}' is not valid (invalidVersion'{1}')
Extension_url__is_not_valid_unknown_Element_id = Extension url '{0}' is not valid (unknown Element id'{1}')
Extension_url__is_not_valid_Element_id_is_valid_but_cannot_be_used_in_a_crossversion_paradigm_because_there_has_been_no_changes_across_the_relevant_versions = Extension url '{0}' is not valid (Element id'{1}' is valid, but cannot be used in a cross-version paradigm because there has been no changes across the relevant versions)
Extension_url__evaluation_state_illegal = Extension url '{0}' evaluation state illegal
Subextension_url__is_not_defined_by_the_Extension_ = Sub-extension url '{0}' is not defined by the Extension {1}
The_extension__is_unknown_and_not_allowed_here = The extension {0} is unknown, and not allowed here
Unknown_extension_ = Unknown extension {0}
Extension_modifier_mismatch_the_extension_element_is_labelled_as_a_modifier_but_the_underlying_extension_is_not = Extension modifier mismatch: the extension element is labelled as a modifier, but the underlying extension is not
Extension_modifier_mismatch_the_extension_element_is_not_labelled_as_a_modifier_but_the_underlying_extension_is = Extension modifier mismatch: the extension element is not labelled as a modifier, but the underlying extension is
The_Extension__must_be_used_as_a_modifierExtension = The Extension '{0}' must be used as a modifierExtension
The_Extension__must_not_be_used_as_an_extension_its_a_modifierExtension = The Extension '{0}' must not be used as an extension (it's a modifierExtension)
The_Extension__definition_is_for_a_simple_extension_so_it_must_contain_a_value_not_extensions = The Extension '{0}' definition is for a simple extension, so it must contain a value, not extensions
The_Extension__definition_allows_for_the_types__but_found_type_ = The Extension '{0}' definition allows for the types {1} but found type {2}
The_extension__is_not_allowed_to_be_used_at_this_point_allowed___this_element_is_ = The extension {0} is not allowed to be used at this point (allowed = {1}; this element is [{2})
The_extension__is_not_allowed_to_be_used_at_this_point_based_on_context_invariant_ = The extension {0} is not allowed to be used at this point (based on context invariant '{1}')
The_element__is_present_in_the_instance_but_not_allowed_in_the_applicable__specified_in_profile = The element {0} is present in the instance but not allowed in the applicable {1} specified in profile
Missing_element___required_by_fixed_value_assigned_in_profile_ = Missing element '{0}' - required by fixed value assigned in profile {1}
Value_is__but_must_be_ = Value is '{0}' but must be '{1}'
Unhandled_fixed_value_type_ = Unhandled fixed value type {0}
No_extensions_allowed_as_the_specified_fixed_value_doesnt_contain_any_extensions = No extensions allowed, as the specified fixed value doesn't contain any extensions
Extensions_count_mismatch_expected__but_found_ = Extensions count mismatch: expected {0} but found {1}
Extension_count_mismatch_unable_to_find_extension_ = Extension count mismatch: unable to find extension: {0}
Expected__but_found__family_elements = Expected {0} but found {1} family elements
Expected__but_found__given_elements = Expected {0} but found {1} given elements
Expected__but_found__prefix_elements = Expected {0} but found {1} prefix elements
Expected__but_found__suffix_elements = Expected {0} but found {1} suffix elements
Identifiersystem_must_be_an_absolute_reference_not_a_local_reference = Identifier.system must be an absolute reference, not a local reference
Primitive_types_must_have_a_value_or_must_have_child_extensions = Primitive types must have a value or must have child extensions
Primitive_types_must_have_a_value_that_is_not_empty = Primitive types must have a value that is not empty
Primitive_types_should_not_only_be_whitespace = Primitive types should not only be whitespace
Element_value__does_not_meet_regex_ = Element value '{0}' does not meet regex '{1}'
boolean_values_must_be_true_or_false = boolean values must be 'true' or 'false'
URI_values_cannot_start_with_oid = URI values cannot start with oid:
URI_values_cannot_start_with_uuid = URI values cannot start with uuid:
URI_values_cannot_have_whitespace = URI values cannot have whitespace('{0}')
value_is_longer_than_permitted_maximum_length_of_ = value is longer than permitted maximum length of {0}
OIDs_must_start_with_urnoid = OIDs must start with urn:oid:
OIDs_must_be_valid = OIDs must be valid
UUIDs_must_start_with_urnuuid = UUIDs must start with urn:uuid:
UUIDs_must_be_valid_ = UUIDs must be valid ({0})
URL_value__does_not_resolve = URL value '{0}' does not resolve
id_value__is_not_valid = id value '{0}' is not valid
value_cannot_be_empty = @value cannot be empty
value_should_not_start_or_finish_with_whitespace = value should not start or finish with whitespace
value_is_longer_than_permitted_maximum_length_of_1_MB_1048576_bytes = value is longer than permitted maximum length of 1 MB (1048576 bytes)
The_value__is_outside_the_range_of_reasonable_years__check_for_data_entry_error = The value '{0}' is outside the range of reasonable years - check for data entry error
Not_a_valid_date_time = Not a valid date time
if_a_date_has_a_time_it_must_have_a_timezone = if a date has a time, it must have a timezone
Not_a_valid_datetime_ = Not a valid date/time ({0})
Not_a_valid_time = Not a valid time
Not_a_valid_time_ = Not a valid time ({0})
Not_a_valid_date = Not a valid date
value_is_longer_than_permitted_maximum_value_of_ = value is longer than permitted maximum value of {0}
Not_a_valid_date_ = Not a valid date ({0})
The_value0_is_not_a_valid_Base64_value = The value'{0}' is not a valid Base64 value
The_value__is_not_a_valid_integer = The value '{0}' is not a valid integer
value_is_greater_than_permitted_maximum_value_of_ = value is greater than permitted maximum value of {0}
value_is_less_than_permitted_minimum_value_of_ = value is less than permitted minimum value of {0}
value_is_less_than_permitted_minimum_value_of_0 = value is less than permitted minimum value of 0
value_is_less_than_permitted_minimum_value_of_1 = value is less than permitted minimum value of 1
The_value__is_not_a_valid_integer64 = The value '{0}' is not a valid integer64
The_value__is_not_a_valid_decimal = The value '{0}' is not a valid decimal
The_value__is_outside_the_range_of_commonlyreasonably_supported_decimals = The value '{0}' is outside the range of commonly/reasonably supported decimals
The_instant__is_not_valid_by_regex = The instant '{0}' is not valid (by regex)
Not_a_valid_instant_ = Not a valid instant ({0})
The_code__is_not_valid_whitespace_rules = The code '{0}' is not valid (whitespace rules)
Wrong_namespace_on_the_XHTML__should_be_ = Wrong namespace on the XHTML ('{0}', should be '{1}')
Wrong_name_on_the_XHTML___must_start_with_div = Wrong name on the XHTML ('{0}') - must start with div
Illegal_element_name_in_the_XHTML_ = Illegal element name in the XHTML ('{0}')
Illegal_attribute_name_in_the_XHTML__on_ = Illegal attribute name in the XHTML ('{0}' on '{1}')
ValueSet_0_not_found_by_validator = ValueSet {0} not found by validator
The_value_provided__could_not_be_validated_in_the_absence_of_a_terminology_server = The value provided ('{0}') could not be validated in the absence of a terminology server
The_value_provided__is_not_in_the_value_set___and_a_code_is_required_from_this_value_set = The value provided ('{0}') is not in the value set {1} ({2}, and a code is required from this value set){3}
The_value_provided__is_not_in_the_value_set___and_a_code_should_come_from_this_value_set_unless_it_has_no_suitable_code = The value provided ('{0}') is not in the value set {1} ({2}, and a code should come from this value set unless it has no suitable code){3}
The_value_provided__is_not_in_the_value_set___and_a_code_is_recommended_to_come_from_this_value_set = The value provided ('{0}') is not in the value set {1} ({2}, and a code is recommended to come from this value set){3}
Binding_has_no_source_so_cant_be_checked = Binding has no source, so can't be checked
A_Reference_without_an_actual_reference_or_identifier_should_have_a_display = A Reference without an actual reference or identifier should have a display
Unable_to_resolve_resource_ = Unable to resolve resource '{0}'
The_type__is_not_a_valid_Target_for_this_element_must_be_one_of_ = The type '{0}' is not a valid Target for this element (must be one of {1})
The_specified_type__does_not_match_the_found_type_ = The specified type '{0}' does not match the found type '{1}'
Unable_to_determine_type_of_target_resource = Unable to determine type of target resource
Unable_to_resolve_the_profile_reference_ = Unable to resolve the profile reference '{0}'
Unable_to_find_matching_profile_for__by_type_among_choices_ = Unable to find matching profile for {0} (by type) among choices: {1}
Unable_to_find_matching_profile_for__among_choices_ = Unable to find matching profile for {0} among choices: {1}
Found_multiple_matching_profiles_for__among_choices_ = Found multiple matching profiles for {0} among choices: {1}
Invalid_Resource_target_type_Found__but_expected_one_of_ = Invalid Resource target type. Found {0}, but expected one of ({1})
Reference_is__which_isnt_supported_by_the_specified_aggregation_modes_for_the_reference = Reference is {0} which isn't supported by the specified aggregation mode(s) for the reference
Bundled_or_contained_reference_not_found_within_the_bundleresource_ = Bundled or contained reference not found within the bundle/resource {0}
The_type__implied_by_the_reference_URL__is_not_a_valid_Target_for_this_element_must_be_one_of_ = The type '{0}' implied by the reference URL {1} is not a valid Target for this element (must be one of {2})
Expected__but_found__event_elements = Expected {0} but found {1} event elements
Relative_Reference_appears_inside_Bundle_whose_entry_is_missing_a_fullUrl = Relative Reference appears inside Bundle whose entry is missing a fullUrl
Relative_URLs_must_be_of_the_format_ResourceNameid_or_a_search_ULR_is_allowed_typeparameters__Encountered_ = Relative URLs must be of the format [ResourceName]/[id], or a search ULR is allowed ([type]?parameters. Encountered {0})
Relative_URLs_must_be_of_the_format_ResourceNameid__Encountered_ = Relative URLs must be of the format [ResourceName]/[id]. Encountered {0}
Multiple_matches_in_bundle_for_reference_ = Multiple matches in bundle for reference {0}
Entries_matching_fullURL__should_declare_metaversionId_because_there_are_versionspecific_references = Entries matching fullURL {0} should declare meta/versionId because there are version-specific references
Matching_reference_for_reference__has_resourceType_ = Matching reference for reference {0} has resourceType {1}
URN_reference_is_not_locally_contained_within_the_bundle_ = URN reference is not locally contained within the bundle {0}
Bundle_entry_missing_fullUrl = Bundle entry missing fullUrl
Profile_reference__could_not_be_resolved_so_has_not_been_checked = Profile reference '{0}' could not be resolved, so has not been checked
StructureDefinition_has_no_snapshot__validation_is_against_the_snapshot_so_it_must_be_provided = StructureDefinition has no snapshot - validation is against the snapshot, so it must be provided
Questions_with_an_enableWhen_must_have_a_value_for_the_question_link = Questions with an enableWhen must have a value for the question link
Questions_with_an_enableWhen_cannot_refer_to_an_inner_question_for_its_enableWhen_condition = Questions with an enableWhen cannot refer to an inner question for it's enableWhen condition
Unable_to_find_target__for_this_question_enableWhen = Unable to find target '{0}' for this question enableWhen
Target_for_this_question_enableWhen_cant_reference_itself = Target for this question enableWhen can't reference itself
The_target_of_this_enableWhen_rule__comes_after_the_question_itself = The target of this enableWhen rule ({0}) comes after the question itself
Resource_has_a_language_but_the_XHTML_does_not_have_an_lang_or_an_xmllang_tag_needs_both__see_httpswwww3orgTRi18nhtmltechlanglangvalues = Resource has a language, but the XHTML does not have an lang or an xml:lang tag (needs both - see https://www.w3.org/TR/i18n-html-tech-lang/#langvalues)
Resource_has_a_language_but_the_XHTML_does_not_have_a_lang_tag_needs_both_lang_and_xmllang__see_httpswwww3orgTRi18nhtmltechlanglangvalues = Resource has a language, but the XHTML does not have a lang tag (needs both lang and xml:lang - see https://www.w3.org/TR/i18n-html-tech-lang/#langvalues)
Resource_has_a_language__and_the_XHTML_has_a_lang__but_they_differ_ = Resource has a language ({0}), and the XHTML has a lang ({1}), but they differ
Resource_has_a_language_but_the_XHTML_does_not_have_an_xmllang_tag_needs_both_lang_and_xmllang__see_httpswwww3orgTRi18nhtmltechlanglangvalues = Resource has a language, but the XHTML does not have an xml:lang tag (needs both lang and xml:lang - see https://www.w3.org/TR/i18n-html-tech-lang/#langvalues)
Resource_has_a_language__and_the_XHTML_has_an_xmllang__but_they_differ_ = Resource has a language ({0}), and the XHTML has an xml:lang ({1}), but they differ
Duplicate_Security_Label_ = Duplicate Security Label {0}
Type_mismatch__SearchParameter__type_is__but_type_here_is_ = Type mismatch - SearchParameter '{0}' type is {1}, but type here is {2}
CodeSystem__has_a_all_system_value_set_of__but_it_is_an_expansion = CodeSystem {0} has a 'all system' value set of {1}, but it is an expansion
CodeSystem__has_a_all_system_value_set_of__but_doesnt_have_a_single_include = CodeSystem {0} has a 'all system' value set of {1}, but doesn't have a single include
CodeSystem__has_a_all_system_value_set_of__but_doesnt_have_a_matching_system_ = CodeSystem {0} has a 'all system' value set of {1}, but doesn't have a matching system ({2})
CodeSystem__has_a_all_system_value_set_of__but_the_include_has_extra_details = CodeSystem {0} has a 'all system' value set of {1}, but the include has extra details
No_questionnaire_is_identified_so_no_validation_can_be_performed_against_the_base_questionnaire = No questionnaire is identified, so no validation can be performed against the base questionnaire
The_questionnaire_could_not_be_resolved_so_no_validation_can_be_performed_against_the_base_questionnaire = The questionnaire'{0}' could not be resolved, so no validation can be performed against the base questionnaire
If_text_exists_it_must_match_the_questionnaire_definition_for_linkId_ = If text exists, it must match the questionnaire definition for linkId {0}
No_response_answer_found_for_required_item_ = No response answer found for required item {0}
Item_has_answer_2_even_though_it_is_not_enabled_ = Item has answer (2), even though it is not enabled {0}
Only_one_response_answer_item_with_this_linkId_allowed = Only one response answer item with this linkId allowed
Items_of_type_group_should_not_have_answers = Items of type group should not have answers
Definition_for_item__does_not_contain_a_type = Definition for item {0} does not contain a type
Items_not_of_type_DISPLAY_should_not_have_items__linkId_0 = Items not of type DISPLAY should not have items - linkId {0}
Only_one_response_item_with_this_linkId_allowed__ = Only one response item with this linkId allowed - {0}
No_LinkId_so_cant_be_validated = No LinkId, so can't be validated
LinkId_not_found_in_questionnaire = LinkId'{0}' not found in questionnaire
Structural_Error_items_are_out_of_order = Structural Error: items are out of order
Item_has_answer_even_though_it_is_not_enabled_item_id__ = Item has answer, even though it is not enabled (item id = '{0}')
Answer_value_must_be_of_type_ = Answer value must be of type {0}
Answer_value_must_be_one_of_the_types_ = Answer value must be one of the types {0}
The_value_provided__is_not_in_the_options_value_set_in_the_questionnaire = The value provided ({0}::{1}) is not in the options value set in the questionnaire
Error__validating_Coding_against_Questionnaire_Options = Error {0} validating Coding against Questionnaire Options
Cannot_validate_options_because_no_option_or_options_are_provided = Cannot validate options because no option or options are provided
Option_list_has_no_option_values_of_type_integer = Option list has no option values of type integer
The_integer__is_not_a_valid_option = The integer {0} is not a valid option
Cannot_validate_integer_answer_option_because_no_option_list_is_provided = Cannot validate integer answer option because no option list is provided
Option_list_has_no_option_values_of_type_date = Option list has no option values of type date
The_date__is_not_a_valid_option = The date {0} is not a valid option
Cannot_validate_date_answer_option_because_no_option_list_is_provided = Cannot validate date answer option because no option list is provided
Option_list_has_no_option_values_of_type_time = Option list has no option values of type time
The_time__is_not_a_valid_option = The time {0} is not a valid option
Cannot_validate_time_answer_option_because_no_option_list_is_provided = Cannot validate time answer option because no option list is provided
Option_list_has_no_option_values_of_type_string = Option list has no option values of type string
The_string__is_not_a_valid_option = The string {0} is not a valid option
Cannot_validate_string_answer_option_because_no_option_list_is_provided = Cannot validate string answer option because no option list is provided
Option_list_has_no_option_values_of_type_coding = Option list has no option values of type coding
The_code__is_not_a_valid_option = The code {0}::{1} is not a valid option
Cannot_validate_Coding_option_because_no_option_list_is_provided = Cannot validate Coding option because no option list is provided
Documents_or_Messages_must_contain_at_least_one_entry = Documents or Messages must contain at least one entry
No_resource_on_first_entry = No resource on first entry
The_canonical_URL__cannot_match_the_fullUrl__unless_the_resource_id__also_matches = The canonical URL ({0}) cannot match the fullUrl ({1}) unless the resource id ({2}) also matches
The_canonical_URL__cannot_match_the_fullUrl__unless_on_the_canonical_server_itself = The canonical URL ({0}) cannot match the fullUrl ({1}) unless on the canonical server itself
Resource_ID_does_not_match_the_ID_in_the_entry_full_URL__vs__ = Resource ID does not match the ID in the entry full URL ('{0}' vs '{1}')
Entry__isnt_reachable_by_traversing_from_first_Bundle_entry = Entry {0} isn't reachable by traversing from first Bundle entry
Cant_find__in_the_bundle_ = Can't find '{0}' in the bundle ({1})
The_type__is_not_valid__no_resources_allowed_here = The type '{0} is not valid - no resources allowed here
No_profile_found_for_contained_resource_of_type_ = No profile found for contained resource of type '{0}'
The_type__is_not_valid__must_be_ = The type '{0}' is not valid - must be {1}
The_type__is_not_valid__must_be_one_of_ = The type '{0}' is not valid - must be one of {1}
The_first_entry_in_a_document_must_be_a_composition = The first entry in a document must be a composition
The_type_of_element__is_not_known_which_is_illegal_Valid_types_at_this_point_are_ = The type of element {0} is not known, which is illegal. Valid types at this point are {1}
Extensionurl_is_required = Extension.url is required
Extensionurl_must_be_an_absolute_URL = Extension.url must be an absolute URL
Unrecognised_Content_ = Unrecognised Content {0}
Unknown_type_ = Unknown type {0}
Unknown_profile_ = Unknown profile {0}
Unable_to_find_matching_profile_among_choices_ = Unable to find matching profile among choices: {0}
Found_multiple_matching_profiles_among_choices_ = Found multiple matching profiles among choices: {0}
_Unable_to_check_minimum_required__due_to_lack_of_slicing_validation = {0}': Unable to check minimum required ({1}) due to lack of slicing validation
_minimum_required___but_only_found_ = {0}: minimum required = {1}, but only found {2}
_Unable_to_check_max_allowed__due_to_lack_of_slicing_validation = {0}: Unable to check max allowed ({1}) due to lack of slicing validation
_max_allowed___but_found_ = {0}: max allowed = {1}, but found {2}
This_element_does_not_match_any_known_slice_ = This element does not match any known slice {0}
This_element_is_not_allowed_by_the_profile_ = This element is not allowed by the profile {0}
As_specified_by_profile__Element__is_out_of_order = As specified by profile {0}, Element '{1}' is out of order
As_specified_by_profile__Element__is_out_of_order_in_ordered_slice = As specified by profile {0}, Element '{1}' is out of order in ordered slice
Profile__Element_matches_more_than_one_slice___ = Profile {0}, Element matches more than one slice - {1}, {2}
The_first_entry_in_a_message_must_be_a_MessageHeader = The first entry in a message must be a MessageHeader
No_definition_found_for_resource_type_ = No definition found for resource type '{0}'
Specified_profile_type_was__but_found_type_ = Specified profile type was '{0}', but found type '{1}'
Resource_requires_an_id_but_none_is_present = Resource requires an id, but none is present
Resource_has_an_id_but_none_is_allowed = Resource has an id, but none is allowed