From 8d462f3cda618f3d7851da24dd6c00510d38374b Mon Sep 17 00:00:00 2001
From: jamesagnew
* Important usage notes:
*
*
*
- * Performance Note: This method is cheap to call, and may be called once for every message being processed without incurring any performance penalty + * Performance Note: This method is cheap to call, and may be called once for every message being processed + * without incurring any performance penalty *
*/ public IParser newJsonParser() { @@ -188,12 +199,16 @@ public class FhirContext { } /** - * Instantiates a new client instance. This method requires an interface which is defined specifically for your use cases to contain methods for each of the RESTful operations you wish to - * implement (e.g. "read ImagingStudy", "search Patient by identifier", etc.). This interface must extend {@link IRestfulClient} (or commonly its sub-interface {@link IBasicClient}). See the RESTful Client documentation for more information on how to define this interface. + * Instantiates a new client instance. This method requires an interface which is defined specifically for your use + * cases to contain methods for each of the RESTful operations you wish to implement (e.g. "read ImagingStudy", + * "search Patient by identifier", etc.). This interface must extend {@link IRestfulClient} (or commonly its + * sub-interface {@link IBasicClient}). See the RESTful Client documentation for more + * information on how to define this interface. * *- * Performance Note: This method is cheap to call, and may be called once for every operation invocation without incurring any performance penalty + * Performance Note: This method is cheap to call, and may be called once for every operation invocation + * without incurring any performance penalty *
* * @param theClientType @@ -209,16 +224,18 @@ public class FhirContext { } /** - * Instantiates a new generic client. A generic client is able to perform any of the FHIR RESTful operations against a compliant server, but does not have methods defining the specific - * functionality required (as is the case with {@link #newRestfulClient(Class, String) non-generic clients}). + * Instantiates a new generic client. A generic client is able to perform any of the FHIR RESTful operations against + * a compliant server, but does not have methods defining the specific functionality required (as is the case with + * {@link #newRestfulClient(Class, String) non-generic clients}). * *- * Performance Note: This method is cheap to call, and may be called once for every operation invocation without incurring any performance penalty + * Performance Note: This method is cheap to call, and may be called once for every operation invocation + * without incurring any performance penalty *
* * @param theServerBase * The URL of the base for the restful FHIR server to connect to - * @return + * @return */ public IGenericClient newRestfulGenericClient(String theServerBase) { return getRestfulClientFactory().newGenericClient(theServerBase); @@ -228,11 +245,20 @@ public class FhirContext { return new FhirTerser(this); } + public ResourceValidator newValidator() { + return new ResourceValidator(this); + } + + public ViewGenerator newViewGenerator() { + return new ViewGenerator(this); + } + /** * Create and return a new XML parser. * *- * Performance Note: This method is cheap to call, and may be called once for every message being processed without incurring any performance penalty + * Performance Note: This method is cheap to call, and may be called once for every message being processed + * without incurring any performance penalty *
*/ public IParser newXmlParser() { @@ -298,8 +324,4 @@ public class FhirContext { return retVal; } - public ViewGenerator newViewGenerator() { - return new ViewGenerator(this); - } - } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeResourceDefinition.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeResourceDefinition.java index 74ff3894696..9e4db368fa0 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeResourceDefinition.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeResourceDefinition.java @@ -53,12 +53,13 @@ import ca.uhn.fhir.model.primitive.IdDt; public class RuntimeResourceDefinition extends BaseRuntimeElementCompositeDefinition
+ * If the definition has no parent, returns this
+ *
+ * To obtain a resource validator, call {@link FhirContext#newValidator()} + *
+ */ +public class ResourceValidator { + + private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(ResourceValidator.class); + + private FhirContext myContext; + private List+ This schema document describes the XML namespace, in a form + suitable for import by other schema documents. +
++ See + http://www.w3.org/XML/1998/namespace.html and + + http://www.w3.org/TR/REC-xml for information + about this namespace. +
++ Note that local names in this namespace are intended to be + defined only by the World Wide Web Consortium or its subgroups. + The names currently defined in this namespace are listed below. + They should not be used with conflicting semantics by any Working + Group, specification, or document instance. +
++ See further below in this document for more information about how to refer to this schema document from your own + XSD schema documents and about the + namespace-versioning policy governing this schema document. +
++ denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification.
++ Attempting to install the relevant ISO 2- and 3-letter + codes as the enumerated possible values is probably never + going to be a realistic possibility. +
++ See BCP 47 at + http://www.rfc-editor.org/rfc/bcp/bcp47.txt + and the IANA language subtag registry at + + http://www.iana.org/assignments/language-subtag-registry + for further information. +
++ The union allows for the 'un-declaration' of xml:lang with + the empty string. +
++ denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification.
++ denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification.
++ See http://www.w3.org/TR/xmlbase/ + for information about this attribute. +
++ denotes an attribute whose value + should be interpreted as if declared to be of type ID. + This name is reserved by virtue of its definition in the + xml:id specification.
++ See http://www.w3.org/TR/xml-id/ + for information about this attribute. +
++ denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: +
++++ In appreciation for his vision, leadership and + dedication the W3C XML Plenary on this 10th day of + February, 2000, reserves for Jon Bosak in perpetuity + the XML name "xml:Father". +
+
+ This schema defines attributes and an attribute group suitable
+ for use by schemas wishing to allow xml:base
,
+ xml:lang
, xml:space
or
+ xml:id
attributes on elements they define.
+
+ To enable this, such a schema must import this schema for + the XML namespace, e.g. as follows: +
++ <schema . . .> + . . . + <import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2001/xml.xsd"/> ++
+ or +
++ <import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2009/01/xml.xsd"/> ++
+ Subsequently, qualified reference to any of the attributes or the + group defined below will have the desired effect, e.g. +
++ <type . . .> + . . . + <attributeGroup ref="xml:specialAttrs"/> ++
+ will define a type which will schema-validate an instance element + with any of those attributes. +
++ In keeping with the XML Schema WG's standard versioning + policy, this schema document will persist at + + http://www.w3.org/2009/01/xml.xsd. +
++ At the date of issue it can also be found at + + http://www.w3.org/2001/xml.xsd. +
++ The schema document at that URI may however change in the future, + in order to remain compatible with the latest version of XML + Schema itself, or with the XML namespace itself. In other words, + if the XML Schema or XML namespaces change, the version of this + document at + http://www.w3.org/2001/xml.xsd + + will change accordingly; the version at + + http://www.w3.org/2009/01/xml.xsd + + will not change. +
++ Previous dated (and unchanging) versions of this schema + document are at: +
+ ++ HAPI provides a built-in and configurable mechanism for validating resources. + This mechanism is called the Resource Validator. +
+ ++ FHIR resource definitions are distributed with a set of XML schema files (XDS) + as well as a set of XML Schematron (SCH) files. These two sets of files are + complimentary to each other, meaning that in order to claim compliance to the + FHIR specification, your resources must validate against both sets. +
++ The two sets of files are included with HAPI, and it uses them to perform + validation. +
+ ++ In order to use HAPI's Schematron support, a libaray called + Phloc-Schematron + is used, so this library must be added to your classpath (or Maven pom file). + See Downloads for more information. +
+ ++ To validate a resource instance, a new validator instance is requested + from the FHIR Context. This validator is then applied against + a specific resource instance, as shown in the example below. +
+