package org.hl7.fhir.dstu2016may.validation;
import java.io.InputStream;
import java.util.List;
import org.hl7.fhir.dstu2016may.metamodel.Manager.FhirFormat;
import org.hl7.fhir.dstu2016may.model.StructureDefinition;
import com.google.gson.JsonObject;
/**
* Interface to the instance validator. This takes a resource, in one of many forms, and
* checks whether it is valid
*
* @author Grahame Grieve
*
*/
public interface IResourceValidator {
public enum BestPracticeWarningLevel {
Ignore,
Hint,
Warning,
Error
}
public enum CheckDisplayOption {
Ignore,
Check,
CheckCaseAndSpace,
CheckCase,
CheckSpace
}
enum IdStatus {
OPTIONAL, REQUIRED, PROHIBITED
}
/**
* how much to check displays for coded elements
* @return
*/
CheckDisplayOption getCheckDisplay();
void setCheckDisplay(CheckDisplayOption checkDisplay);
/**
* whether the resource must have an id or not (depends on context)
*
* @return
*/
IdStatus getResourceIdRule();
void setResourceIdRule(IdStatus resourceIdRule);
/**
* whether the validator should enforce best practice guidelines
* as defined by various HL7 committees
*
*/
BestPracticeWarningLevel getBasePracticeWarningLevel();
void setBestPracticeWarningLevel(BestPracticeWarningLevel value);
/**
* Validate suite
*
* you can validate one of the following representations of resources:
*
* stream - provide a format
* a native resource
* a metamodel resource
* a DOM element or Document
* a Json Object
*
*/
void validate(List<ValidationMessage> errors, InputStream stream, FhirFormat format) throws Exception;
void validate(List<ValidationMessage> errors, InputStream stream, FhirFormat format, String profile) throws Exception;
void validate(List<ValidationMessage> errors, InputStream stream, FhirFormat format, StructureDefinition profile) throws Exception;
void validate(List<ValidationMessage> errors, org.hl7.fhir.dstu2016may.model.Resource resource) throws Exception;
void validate(List<ValidationMessage> errors, org.hl7.fhir.dstu2016may.model.Resource resource, String profile) throws Exception;
void validate(List<ValidationMessage> errors, org.hl7.fhir.dstu2016may.model.Resource resource, StructureDefinition profile) throws Exception;
void validate(List<ValidationMessage> errors, org.hl7.fhir.dstu2016may.metamodel.Element element) throws Exception;
void validate(List<ValidationMessage> errors, org.hl7.fhir.dstu2016may.metamodel.Element element, String profile) throws Exception;
void validate(List<ValidationMessage> errors, org.hl7.fhir.dstu2016may.metamodel.Element element, StructureDefinition profile) throws Exception;
void validate(List<ValidationMessage> errors, org.w3c.dom.Element element) throws Exception;
void validate(List<ValidationMessage> errors, org.w3c.dom.Element element, String profile) throws Exception;
void validate(List<ValidationMessage> errors, org.w3c.dom.Element element, StructureDefinition profile) throws Exception;
void validate(List<ValidationMessage> errors, org.w3c.dom.Document document) throws Exception;
void validate(List<ValidationMessage> errors, org.w3c.dom.Document document, String profile) throws Exception;
void validate(List<ValidationMessage> errors, org.w3c.dom.Document document, StructureDefinition profile) throws Exception;
void validate(List<ValidationMessage> errors, JsonObject object) throws Exception;
void validate(List<ValidationMessage> errors, JsonObject object, String profile) throws Exception;
void validate(List<ValidationMessage> errors, JsonObject object, StructureDefinition profile) throws Exception;
}