Work on #125 - Support _summary and _elements

This commit is contained in:
jamesagnew 2015-08-23 13:29:57 -04:00
parent 07d654c97b
commit 44ac164eca
889 changed files with 31117 additions and 37462 deletions

View File

@ -30,39 +30,14 @@ public abstract class BaseRuntimeChildDefinition {
public abstract IAccessor getAccessor();
@Override
public String toString() {
return getClass().getSimpleName() + "[" + getElementName() + "]";
}
public abstract BaseRuntimeElementDefinition<?> getChildByName(String theName);
public abstract BaseRuntimeElementDefinition<?> getChildElementDefinitionByDatatype(Class<? extends IBase> theType);
public abstract String getChildNameByDatatype(Class<? extends IBase> theDatatype);
public abstract IMutator getMutator();
public abstract Set<String> getValidChildNames();
abstract void sealAndInitialize(FhirContext theContext, Map<Class<? extends IBase>, BaseRuntimeElementDefinition<?>> theClassToElementDefinitions);
public interface IAccessor {
List<IBase> getValues(Object theTarget);
}
public abstract String getElementName();
public abstract int getMax();
public abstract int getMin();
public interface IMutator {
void setValue(Object theTarget, IBase theValue);
void addValue(Object theTarget, IBase theValue);
}
public String getExtensionUrl() {
return null;
}
@ -71,6 +46,33 @@ public abstract class BaseRuntimeChildDefinition {
return null;
}
public abstract int getMax();
public abstract int getMin();
public abstract IMutator getMutator();
public abstract Set<String> getValidChildNames();
public abstract boolean isSummary();
abstract void sealAndInitialize(FhirContext theContext, Map<Class<? extends IBase>, BaseRuntimeElementDefinition<?>> theClassToElementDefinitions);
@Override
public String toString() {
return getClass().getSimpleName() + "[" + getElementName() + "]";
}
public interface IAccessor {
List<IBase> getValues(Object theTarget);
}
public interface IMutator {
void addValue(Object theTarget, IBase theValue);
void setValue(Object theTarget, IBase theValue);
}
// public String getExtensionUrl() {
// return null;
// }

View File

@ -44,8 +44,10 @@ public abstract class BaseRuntimeDeclaredChildDefinition extends BaseRuntimeChil
private final String myFormalDefinition;
private final int myMax;
private final int myMin;
private boolean myModifier;
private final IMutator myMutator;
private final String myShortDefinition;
private boolean mySummary;
private Boolean ourUseMethodAccessors;
BaseRuntimeDeclaredChildDefinition(Field theField, Child theChildAnnotation, Description theDescriptionAnnotation, String theElementName) throws ConfigurationException {
@ -66,6 +68,8 @@ public abstract class BaseRuntimeDeclaredChildDefinition extends BaseRuntimeChil
myField = theField;
myMin = theChildAnnotation.min();
myMax = theChildAnnotation.max();
mySummary = theChildAnnotation.summary();
myModifier = theChildAnnotation.modifier();
myElementName = theElementName;
if (theDescriptionAnnotation != null) {
myShortDefinition = theDescriptionAnnotation.shortDefinition();
@ -186,6 +190,14 @@ public abstract class BaseRuntimeDeclaredChildDefinition extends BaseRuntimeChil
return getChildByName(getValidChildNames().iterator().next());
}
public boolean isModifier() {
return myModifier;
}
public boolean isSummary() {
return mySummary;
}
private static Method findMutator(Class<?> theDeclaringClass, Class<?> theTargetReturnType, String theElementName) {
String methodName = "set" + WordUtils.capitalize(theElementName);
try {

View File

@ -47,6 +47,25 @@ public class RuntimeChildUndeclaredExtensionDefinition extends BaseRuntimeChildD
// nothing
}
private void addReferenceBinding(FhirContext theContext, Map<Class<? extends IBase>, BaseRuntimeElementDefinition<?>> theClassToElementDefinitions, String value) {
List<Class<? extends IBaseResource>> types = new ArrayList<Class<? extends IBaseResource>>();
types.add(IBaseResource.class);
RuntimeResourceReferenceDefinition def = new RuntimeResourceReferenceDefinition(value, types, false);
def.sealAndInitialize(theContext, theClassToElementDefinitions);
myAttributeNameToDefinition.put(value, def);
/*
* Resource reference - The correct name is 'valueReference' in DSTU2 and 'valueResource' in DSTU1
*/
boolean dstu1 = (theContext.getVersion().getVersion().equals(FhirVersionEnum.DSTU1));
if ((dstu1 && (value != VALUE_REFERENCE)) || (!dstu1 && (value != VALUE_RESOURCE))) {
myDatatypeToAttributeName.put(theContext.getVersion().getResourceReferenceType(), value);
myDatatypeToDefinition.put(BaseResourceReferenceDt.class, def);
myDatatypeToDefinition.put(theContext.getVersion().getResourceReferenceType(), def);
}
}
@Override
public IAccessor getAccessor() {
return new IAccessor() {
@ -123,6 +142,11 @@ public class RuntimeChildUndeclaredExtensionDefinition extends BaseRuntimeChildD
return myAttributeNameToDefinition.keySet();
}
@Override
public boolean isSummary() {
return false;
}
@Override
void sealAndInitialize(FhirContext theContext, Map<Class<? extends IBase>, BaseRuntimeElementDefinition<?>> theClassToElementDefinitions) {
Map<String, BaseRuntimeElementDefinition<?>> datatypeAttributeNameToDefinition = new HashMap<String, BaseRuntimeElementDefinition<?>>();
@ -187,25 +211,6 @@ public class RuntimeChildUndeclaredExtensionDefinition extends BaseRuntimeChildD
addReferenceBinding(theContext, theClassToElementDefinitions, VALUE_REFERENCE);
}
private void addReferenceBinding(FhirContext theContext, Map<Class<? extends IBase>, BaseRuntimeElementDefinition<?>> theClassToElementDefinitions, String value) {
List<Class<? extends IBaseResource>> types = new ArrayList<Class<? extends IBaseResource>>();
types.add(IBaseResource.class);
RuntimeResourceReferenceDefinition def = new RuntimeResourceReferenceDefinition(value, types, false);
def.sealAndInitialize(theContext, theClassToElementDefinitions);
myAttributeNameToDefinition.put(value, def);
/*
* Resource reference - The correct name is 'valueReference' in DSTU2 and 'valueResource' in DSTU1
*/
boolean dstu1 = (theContext.getVersion().getVersion().equals(FhirVersionEnum.DSTU1));
if ((dstu1 && (value != VALUE_REFERENCE)) || (!dstu1 && (value != VALUE_RESOURCE))) {
myDatatypeToAttributeName.put(theContext.getVersion().getResourceReferenceType(), value);
myDatatypeToDefinition.put(BaseResourceReferenceDt.class, def);
myDatatypeToDefinition.put(theContext.getVersion().getResourceReferenceType(), def);
}
}
public static String createExtensionChildName(BaseRuntimeElementDefinition<?> next) {
String attrName = "value" + WordUtils.capitalize(next.getName());
return attrName;

View File

@ -31,7 +31,8 @@ import java.util.Set;
import org.hl7.fhir.instance.model.api.IBase;
/**
* A collection of tags present on a single resource. TagList is backed by a {@link LinkedHashSet}, so the order of added tags will be consistent, but duplicates will not be preserved.
* A collection of tags present on a single resource. TagList is backed by a {@link LinkedHashSet}, so the order of
* added tags will be consistent, but duplicates will not be preserved.
*
* <p>
* <b>Thread safety:</b> This class is not thread safe
@ -54,6 +55,17 @@ public class TagList implements Set<Tag>, Serializable, IBase {
super();
}
/**
* Copy constructor
*/
public TagList(TagList theTags) {
if (theTags != null) {
for (Tag next : theTags) {
add(next);
}
}
}
@Override
public String toString() {
StringBuilder b = new StringBuilder();
@ -77,7 +89,8 @@ public class TagList implements Set<Tag>, Serializable, IBase {
}
/**
* @deprecated Tags wil become immutable in a future release of HAPI, so {@link #addTag(String, String, String)} should be used instead
* @deprecated Tags wil become immutable in a future release of HAPI, so {@link #addTag(String, String, String)}
* should be used instead
*/
@Deprecated
public Tag addTag() {
@ -89,10 +102,11 @@ public class TagList implements Set<Tag>, Serializable, IBase {
* Add a new tag instance
*
* @param theScheme
* The tag scheme
* The tag scheme
* @param theTerm
* The tag term
* @return Returns the newly created tag instance. Note that the tag is added to the list by this method, so you generally do not need to interact directly with the added tag.
* The tag term
* @return Returns the newly created tag instance. Note that the tag is added to the list by this method, so you
* generally do not need to interact directly with the added tag.
*/
public Tag addTag(String theScheme, String theTerm) {
Tag retVal = new Tag(theScheme, theTerm);
@ -105,12 +119,13 @@ public class TagList implements Set<Tag>, Serializable, IBase {
* Add a new tag instance
*
* @param theScheme
* The tag scheme
* The tag scheme
* @param theTerm
* The tag term
* The tag term
* @param theLabel
* The tag label
* @return Returns the newly created tag instance. Note that the tag is added to the list by this method, so you generally do not need to interact directly with the added tag.
* The tag label
* @return Returns the newly created tag instance. Note that the tag is added to the list by this method, so you
* generally do not need to interact directly with the added tag.
*/
public Tag addTag(String theScheme, String theTerm, String theLabel) {
Tag retVal = new Tag(theScheme, theTerm, theLabel);
@ -153,7 +168,8 @@ public class TagList implements Set<Tag>, Serializable, IBase {
}
/**
* Returns the tag at a given index - Note that the TagList is backed by a {@link LinkedHashSet}, so the order of added tags will be consistent, but duplicates will not be preserved.
* Returns the tag at a given index - Note that the TagList is backed by a {@link LinkedHashSet}, so the order of
* added tags will be consistent, but duplicates will not be preserved.
*/
public Tag get(int theIndex) {
if (myOrderedTags == null) {

View File

@ -102,6 +102,16 @@ public @interface Child {
// */
// String replaces() default "";
/**
* Is this element a modifier?
*/
boolean modifier() default false;
/**
* Should this element be included in the summary view
*/
boolean summary() default false;
/**
* For children which accept an {@link Enumeration} as the type, this
* field indicates the type to use for the enum factory

View File

@ -32,6 +32,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@ -40,6 +41,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate;
import org.hl7.fhir.instance.model.api.IAnyResource;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseMetaType;
import org.hl7.fhir.instance.model.api.IBaseReference;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.IDomainResource;
@ -55,22 +57,31 @@ import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.FhirVersionEnum;
import ca.uhn.fhir.context.RuntimeChildChoiceDefinition;
import ca.uhn.fhir.context.RuntimeChildContainedResources;
import ca.uhn.fhir.context.RuntimeChildNarrativeDefinition;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.model.api.Bundle;
import ca.uhn.fhir.model.api.BundleEntry;
import ca.uhn.fhir.model.api.IResource;
import ca.uhn.fhir.model.api.ResourceMetadataKeyEnum;
import ca.uhn.fhir.model.api.Tag;
import ca.uhn.fhir.model.api.TagList;
import ca.uhn.fhir.model.primitive.IdDt;
import ca.uhn.fhir.rest.server.Constants;
public abstract class BaseParser implements IParser {
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(BaseParser.class);
private ContainedResources myContainedResources;
private FhirContext myContext;
private Set<String> myEncodeElements;
private Set<String> myEncodeElementsAppliesToResourceTypes;
private boolean myEncodeElementsIncludesStars;
private IParserErrorHandler myErrorHandler;
private boolean myOmitResourceId;
private String myServerBaseUrl;
private boolean myStripVersionsFromReferences = true;
private boolean mySummaryMode;
private boolean mySuppressNarratives;
/**
@ -83,6 +94,89 @@ public abstract class BaseParser implements IParser {
myErrorHandler = theParserErrorHandler;
}
protected Iterable<CompositeChildElement> compositeChildIterator(final List<? extends BaseRuntimeChildDefinition> theChildren, final boolean theContainedResource, final CompositeChildElement theParent) {
return new Iterable<BaseParser.CompositeChildElement>() {
@Override
public Iterator<CompositeChildElement> iterator() {
return new Iterator<CompositeChildElement>() {
private Iterator<? extends BaseRuntimeChildDefinition> myChildrenIter;
private Boolean myHasNext = null;
private CompositeChildElement myNext;
/**
* Constructor
*/
{
myChildrenIter = theChildren.iterator();
}
@Override
public boolean hasNext() {
if (myHasNext != null) {
return myHasNext;
}
myNext = null;
do {
if (myChildrenIter.hasNext() == false) {
myHasNext = Boolean.FALSE;
return false;
}
myNext = new CompositeChildElement(theParent, myChildrenIter.next());
/*
* There are lots of reasons we might skip encoding a particular child
*/
if (myNext.getDef().getElementName().equals("extension") || myNext.getDef().getElementName().equals("modifierExtension")) {
myNext = null;
} else if (myNext.getDef().getElementName().equals("id")) {
myNext = null;
} else if (myNext.getDef() instanceof RuntimeChildNarrativeDefinition) {
if (isSuppressNarratives() || isSummaryMode()) {
myNext = null;
} else if (theContainedResource) {
myNext = null;
}
} else if (myNext.getDef() instanceof RuntimeChildContainedResources) {
if (theContainedResource) {
myNext = null;
}
} else if (isSummaryMode() && !myNext.getDef().isSummary()) {
myNext = null;
} else if (!myNext.shouldBeEncoded()) {
myNext = null;
}
} while (myNext == null);
myHasNext = true;
return true;
}
@Override
public CompositeChildElement next() {
if (myHasNext == null) {
if (!hasNext()) {
throw new IllegalStateException();
}
}
CompositeChildElement retVal = myNext;
myNext = null;
myHasNext = null;
return retVal;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
}
};
}
private void containResourcesForEncoding(ContainedResources theContained, IBaseResource theResource, IBaseResource theTarget) {
Set<String> allIds = new HashSet<String>();
Map<String, IBaseResource> existingIdToContainedResource = null;
@ -279,20 +373,49 @@ public abstract class BaseParser implements IParser {
return myContainedResources;
}
/**
* See {@link #setEncodeElements(Set)}
*/
@Override
public Set<String> getEncodeElements() {
return myEncodeElements;
}
/**
* See {@link #setEncodeElementsAppliesToResourceTypes(Set)}
*/
@Override
public Set<String> getEncodeElementsAppliesToResourceTypes() {
return myEncodeElementsAppliesToResourceTypes;
}
protected IParserErrorHandler getErrorHandler() {
return myErrorHandler;
}
protected TagList getMetaTagsForEncoding(IResource theIResource) {
TagList tags = ResourceMetadataKeyEnum.TAG_LIST.get(theIResource);
if (shouldAddSubsettedTag()) {
tags = new TagList(tags);
tags.add(new Tag(Constants.TAG_SUBSETTED_SYSTEM, Constants.TAG_SUBSETTED_CODE, "Resource encoded in summary mode"));
}
return tags;
}
/**
* If set to <code>true</code> (default is <code>false</code>), narratives will not be included in the encoded values.
* If set to <code>true</code> (default is <code>false</code>), narratives will not be included in the encoded
* values.
*
* @deprecated Use {@link #isSuppressNarratives()}
*/
@Deprecated
public boolean getSuppressNarratives() {
return mySuppressNarratives;
}
protected boolean isChildContained(BaseRuntimeElementDefinition<?> childDef, boolean theIncludedResource) {
return (childDef.getChildType() == ChildTypeEnum.CONTAINED_RESOURCES || childDef.getChildType() == ChildTypeEnum.CONTAINED_RESOURCE_LIST) && getContainedResources().isEmpty() == false
&& theIncludedResource == false;
return (childDef.getChildType() == ChildTypeEnum.CONTAINED_RESOURCES || childDef.getChildType() == ChildTypeEnum.CONTAINED_RESOURCE_LIST) && getContainedResources().isEmpty() == false && theIncludedResource == false;
}
@Override
@ -305,6 +428,21 @@ public abstract class BaseParser implements IParser {
return myStripVersionsFromReferences;
}
@Override
public boolean isSummaryMode() {
return mySummaryMode;
}
/**
* If set to <code>true</code> (default is <code>false</code>), narratives will not be included in the encoded
* values.
*
* @since 1.2
*/
public boolean isSuppressNarratives() {
return mySuppressNarratives;
}
@Override
public Bundle parseBundle(Reader theReader) {
if (myContext.getVersion().getVersion() == FhirVersionEnum.DSTU2_HL7ORG) {
@ -326,7 +464,6 @@ public abstract class BaseParser implements IParser {
RuntimeResourceDefinition def = myContext.getResourceDefinition(retVal);
if ("Bundle".equals(def.getName())) {
List<IBase> base = null;
BaseRuntimeChildDefinition entryChild = def.getChildByName("entry");
BaseRuntimeElementCompositeDefinition<?> entryDef = (BaseRuntimeElementCompositeDefinition<?>) entryChild.getChildByName("entry");
List<IBase> entries = entryChild.getAccessor().getValues(retVal);
@ -336,7 +473,8 @@ public abstract class BaseParser implements IParser {
/**
* If Bundle.entry.fullUrl is populated, set the resource ID to that
*/
// TODO: should emit a warning and maybe notify the error handler if the resource ID doesn't match the fullUrl idPart
// TODO: should emit a warning and maybe notify the error handler if the resource ID doesn't match the
// fullUrl idPart
BaseRuntimeChildDefinition fullUrlChild = entryDef.getChildByName("fullUrl");
if (fullUrlChild == null) {
continue; // TODO: remove this once the data model in tinder plugin catches up to 1.2
@ -383,14 +521,88 @@ public abstract class BaseParser implements IParser {
return parseTagList(new StringReader(theString));
}
@SuppressWarnings("cast")
protected List<? extends IBase> preProcessValues(BaseRuntimeChildDefinition metaChildUncast, List<? extends IBase> theValues) {
if (myContext.getVersion().getVersion().equals(FhirVersionEnum.DSTU2_HL7ORG)) {
if (shouldAddSubsettedTag()) {
BaseRuntimeElementDefinition<?> childByName = metaChildUncast.getChildByName("meta");
if (childByName instanceof BaseRuntimeElementCompositeDefinition<?>) {
BaseRuntimeElementCompositeDefinition<?> metaChildUncast1 = (BaseRuntimeElementCompositeDefinition<?>) childByName;
if (metaChildUncast1 != null) {
if (IBaseMetaType.class.isAssignableFrom(metaChildUncast1.getImplementingClass())) {
IBaseMetaType metaValue;
if (theValues != null && theValues.size() >= 1) {
metaValue = (IBaseMetaType) theValues.iterator().next();
metaValue = metaValue.copy();
} else {
metaValue = (IBaseMetaType) metaChildUncast1.newInstance();
}
ArrayList<IBase> retVal = new ArrayList<IBase>();
retVal.add(metaValue);
BaseRuntimeChildDefinition tagChild = metaChildUncast1.getChildByName("tag");
BaseRuntimeElementCompositeDefinition<?> codingDef = (BaseRuntimeElementCompositeDefinition<?>) ((BaseRuntimeElementCompositeDefinition<?>) tagChild.getChildByName("tag"));
IBase coding = codingDef.newInstance();
tagChild.getMutator().addValue(metaValue, coding);
BaseRuntimeChildDefinition systemChild = codingDef.getChildByName("system");
IPrimitiveType<?> system = (IPrimitiveType<?>) myContext.getElementDefinition("uri").newInstance();
system.setValueAsString(Constants.TAG_SUBSETTED_SYSTEM);
systemChild.getMutator().addValue(coding, system);
BaseRuntimeChildDefinition codeChild = codingDef.getChildByName("code");
IPrimitiveType<?> code = (IPrimitiveType<?>) myContext.getElementDefinition("code").newInstance();
code.setValueAsString(Constants.TAG_SUBSETTED_CODE);
codeChild.getMutator().addValue(coding, code);
BaseRuntimeChildDefinition displayChild = codingDef.getChildByName("display");
IPrimitiveType<?> display = (IPrimitiveType<?>) myContext.getElementDefinition("string").newInstance();
display.setValueAsString("Resource encoded in summary mode");
displayChild.getMutator().addValue(coding, display);
return retVal;
}
}
}
}
}
return theValues;
}
@Override
public BaseParser setOmitResourceId(boolean theOmitResourceId) {
public void setEncodeElements(Set<String> theEncodeElements) {
myEncodeElementsIncludesStars = false;
if (theEncodeElements == null || theEncodeElements.isEmpty()) {
myEncodeElements = null;
} else {
myEncodeElements = theEncodeElements;
for (String next : theEncodeElements) {
if (next.startsWith("*.")) {
myEncodeElementsIncludesStars = true;
}
}
}
}
@Override
public void setEncodeElementsAppliesToResourceTypes(Set<String> theEncodeElementsAppliesToResourceTypes) {
if (theEncodeElementsAppliesToResourceTypes == null || theEncodeElementsAppliesToResourceTypes.isEmpty()) {
myEncodeElementsAppliesToResourceTypes = null;
} else {
myEncodeElementsAppliesToResourceTypes = theEncodeElementsAppliesToResourceTypes;
}
}
@Override
public IParser setOmitResourceId(boolean theOmitResourceId) {
myOmitResourceId = theOmitResourceId;
return this;
}
@Override
public BaseParser setParserErrorHandler(IParserErrorHandler theErrorHandler) {
public IParser setParserErrorHandler(IParserErrorHandler theErrorHandler) {
Validate.notNull(theErrorHandler, "theErrorHandler must not be null");
myErrorHandler = theErrorHandler;
return this;
@ -408,12 +620,22 @@ public abstract class BaseParser implements IParser {
return this;
}
@Override
public IParser setSummaryMode(boolean theSummaryMode) {
mySummaryMode = theSummaryMode;
return this;
}
@Override
public IParser setSuppressNarratives(boolean theSuppressNarratives) {
mySuppressNarratives = theSuppressNarratives;
return this;
}
protected boolean shouldAddSubsettedTag() {
return isSummaryMode() || isSuppressNarratives();
}
protected void throwExceptionForUnknownChildType(BaseRuntimeChildDefinition nextChild, Class<? extends IBase> theType) {
if (nextChild instanceof BaseRuntimeDeclaredChildDefinition) {
StringBuilder b = new StringBuilder();
@ -438,6 +660,107 @@ public abstract class BaseParser implements IParser {
return securityLabels;
}
protected class CompositeChildElement {
private final BaseRuntimeChildDefinition myDef;
private final CompositeChildElement myParent;
private final RuntimeResourceDefinition myResDef;
public CompositeChildElement(CompositeChildElement theParent, BaseRuntimeChildDefinition theDef) {
myDef = theDef;
myParent = theParent;
myResDef = null;
if (ourLog.isTraceEnabled()) {
if (theParent != null) {
StringBuilder path = theParent.buildPath();
if (path != null) {
path.append('.');
path.append(myDef.getElementName());
ourLog.trace(" * Next path: {}", path.toString());
}
}
}
}
public CompositeChildElement(RuntimeResourceDefinition theResDef) {
myResDef = theResDef;
myDef = null;
myParent = null;
}
private StringBuilder buildPath() {
if (myResDef != null) {
StringBuilder b = new StringBuilder();
b.append(myResDef.getName());
return b;
} else {
StringBuilder b = myParent.buildPath();
if (b != null && myDef != null) {
b.append('.');
b.append(myDef.getElementName());
}
return b;
}
}
private boolean checkIfParentShouldBeEncodedAndBuildPath(StringBuilder theB, boolean theStarPass) {
if (myResDef != null) {
if (myEncodeElementsAppliesToResourceTypes != null) {
if (!myEncodeElementsAppliesToResourceTypes.contains(myResDef.getName())) {
return true;
}
}
if (theStarPass) {
theB.append('*');
} else {
theB.append(myResDef.getName());
}
if (myEncodeElements.contains(theB.toString())) {
return true;
} else {
return false;
}
} else if (myParent != null) {
if (myParent.checkIfParentShouldBeEncodedAndBuildPath(theB, theStarPass)) {
return true;
}
if (myDef != null) {
theB.append('.');
theB.append(myDef.getElementName());
return myEncodeElements.contains(theB.toString());
}
}
return true;
}
public BaseRuntimeChildDefinition getDef() {
return myDef;
}
public CompositeChildElement getParent() {
return myParent;
}
public RuntimeResourceDefinition getResDef() {
return myResDef;
}
public boolean shouldBeEncoded() {
if (myEncodeElements == null) {
return true;
}
boolean retVal = checkIfParentShouldBeEncodedAndBuildPath(new StringBuilder(), false);
if (retVal == false && myEncodeElementsIncludesStars) {
retVal = checkIfParentShouldBeEncodedAndBuildPath(new StringBuilder(), true);
}
return retVal;
}
}
static class ContainedResources {
private long myNextContainedId = 1;

View File

@ -23,6 +23,7 @@ package ca.uhn.fhir.parser;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.util.Set;
import org.hl7.fhir.instance.model.api.IAnyResource;
import org.hl7.fhir.instance.model.api.IBaseResource;
@ -33,20 +34,15 @@ import ca.uhn.fhir.model.api.IResource;
import ca.uhn.fhir.model.api.TagList;
/**
* A parser, which can be used to convert between HAPI FHIR model/structure objects, and
* their respective String wire formats, in either XML or JSON.
* A parser, which can be used to convert between HAPI FHIR model/structure objects, and their respective String wire
* formats, in either XML or JSON.
* <p>
* Thread safety: <b>Parsers are not guaranteed to be thread safe</b>. Create a new parser instance for every thread or every message being parsed/encoded.
* Thread safety: <b>Parsers are not guaranteed to be thread safe</b>. Create a new parser instance for every thread or
* every message being parsed/encoded.
* </p>
*/
public interface IParser {
/**
* Registers an error handler which will be invoked when any parse errors are found
* @param theErrorHandler The error handler to set. Must not be null.
*/
IParser setParserErrorHandler(IParserErrorHandler theErrorHandler);
String encodeBundleToString(Bundle theBundle) throws DataFormatException;
void encodeBundleToWriter(Bundle theBundle, Writer theWriter) throws IOException, DataFormatException;
@ -56,41 +52,80 @@ public interface IParser {
void encodeResourceToWriter(IBaseResource theResource, Writer theWriter) throws IOException, DataFormatException;
/**
* Encodes a tag list, as defined in the <a href="http://hl7.org/implement/standards/fhir/http.html#tags">FHIR Specification</a>.
* Encodes a tag list, as defined in the <a href="http://hl7.org/implement/standards/fhir/http.html#tags">FHIR
* Specification</a>.
*
* @param theTagList
* The tag list to encode. Must not be null.
* The tag list to encode. Must not be null.
* @return An encoded tag list
*/
String encodeTagListToString(TagList theTagList);
/**
* Encodes a tag list, as defined in the <a href="http://hl7.org/implement/standards/fhir/http.html#tags">FHIR Specification</a>.
* Encodes a tag list, as defined in the <a href="http://hl7.org/implement/standards/fhir/http.html#tags">FHIR
* Specification</a>.
*
* @param theTagList
* The tag list to encode. Must not be null.
* The tag list to encode. Must not be null.
* @param theWriter
* The writer to encode to
* The writer to encode to
*/
void encodeTagListToWriter(TagList theTagList, Writer theWriter) throws IOException;
/**
* Parse a DSTU1 style Atom Bundle. Note that as of DSTU2, Bundle is a resource so you
* should use {@link #parseResource(Class, Reader)} with the Bundle class found in the
* See {@link #setEncodeElements(Set)}
*/
Set<String> getEncodeElements();
/**
* See {@link #setEncodeElementsAppliesToResourceTypes(Set)}
*/
Set<String> getEncodeElementsAppliesToResourceTypes();
/**
* Returns true if resource IDs should be omitted
*
* @see #setOmitResourceId(boolean)
* @since 1.1
*/
boolean isOmitResourceId();
/**
* If set to <code>true<code> (which is the default), resource references containing a version
* will have the version removed when the resource is encoded. This is generally good behaviour because
* in most situations, references from one resource to another should be to the resource by ID, not
* by ID and version. In some cases though, it may be desirable to preserve the version in resource
* links. In that case, this value should be set to <code>false</code>.
*
* @return Returns the parser instance's configuration setting for stripping versions from resource references when
* encoding. Default is <code>true</code>.
*/
boolean isStripVersionsFromReferences();
/**
* Is the parser in "summary mode"? See {@link #setSummaryMode(boolean)} for information
*
* @see {@link #setSummaryMode(boolean)} for information
*/
boolean isSummaryMode();
/**
* Parse a DSTU1 style Atom Bundle. Note that as of DSTU2, Bundle is a resource so you should use
* {@link #parseResource(Class, Reader)} with the Bundle class found in the
* <code>ca.uhn.hapi.fhir.model.[version].resource</code> package instead.
*/
<T extends IBaseResource> Bundle parseBundle(Class<T> theResourceType, Reader theReader);
/**
* Parse a DSTU1 style Atom Bundle. Note that as of DSTU2, Bundle is a resource so you
* should use {@link #parseResource(Class, Reader)} with the Bundle class found in the
* Parse a DSTU1 style Atom Bundle. Note that as of DSTU2, Bundle is a resource so you should use
* {@link #parseResource(Class, Reader)} with the Bundle class found in the
* <code>ca.uhn.hapi.fhir.model.[version].resource</code> package instead.
*/
Bundle parseBundle(Reader theReader);
/**
* Parse a DSTU1 style Atom Bundle. Note that as of DSTU2, Bundle is a resource so you
* should use {@link #parseResource(Class, String)} with the Bundle class found in the
* Parse a DSTU1 style Atom Bundle. Note that as of DSTU2, Bundle is a resource so you should use
* {@link #parseResource(Class, String)} with the Bundle class found in the
* <code>ca.uhn.hapi.fhir.model.[version].resource</code> package instead.
*/
Bundle parseBundle(String theMessageString) throws ConfigurationException, DataFormatException;
@ -99,12 +134,13 @@ public interface IParser {
* Parses a resource
*
* @param theResourceType
* The resource type to use. This can be used to explicitly specify a class which extends a built-in type (e.g. a custom type extending the default Patient class)
* The resource type to use. This can be used to explicitly specify a class which extends a built-in type
* (e.g. a custom type extending the default Patient class)
* @param theReader
* The reader to parse input from. Note that the Reader will not be closed by the parser upon completion.
* The reader to parse input from. Note that the Reader will not be closed by the parser upon completion.
* @return A parsed resource
* @throws DataFormatException
* If the resource can not be parsed because the data is not recognized or invalid for any reason
* If the resource can not be parsed because the data is not recognized or invalid for any reason
*/
<T extends IBaseResource> T parseResource(Class<T> theResourceType, Reader theReader) throws DataFormatException;
@ -112,24 +148,25 @@ public interface IParser {
* Parses a resource
*
* @param theResourceType
* The resource type to use. This can be used to explicitly specify a class which extends a built-in type (e.g. a custom type extending the default Patient class)
* The resource type to use. This can be used to explicitly specify a class which extends a built-in type
* (e.g. a custom type extending the default Patient class)
* @param theString
* The string to parse
* The string to parse
* @return A parsed resource
* @throws DataFormatException
* If the resource can not be parsed because the data is not recognized or invalid for any reason
* If the resource can not be parsed because the data is not recognized or invalid for any reason
*/
<T extends IBaseResource> T parseResource(Class<T> theResourceType, String theString) throws DataFormatException;
/**
* Parses a resource
* Parses a resource
*
* @param theReader
* The reader to parse input from. Note that the Reader will not be closed by the parser upon completion.
* @return A parsed resource. Note that the returned object will be an instance of {@link IResource} or {@link IAnyResource}
* depending on the specific FhirContext which created this parser.
* The reader to parse input from. Note that the Reader will not be closed by the parser upon completion.
* @return A parsed resource. Note that the returned object will be an instance of {@link IResource} or
* {@link IAnyResource} depending on the specific FhirContext which created this parser.
* @throws DataFormatException
* If the resource can not be parsed because the data is not recognized or invalid for any reason
* If the resource can not be parsed because the data is not recognized or invalid for any reason
*/
IBaseResource parseResource(Reader theReader) throws ConfigurationException, DataFormatException;
@ -137,52 +174,94 @@ public interface IParser {
* Parses a resource
*
* @param theMessageString
* The string to parse
* @return A parsed resource. Note that the returned object will be an instance of {@link IResource} or {@link IAnyResource}
* depending on the specific FhirContext which created this parser.
* The string to parse
* @return A parsed resource. Note that the returned object will be an instance of {@link IResource} or
* {@link IAnyResource} depending on the specific FhirContext which created this parser.
* @throws DataFormatException
* If the resource can not be parsed because the data is not recognized or invalid for any reason
* If the resource can not be parsed because the data is not recognized or invalid for any reason
*/
IBaseResource parseResource(String theMessageString) throws ConfigurationException, DataFormatException;
/**
* Parses a tag list, as defined in the <a href="http://hl7.org/implement/standards/fhir/http.html#tags">FHIR Specification</a>.
* Parses a tag list, as defined in the <a href="http://hl7.org/implement/standards/fhir/http.html#tags">FHIR
* Specification</a>.
*
* @param theReader
* A reader which will supply a tag list
* A reader which will supply a tag list
* @return A parsed tag list
*/
TagList parseTagList(Reader theReader);
/**
* Parses a tag list, as defined in the <a href="http://hl7.org/implement/standards/fhir/http.html#tags">FHIR Specification</a>.
* Parses a tag list, as defined in the <a href="http://hl7.org/implement/standards/fhir/http.html#tags">FHIR
* Specification</a>.
*
* @param theString
* A string containing a tag list
* A string containing a tag list
* @return A parsed tag list
*/
TagList parseTagList(String theString);
/**
* Sets the "pretty print" flag, meaning that the parser will encode resources with human-readable spacing and newlines between elements instead of condensing output as much as possible.
* If provided, specifies the elements which should be encoded, to the exclusion of all others. Valid values for this
* field would include:
* <ul>
* <li><b>Patient</b> - Encode patient and all its children</li>
* <li><b>Patient.name</b> - Encoding only the patient's name</li>
* <li><b>Patient.name.family</b> - Encode only the patient's family name</li>
* <li><b>*.text</b> - Encode the text element on any resource (only the very first position may contain a wildcard)</li>
* </ul>
*
* @param theEncodeElements
* The elements to encode
*/
void setEncodeElements(Set<String> theEncodeElements);
/**
* If provided, tells the parse which resource types to apply {@link #setEncodeElements(Set) encode elements} to. Any
* resource types not specified here will be encoded completely, with no elements excluded.
*
* @param theEncodeElementsAppliesToResourceTypes
*/
void setEncodeElementsAppliesToResourceTypes(Set<String> theEncodeElementsAppliesToResourceTypes);
/**
* If set to <code>true</code> (default is <code>false</code>) the ID of any resources being encoded will not be
* included in the output. Note that this does not apply to contained resources, only to root resources. In other
* words, if this is set to <code>true</code>, contained resources will still have local IDs but the outer/containing
* ID will not have an ID.
*
* @param theOmitResourceId
* Should resource IDs be omitted
* @return Returns a reference to <code>this</code> parser so that method calls can be chained together
* @since 1.1
*/
IParser setOmitResourceId(boolean theOmitResourceId);
/**
* Registers an error handler which will be invoked when any parse errors are found
*
* @param theErrorHandler
* The error handler to set. Must not be null.
*/
IParser setParserErrorHandler(IParserErrorHandler theErrorHandler);
/**
* Sets the "pretty print" flag, meaning that the parser will encode resources with human-readable spacing and
* newlines between elements instead of condensing output as much as possible.
*
* @param thePrettyPrint
* The flag
* The flag
* @return Returns an instance of <code>this</code> parser so that method calls can be chained together
*/
IParser setPrettyPrint(boolean thePrettyPrint);
/**
* If set to <code>true</code> (default is <code>false</code>), narratives will not be included in the encoded values.
*/
IParser setSuppressNarratives(boolean theSuppressNarratives);
/**
* Sets the server's base URL used by this parser. If a value is set, resource references
* will be turned into relative references if they are provided as absolute URLs but
* have a base matching the given base.
* Sets the server's base URL used by this parser. If a value is set, resource references will be turned into
* relative references if they are provided as absolute URLs but have a base matching the given base.
*
* @param theUrl The base URL, e.g. "http://example.com/base"
* @param theUrl
* The base URL, e.g. "http://example.com/base"
* @return Returns an instance of <code>this</code> parser so that method calls can be chained together
*/
IParser setServerBaseUrl(String theUrl);
@ -194,40 +273,25 @@ public interface IParser {
* by ID and version. In some cases though, it may be desirable to preserve the version in resource
* links. In that case, this value should be set to <code>false</code>.
*
* @param theStripVersionsFromReferences Set this to <code>false<code> to prevent the parser from removing
* @param theStripVersionsFromReferences
* Set this to <code>false<code> to prevent the parser from removing
* resource versions from references.
* @return Returns a reference to <code>this</code> parser so that method calls can be chained together
*/
IParser setStripVersionsFromReferences(boolean theStripVersionsFromReferences);
/**
* If set to <code>true<code> (which is the default), resource references containing a version
* will have the version removed when the resource is encoded. This is generally good behaviour because
* in most situations, references from one resource to another should be to the resource by ID, not
* by ID and version. In some cases though, it may be desirable to preserve the version in resource
* links. In that case, this value should be set to <code>false</code>.
*
* @return Returns the parser instance's configuration setting for stripping versions from resource references when encoding. Default is <code>true</code>.
*/
boolean isStripVersionsFromReferences();
/**
* If set to <code>true</code> (default is <code>false</code>) the ID of any resources being encoded
* will not be included in the output. Note that this does not apply to contained resources, only to root resources.
* In other words, if this is set to <code>true</code>, contained resources will still have local IDs but the
* outer/containing ID will not have an ID.
* If set to <code>true</code> (default is <code>false</code>) only elements marked by the FHIR specification as
* being "summary elements" will be included.
*
* @param theOmitResourceId Should resource IDs be omitted
* @return Returns a reference to <code>this</code> parser so that method calls can be chained together
* @since 1.1
*/
IParser setOmitResourceId(boolean theOmitResourceId);
IParser setSummaryMode(boolean theSummaryMode);
/**
* Returns true if resource IDs should be omitted
* @see #setOmitResourceId(boolean)
* @since 1.1
* If set to <code>true</code> (default is <code>false</code>), narratives will not be included in the encoded
* values.
*/
boolean isOmitResourceId();
IParser setSuppressNarratives(boolean theSuppressNarratives);
}

View File

@ -60,12 +60,14 @@ import org.hl7.fhir.instance.model.api.IBaseExtension;
import org.hl7.fhir.instance.model.api.IBaseHasExtensions;
import org.hl7.fhir.instance.model.api.IBaseHasModifierExtensions;
import org.hl7.fhir.instance.model.api.IBaseIntegerDatatype;
import org.hl7.fhir.instance.model.api.IBaseMetaType;
import org.hl7.fhir.instance.model.api.IBaseReference;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.IIdType;
import org.hl7.fhir.instance.model.api.IPrimitiveType;
import ca.uhn.fhir.context.BaseRuntimeChildDefinition;
import ca.uhn.fhir.context.BaseRuntimeDeclaredChildDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementCompositeDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementDefinition.ChildTypeEnum;
@ -98,10 +100,12 @@ import ca.uhn.fhir.model.primitive.InstantDt;
import ca.uhn.fhir.model.primitive.IntegerDt;
import ca.uhn.fhir.model.primitive.StringDt;
import ca.uhn.fhir.narrative.INarrativeGenerator;
import ca.uhn.fhir.rest.server.Constants;
import ca.uhn.fhir.util.ElementUtil;
/**
* This class is the FHIR JSON parser/encoder. Users should not interact with this class directly, but should use {@link FhirContext#newJsonParser()} to get an instance.
* This class is the FHIR JSON parser/encoder. Users should not interact with this class directly, but should use
* {@link FhirContext#newJsonParser()} to get an instance.
*/
public class JsonParser extends BaseParser implements IParser {
@ -128,7 +132,8 @@ public class JsonParser extends BaseParser implements IParser {
private boolean myPrettyPrint;
/**
* Do not use this constructor, the recommended way to obtain a new instance of the JSON parser is to invoke {@link FhirContext#newJsonParser()}.
* Do not use this constructor, the recommended way to obtain a new instance of the JSON parser is to invoke
* {@link FhirContext#newJsonParser()}.
*
* @param theParserErrorHandler
*/
@ -183,6 +188,41 @@ public class JsonParser extends BaseParser implements IParser {
eventWriter.flush();
}
@Override
protected void doEncodeResourceToWriter(IBaseResource theResource, Writer theWriter) throws IOException {
JsonGenerator eventWriter = createJsonGenerator(theWriter);
RuntimeResourceDefinition resDef = myContext.getResourceDefinition(theResource);
encodeResourceToJsonStreamWriter(resDef, theResource, eventWriter, null, false);
eventWriter.flush();
}
@Override
public <T extends IBaseResource> T doParseResource(Class<T> theResourceType, Reader theReader) {
try {
JsonReader reader = Json.createReader(theReader);
JsonObject object = reader.readObject();
JsonValue resourceTypeObj = object.get("resourceType");
assertObjectOfType(resourceTypeObj, JsonValue.ValueType.STRING, "resourceType");
String resourceType = ((JsonString) resourceTypeObj).getString();
ParserState<? extends IBaseResource> state = ParserState.getPreResourceInstance(theResourceType, myContext, true, getErrorHandler());
state.enteringNewElement(null, resourceType);
parseChildren(object, state);
state.endingElement();
@SuppressWarnings("unchecked")
T retVal = (T) state.getObject();
return retVal;
} catch (JsonParsingException e) {
throw new DataFormatException("Failed to parse JSON: " + e.getMessage(), e);
}
}
private void encodeBundleToWriterInDstu1Format(Bundle theBundle, JsonGenerator eventWriter) throws IOException {
eventWriter.writeStartObject();
@ -287,7 +327,7 @@ public class JsonParser extends BaseParser implements IParser {
if (nextEntry.getResource() != null && nextEntry.getResource().getId().getBaseUrl() != null) {
writeOptionalTagWithTextNode(theEventWriter, "fullUrl", nextEntry.getResource().getId().getValue());
}
boolean deleted = nextEntry.getDeletedAt() != null && nextEntry.getDeletedAt().isEmpty() == false;
IResource resource = nextEntry.getResource();
if (resource != null && !resource.isEmpty() && !deleted) {
@ -349,8 +389,8 @@ public class JsonParser extends BaseParser implements IParser {
theEventWriter.writeEnd();
}
private void encodeChildElementToStreamWriter(RuntimeResourceDefinition theResDef, IBaseResource theResource, JsonGenerator theWriter, IBase theNextValue,
BaseRuntimeElementDefinition<?> theChildDef, String theChildName, boolean theContainedResource) throws IOException {
private void encodeChildElementToStreamWriter(RuntimeResourceDefinition theResDef, IBaseResource theResource, JsonGenerator theWriter, IBase theNextValue, BaseRuntimeElementDefinition<?> theChildDef, String theChildName, boolean theContainedResource, CompositeChildElement theChildElem)
throws IOException {
switch (theChildDef.getChildType()) {
case ID_DATATYPE: {
@ -411,7 +451,7 @@ public class JsonParser extends BaseParser implements IParser {
if (theNextValue instanceof IBaseExtension) {
theWriter.write("url", ((IBaseExtension<?, ?>) theNextValue).getUrl());
}
encodeCompositeElementToStreamWriter(theResDef, theResource, theNextValue, theWriter, childCompositeDef, theContainedResource);
encodeCompositeElementToStreamWriter(theResDef, theResource, theNextValue, theWriter, childCompositeDef, theContainedResource, theChildElem);
theWriter.writeEnd();
break;
}
@ -437,8 +477,10 @@ public class JsonParser extends BaseParser implements IParser {
case CONTAINED_RESOURCE_LIST:
case CONTAINED_RESOURCES: {
/*
* Disabled per #103 ContainedDt value = (ContainedDt) theNextValue; for (IResource next : value.getContainedResources()) { if (getContainedResources().getResourceId(next) != null) {
* continue; } encodeResourceToJsonStreamWriter(theResDef, next, theWriter, null, true, fixContainedResourceId(next.getId().getValue())); }
* Disabled per #103 ContainedDt value = (ContainedDt) theNextValue; for (IResource next :
* value.getContainedResources()) { if (getContainedResources().getResourceId(next) != null) { continue; }
* encodeResourceToJsonStreamWriter(theResDef, next, theWriter, null, true,
* fixContainedResourceId(next.getId().getValue())); }
*/
List<IBaseResource> containedResources = getContainedResources().getContainedResources();
if (containedResources.size() > 0) {
@ -483,18 +525,12 @@ public class JsonParser extends BaseParser implements IParser {
}
private void encodeCompositeElementChildrenToStreamWriter(RuntimeResourceDefinition theResDef, IBaseResource theResource, IBase theNextValue, JsonGenerator theEventWriter,
List<? extends BaseRuntimeChildDefinition> theChildren, boolean theContainedResource) throws IOException {
for (BaseRuntimeChildDefinition nextChild : theChildren) {
if (nextChild.getElementName().equals("extension") || nextChild.getElementName().equals("modifierExtension")) {
continue;
}
if (nextChild.getElementName().equals("id")) {
continue;
}
private void encodeCompositeElementChildrenToStreamWriter(RuntimeResourceDefinition theResDef, IBaseResource theResource, IBase theNextValue, JsonGenerator theEventWriter, List<? extends BaseRuntimeChildDefinition> theChildren, boolean theContainedResource, CompositeChildElement theParent)
throws IOException {
for (CompositeChildElement nextChildElem : super.compositeChildIterator(theChildren, theContainedResource, theParent)) {
BaseRuntimeChildDefinition nextChild = nextChildElem.getDef();
if (nextChild instanceof RuntimeChildNarrativeDefinition) {
INarrativeGenerator gen = myContext.getNarrativeGenerator();
if (gen != null) {
BaseNarrativeDt<?> narr = ((IResource) theResource).getText();
@ -503,20 +539,20 @@ public class JsonParser extends BaseParser implements IParser {
RuntimeChildNarrativeDefinition child = (RuntimeChildNarrativeDefinition) nextChild;
String childName = nextChild.getChildNameByDatatype(child.getDatatype());
BaseRuntimeElementDefinition<?> type = child.getChildByName(childName);
encodeChildElementToStreamWriter(theResDef, theResource, theEventWriter, narr, type, childName, theContainedResource);
encodeChildElementToStreamWriter(theResDef, theResource, theEventWriter, narr, type, childName, theContainedResource, nextChildElem);
continue;
}
}
} else if (nextChild instanceof RuntimeChildContainedResources) {
if (theContainedResource == false) {
String childName = nextChild.getValidChildNames().iterator().next();
BaseRuntimeElementDefinition<?> child = nextChild.getChildByName(childName);
encodeChildElementToStreamWriter(theResDef, theResource, theEventWriter, null, child, childName, theContainedResource);
}
String childName = nextChild.getValidChildNames().iterator().next();
BaseRuntimeElementDefinition<?> child = nextChild.getChildByName(childName);
encodeChildElementToStreamWriter(theResDef, theResource, theEventWriter, null, child, childName, theContainedResource, nextChildElem);
continue;
}
List<? extends IBase> values = nextChild.getAccessor().getValues(theNextValue);
values = super.preProcessValues(nextChild, values);
if (values == null || values.isEmpty()) {
continue;
}
@ -529,6 +565,7 @@ public class JsonParser extends BaseParser implements IParser {
int valueIdx = 0;
for (IBase nextValue : values) {
if (nextValue == null || nextValue.isEmpty()) {
if (nextValue instanceof BaseContainedDt) {
if (theContainedResource || getContainedResources().isEmpty()) {
@ -569,15 +606,15 @@ public class JsonParser extends BaseParser implements IParser {
if (nextChild.getMax() > 1 || nextChild.getMax() == Child.MAX_UNLIMITED) {
theEventWriter.writeStartArray(childName);
inArray = true;
encodeChildElementToStreamWriter(theResDef, theResource, theEventWriter, nextValue, childDef, null, theContainedResource);
encodeChildElementToStreamWriter(theResDef, theResource, theEventWriter, nextValue, childDef, null, theContainedResource, nextChildElem);
} else if (nextChild instanceof RuntimeChildNarrativeDefinition && theContainedResource) {
// suppress narratives from contained resources
} else {
encodeChildElementToStreamWriter(theResDef, theResource, theEventWriter, nextValue, childDef, childName, theContainedResource);
encodeChildElementToStreamWriter(theResDef, theResource, theEventWriter, nextValue, childDef, childName, theContainedResource, nextChildElem);
}
currentChildName = childName;
} else {
encodeChildElementToStreamWriter(theResDef, theResource, theEventWriter, nextValue, childDef, null, theContainedResource);
encodeChildElementToStreamWriter(theResDef, theResource, theEventWriter, nextValue, childDef, null, theContainedResource, nextChildElem);
}
if (primitive) {
@ -651,15 +688,14 @@ public class JsonParser extends BaseParser implements IParser {
}
}
private void encodeCompositeElementToStreamWriter(RuntimeResourceDefinition theResDef, IBaseResource theResource, IBase theNextValue, JsonGenerator theEventWriter,
BaseRuntimeElementCompositeDefinition<?> resDef, boolean theContainedResource) throws IOException, DataFormatException {
private void encodeCompositeElementToStreamWriter(RuntimeResourceDefinition theResDef, IBaseResource theResource, IBase theNextValue, JsonGenerator theEventWriter, BaseRuntimeElementCompositeDefinition<?> resDef, boolean theContainedResource, CompositeChildElement theParent)
throws IOException, DataFormatException {
extractAndWriteExtensionsAsDirectChild(theNextValue, theEventWriter, resDef, theResDef, theResource, null);
encodeCompositeElementChildrenToStreamWriter(theResDef, theResource, theNextValue, theEventWriter, resDef.getExtensions(), theContainedResource);
encodeCompositeElementChildrenToStreamWriter(theResDef, theResource, theNextValue, theEventWriter, resDef.getChildren(), theContainedResource);
encodeCompositeElementChildrenToStreamWriter(theResDef, theResource, theNextValue, theEventWriter, resDef.getExtensions(), theContainedResource, theParent);
encodeCompositeElementChildrenToStreamWriter(theResDef, theResource, theNextValue, theEventWriter, resDef.getChildren(), theContainedResource, theParent);
}
private void encodeResourceToJsonStreamWriter(RuntimeResourceDefinition theResDef, IBaseResource theResource, JsonGenerator theEventWriter, String theObjectNameOrNull, boolean theContainedResource)
throws IOException {
private void encodeResourceToJsonStreamWriter(RuntimeResourceDefinition theResDef, IBaseResource theResource, JsonGenerator theEventWriter, String theObjectNameOrNull, boolean theContainedResource) throws IOException {
String resourceId = null;
if (theResource instanceof IResource) {
IResource res = (IResource) theResource;
@ -684,8 +720,7 @@ public class JsonParser extends BaseParser implements IParser {
encodeResourceToJsonStreamWriter(theResDef, theResource, theEventWriter, theObjectNameOrNull, theContainedResource, resourceId);
}
private void encodeResourceToJsonStreamWriter(RuntimeResourceDefinition theResDef, IBaseResource theResource, JsonGenerator theEventWriter, String theObjectNameOrNull,
boolean theContainedResource, String theResourceId) throws IOException {
private void encodeResourceToJsonStreamWriter(RuntimeResourceDefinition theResDef, IBaseResource theResource, JsonGenerator theEventWriter, String theObjectNameOrNull, boolean theContainedResource, String theResourceId) throws IOException {
if (!theContainedResource) {
super.containResourcesForEncoding(theResource);
}
@ -709,7 +744,7 @@ public class JsonParser extends BaseParser implements IParser {
List<BaseCodingDt> securityLabels = extractMetadataListNotNull(resource, ResourceMetadataKeyEnum.SECURITY_LABELS);
List<IdDt> profiles = extractMetadataListNotNull(resource, ResourceMetadataKeyEnum.PROFILES);
TagList tags = ResourceMetadataKeyEnum.TAG_LIST.get(resource);
TagList tags = getMetaTagsForEncoding(resource);
InstantDt updated = (InstantDt) resource.getResourceMetadata().get(ResourceMetadataKeyEnum.UPDATED);
IdDt resourceId = resource.getId();
String versionIdPart = resourceId.getVersionIdPart();
@ -737,7 +772,7 @@ public class JsonParser extends BaseParser implements IParser {
for (BaseCodingDt securityLabel : securityLabels) {
theEventWriter.writeStartObject();
BaseRuntimeElementCompositeDefinition<?> def = (BaseRuntimeElementCompositeDefinition<?>) myContext.getElementDefinition(securityLabel.getClass());
encodeCompositeElementChildrenToStreamWriter(resDef, resource, securityLabel, theEventWriter, def.getChildren(), theContainedResource);
encodeCompositeElementChildrenToStreamWriter(resDef, resource, securityLabel, theEventWriter, def.getChildren(), theContainedResource, null);
theEventWriter.writeEnd();
}
theEventWriter.writeEnd();
@ -767,21 +802,12 @@ public class JsonParser extends BaseParser implements IParser {
theEventWriter.write("contentType", bin.getContentType());
theEventWriter.write("content", bin.getContentAsBase64());
} else {
encodeCompositeElementToStreamWriter(theResDef, theResource, theResource, theEventWriter, resDef, theContainedResource);
encodeCompositeElementToStreamWriter(theResDef, theResource, theResource, theEventWriter, resDef, theContainedResource, new CompositeChildElement(resDef));
}
theEventWriter.writeEnd();
}
@Override
protected void doEncodeResourceToWriter(IBaseResource theResource, Writer theWriter) throws IOException {
JsonGenerator eventWriter = createJsonGenerator(theWriter);
RuntimeResourceDefinition resDef = myContext.getResourceDefinition(theResource);
encodeResourceToJsonStreamWriter(resDef, theResource, eventWriter, null, false);
eventWriter.flush();
}
@Override
public void encodeTagListToWriter(TagList theTagList, Writer theWriter) throws IOException {
JsonGenerator eventWriter = createJsonGenerator(theWriter);
@ -813,10 +839,10 @@ public class JsonParser extends BaseParser implements IParser {
}
/**
* This is useful only for the two cases where extensions are encoded as direct children (e.g. not in some object called _name): resource extensions, and extension extensions
* This is useful only for the two cases where extensions are encoded as direct children (e.g. not in some object
* called _name): resource extensions, and extension extensions
*/
private void extractAndWriteExtensionsAsDirectChild(IBase theElement, JsonGenerator theEventWriter, BaseRuntimeElementDefinition<?> theElementDef, RuntimeResourceDefinition theResDef,
IBaseResource theResource, String theParentExtensionUrl) throws IOException {
private void extractAndWriteExtensionsAsDirectChild(IBase theElement, JsonGenerator theEventWriter, BaseRuntimeElementDefinition<?> theElementDef, RuntimeResourceDefinition theResDef, IBaseResource theResource, String theParentExtensionUrl) throws IOException {
List<HeldExtension> extensions = new ArrayList<HeldExtension>(0);
List<HeldExtension> modifierExtensions = new ArrayList<HeldExtension>(0);
@ -950,8 +976,7 @@ public class JsonParser extends BaseParser implements IParser {
object = reader.readObject();
} catch (JsonParsingException e) {
if (e.getMessage().startsWith("Unexpected char 39")) {
throw new DataFormatException("Failed to parse JSON encoded FHIR content: " + e.getMessage()
+ " - This may indicate that single quotes are being used as JSON escapes where double quotes are required", e);
throw new DataFormatException("Failed to parse JSON encoded FHIR content: " + e.getMessage() + " - This may indicate that single quotes are being used as JSON escapes where double quotes are required", e);
}
throw new DataFormatException("Failed to parse JSON encoded FHIR content: " + e.getMessage(), e);
}
@ -1182,7 +1207,27 @@ public class JsonParser extends BaseParser implements IParser {
}
}
// private void parseExtensionInDstu2Style(boolean theModifier, ParserState<?> theState, String theParentExtensionUrl, String theExtensionUrl, JsonArray theValues) {
@Override
public TagList parseTagList(Reader theReader) {
JsonReader reader = Json.createReader(theReader);
JsonObject object = reader.readObject();
JsonValue resourceTypeObj = object.get("resourceType");
assertObjectOfType(resourceTypeObj, JsonValue.ValueType.STRING, "resourceType");
String resourceType = ((JsonString) resourceTypeObj).getString();
ParserState<TagList> state = ParserState.getPreTagListInstance(myContext, true, getErrorHandler());
state.enteringNewElement(null, resourceType);
parseChildren(object, state);
state.endingElement();
return state.getObject();
}
// private void parseExtensionInDstu2Style(boolean theModifier, ParserState<?> theState, String
// theParentExtensionUrl, String theExtensionUrl, JsonArray theValues) {
// String extUrl = UrlUtil.constructAbsoluteUrl(theParentExtensionUrl, theExtensionUrl);
// theState.enteringNewElementExtension(null, extUrl, theModifier);
//
@ -1207,50 +1252,6 @@ public class JsonParser extends BaseParser implements IParser {
// theState.endingElement();
// }
@Override
public <T extends IBaseResource> T doParseResource(Class<T> theResourceType, Reader theReader) {
try {
JsonReader reader = Json.createReader(theReader);
JsonObject object = reader.readObject();
JsonValue resourceTypeObj = object.get("resourceType");
assertObjectOfType(resourceTypeObj, JsonValue.ValueType.STRING, "resourceType");
String resourceType = ((JsonString) resourceTypeObj).getString();
ParserState<? extends IBaseResource> state = ParserState.getPreResourceInstance(theResourceType, myContext, true, getErrorHandler());
state.enteringNewElement(null, resourceType);
parseChildren(object, state);
state.endingElement();
@SuppressWarnings("unchecked")
T retVal = (T) state.getObject();
return retVal;
} catch (JsonParsingException e) {
throw new DataFormatException("Failed to parse JSON: " + e.getMessage(), e);
}
}
@Override
public TagList parseTagList(Reader theReader) {
JsonReader reader = Json.createReader(theReader);
JsonObject object = reader.readObject();
JsonValue resourceTypeObj = object.get("resourceType");
assertObjectOfType(resourceTypeObj, JsonValue.ValueType.STRING, "resourceType");
String resourceType = ((JsonString) resourceTypeObj).getString();
ParserState<TagList> state = ParserState.getPreTagListInstance(myContext, true, getErrorHandler());
state.enteringNewElement(null, resourceType);
parseChildren(object, state);
state.endingElement();
return state.getObject();
}
@Override
public IParser setPrettyPrint(boolean thePrettyPrint) {
@ -1315,8 +1316,7 @@ public class JsonParser extends BaseParser implements IParser {
}
}
private void writeExtensionsAsDirectChild(IBaseResource theResource, JsonGenerator theEventWriter, RuntimeResourceDefinition resDef, List<HeldExtension> extensions,
List<HeldExtension> modifierExtensions, String theParentExtensionUrl) throws IOException {
private void writeExtensionsAsDirectChild(IBaseResource theResource, JsonGenerator theEventWriter, RuntimeResourceDefinition resDef, List<HeldExtension> extensions, List<HeldExtension> modifierExtensions, String theParentExtensionUrl) throws IOException {
if (extensions.isEmpty() == false) {
theEventWriter.writeStartArray("extension");
for (HeldExtension next : extensions) {
@ -1333,18 +1333,18 @@ public class JsonParser extends BaseParser implements IParser {
}
}
private void writeOptionalTagWithNumberNode(JsonGenerator theEventWriter, String theElementName, IntegerDt theValue) {
if (theValue != null && theValue.isEmpty() == false) {
theEventWriter.write(theElementName, theValue.getValue().intValue());
}
}
private void writeOptionalTagWithDecimalNode(JsonGenerator theEventWriter, String theElementName, DecimalDt theValue) {
if (theValue != null && theValue.isEmpty() == false) {
theEventWriter.write(theElementName, theValue.getValue());
}
}
private void writeOptionalTagWithNumberNode(JsonGenerator theEventWriter, String theElementName, IntegerDt theValue) {
if (theValue != null && theValue.isEmpty() == false) {
theEventWriter.write(theElementName, theValue.getValue().intValue());
}
}
private void writeOptionalTagWithTextNode(JsonGenerator theEventWriter, String theElementName, IPrimitiveDatatype<?> thePrimitive) {
if (thePrimitive == null) {
return;
@ -1379,9 +1379,9 @@ public class JsonParser extends BaseParser implements IParser {
private class HeldExtension implements Comparable<HeldExtension> {
private RuntimeChildDeclaredExtensionDefinition myDef;
private boolean myModifier;
private IBaseExtension<?, ?> myUndeclaredExtension;
private IBase myValue;
private boolean myModifier;
public HeldExtension(IBaseExtension<?, ?> theUndeclaredExtension, boolean theModifier) {
assert theUndeclaredExtension != null;
@ -1396,6 +1396,15 @@ public class JsonParser extends BaseParser implements IParser {
myValue = theValue;
}
@Override
public int compareTo(HeldExtension theArg0) {
String url1 = myDef != null ? myDef.getExtensionUrl() : myUndeclaredExtension.getUrl();
String url2 = theArg0.myDef != null ? theArg0.myDef.getExtensionUrl() : theArg0.myUndeclaredExtension.getUrl();
url1 = defaultString(url1);
url2 = defaultString(url2);
return url1.compareTo(url2);
}
public void write(RuntimeResourceDefinition theResDef, IBaseResource theResource, JsonGenerator theEventWriter) throws IOException {
if (myUndeclaredExtension != null) {
writeUndeclaredExtInDstu1Format(theResDef, theResource, theEventWriter, myUndeclaredExtension);
@ -1408,7 +1417,7 @@ public class JsonParser extends BaseParser implements IParser {
extractAndWriteExtensionsAsDirectChild(myValue, theEventWriter, def, theResDef, theResource, myDef.getExtensionUrl());
} else {
String childName = myDef.getChildNameByDatatype(myValue.getClass());
encodeChildElementToStreamWriter(theResDef, theResource, theEventWriter, myValue, def, childName, false);
encodeChildElementToStreamWriter(theResDef, theResource, theEventWriter, myValue, def, childName, false, null);
}
theEventWriter.writeEnd();
@ -1447,7 +1456,7 @@ public class JsonParser extends BaseParser implements IParser {
if (childDef == null) {
throw new ConfigurationException("Unable to encode extension, unregognized child element type: " + value.getClass().getCanonicalName());
}
encodeChildElementToStreamWriter(theResDef, theResource, theEventWriter, value, childDef, childName, true);
encodeChildElementToStreamWriter(theResDef, theResource, theEventWriter, value, childDef, childName, true, null);
}
// theEventWriter.name(myUndeclaredExtension.get);
@ -1455,14 +1464,5 @@ public class JsonParser extends BaseParser implements IParser {
theEventWriter.writeEnd();
}
@Override
public int compareTo(HeldExtension theArg0) {
String url1 = myDef != null ? myDef.getExtensionUrl() : myUndeclaredExtension.getUrl();
String url2 = theArg0.myDef != null ? theArg0.myDef.getExtensionUrl() : theArg0.myUndeclaredExtension.getUrl();
url1 = defaultString(url1);
url2 = defaultString(url2);
return url1.compareTo(url2);
}
}
}

View File

@ -83,6 +83,7 @@ import ca.uhn.fhir.model.primitive.InstantDt;
import ca.uhn.fhir.model.primitive.StringDt;
import ca.uhn.fhir.model.primitive.XhtmlDt;
import ca.uhn.fhir.narrative.INarrativeGenerator;
import ca.uhn.fhir.parser.BaseParser.CompositeChildElement;
import ca.uhn.fhir.rest.server.Constants;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import ca.uhn.fhir.util.ElementUtil;
@ -406,7 +407,7 @@ public class XmlParser extends BaseParser implements IParser {
if (nextEntry.getResource() != null && nextEntry.getResource().getId().getBaseUrl() != null) {
writeOptionalTagWithValue(theEventWriter, "fullUrl", nextEntry.getResource().getId().getValue());
}
IResource resource = nextEntry.getResource();
if (resource != null && !resource.isEmpty() && !deleted) {
theEventWriter.writeStartElement("resource");
@ -447,7 +448,7 @@ public class XmlParser extends BaseParser implements IParser {
theEventWriter.close();
}
private void encodeChildElementToStreamWriter(IBaseResource theResource, XMLStreamWriter theEventWriter, IBase nextValue, String childName, BaseRuntimeElementDefinition<?> childDef, String theExtensionUrl, boolean theIncludedResource) throws XMLStreamException, DataFormatException {
private void encodeChildElementToStreamWriter(IBaseResource theResource, XMLStreamWriter theEventWriter, IBase nextValue, String childName, BaseRuntimeElementDefinition<?> childDef, String theExtensionUrl, boolean theIncludedResource, CompositeChildElement theParent) throws XMLStreamException, DataFormatException {
if (nextValue == null || nextValue.isEmpty()) {
if (isChildContained(childDef, theIncludedResource)) {
// We still want to go in..
@ -486,7 +487,7 @@ public class XmlParser extends BaseParser implements IParser {
theEventWriter.writeAttribute("url", theExtensionUrl);
}
BaseRuntimeElementCompositeDefinition<?> childCompositeDef = (BaseRuntimeElementCompositeDefinition<?>) childDef;
encodeCompositeElementToStreamWriter(theResource, nextValue, theEventWriter, childCompositeDef, theIncludedResource);
encodeCompositeElementToStreamWriter(theResource, nextValue, theEventWriter, childCompositeDef, theIncludedResource, theParent);
theEventWriter.writeEndElement();
break;
}
@ -549,16 +550,12 @@ public class XmlParser extends BaseParser implements IParser {
}
private void encodeCompositeElementChildrenToStreamWriter(IBaseResource theResource, IBase theElement, XMLStreamWriter theEventWriter, List<? extends BaseRuntimeChildDefinition> children, boolean theIncludedResource) throws XMLStreamException, DataFormatException {
for (BaseRuntimeChildDefinition nextChild : children) {
if (nextChild.getElementName().equals("extension") || nextChild.getElementName().equals("modifierExtension")) {
continue;
}
if (nextChild.getElementName().equals("id")) {
continue;
}
private void encodeCompositeElementChildrenToStreamWriter(IBaseResource theResource, IBase theElement, XMLStreamWriter theEventWriter, List<? extends BaseRuntimeChildDefinition> theChildren, boolean theContainedResource, CompositeChildElement theParent) throws XMLStreamException, DataFormatException {
for (CompositeChildElement nextChildElem : super.compositeChildIterator(theChildren, theContainedResource, theParent)) {
if (nextChild instanceof RuntimeChildNarrativeDefinition && !theIncludedResource) {
BaseRuntimeChildDefinition nextChild = nextChildElem.getDef();
if (nextChild instanceof RuntimeChildNarrativeDefinition) {
INarrativeGenerator gen = myContext.getNarrativeGenerator();
if (theResource instanceof IResource) {
BaseNarrativeDt<?> narr = ((IResource) theResource).getText();
@ -570,36 +567,21 @@ public class XmlParser extends BaseParser implements IParser {
RuntimeChildNarrativeDefinition child = (RuntimeChildNarrativeDefinition) nextChild;
String childName = nextChild.getChildNameByDatatype(child.getDatatype());
BaseRuntimeElementDefinition<?> type = child.getChildByName(childName);
encodeChildElementToStreamWriter(theResource, theEventWriter, narr, childName, type, null, theIncludedResource);
encodeChildElementToStreamWriter(theResource, theEventWriter, narr, childName, type, null, theContainedResource, nextChildElem);
continue;
}
} else {
// Narrative generation not currently supported for HL7org structures
// INarrative narr1 = ((IDomainResource) theResource).getText();
// BaseNarrativeDt<?> narr2 = null;
// if (gen != null && narr1.isEmpty()) {
// // TODO: need to implement this
// String resourceProfile = myContext.getResourceDefinition(theResource).getResourceProfile();
// gen.generateNarrative(resourceProfile, theResource, null);
// }
// if (narr2 != null) {
// RuntimeChildNarrativeDefinition child = (RuntimeChildNarrativeDefinition) nextChild;
// String childName = nextChild.getChildNameByDatatype(child.getDatatype());
// BaseRuntimeElementDefinition<?> type = child.getChildByName(childName);
// encodeChildElementToStreamWriter(theResource, theEventWriter, narr2, childName, type, null,
// theIncludedResource);
// continue;
// }
}
}
if (nextChild instanceof RuntimeChildContainedResources) {
if (!theIncludedResource) {
encodeChildElementToStreamWriter(theResource, theEventWriter, null, nextChild.getChildNameByDatatype(null), nextChild.getChildElementDefinitionByDatatype(null), null, theIncludedResource);
}
encodeChildElementToStreamWriter(theResource, theEventWriter, null, nextChild.getChildNameByDatatype(null), nextChild.getChildElementDefinitionByDatatype(null), null, theContainedResource, nextChildElem);
} else {
List<? extends IBase> values = nextChild.getAccessor().getValues(theElement);
values = super.preProcessValues(nextChild, values);
if (values == null || values.isEmpty()) {
continue;
}
@ -618,7 +600,7 @@ public class XmlParser extends BaseParser implements IParser {
if (nextValue instanceof IBaseExtension && myContext.getVersion().getVersion() == FhirVersionEnum.DSTU1) {
// This is called for the Query resource in DSTU1 only
extensionUrl = ((IBaseExtension<?, ?>) nextValue).getUrl();
encodeChildElementToStreamWriter(theResource, theEventWriter, nextValue, childName, childDef, extensionUrl, theIncludedResource);
encodeChildElementToStreamWriter(theResource, theEventWriter, nextValue, childName, childDef, extensionUrl, theContainedResource, nextChildElem);
} else if (extensionUrl != null && childName.equals("extension") == false) {
RuntimeChildDeclaredExtensionDefinition extDef = (RuntimeChildDeclaredExtensionDefinition) nextChild;
@ -629,22 +611,22 @@ public class XmlParser extends BaseParser implements IParser {
}
theEventWriter.writeAttribute("url", extensionUrl);
encodeChildElementToStreamWriter(theResource, theEventWriter, nextValue, childName, childDef, null, theIncludedResource);
encodeChildElementToStreamWriter(theResource, theEventWriter, nextValue, childName, childDef, null, theContainedResource, nextChildElem);
theEventWriter.writeEndElement();
} else if (nextChild instanceof RuntimeChildNarrativeDefinition && theIncludedResource) {
} else if (nextChild instanceof RuntimeChildNarrativeDefinition && theContainedResource) {
// suppress narratives from contained resources
} else {
encodeChildElementToStreamWriter(theResource, theEventWriter, nextValue, childName, childDef, extensionUrl, theIncludedResource);
encodeChildElementToStreamWriter(theResource, theEventWriter, nextValue, childName, childDef, extensionUrl, theContainedResource, nextChildElem);
}
}
}
}
}
private void encodeCompositeElementToStreamWriter(IBaseResource theResource, IBase theElement, XMLStreamWriter theEventWriter, BaseRuntimeElementCompositeDefinition<?> theElementDefinition, boolean theIncludedResource) throws XMLStreamException, DataFormatException {
private void encodeCompositeElementToStreamWriter(IBaseResource theResource, IBase theElement, XMLStreamWriter theEventWriter, BaseRuntimeElementCompositeDefinition<?> theElementDefinition, boolean theIncludedResource, CompositeChildElement theParent) throws XMLStreamException, DataFormatException {
encodeExtensionsIfPresent(theResource, theEventWriter, theElement, theIncludedResource);
encodeCompositeElementChildrenToStreamWriter(theResource, theElement, theEventWriter, theElementDefinition.getExtensions(), theIncludedResource);
encodeCompositeElementChildrenToStreamWriter(theResource, theElement, theEventWriter, theElementDefinition.getChildren(), theIncludedResource);
encodeCompositeElementChildrenToStreamWriter(theResource, theElement, theEventWriter, theElementDefinition.getExtensions(), theIncludedResource, theParent);
encodeCompositeElementChildrenToStreamWriter(theResource, theElement, theEventWriter, theElementDefinition.getChildren(), theIncludedResource, theParent);
}
private void encodeExtensionsIfPresent(IBaseResource theResource, XMLStreamWriter theWriter, IBase theElement, boolean theIncludedResource) throws XMLStreamException, DataFormatException {
@ -709,12 +691,15 @@ public class XmlParser extends BaseParser implements IParser {
postExtensionChildren.add(next);
}
}
encodeCompositeElementChildrenToStreamWriter(theResource, theElement, theEventWriter, preExtensionChildren, theIncludedResource);
CompositeChildElement parent = new CompositeChildElement(theResDef);
encodeCompositeElementChildrenToStreamWriter(theResource, theElement, theEventWriter, preExtensionChildren, theIncludedResource, parent);
encodeExtensionsIfPresent(theResource, theEventWriter, theElement, theIncludedResource);
encodeCompositeElementChildrenToStreamWriter(theResource, theElement, theEventWriter, resDef.getExtensions(), theIncludedResource);
encodeCompositeElementChildrenToStreamWriter(theResource, theElement, theEventWriter, resDef.getExtensions(), theIncludedResource, parent);
encodeCompositeElementChildrenToStreamWriter(theResource, theElement, theEventWriter, postExtensionChildren, theIncludedResource);
encodeCompositeElementChildrenToStreamWriter(theResource, theElement, theEventWriter, postExtensionChildren, theIncludedResource, parent);
}
@ -771,7 +756,7 @@ public class XmlParser extends BaseParser implements IParser {
// HL7.org Structures
writeOptionalTagWithValue(theEventWriter, "id", theResourceId);
encodeCompositeElementToStreamWriter(theResource, theResource, theEventWriter, resDef, theContainedResource);
encodeCompositeElementToStreamWriter(theResource, theResource, theEventWriter, resDef, theContainedResource, new CompositeChildElement(resDef));
} else {
@ -790,7 +775,8 @@ public class XmlParser extends BaseParser implements IParser {
}
List<BaseCodingDt> securityLabels = extractMetadataListNotNull(resource, ResourceMetadataKeyEnum.SECURITY_LABELS);
List<IdDt> profiles = extractMetadataListNotNull(resource, ResourceMetadataKeyEnum.PROFILES);
TagList tags = ResourceMetadataKeyEnum.TAG_LIST.get(resource);
TagList tags = getMetaTagsForEncoding((resource));
if (ElementUtil.isEmpty(versionIdPart, updated, securityLabels, tags, profiles) == false) {
theEventWriter.writeStartElement("meta");
writeOptionalTagWithValue(theEventWriter, "versionId", versionIdPart);
@ -806,7 +792,7 @@ public class XmlParser extends BaseParser implements IParser {
for (BaseCodingDt securityLabel : securityLabels) {
theEventWriter.writeStartElement("security");
BaseRuntimeElementCompositeDefinition<?> def = (BaseRuntimeElementCompositeDefinition<?>) myContext.getElementDefinition(securityLabel.getClass());
encodeCompositeElementChildrenToStreamWriter(resource, securityLabel, theEventWriter, def.getChildren(), theContainedResource);
encodeCompositeElementChildrenToStreamWriter(resource, securityLabel, theEventWriter, def.getChildren(), theContainedResource, null);
theEventWriter.writeEndElement();
}
if (tags != null) {
@ -846,7 +832,7 @@ public class XmlParser extends BaseParser implements IParser {
}
theEventWriter.writeCharacters(bin.getContentAsBase64());
} else {
encodeCompositeElementToStreamWriter(theResource, theResource, theEventWriter, resDef, theContainedResource);
encodeCompositeElementToStreamWriter(theResource, theResource, theEventWriter, resDef, theContainedResource, new CompositeChildElement(resDef));
}
}
@ -916,7 +902,7 @@ public class XmlParser extends BaseParser implements IParser {
throw new ConfigurationException("Unable to encode extension, unrecognized child element type: " + value.getClass().getCanonicalName());
}
}
encodeChildElementToStreamWriter(theResource, theWriter, value, childName, childDef, null, theIncludedResource);
encodeChildElementToStreamWriter(theResource, theWriter, value, childName, childDef, null, theIncludedResource, null);
}
// child extensions
@ -927,7 +913,7 @@ public class XmlParser extends BaseParser implements IParser {
}
private void encodeXhtml(XhtmlDt theDt, XMLStreamWriter theEventWriter) throws XMLStreamException {
if (theDt == null || theDt.getValue() == null || getSuppressNarratives()) {
if (theDt == null || theDt.getValue() == null) {
return;
}
@ -1135,4 +1121,5 @@ public class XmlParser extends BaseParser implements IParser {
}
theEventWriter.writeEndElement();
}
}

View File

@ -0,0 +1,59 @@
package ca.uhn.fhir.rest.api;
import java.util.HashMap;
import java.util.Map;
/**
* Enum representing the values for the <code>_summary</code> search parameter
*/
public enum SummaryEnum {
/**
* Return only those elements marked as 'summary' in the base definition of the resource(s)
*/
TRUE("true"),
/**
* Return only the 'text' element, and any mandatory elements
*/
TEXT("text"),
/**
* Remove the text element
*/
DATA("data"),
/**
* Search only: just return a count of the matching resources, without returning the actual matches
*/
COUNT("count"),
/**
* Return all parts of the resource(s)
*/
FALSE("false");
private String myCode;
private static Map<String, SummaryEnum> ourCodeToSummary = null;
SummaryEnum(String theCode) {
myCode = theCode;
}
public String getCode() {
return myCode;
}
public static SummaryEnum fromCode(String theCode) {
Map<String, SummaryEnum> c2s = ourCodeToSummary;
if (c2s == null) {
c2s = new HashMap<String, SummaryEnum>();
for (SummaryEnum next : values()) {
c2s.put(next.getCode(), next);
}
ourCodeToSummary = c2s;
}
return c2s.get(theCode);
}
}

View File

@ -50,6 +50,7 @@ import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.model.base.resource.BaseOperationOutcome;
import ca.uhn.fhir.parser.DataFormatException;
import ca.uhn.fhir.parser.IParser;
import ca.uhn.fhir.rest.api.SummaryEnum;
import ca.uhn.fhir.rest.client.api.IRestfulClient;
import ca.uhn.fhir.rest.client.exceptions.FhirClientConnectionException;
import ca.uhn.fhir.rest.method.IClientResponseHandler;
@ -70,8 +71,9 @@ public abstract class BaseClient implements IRestfulClient {
private HttpResponse myLastResponse;
private String myLastResponseBody;
private Boolean myPrettyPrint = false;
private SummaryEnum mySummary;
private final String myUrlBase;
BaseClient(HttpClient theClient, String theUrlBase, RestfulClientFactory theFactory) {
super();
myClient = theClient;
@ -149,6 +151,10 @@ public abstract class BaseClient implements IRestfulClient {
return myUrlBase;
}
public SummaryEnum getSummary() {
return mySummary;
}
public String getUrlBase() {
return myUrlBase;
}
@ -158,11 +164,11 @@ public abstract class BaseClient implements IRestfulClient {
}
<T> T invokeClient(FhirContext theContext, IClientResponseHandler<T> binding, BaseHttpClientInvocation clientInvocation, boolean theLogRequestAndResponse) {
return invokeClient(theContext, binding, clientInvocation, null, null, theLogRequestAndResponse);
return invokeClient(theContext, binding, clientInvocation, null, null, theLogRequestAndResponse, null);
}
<T> T invokeClient(FhirContext theContext, IClientResponseHandler<T> binding, BaseHttpClientInvocation clientInvocation, EncodingEnum theEncoding, Boolean thePrettyPrint,
boolean theLogRequestAndResponse) {
boolean theLogRequestAndResponse, SummaryEnum theSummaryMode) {
if (!myDontValidateConformance) {
myFactory.validateServerBaseIfConfiguredToDoSo(myUrlBase, myClient, this);
@ -180,6 +186,12 @@ public abstract class BaseClient implements IRestfulClient {
} else if (theEncoding == EncodingEnum.JSON) {
params.put(Constants.PARAM_FORMAT, Collections.singletonList("json"));
}
if (theSummaryMode != null) {
params.put(Constants.PARAM_SUMMARY, Collections.singletonList(theSummaryMode.getCode()));
} else if (mySummary != null) {
params.put(Constants.PARAM_SUMMARY, Collections.singletonList(mySummary.getCode()));
}
if (thePrettyPrint == Boolean.TRUE) {
params.put(Constants.PARAM_PRETTY, Collections.singletonList(Constants.PARAM_PRETTY_VALUE_TRUE));
@ -373,6 +385,7 @@ public abstract class BaseClient implements IRestfulClient {
}
}
@Override
public void registerInterceptor(IClientInterceptor theInterceptor) {
Validate.notNull(theInterceptor, "Interceptor can not be null");
myInterceptors.add(theInterceptor);
@ -390,6 +403,7 @@ public abstract class BaseClient implements IRestfulClient {
* Sets the encoding that will be used on requests. Default is <code>null</code>, which means the client will not explicitly request an encoding. (This is perfectly acceptable behaviour according
* to the FHIR specification. In this case, the server will choose which encoding to return, and the client can handle either XML or JSON)
*/
@Override
public void setEncoding(EncodingEnum theEncoding) {
myEncoding = theEncoding;
// return this;
@ -420,11 +434,18 @@ public abstract class BaseClient implements IRestfulClient {
* Sets the pretty print flag, which is a request to the server for it to return "pretty printed" responses. Note that this is currently a non-standard flag (_pretty) which is supported only by
* HAPI based servers (and any other servers which might implement it).
*/
@Override
public void setPrettyPrint(Boolean thePrettyPrint) {
myPrettyPrint = thePrettyPrint;
// return this;
}
@Override
public void setSummary(SummaryEnum theSummary) {
mySummary = theSummary;
}
@Override
public void unregisterInterceptor(IClientInterceptor theInterceptor) {
Validate.notNull(theInterceptor, "Interceptor can not be null");
myInterceptors.remove(theInterceptor);

View File

@ -28,6 +28,7 @@ import org.apache.http.client.HttpClient;
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.rest.api.SummaryEnum;
import ca.uhn.fhir.rest.client.api.IRestfulClient;
import ca.uhn.fhir.rest.method.BaseMethodBinding;
import ca.uhn.fhir.rest.server.EncodingEnum;
@ -35,10 +36,10 @@ import ca.uhn.fhir.rest.server.EncodingEnum;
class ClientInvocationHandlerFactory {
private final Map<Method, BaseMethodBinding<?>> myBindings = new HashMap<Method, BaseMethodBinding<?>>();
private final Map<Method, Object> myMethodToReturnValue = new HashMap<Method, Object>();
private final Map<Method, ILambda> myMethodToLambda = new HashMap<Method, ILambda>();
private final FhirContext myContext;
private final HttpClient myClient;
private final FhirContext myContext;
private final Map<Method, ILambda> myMethodToLambda = new HashMap<Method, ILambda>();
private final Map<Method, Object> myMethodToReturnValue = new HashMap<Method, Object>();
private final String myUrlBase;
public ClientInvocationHandlerFactory(HttpClient theClient, FhirContext theContext, String theUrlBase, Class<? extends IRestfulClient> theClientType) {
@ -55,6 +56,7 @@ class ClientInvocationHandlerFactory {
myMethodToLambda.put(theClientType.getMethod("setPrettyPrint", Boolean.class), new SetPrettyPrintLambda());
myMethodToLambda.put(theClientType.getMethod("registerInterceptor", IClientInterceptor.class), new RegisterInterceptorLambda());
myMethodToLambda.put(theClientType.getMethod("unregisterInterceptor", IClientInterceptor.class), new UnregisterInterceptorLambda());
myMethodToLambda.put(theClientType.getMethod("setSummary", SummaryEnum.class), new SetSummaryLambda());
} catch (NoSuchMethodException e) {
throw new ConfigurationException("Failed to find methods on client. This is a HAPI bug!", e);
@ -75,6 +77,15 @@ class ClientInvocationHandlerFactory {
Object handle(ClientInvocationHandler theTarget, Object[] theArgs);
}
class RegisterInterceptorLambda implements ILambda {
@Override
public Object handle(ClientInvocationHandler theTarget, Object[] theArgs) {
IClientInterceptor interceptor = (IClientInterceptor) theArgs[0];
theTarget.registerInterceptor(interceptor);
return null;
}
}
class SetEncodingLambda implements ILambda {
@Override
public Object handle(ClientInvocationHandler theTarget, Object[] theArgs) {
@ -93,6 +104,15 @@ class ClientInvocationHandlerFactory {
}
}
class SetSummaryLambda implements ILambda {
@Override
public Object handle(ClientInvocationHandler theTarget, Object[] theArgs) {
SummaryEnum encoding = (SummaryEnum) theArgs[0];
theTarget.setSummary(encoding);
return null;
}
}
class UnregisterInterceptorLambda implements ILambda {
@Override
public Object handle(ClientInvocationHandler theTarget, Object[] theArgs) {
@ -102,13 +122,4 @@ class ClientInvocationHandlerFactory {
}
}
class RegisterInterceptorLambda implements ILambda {
@Override
public Object handle(ClientInvocationHandler theTarget, Object[] theArgs) {
IClientInterceptor interceptor = (IClientInterceptor) theArgs[0];
theTarget.registerInterceptor(interceptor);
return null;
}
}
}

View File

@ -19,9 +19,7 @@ package ca.uhn.fhir.rest.client;
* limitations under the License.
* #L%
*/
import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import static org.apache.commons.lang3.StringUtils.*;
import java.io.IOException;
import java.io.Reader;
@ -49,6 +47,7 @@ import org.hl7.fhir.instance.model.api.IPrimitiveType;
import ca.uhn.fhir.context.BaseRuntimeChildDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementCompositeDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementDefinition;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.FhirVersionEnum;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
@ -67,6 +66,8 @@ import ca.uhn.fhir.parser.DataFormatException;
import ca.uhn.fhir.parser.IParser;
import ca.uhn.fhir.rest.api.MethodOutcome;
import ca.uhn.fhir.rest.api.PreferReturnEnum;
import ca.uhn.fhir.rest.api.SummaryEnum;
import ca.uhn.fhir.rest.client.exceptions.InvalidResponseException;
import ca.uhn.fhir.rest.client.exceptions.NonFhirResponseException;
import ca.uhn.fhir.rest.gclient.IClientExecutable;
import ca.uhn.fhir.rest.gclient.ICreate;
@ -225,7 +226,7 @@ public class GenericClient extends BaseClient implements IGenericClient {
return delete(theType, new IdDt(theId));
}
private <T extends IBaseResource> T doReadOrVRead(final Class<T> theType, IIdType theId, boolean theVRead, ICallable<T> theNotModifiedHandler, String theIfVersionMatches) {
private <T extends IBaseResource> T doReadOrVRead(final Class<T> theType, IIdType theId, boolean theVRead, ICallable<T> theNotModifiedHandler, String theIfVersionMatches, Boolean thePrettyPrint, SummaryEnum theSummary, EncodingEnum theEncoding) {
String resName = toResourceName(theType);
IIdType id = theId;
if (!id.hasBaseUrl()) {
@ -254,13 +255,14 @@ public class GenericClient extends BaseClient implements IGenericClient {
invocation.addHeader(Constants.HEADER_IF_NONE_MATCH, '"' + theIfVersionMatches + '"');
}
ResourceResponseHandler<T> binding = new ResourceResponseHandler<T>(theType, id);
boolean allowHtmlResponse = (theSummary == SummaryEnum.TEXT) || (theSummary == null && getSummary() == SummaryEnum.TEXT);
ResourceResponseHandler<T> binding = new ResourceResponseHandler<T>(theType, id, allowHtmlResponse);
if (theNotModifiedHandler == null) {
return invokeClient(myContext, binding, invocation, myLogRequestAndResponse);
return invokeClient(myContext, binding, invocation, theEncoding, thePrettyPrint, myLogRequestAndResponse, theSummary);
} else {
try {
return invokeClient(myContext, binding, invocation, myLogRequestAndResponse);
return invokeClient(myContext, binding, invocation, theEncoding, thePrettyPrint, myLogRequestAndResponse, theSummary);
} catch (NotModifiedException e) {
return theNotModifiedHandler.call();
}
@ -411,7 +413,7 @@ public class GenericClient extends BaseClient implements IGenericClient {
@Override
public <T extends IBaseResource> T read(final Class<T> theType, UriDt theUrl) {
IdDt id = theUrl instanceof IdDt ? ((IdDt) theUrl) : new IdDt(theUrl);
return doReadOrVRead(theType, id, false, null, null);
return doReadOrVRead(theType, id, false, null, null, false, null, null);
}
@Override
@ -557,7 +559,7 @@ public class GenericClient extends BaseClient implements IGenericClient {
if (theId.hasVersionIdPart() == false) {
throw new IllegalArgumentException(myContext.getLocalizer().getMessage(I18N_NO_VERSION_ID_FOR_VREAD, theId.getValue()));
}
return doReadOrVRead(theType, theId, true, null, null);
return doReadOrVRead(theType, theId, true, null, null, false, null, null);
}
/* also deprecated in interface */
@ -587,9 +589,17 @@ public class GenericClient extends BaseClient implements IGenericClient {
}
private abstract class BaseClientExecutable<T extends IClientExecutable<?, ?>, Y> implements IClientExecutable<T, Y> {
private EncodingEnum myParamEncoding;
private Boolean myPrettyPrint;
protected EncodingEnum myParamEncoding;
protected Boolean myPrettyPrint;
private boolean myQueryLogRequestAndResponse;
protected SummaryEnum mySummaryMode;
@SuppressWarnings("unchecked")
@Override
public T summaryMode(SummaryEnum theSummary) {
mySummaryMode = theSummary;
return ((T) this);
}
@SuppressWarnings("unchecked")
@Override
@ -629,7 +639,7 @@ public class GenericClient extends BaseClient implements IGenericClient {
myLastRequest = theInvocation.asHttpRequest(getServerBase(), theParams, getEncoding(), myPrettyPrint);
}
Z resp = invokeClient(myContext, theHandler, theInvocation, myParamEncoding, myPrettyPrint, myQueryLogRequestAndResponse || myLogRequestAndResponse);
Z resp = invokeClient(myContext, theHandler, theInvocation, myParamEncoding, myPrettyPrint, myQueryLogRequestAndResponse || myLogRequestAndResponse, mySummaryMode);
return resp;
}
@ -1477,11 +1487,11 @@ public class GenericClient extends BaseClient implements IGenericClient {
private RuntimeResourceDefinition myType;
@Override
public Object execute() {
public Object execute() {//AAA
if (myId.hasVersionIdPart()) {
return doReadOrVRead(myType.getImplementingClass(), myId, true, myNotModifiedHandler, myIfVersionMatches);
return doReadOrVRead(myType.getImplementingClass(), myId, true, myNotModifiedHandler, myIfVersionMatches, myPrettyPrint, mySummaryMode, myParamEncoding);
} else {
return doReadOrVRead(myType.getImplementingClass(), myId, false, myNotModifiedHandler, myIfVersionMatches);
return doReadOrVRead(myType.getImplementingClass(), myId, false, myNotModifiedHandler, myIfVersionMatches, myPrettyPrint, mySummaryMode, myParamEncoding);
}
}
@ -1626,16 +1636,26 @@ public class GenericClient extends BaseClient implements IGenericClient {
private IIdType myId;
private Class<T> myType;
private boolean myAllowHtmlResponse;
public ResourceResponseHandler(Class<T> theType, IIdType theId) {
myType = theType;
myId = theId;
}
public ResourceResponseHandler(Class<T> theType, IIdType theId, boolean theAllowHtmlResponse) {
myType = theType;
myId = theId;
myAllowHtmlResponse = theAllowHtmlResponse;
}
@Override
public T invokeClient(String theResponseMimeType, Reader theResponseReader, int theResponseStatusCode, Map<String, List<String>> theHeaders) throws BaseServerResponseException {
EncodingEnum respType = EncodingEnum.forContentType(theResponseMimeType);
if (respType == null) {
if (myAllowHtmlResponse && theResponseMimeType.toLowerCase().contains(Constants.CT_HTML) && myType != null) {
return readHtmlResponse(theResponseReader);
}
throw NonFhirResponseException.newInstance(theResponseStatusCode, theResponseMimeType, theResponseReader);
}
IParser parser = respType.newParser(myContext);
@ -1645,6 +1665,29 @@ public class GenericClient extends BaseClient implements IGenericClient {
return retVal;
}
@SuppressWarnings("unchecked")
private T readHtmlResponse(Reader theResponseReader) {
RuntimeResourceDefinition resDef = myContext.getResourceDefinition(myType);
IBaseResource instance = resDef.newInstance();
BaseRuntimeChildDefinition textChild = resDef.getChildByName("text");
BaseRuntimeElementCompositeDefinition<?> textElement = (BaseRuntimeElementCompositeDefinition<?>) textChild.getChildByName("text");
IBase textInstance = textElement.newInstance();
textChild.getMutator().addValue(instance, textInstance);
BaseRuntimeChildDefinition divChild = textElement.getChildByName("div");
BaseRuntimeElementDefinition<?> divElement = divChild.getChildByName("div");
IPrimitiveType<?> divInstance = (IPrimitiveType<?>) divElement.newInstance();
try {
divInstance.setValueAsString(IOUtils.toString(theResponseReader));
} catch (IllegalArgumentException e) {
throw new InvalidResponseException(400, "Failed to process HTML response from server", e);
} catch (IOException e) {
throw new InvalidResponseException(400, "Failed to process HTML response from server", e);
}
divChild.getMutator().addValue(textInstance, divInstance);
return (T) instance;
}
}
@SuppressWarnings({ "rawtypes", "unchecked" })

View File

@ -24,6 +24,7 @@ package ca.uhn.fhir.rest.client.api;
import org.apache.http.client.HttpClient;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.rest.api.SummaryEnum;
import ca.uhn.fhir.rest.client.IClientInterceptor;
import ca.uhn.fhir.rest.server.EncodingEnum;
@ -40,6 +41,17 @@ public interface IRestfulClient {
*/
HttpClient getHttpClient();
/**
* Base URL for the server, with no trailing "/"
*/
String getServerBase();
/**
* Register a new interceptor for this client. An interceptor can be used to add additional
* logging, or add security headers, or pre-process responses, etc.
*/
void registerInterceptor(IClientInterceptor theInterceptor);
/**
* Specifies that the client should use the given encoding to do its
* queries. This means that the client will append the "_format" param
@ -50,7 +62,7 @@ public interface IRestfulClient {
* an encoding (which generally implies the use of XML). The default is <code>null</code>.
*/
void setEncoding(EncodingEnum theEncoding);
/**
* Specifies that the client should request that the server respond with "pretty printing"
* enabled. Note that this is a non-standard parameter, not all servers will
@ -61,15 +73,10 @@ public interface IRestfulClient {
void setPrettyPrint(Boolean thePrettyPrint);
/**
* Base URL for the server, with no trailing "/"
* If not set to <code>null</code>, specifies a value for the <code>_summary</code> parameter
* to be applied globally on this client.
*/
String getServerBase();
/**
* Register a new interceptor for this client. An interceptor can be used to add additional
* logging, or add security headers, or pre-process responses, etc.
*/
void registerInterceptor(IClientInterceptor theInterceptor);
void setSummary(SummaryEnum theSummary);
/**
* Remove an intercaptor that was previously registered using {@link IRestfulClient#registerInterceptor(IClientInterceptor)}

View File

@ -1,5 +1,7 @@
package ca.uhn.fhir.rest.gclient;
import ca.uhn.fhir.rest.api.SummaryEnum;
/*
* #%L
* HAPI FHIR - Core Library
@ -23,12 +25,6 @@ package ca.uhn.fhir.rest.gclient;
public interface IClientExecutable<T extends IClientExecutable<?,?>, Y> {
Y execute();
T encodedJson();
T encodedXml();
/**
* If set to true, the client will log the request and response to the SLF4J logger. This can be useful for
* debugging, but is generally not desirable in a production situation.
@ -38,6 +34,17 @@ public interface IClientExecutable<T extends IClientExecutable<?,?>, Y> {
@Deprecated
T andLogRequestAndResponse(boolean theLogRequestAndResponse);
T encodedJson();
T encodedXml();
Y execute();
T prettyPrint();
/**
* Request that the server modify the response using the <code>_summary</code> param
*/
T summaryMode(SummaryEnum theSummary);
}

View File

@ -184,7 +184,7 @@ abstract class BaseAddOrDeleteTagsMethodBinding extends BaseMethodBinding<Void>
HttpServletResponse response = theRequest.getServletResponse();
response.setContentType(Constants.CT_TEXT);
response.setStatus(Constants.STATUS_HTTP_200_OK);
response.setCharacterEncoding(Constants.CHARSETNAME_UTF_8);
response.setCharacterEncoding(Constants.CHARSET_NAME_UTF8);
theServer.addHeadersToResponse(response);

View File

@ -46,21 +46,18 @@ import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.model.api.Bundle;
import ca.uhn.fhir.model.api.IResource;
import ca.uhn.fhir.model.api.Include;
import ca.uhn.fhir.model.api.ResourceMetadataKeyEnum;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.base.resource.BaseOperationOutcome;
import ca.uhn.fhir.model.primitive.InstantDt;
import ca.uhn.fhir.model.valueset.BundleTypeEnum;
import ca.uhn.fhir.parser.IParser;
import ca.uhn.fhir.rest.api.MethodOutcome;
import ca.uhn.fhir.rest.api.RequestTypeEnum;
import ca.uhn.fhir.rest.api.SummaryEnum;
import ca.uhn.fhir.rest.client.exceptions.InvalidResponseException;
import ca.uhn.fhir.rest.server.Constants;
import ca.uhn.fhir.rest.server.EncodingEnum;
import ca.uhn.fhir.rest.server.IBundleProvider;
import ca.uhn.fhir.rest.server.IVersionSpecificBundleFactory;
import ca.uhn.fhir.rest.server.RestfulServer;
import ca.uhn.fhir.rest.server.RestfulServer.NarrativeModeEnum;
import ca.uhn.fhir.rest.server.RestfulServerUtils;
import ca.uhn.fhir.rest.server.exceptions.BaseServerResponseException;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
@ -83,6 +80,8 @@ abstract class BaseResourceReturningMethodBinding extends BaseMethodBinding<Obje
set.add(Constants.PARAM_SORT_ASC);
set.add(Constants.PARAM_SORT_DESC);
set.add(Constants.PARAM_COUNT);
set.add(Constants.PARAM_SUMMARY);
set.add(Constants.PARAM_ELEMENTS);
ALLOWED_PARAMS = Collections.unmodifiableSet(set);
}
@ -242,7 +241,7 @@ abstract class BaseResourceReturningMethodBinding extends BaseMethodBinding<Obje
boolean prettyPrint = RestfulServerUtils.prettyPrintResponse(theServer, theRequest);
// Narrative mode
NarrativeModeEnum narrativeMode = RestfulServerUtils.determineNarrativeMode(theRequest);
Set<SummaryEnum> summaryMode = RestfulServerUtils.determineSummaryMode(theRequest);
// Determine response encoding
EncodingEnum responseEncoding = RestfulServerUtils.determineResponseEncodingNoDefault(theRequest.getServletRequest());
@ -331,7 +330,8 @@ abstract class BaseResourceReturningMethodBinding extends BaseMethodBinding<Obje
return;
}
}
RestfulServerUtils.streamResponseAsResource(theServer, response, resource, responseEncoding, prettyPrint, requestIsBrowser, narrativeMode, Constants.STATUS_HTTP_200_OK, respondGzip,
RestfulServerUtils.streamResponseAsResource(theServer, response, resource, responseEncoding, prettyPrint, requestIsBrowser, summaryMode, Constants.STATUS_HTTP_200_OK, respondGzip,
theRequest.getFhirServerBase(), isAddContentLocationHeader());
break;
} else {
@ -355,7 +355,7 @@ abstract class BaseResourceReturningMethodBinding extends BaseMethodBinding<Obje
return;
}
}
RestfulServerUtils.streamResponseAsBundle(theServer, response, bundle, responseEncoding, theRequest.getFhirServerBase(), prettyPrint, narrativeMode, respondGzip, requestIsBrowser);
RestfulServerUtils.streamResponseAsBundle(theServer, response, bundle, responseEncoding, theRequest.getFhirServerBase(), prettyPrint, summaryMode, respondGzip, requestIsBrowser);
} else {
IBaseResource resBundle = bundleFactory.getResourceBundle();
for (int i = theServer.getInterceptors().size() - 1; i >= 0; i--) {
@ -366,7 +366,7 @@ abstract class BaseResourceReturningMethodBinding extends BaseMethodBinding<Obje
return;
}
}
RestfulServerUtils.streamResponseAsResource(theServer, response, resBundle, responseEncoding, prettyPrint, requestIsBrowser, narrativeMode,
RestfulServerUtils.streamResponseAsResource(theServer, response, resBundle, responseEncoding, prettyPrint, requestIsBrowser, summaryMode,
Constants.STATUS_HTTP_200_OK, theRequest.isRespondGzip(), theRequest.getFhirServerBase(), isAddContentLocationHeader());
}
@ -391,13 +391,20 @@ abstract class BaseResourceReturningMethodBinding extends BaseMethodBinding<Obje
}
}
RestfulServerUtils.streamResponseAsResource(theServer, response, resource, responseEncoding, prettyPrint, requestIsBrowser, narrativeMode, Constants.STATUS_HTTP_200_OK, respondGzip,
RestfulServerUtils.streamResponseAsResource(theServer, response, resource, responseEncoding, prettyPrint, requestIsBrowser, summaryMode, Constants.STATUS_HTTP_200_OK, respondGzip,
theRequest.getFhirServerBase(), isAddContentLocationHeader());
break;
}
}
}
private boolean isOmitEntries(Set<SummaryEnum> theSummaryMode) {
if (theSummaryMode == null || !theSummaryMode.contains(SummaryEnum.COUNT)) {
return false;
}
return true;
}
/**
* Should the response include a Content-Location header. Search method bunding (and any others?) may override this to disable the content-location, since it doesn't make sense
*/

View File

@ -193,7 +193,7 @@ public class GetTagsMethodBinding extends BaseMethodBinding<TagList> {
HttpServletResponse response = theRequest.getServletResponse();
response.setContentType(responseEncoding.getResourceContentType());
response.setStatus(Constants.STATUS_HTTP_200_OK);
response.setCharacterEncoding(Constants.CHARSETNAME_UTF_8);
response.setCharacterEncoding(Constants.CHARSET_NAME_UTF8);
theServer.addHeadersToResponse(response);

View File

@ -1,7 +1,6 @@
package ca.uhn.fhir.rest.method;
import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import static org.apache.commons.lang3.StringUtils.*;
import java.io.IOException;
import java.io.PushbackReader;
@ -69,6 +68,7 @@ import ca.uhn.fhir.rest.annotation.Validate;
import ca.uhn.fhir.rest.annotation.VersionIdParam;
import ca.uhn.fhir.rest.api.MethodOutcome;
import ca.uhn.fhir.rest.api.RestOperationTypeEnum;
import ca.uhn.fhir.rest.api.SummaryEnum;
import ca.uhn.fhir.rest.api.ValidationModeEnum;
import ca.uhn.fhir.rest.client.BaseHttpClientInvocation;
import ca.uhn.fhir.rest.method.OperationParameter.IConverter;
@ -85,7 +85,6 @@ import ca.uhn.fhir.rest.param.TransactionParameter;
import ca.uhn.fhir.rest.server.Constants;
import ca.uhn.fhir.rest.server.EncodingEnum;
import ca.uhn.fhir.rest.server.IDynamicSearchResourceProvider;
import ca.uhn.fhir.rest.server.RestfulServer.NarrativeModeEnum;
import ca.uhn.fhir.rest.server.SearchParameterMap;
import ca.uhn.fhir.util.ReflectionUtil;
@ -386,10 +385,10 @@ public class MethodUtil {
}
if (parameterType.equals(HttpServletRequest.class) || parameterType.equals(ServletRequest.class)) {
param = new ServletRequestParameter();
} else if (parameterType.equals(SummaryEnum.class)) {
param = new SummaryEnumParameter();
} else if (parameterType.equals(HttpServletResponse.class) || parameterType.equals(ServletResponse.class)) {
param = new ServletResponseParameter();
} else if (parameterType.equals(NarrativeModeEnum.class)) {
param = new NarrativeModeParameter();
} else {
for (int i = 0; i < annotations.length && param == null; i++) {
Annotation nextAnnotation = annotations[i];

View File

@ -1,68 +0,0 @@
package ca.uhn.fhir.rest.method;
/*
* #%L
* HAPI FHIR - Core Library
* %%
* Copyright (C) 2014 - 2015 University Health Network
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.hl7.fhir.instance.model.api.IBaseResource;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.rest.server.Constants;
import ca.uhn.fhir.rest.server.RestfulServer.NarrativeModeEnum;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
class NarrativeModeParameter implements IParameter {
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(ServletResponseParameter.class);
@Override
public void translateClientArgumentIntoQueryArgument(FhirContext theContext, Object theSourceClientArgument, Map<String, List<String>> theTargetQueryArguments, IBaseResource theTargetResource)
throws InternalErrorException {
if (theSourceClientArgument != null) {
NarrativeModeEnum n = (NarrativeModeEnum) theSourceClientArgument;
theTargetQueryArguments.put(Constants.PARAM_NARRATIVE, Collections.singletonList(n.name().toLowerCase()));
}
}
@Override
public Object translateQueryParametersIntoServerArgument(RequestDetails theRequest, byte[] theRequestContents, BaseMethodBinding<?> theMethodBinding) throws InternalErrorException, InvalidRequestException {
String val = theRequest.getServletRequest().getParameter(Constants.PARAM_NARRATIVE);
if (val != null) {
try {
return NarrativeModeEnum.valueOfCaseInsensitive(val);
} catch (IllegalArgumentException e) {
ourLog.debug("Invalid {} parameger: {}", Constants.PARAM_NARRATIVE, val);
return null;
}
}
return null;
}
@Override
public void initializeTypes(Method theMethod, Class<? extends Collection<?>> theOuterCollectionType, Class<? extends Collection<?>> theInnerCollectionType, Class<?> theParameterType) {
// ignore
}
}

View File

@ -0,0 +1,146 @@
package ca.uhn.fhir.rest.method;
/*
* #%L
* HAPI FHIR - Core Library
* %%
* Copyright (C) 2014 - 2015 University Health Network
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import static org.apache.commons.lang3.StringUtils.*;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.hl7.fhir.instance.model.api.IBaseResource;
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.rest.api.SummaryEnum;
import ca.uhn.fhir.rest.param.CollectionBinder;
import ca.uhn.fhir.rest.server.Constants;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
public class SummaryEnumParameter implements IParameter {
@SuppressWarnings("rawtypes")
private Class<? extends Collection> myInnerCollectionType;
@SuppressWarnings("unchecked")
@Override
public void translateClientArgumentIntoQueryArgument(FhirContext theContext, Object theSourceClientArgument, Map<String, List<String>> theTargetQueryArguments, IBaseResource theTargetResource) throws InternalErrorException {
if (theSourceClientArgument instanceof Collection) {
List<String> values = new ArrayList<String>();
for (SummaryEnum next : (Collection<SummaryEnum>) theSourceClientArgument) {
if (next != null) {
values.add(next.getCode());
}
}
theTargetQueryArguments.put(Constants.PARAM_SUMMARY, values);
} else {
SummaryEnum ss = (SummaryEnum) theSourceClientArgument;
if (ss != null) {
theTargetQueryArguments.put(Constants.PARAM_SUMMARY, Collections.singletonList(ss.getCode()));
}
}
}
@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
public Object translateQueryParametersIntoServerArgument(RequestDetails theRequest, byte[] theRequestContents, BaseMethodBinding<?> theMethodBinding) throws InternalErrorException, InvalidRequestException {
Set<SummaryEnum> value = getSummaryValueOrNull(theRequest);
if (value == null || value.isEmpty()) {
return null;
}
if (myInnerCollectionType == null) {
return value.iterator().next();
}
try {
Collection retVal = myInnerCollectionType.newInstance();
retVal.addAll(value);
return retVal;
} catch (InstantiationException e) {
throw new InternalErrorException("Failed to instantiate " + myInnerCollectionType, e);
} catch (IllegalAccessException e) {
throw new InternalErrorException("Failed to instantiate " + myInnerCollectionType, e);
}
}
public static Set<SummaryEnum> getSummaryValueOrNull(RequestDetails theRequest) {
String[] summary = theRequest.getParameters().get(Constants.PARAM_SUMMARY);
Set<SummaryEnum> retVal;
if (summary == null || summary.length == 0) {
retVal = null;
} else if (isBlank(summary[0])) {
retVal = null;
} else if (summary.length == 1) {
retVal = toCollectionOrNull(SummaryEnum.fromCode(summary[0]));
if (retVal == null) {
retVal = toCollectionOrNull(SummaryEnum.fromCode(summary[0].toLowerCase()));
}
} else {
retVal = new HashSet<SummaryEnum>();
for (String next : summary) {
SummaryEnum value = SummaryEnum.fromCode(next);
if (value == null) {
value = SummaryEnum.fromCode(next.toLowerCase());
}
if (value != null) {
retVal.add(value);
}
}
}
if (retVal != null) {
if (retVal.contains(SummaryEnum.TEXT)) {
if (retVal.size() > 1) {
String msg = theRequest.getServer().getFhirContext().getLocalizer().getMessage(SummaryEnumParameter.class, "cantCombineText");
throw new InvalidRequestException(msg);
}
}
}
return retVal;
}
private static Set<SummaryEnum> toCollectionOrNull(SummaryEnum theFromCode) {
if (theFromCode == null) {
return null;
}
return Collections.singleton(theFromCode);
}
@Override
public void initializeTypes(Method theMethod, Class<? extends Collection<?>> theOuterCollectionType, Class<? extends Collection<?>> theInnerCollectionType, Class<?> theParameterType) {
if (theOuterCollectionType != null) {
throw new ConfigurationException("Method '" + theMethod.getName() + "' in type '" + theMethod.getDeclaringClass().getCanonicalName() + "' is of type " + SummaryEnum.class + " but can not be a collection of collections");
}
if (theInnerCollectionType != null) {
myInnerCollectionType = CollectionBinder.getInstantiableCollectionType(theInnerCollectionType, SummaryEnum.class.getSimpleName());
}
}
}

View File

@ -29,18 +29,18 @@ import java.util.Set;
public class Constants {
public static final String CHARSET_NAME_UTF8 = "UTF-8";
public static final Charset CHARSET_UTF8;
public static final String CHARSETNAME_UTF_8 = "UTF-8";
public static final String CHARSET_UTF8_CTSUFFIX = "; charset=" + CHARSET_NAME_UTF8;
public static final String CT_ATOM_XML = "application/atom+xml";
public static final String CT_FHIR_JSON = "application/json+fhir";
public static final String CT_FHIR_XML = "application/xml+fhir";
public static final String CT_HTML = "text/html";
public static final String CTSUFFIX_CHARSET_UTF8 = "; charset=" + CHARSETNAME_UTF_8;
public static final String CT_HTML_WITH_UTF8 = "text/html" + CTSUFFIX_CHARSET_UTF8;
public static final String CT_HTML_WITH_UTF8 = "text/html" + CHARSET_UTF8_CTSUFFIX;
public static final String CT_JSON = "application/json";
public static final String CT_OCTET_STREAM = "application/octet-stream";
public static final String CT_TEXT = "text/plain";
public static final String CT_TEXT_WITH_UTF8 = CT_TEXT + CTSUFFIX_CHARSET_UTF8;
public static final String CT_TEXT_WITH_UTF8 = CT_TEXT + CHARSET_UTF8_CTSUFFIX;
public static final String CT_XML = "application/xml";
public static final String ENCODING_GZIP = "gzip";
public static final String EXTOP_VALIDATE = "$validate";
@ -97,6 +97,7 @@ public class Constants {
public static final String OPENSEARCH_NS_OLDER = "http://purl.org/atompub/tombstones/1.0";
public static final String PARAM_COUNT = "_count";
public static final String PARAM_DELETE = "_delete";
public static final String PARAM_ELEMENTS = "_elements";
public static final String PARAM_FORMAT = "_format";
public static final String PARAM_HISTORY = "_history";
public static final String PARAM_INCLUDE = "_include";
@ -113,6 +114,7 @@ public class Constants {
public static final String PARAM_SORT = "_sort";
public static final String PARAM_SORT_ASC = "_sort:asc";
public static final String PARAM_SORT_DESC = "_sort:desc";
public static final String PARAM_SUMMARY = "_summary";
public static final String PARAM_TAG = "_tag";
public static final String PARAM_TAGS = "_tags";
public static final String PARAM_VALIDATE = "_validate";
@ -138,6 +140,8 @@ public class Constants {
public static final int STATUS_HTTP_501_NOT_IMPLEMENTED = 501;
public static final String URL_TOKEN_HISTORY = "_history";
public static final String URL_TOKEN_METADATA = "metadata";
public static final String TAG_SUBSETTED_SYSTEM = "http://hl7.org/fhir/v3/ObservationValue";
public static final String TAG_SUBSETTED_CODE = "SUBSETTED";
static {
Map<String, EncodingEnum> valToEncoding = new HashMap<String, EncodingEnum>();
@ -162,7 +166,7 @@ public class Constants {
FORMAT_VAL_TO_ENCODING = Collections.unmodifiableMap(valToEncoding);
CHARSET_UTF8 = Charset.forName(CHARSETNAME_UTF_8);
CHARSET_UTF8 = Charset.forName(CHARSET_NAME_UTF8);
HashMap<Integer, String> statusNames = new HashMap<Integer, String>();

View File

@ -156,6 +156,47 @@ public class Dstu1BundleFactory implements IVersionSpecificBundleFactory {
}
@Override
public void addRootPropertiesToBundle(String theAuthor, String theServerBase, String theCompleteUrl, Integer theTotalResults, BundleTypeEnum theBundleType, IPrimitiveType<Date> theLastUpdated) {
if (myBundle.getAuthorName().isEmpty()) {
myBundle.getAuthorName().setValue(theAuthor);
}
if (myBundle.getUpdated().isEmpty() && isNotBlank(theLastUpdated.getValueAsString())) {
myBundle.getUpdated().setValueAsString(theLastUpdated.getValueAsString());
}
if (myBundle.getBundleId().isEmpty()) {
myBundle.getBundleId().setValue(UUID.randomUUID().toString());
}
if (myBundle.getLinkBase().isEmpty()) {
myBundle.getLinkBase().setValue(theServerBase);
}
if (myBundle.getLinkSelf().isEmpty()) {
myBundle.getLinkSelf().setValue(theCompleteUrl);
}
if (theBundleType != null && myBundle.getType().isEmpty()) {
myBundle.getType().setValueAsString(theBundleType.getCode());
}
if (myBundle.getTotalResults().isEmpty() && theTotalResults != null) {
myBundle.getTotalResults().setValue(theTotalResults);
}
}
@Override
public Bundle getDstu1Bundle() {
return myBundle;
}
@Override
public IResource getResourceBundle() {
return null;
}
@Override
public void initializeBundleFromBundleProvider(RestfulServer theServer, IBundleProvider theResult, EncodingEnum theResponseEncoding, String theServerBase, String theCompleteUrl, boolean thePrettyPrint, int theOffset, Integer theLimit, String theSearchId, BundleTypeEnum theBundleType, Set<Include> theIncludes) {
int numToReturn;
String searchId = null;
@ -223,47 +264,6 @@ public class Dstu1BundleFactory implements IVersionSpecificBundleFactory {
}
}
}
@Override
public void addRootPropertiesToBundle(String theAuthor, String theServerBase, String theCompleteUrl, Integer theTotalResults, BundleTypeEnum theBundleType, IPrimitiveType<Date> theLastUpdated) {
if (myBundle.getAuthorName().isEmpty()) {
myBundle.getAuthorName().setValue(theAuthor);
}
if (myBundle.getUpdated().isEmpty() && isNotBlank(theLastUpdated.getValueAsString())) {
myBundle.getUpdated().setValueAsString(theLastUpdated.getValueAsString());
}
if (myBundle.getBundleId().isEmpty()) {
myBundle.getBundleId().setValue(UUID.randomUUID().toString());
}
if (myBundle.getLinkBase().isEmpty()) {
myBundle.getLinkBase().setValue(theServerBase);
}
if (myBundle.getLinkSelf().isEmpty()) {
myBundle.getLinkSelf().setValue(theCompleteUrl);
}
if (theBundleType != null && myBundle.getType().isEmpty()) {
myBundle.getType().setValueAsString(theBundleType.getCode());
}
if (myBundle.getTotalResults().isEmpty() && theTotalResults != null) {
myBundle.getTotalResults().setValue(theTotalResults);
}
}
@Override
public Bundle getDstu1Bundle() {
return myBundle;
}
@Override
public IResource getResourceBundle() {
return null;
}
@Override
public void initializeBundleFromResourceList(String theAuthor, List<? extends IBaseResource> theResult, String theServerBase, String theCompleteUrl, int theTotalResults, BundleTypeEnum theBundleType) {

View File

@ -32,8 +32,7 @@ import ca.uhn.fhir.model.api.Include;
import ca.uhn.fhir.model.valueset.BundleTypeEnum;
/**
* This interface should be considered experimental and will likely change in future releases
* of HAPI. Use with caution!
* This interface should be considered experimental and will likely change in future releases of HAPI. Use with caution!
*/
public interface IVersionSpecificBundleFactory {
@ -41,8 +40,8 @@ public interface IVersionSpecificBundleFactory {
void addRootPropertiesToBundle(String theAuthor, String theServerBase, String theCompleteUrl, Integer theTotalResults, BundleTypeEnum theBundleType, IPrimitiveType<Date> theLastUpdated);
void initializeBundleFromBundleProvider(RestfulServer theServer, IBundleProvider theResult, EncodingEnum theResponseEncoding, String theServerBase, String theCompleteUrl, boolean thePrettyPrint,
int theOffset, Integer theCount, String theSearchId, BundleTypeEnum theBundleType, Set<Include> theIncludes);
void initializeBundleFromBundleProvider(RestfulServer theServer, IBundleProvider theResult, EncodingEnum theResponseEncoding, String theServerBase, String theCompleteUrl, boolean thePrettyPrint, int theOffset, Integer theCount, String theSearchId, BundleTypeEnum theBundleType,
Set<Include> theIncludes);
Bundle getDstu1Bundle();

View File

@ -59,6 +59,7 @@ import ca.uhn.fhir.rest.annotation.IdParam;
import ca.uhn.fhir.rest.annotation.Initialize;
import ca.uhn.fhir.rest.api.RequestTypeEnum;
import ca.uhn.fhir.rest.api.RestOperationTypeEnum;
import ca.uhn.fhir.rest.api.SummaryEnum;
import ca.uhn.fhir.rest.method.BaseMethodBinding;
import ca.uhn.fhir.rest.method.ConformanceMethodBinding;
import ca.uhn.fhir.rest.method.RequestDetails;
@ -448,7 +449,7 @@ public class RestfulServer extends HttpServlet {
EncodingEnum responseEncoding = RestfulServerUtils.determineResponseEncodingNoDefault(theRequest.getServletRequest());
boolean prettyPrint = RestfulServerUtils.prettyPrintResponse(this, theRequest);
boolean requestIsBrowser = requestIsBrowser(theRequest.getServletRequest());
NarrativeModeEnum narrativeMode = RestfulServerUtils.determineNarrativeMode(theRequest);
Set<SummaryEnum> summaryMode = RestfulServerUtils.determineSummaryMode(theRequest);
boolean respondGzip = theRequest.isRespondGzip();
IVersionSpecificBundleFactory bundleFactory = getFhirContext().newBundleFactory();
@ -476,7 +477,7 @@ public class RestfulServer extends HttpServlet {
return;
}
}
RestfulServerUtils.streamResponseAsBundle(this, theResponse, bundle, responseEncoding, theRequest.getFhirServerBase(), prettyPrint, narrativeMode, respondGzip, requestIsBrowser);
RestfulServerUtils.streamResponseAsBundle(this, theResponse, bundle, responseEncoding, theRequest.getFhirServerBase(), prettyPrint, summaryMode, respondGzip, requestIsBrowser);
} else {
IBaseResource resBundle = bundleFactory.getResourceBundle();
for (int i = getInterceptors().size() - 1; i >= 0; i--) {
@ -487,7 +488,7 @@ public class RestfulServer extends HttpServlet {
return;
}
}
RestfulServerUtils.streamResponseAsResource(this, theResponse, resBundle, responseEncoding, prettyPrint, requestIsBrowser, narrativeMode, Constants.STATUS_HTTP_200_OK,
RestfulServerUtils.streamResponseAsResource(this, theResponse, resBundle, responseEncoding, prettyPrint, requestIsBrowser, summaryMode, Constants.STATUS_HTTP_200_OK,
theRequest.isRespondGzip(), theRequest.getFhirServerBase(), false);
}
}
@ -1140,11 +1141,4 @@ public class RestfulServer extends HttpServlet {
return userAgent != null && userAgent.contains("Mozilla");
}
public enum NarrativeModeEnum {
NORMAL, ONLY, SUPPRESS;
public static NarrativeModeEnum valueOfCaseInsensitive(String theCode) {
return valueOf(NarrativeModeEnum.class, theCode.toUpperCase());
}
}
}

View File

@ -27,8 +27,11 @@ import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@ -59,14 +62,18 @@ import ca.uhn.fhir.model.api.TagList;
import ca.uhn.fhir.model.primitive.InstantDt;
import ca.uhn.fhir.parser.IParser;
import ca.uhn.fhir.rest.api.PreferReturnEnum;
import ca.uhn.fhir.rest.api.SummaryEnum;
import ca.uhn.fhir.rest.method.RequestDetails;
import ca.uhn.fhir.rest.method.SummaryEnumParameter;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
public class RestfulServerUtils {
static final Pattern ACCEPT_HEADER_PATTERN = Pattern.compile("\\s*([a-zA-Z0-9+.*/-]+)\\s*(;\\s*([a-zA-Z]+)\\s*=\\s*([a-zA-Z0-9.]+)\\s*)?(,?)");
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(RestfulServerUtils.class);
private static final HashSet<String> TEXT_ENCODE_ELEMENTS = new HashSet<String>(Arrays.asList("Bundle", "*.text"));
public static void addProfileToBundleEntry(FhirContext theContext, IBaseResource theResource, String theServerBase) {
if (theResource instanceof IResource) {
TagList tl = ResourceMetadataKeyEnum.TAG_LIST.get((IResource) theResource);
@ -74,7 +81,7 @@ public class RestfulServerUtils {
tl = new TagList();
ResourceMetadataKeyEnum.TAG_LIST.put((IResource) theResource, tl);
}
RuntimeResourceDefinition nextDef = theContext.getResourceDefinition(theResource);
String profile = nextDef.getResourceProfile(theServerBase);
if (isNotBlank(profile)) {
@ -82,7 +89,7 @@ public class RestfulServerUtils {
}
}
}
public static String createPagingLink(Set<Include> theIncludes, String theServerBase, String theSearchId, int theOffset, int theCount, EncodingEnum theResponseEncoding, boolean thePrettyPrint) {
try {
StringBuilder b = new StringBuilder();
@ -130,26 +137,6 @@ public class RestfulServerUtils {
}
}
public static RestfulServer.NarrativeModeEnum determineNarrativeMode(RequestDetails theRequest) {
Map<String, String[]> requestParams = theRequest.getParameters();
String[] narrative = requestParams.get(Constants.PARAM_NARRATIVE);
RestfulServer.NarrativeModeEnum narrativeMode = null;
if (narrative != null && narrative.length > 0) {
try {
narrativeMode = RestfulServer.NarrativeModeEnum.valueOfCaseInsensitive(narrative[0]);
} catch (IllegalArgumentException e) {
ourLog.debug("Invalid {} parameger: {}", Constants.PARAM_NARRATIVE, narrative[0]);
narrativeMode = null;
}
}
if (narrativeMode == null) {
narrativeMode = RestfulServer.NarrativeModeEnum.NORMAL;
}
return narrativeMode;
}
public static EncodingEnum determineRequestEncoding(RequestDetails theReq) {
EncodingEnum retVal = determineRequestEncodingNoDefault(theReq);
if (retVal != null) {
@ -199,8 +186,8 @@ public class RestfulServerUtils {
/*
* The Accept header is kind of ridiculous, e.g.
*/
// text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, image/png, */*;q=0.5
// text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, image/png, */*;q=0.5
Enumeration<String> acceptValues = theReq.getHeaders(Constants.HEADER_ACCEPT);
if (acceptValues != null) {
float bestQ = -1f;
@ -213,7 +200,7 @@ public class RestfulServerUtils {
String contentTypeGroup = m.group(1);
EncodingEnum encoding = Constants.FORMAT_VAL_TO_ENCODING.get(contentTypeGroup);
if (encoding != null) {
String name = m.group(3);
String value = m.group(4);
if (name != null && value != null) {
@ -227,7 +214,7 @@ public class RestfulServerUtils {
}
}
}
if (q > bestQ && encoding != null) {
retVal = encoding;
bestQ = q;
@ -237,16 +224,17 @@ public class RestfulServerUtils {
break;
}
}
}
return retVal;
}
return null;
}
/**
* Determine whether a response should be given in JSON or XML format based on the incoming HttpServletRequest's <code>"_format"</code> parameter and <code>"Accept:"</code> HTTP header.
* Determine whether a response should be given in JSON or XML format based on the incoming HttpServletRequest's
* <code>"_format"</code> parameter and <code>"Accept:"</code> HTTP header.
*/
public static EncodingEnum determineResponseEncodingWithDefault(RestfulServer theServer, HttpServletRequest theReq) {
EncodingEnum retVal = determineResponseEncodingNoDefault(theReq);
@ -256,11 +244,48 @@ public class RestfulServerUtils {
return retVal;
}
public static Set<SummaryEnum> determineSummaryMode(RequestDetails theRequest) {
Map<String, String[]> requestParams = theRequest.getParameters();
Set<SummaryEnum> retVal = SummaryEnumParameter.getSummaryValueOrNull(theRequest);
if (retVal == null) {
/*
* HAPI originally supported a custom parameter called _narrative, but this has been superceded by an official
* parameter called _summary
*/
String[] narrative = requestParams.get(Constants.PARAM_NARRATIVE);
if (narrative != null && narrative.length > 0) {
try {
NarrativeModeEnum narrativeMode = NarrativeModeEnum.valueOfCaseInsensitive(narrative[0]);
switch (narrativeMode) {
case NORMAL:
retVal = Collections.singleton(SummaryEnum.FALSE);
break;
case ONLY:
retVal = Collections.singleton(SummaryEnum.TEXT);
break;
case SUPPRESS:
retVal = Collections.singleton(SummaryEnum.DATA);
break;
}
} catch (IllegalArgumentException e) {
ourLog.debug("Invalid {} parameger: {}", Constants.PARAM_NARRATIVE, narrative[0]);
}
}
}
if (retVal == null) {
retVal = Collections.singleton(SummaryEnum.FALSE);
}
return retVal;
}
public static Integer extractCountParameter(HttpServletRequest theRequest) {
return RestfulServerUtils.tryToExtractNamedParameter(theRequest, Constants.PARAM_COUNT);
}
public static IParser getNewParser(FhirContext theContext, EncodingEnum theResponseEncoding, boolean thePrettyPrint, RestfulServer.NarrativeModeEnum theNarrativeMode) {
public static IParser getNewParser(FhirContext theContext, EncodingEnum theResponseEncoding, boolean thePrettyPrint, Set<SummaryEnum> theSummaryMode) {
IParser parser;
switch (theResponseEncoding) {
case JSON:
@ -271,7 +296,18 @@ public class RestfulServerUtils {
parser = theContext.newXmlParser();
break;
}
return parser.setPrettyPrint(thePrettyPrint).setSuppressNarratives(theNarrativeMode == RestfulServer.NarrativeModeEnum.SUPPRESS);
parser.setPrettyPrint(thePrettyPrint);
if (theSummaryMode != null) {
if (theSummaryMode.contains(SummaryEnum.COUNT)) {
parser.setEncodeElements(Collections.singleton("Bundle.total"));
} else if (theSummaryMode.contains(SummaryEnum.TEXT)) {
parser.setEncodeElements(TEXT_ENCODE_ELEMENTS);
} else {
parser.setSuppressNarratives(theSummaryMode.contains(SummaryEnum.DATA));
parser.setSummaryMode(theSummaryMode.contains(SummaryEnum.TRUE));
}
}
return parser;
}
static Writer getWriter(HttpServletResponse theHttpResponse, boolean theRespondGzip) throws UnsupportedEncodingException, IOException {
@ -289,7 +325,7 @@ public class RestfulServerUtils {
if (isBlank(theValue)) {
return null;
}
StringTokenizer tok = new StringTokenizer(theValue, ",");
while (tok.hasMoreTokens()) {
String next = tok.nextToken();
@ -297,12 +333,12 @@ public class RestfulServerUtils {
if (eqIndex == -1 || eqIndex >= next.length() - 2) {
continue;
}
String key = next.substring(0, eqIndex).trim();
if (key.equals(Constants.HEADER_PREFER_RETURN) == false) {
continue;
}
String value = next.substring(eqIndex + 1).trim();
if (value.length() < 2) {
continue;
@ -310,10 +346,10 @@ public class RestfulServerUtils {
if ('"' == value.charAt(0) && '"' == value.charAt(value.length() - 1)) {
value = value.substring(1, value.length() - 1);
}
return PreferReturnEnum.fromHeaderValue(value);
}
return null;
}
@ -342,9 +378,9 @@ public class RestfulServerUtils {
return prettyPrint;
}
public static void streamResponseAsBundle(RestfulServer theServer, HttpServletResponse theHttpResponse, Bundle bundle, EncodingEnum theResponseEncoding, String theServerBase,
boolean thePrettyPrint, RestfulServer.NarrativeModeEnum theNarrativeMode, boolean theRespondGzip, boolean theRequestIsBrowser) throws IOException {
assert !theServerBase.endsWith("/");
public static void streamResponseAsBundle(RestfulServer theServer, HttpServletResponse theHttpResponse, Bundle bundle, EncodingEnum theResponseEncoding, String theServerBase, boolean thePrettyPrint, Set<SummaryEnum> theSummaryMode, boolean theRespondGzip, boolean theRequestIsBrowser)
throws IOException {
assert!theServerBase.endsWith("/");
theHttpResponse.setStatus(200);
@ -352,35 +388,29 @@ public class RestfulServerUtils {
if (theRequestIsBrowser && theServer.isUseBrowserFriendlyContentTypes()) {
theHttpResponse.setContentType(responseEncoding.getBrowserFriendlyBundleContentType());
} else if (theNarrativeMode == RestfulServer.NarrativeModeEnum.ONLY) {
theHttpResponse.setContentType(Constants.CT_HTML);
} else {
theHttpResponse.setContentType(responseEncoding.getBundleContentType());
}
theHttpResponse.setCharacterEncoding(Constants.CHARSETNAME_UTF_8);
theHttpResponse.setCharacterEncoding(Constants.CHARSET_NAME_UTF8);
theServer.addHeadersToResponse(theHttpResponse);
Writer writer = RestfulServerUtils.getWriter(theHttpResponse, theRespondGzip);
try {
if (theNarrativeMode == RestfulServer.NarrativeModeEnum.ONLY) {
for (IResource next : bundle.toListOfResources()) {
writer.append(next.getText().getDiv().getValueAsString());
writer.append("<hr/>");
}
} else {
IParser parser = RestfulServerUtils.getNewParser(theServer.getFhirContext(), responseEncoding, thePrettyPrint, theNarrativeMode);
parser.setServerBaseUrl(theServerBase);
parser.encodeBundleToWriter(bundle, writer);
IParser parser = RestfulServerUtils.getNewParser(theServer.getFhirContext(), responseEncoding, thePrettyPrint, theSummaryMode);
parser.setServerBaseUrl(theServerBase);
if (theSummaryMode.contains(SummaryEnum.TEXT)) {
parser.setEncodeElements(TEXT_ENCODE_ELEMENTS);
}
parser.encodeBundleToWriter(bundle, writer);
} finally {
writer.close();
}
}
public static void streamResponseAsResource(RestfulServer theServer, HttpServletResponse theHttpResponse, IBaseResource theResource, EncodingEnum theResponseEncoding, boolean thePrettyPrint,
boolean theRequestIsBrowser, RestfulServer.NarrativeModeEnum theNarrativeMode, int stausCode, boolean theRespondGzip, String theServerBase, boolean theAddContentLocationHeader) throws IOException {
public static void streamResponseAsResource(RestfulServer theServer, HttpServletResponse theHttpResponse, IBaseResource theResource, EncodingEnum theResponseEncoding, boolean thePrettyPrint, boolean theRequestIsBrowser, Set<SummaryEnum> theNarrativeMode, int stausCode, boolean theRespondGzip,
String theServerBase, boolean theAddContentLocationHeader) throws IOException {
theHttpResponse.setStatus(stausCode);
if (theAddContentLocationHeader && theResource.getIdElement() != null && theResource.getIdElement().hasIdPart() && isNotBlank(theServerBase)) {
@ -426,14 +456,25 @@ public class RestfulServerUtils {
EncodingEnum responseEncoding = theResponseEncoding != null ? theResponseEncoding : theServer.getDefaultResponseEncoding();
boolean encodingDomainResourceAsText = theNarrativeMode.contains(SummaryEnum.TEXT);
if (encodingDomainResourceAsText) {
/*
* If the user requests "text" for a bundle, only suppress the non text elements in the Element.entry.resource
* parts, we're not streaming just the narrative as HTML (since bundles don't even have one)
*/
if ("Bundle".equals(theServer.getFhirContext().getResourceDefinition(theResource).getName())) {
encodingDomainResourceAsText = false;
}
}
if (theRequestIsBrowser && theServer.isUseBrowserFriendlyContentTypes()) {
theHttpResponse.setContentType(responseEncoding.getBrowserFriendlyBundleContentType());
} else if (theNarrativeMode == RestfulServer.NarrativeModeEnum.ONLY) {
} else if (encodingDomainResourceAsText) {
theHttpResponse.setContentType(Constants.CT_HTML);
} else {
theHttpResponse.setContentType(responseEncoding.getResourceContentType());
}
theHttpResponse.setCharacterEncoding(Constants.CHARSETNAME_UTF_8);
theHttpResponse.setCharacterEncoding(Constants.CHARSET_NAME_UTF8);
theServer.addHeadersToResponse(theHttpResponse);
@ -442,8 +483,8 @@ public class RestfulServerUtils {
if (lastUpdated != null && lastUpdated.isEmpty() == false) {
theHttpResponse.addHeader(Constants.HEADER_LAST_MODIFIED, DateUtils.formatDate(lastUpdated.getValue()));
}
TagList list = (TagList) ((IResource)theResource).getResourceMetadata().get(ResourceMetadataKeyEnum.TAG_LIST);
TagList list = (TagList) ((IResource) theResource).getResourceMetadata().get(ResourceMetadataKeyEnum.TAG_LIST);
if (list != null) {
for (Tag tag : list) {
if (StringUtils.isNotBlank(tag.getTerm())) {
@ -452,7 +493,7 @@ public class RestfulServerUtils {
}
}
} else {
Date lastUpdated = ((IAnyResource)theResource).getMeta().getLastUpdated();
Date lastUpdated = ((IAnyResource) theResource).getMeta().getLastUpdated();
if (lastUpdated != null) {
theHttpResponse.addHeader(Constants.HEADER_LAST_MODIFIED, DateUtils.formatDate(lastUpdated));
}
@ -460,8 +501,8 @@ public class RestfulServerUtils {
Writer writer = getWriter(theHttpResponse, theRespondGzip);
try {
if (theNarrativeMode == RestfulServer.NarrativeModeEnum.ONLY && theResource instanceof IResource) {
writer.append(((IResource)theResource).getText().getDiv().getValueAsString());
if (encodingDomainResourceAsText && theResource instanceof IResource) {
writer.append(((IResource) theResource).getText().getDiv().getValueAsString());
} else {
IParser parser = getNewParser(theServer.getFhirContext(), responseEncoding, thePrettyPrint, theNarrativeMode);
parser.setServerBaseUrl(theServerBase);
@ -485,17 +526,18 @@ public class RestfulServerUtils {
return count;
}
// public static void streamResponseAsResource(RestfulServer theServer, HttpServletResponse theHttpResponse, IResource theResource, EncodingEnum theResponseEncoding, boolean thePrettyPrint,
// boolean theRequestIsBrowser, RestfulServer.NarrativeModeEnum theNarrativeMode, boolean theRespondGzip, String theServerBase) throws IOException {
// int stausCode = 200;
// RestfulServerUtils.streamResponseAsResource(theServer, theHttpResponse, theResource, theResponseEncoding, thePrettyPrint, theRequestIsBrowser, theNarrativeMode, stausCode, theRespondGzip,
// theServerBase);
// }
public static void validateResourceListNotNull(List<? extends IBaseResource> theResourceList) {
if (theResourceList == null) {
throw new InternalErrorException("IBundleProvider returned a null list of resources - This is not allowed");
}
}
private static enum NarrativeModeEnum {
NORMAL, ONLY, SUPPRESS;
public static NarrativeModeEnum valueOfCaseInsensitive(String theCode) {
return valueOf(NarrativeModeEnum.class, theCode.toUpperCase());
}
}
}

View File

@ -23,6 +23,7 @@ package ca.uhn.fhir.rest.server.interceptor;
import static org.apache.commons.lang3.StringUtils.*;
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
import java.util.Map.Entry;
@ -34,9 +35,9 @@ import org.apache.commons.lang3.exception.ExceptionUtils;
import org.hl7.fhir.instance.model.api.IBaseOperationOutcome;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.rest.api.SummaryEnum;
import ca.uhn.fhir.rest.method.RequestDetails;
import ca.uhn.fhir.rest.server.RestfulServer;
import ca.uhn.fhir.rest.server.RestfulServer.NarrativeModeEnum;
import ca.uhn.fhir.rest.server.RestfulServerUtils;
import ca.uhn.fhir.rest.server.exceptions.BaseServerResponseException;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
@ -74,7 +75,7 @@ public class ExceptionHandlingInterceptor extends InterceptorAdapter {
boolean requestIsBrowser = RestfulServer.requestIsBrowser(theRequest);
String fhirServerBase = theRequestDetails.getFhirServerBase();
RestfulServerUtils.streamResponseAsResource(theRequestDetails.getServer(), theResponse, oo, RestfulServerUtils.determineResponseEncodingNoDefault(theRequest), true, requestIsBrowser, NarrativeModeEnum.NORMAL, statusCode, false, fhirServerBase, false);
RestfulServerUtils.streamResponseAsResource(theRequestDetails.getServer(), theResponse, oo, RestfulServerUtils.determineResponseEncodingNoDefault(theRequest), true, requestIsBrowser, Collections.singleton(SummaryEnum.FALSE), statusCode, false, fhirServerBase, false);
// theResponse.setStatus(statusCode);
// theRequestDetails.getServer().addHeadersToResponse(theResponse);

View File

@ -31,5 +31,7 @@ public interface IBaseMetaType extends ICompositeType {
Date getLastUpdated();
String getVersionId();
IBaseMetaType copy();
}

View File

@ -1,4 +1,5 @@
# 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)
@ -23,6 +24,8 @@ ca.uhn.fhir.rest.method.SearchMethodBinding.invalidSpecialParamName=Method [{0}]
ca.uhn.fhir.rest.method.SearchMethodBinding.idWithoutCompartment=Method [{0}] in provider [{1}] has an @IdParam parameter. This is only allowable for compartment search (e.g. @Search(compartment="foo") )
ca.uhn.fhir.rest.method.SearchMethodBinding.idNullForCompartmentSearch=ID parameter can not be null or empty for compartment search
ca.uhn.fhir.rest.method.SummaryEnumParameter.cantCombineText=Can not combine _summary=text with other values for _summary
ca.uhn.fhir.rest.param.ResourceParameter.invalidContentTypeInRequest=Incorrect Content-Type header value of "{0}" was provided in the request. A FHIR Content-Type is required for "{1}" operation
ca.uhn.fhir.rest.param.ResourceParameter.noContentTypeInRequest=No Content-Type header was provided in the request. This is required for "{0}" operation

View File

@ -225,11 +225,9 @@ public class XmlParserTest {
String enc = ourCtx.newXmlParser().encodeResourceToString(patient);
assertThat(enc, containsString("<Patient xmlns=\"http://hl7.org/fhir\"><extension url=\"http://example.com/extensions#someext\"><valueDateTime value=\"2011-01-02T11:13:15\"/></extension>"));
assertThat(enc, containsString("<modifierExtension url=\"http://example.com/extensions#modext\"><valueDate value=\"1995-01-02\"/></modifierExtension>"));
assertThat(enc, containsString(
"<extension url=\"http://example.com#parent\"><extension url=\"http://example.com#child\"><valueString value=\"value1\"/></extension><extension url=\"http://example.com#child\"><valueString value=\"value2\"/></extension></extension>"));
assertThat(enc, containsString("<extension url=\"http://example.com#parent\"><extension url=\"http://example.com#child\"><valueString value=\"value1\"/></extension><extension url=\"http://example.com#child\"><valueString value=\"value2\"/></extension></extension>"));
assertThat(enc, containsString("<given value=\"Joe\"><extension url=\"http://examples.com#givenext\"><valueString value=\"given\"/></extension></given>"));
assertThat(enc, containsString(
"<given value=\"Shmoe\"><extension url=\"http://examples.com#givenext_parent\"><extension url=\"http://examples.com#givenext_child\"><valueString value=\"CHILD\"/></extension></extension></given>"));
assertThat(enc, containsString("<given value=\"Shmoe\"><extension url=\"http://examples.com#givenext_parent\"><extension url=\"http://examples.com#givenext_child\"><valueString value=\"CHILD\"/></extension></extension></given>"));
/*
* Now parse this back
@ -1234,8 +1232,7 @@ public class XmlParserTest {
String enc = ourCtx.newXmlParser().encodeResourceToString(patient);
assertThat(enc, containsString("<Patient xmlns=\"http://hl7.org/fhir\"><extension url=\"http://example.com/extensions#someext\"><valueDateTime value=\"2011-01-02T11:13:15\"/></extension>"));
assertThat(enc, containsString(
"<extension url=\"http://example.com#parent\"><extension url=\"http://example.com#child\"><valueString value=\"value1\"/></extension><extension url=\"http://example.com#child\"><valueString value=\"value1\"/></extension></extension>"));
assertThat(enc, containsString("<extension url=\"http://example.com#parent\"><extension url=\"http://example.com#child\"><valueString value=\"value1\"/></extension><extension url=\"http://example.com#child\"><valueString value=\"value1\"/></extension></extension>"));
assertThat(enc, containsString("<given value=\"Joe\"><extension url=\"http://examples.com#givenext\"><valueString value=\"given\"/></extension></given>"));
}
@ -1478,8 +1475,7 @@ public class XmlParserTest {
assertEquals("256a5231-a2bb-49bd-9fea-f349d428b70d", resource.getId().getIdPart());
msg = msg.replace("<link href=\"http://hl7.org/implement/standards/fhir/valueset/256a5231-a2bb-49bd-9fea-f349d428b70d\" rel=\"self\"/>",
"<link href=\"http://hl7.org/implement/standards/fhir/valueset/256a5231-a2bb-49bd-9fea-f349d428b70d/_history/12345\" rel=\"self\"/>");
msg = msg.replace("<link href=\"http://hl7.org/implement/standards/fhir/valueset/256a5231-a2bb-49bd-9fea-f349d428b70d\" rel=\"self\"/>", "<link href=\"http://hl7.org/implement/standards/fhir/valueset/256a5231-a2bb-49bd-9fea-f349d428b70d/_history/12345\" rel=\"self\"/>");
entry = p.parseBundle(msg).getEntries().get(0);
resource = (ValueSet) entry.getResource();
assertEquals("256a5231-a2bb-49bd-9fea-f349d428b70d", resource.getId().getIdPart());
@ -1636,8 +1632,8 @@ public class XmlParserTest {
}
/**
* If the XML encoded resource has multiple contained resources in a single <contained></contained> tag, we still want to handle this as best we can, even though it's not technically correct. See
* #84
* If the XML encoded resource has multiple contained resources in a single <contained></contained> tag, we still
* want to handle this as best we can, even though it's not technically correct. See #84
*/
@Test
public void testParseContainedResourcesWithSingleContainedElement() throws IOException {
@ -1759,10 +1755,9 @@ public class XmlParserTest {
@Test
public void testParseQuery() {
String msg = "<Query xmlns=\"http://hl7.org/fhir\">\n" + " <text>\n" + " <status value=\"generated\"/>\n" + " <div xmlns=\"http://www.w3.org/1999/xhtml\">[Put rendering here]</div>\n"
+ " </text>\n" + "\n" + " <!-- this is an extermely simple query - a request to execute the query 'example' on the\n" + " responder -->\n"
+ " <identifier value=\"urn:uuid:42b253f5-fa17-40d0-8da5-44aeb4230376\"/>\n" + " <parameter url=\"http://hl7.org/fhir/query#_query\">\n" + " <valueString value=\"example\"/>\n"
+ " </parameter>\n" + "</Query>";
String msg = "<Query xmlns=\"http://hl7.org/fhir\">\n" + " <text>\n" + " <status value=\"generated\"/>\n" + " <div xmlns=\"http://www.w3.org/1999/xhtml\">[Put rendering here]</div>\n" + " </text>\n" + "\n"
+ " <!-- this is an extermely simple query - a request to execute the query 'example' on the\n" + " responder -->\n" + " <identifier value=\"urn:uuid:42b253f5-fa17-40d0-8da5-44aeb4230376\"/>\n" + " <parameter url=\"http://hl7.org/fhir/query#_query\">\n"
+ " <valueString value=\"example\"/>\n" + " </parameter>\n" + "</Query>";
Query query = ourCtx.newXmlParser().parseResource(Query.class, msg);
assertEquals("urn:uuid:42b253f5-fa17-40d0-8da5-44aeb4230376", query.getIdentifier().getValueAsString());

View File

@ -8,6 +8,7 @@ import java.io.InputStream;
import java.io.StringReader;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@ -55,6 +56,7 @@ import ca.uhn.fhir.rest.annotation.IncludeParam;
import ca.uhn.fhir.rest.annotation.RequiredParam;
import ca.uhn.fhir.rest.annotation.Search;
import ca.uhn.fhir.rest.api.MethodOutcome;
import ca.uhn.fhir.rest.api.SummaryEnum;
import ca.uhn.fhir.rest.client.api.IBasicClient;
import ca.uhn.fhir.rest.client.interceptor.CapturingInterceptor;
import ca.uhn.fhir.rest.param.CompositeParam;
@ -66,7 +68,6 @@ import ca.uhn.fhir.rest.param.TokenOrListParam;
import ca.uhn.fhir.rest.param.TokenParam;
import ca.uhn.fhir.rest.server.Constants;
import ca.uhn.fhir.rest.server.EncodingEnum;
import ca.uhn.fhir.rest.server.RestfulServer.NarrativeModeEnum;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import ca.uhn.fhir.rest.server.exceptions.ResourceNotFoundException;
@ -168,7 +169,8 @@ public class ClientDstu1Test {
}
/**
* Some servers (older ones?) return the resourcde you created instead of an OperationOutcome. We just need to ignore it.
* Some servers (older ones?) return the resourcde you created instead of an OperationOutcome. We just need to ignore
* it.
*/
@Test
public void testCreateWithResourceResponse() throws Exception {
@ -245,7 +247,7 @@ public class ClientDstu1Test {
assertEquals(HttpDelete.class, capt.getValue().getClass());
assertEquals("http://foo/Patient/1234", capt.getValue().getURI().toString());
assertEquals("Hello", ((OperationOutcome)response.getOperationOutcome()).getIssueFirstRep().getDetailsElement().getValue());
assertEquals("Hello", ((OperationOutcome) response.getOperationOutcome()).getIssueFirstRep().getDetailsElement().getValue());
}
@Test
@ -283,6 +285,7 @@ public class ClientDstu1Test {
}
@SuppressWarnings("deprecation")
@Test
public void testHistoryResourceInstance() throws Exception {
@ -355,6 +358,7 @@ public class ClientDstu1Test {
}
}
@SuppressWarnings("deprecation")
@Test
public void testHistoryResourceType() throws Exception {
@ -427,6 +431,7 @@ public class ClientDstu1Test {
}
}
@SuppressWarnings("deprecation")
@Test
public void testHistoryServer() throws Exception {
InstantDt date1 = new InstantDt(new Date(20000L));
@ -552,7 +557,7 @@ public class ClientDstu1Test {
// TODO: remove the read annotation and make sure we get a sensible
// error message to tell the user why the method isn't working
FhirContext ctx = ourCtx;
ctx.getRestfulClientFactory().setServerValidationModeEnum(ServerValidationModeEnum.NEVER);
ctx.getRestfulClientFactory().setServerValidationMode(ServerValidationModeEnum.NEVER);
ClientWithoutAnnotation client = ctx.newRestfulClient(ClientWithoutAnnotation.class, "http://wildfhir.aegis.net/fhir");
@ -583,8 +588,7 @@ public class ClientDstu1Test {
ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class);
when(httpClient.execute(capt.capture())).thenReturn(httpResponse);
when(httpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 200, "OK"));
Header[] headers = new Header[] { new BasicHeader(Constants.HEADER_LAST_MODIFIED, "Wed, 15 Nov 1995 04:58:08 GMT"),
new BasicHeader(Constants.HEADER_CONTENT_LOCATION, "http://foo.com/Patient/123/_history/2333"),
Header[] headers = new Header[] { new BasicHeader(Constants.HEADER_LAST_MODIFIED, "Wed, 15 Nov 1995 04:58:08 GMT"), new BasicHeader(Constants.HEADER_CONTENT_LOCATION, "http://foo.com/Patient/123/_history/2333"),
new BasicHeader(Constants.HEADER_CATEGORY, "http://foo/tagdefinition.html; scheme=\"http://hl7.org/fhir/tag\"; label=\"Some tag\"") };
when(httpResponse.getAllHeaders()).thenReturn(headers);
@ -775,6 +779,54 @@ public class ClientDstu1Test {
}
@Test
public void testSearchWithSummary() throws Exception {
final String msg = getPatientFeedWithOneResult();
ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class);
when(httpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 200, "OK"));
when(httpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", Constants.CT_FHIR_XML + "; charset=UTF-8"));
when(httpResponse.getEntity().getContent()).thenAnswer(new Answer<InputStream>() {
@Override
public InputStream answer(InvocationOnMock theInvocation) throws Throwable {
return new ReaderInputStream(new StringReader(msg), Charset.forName("UTF-8"));
}
});
// httpResponse = new BasicHttpResponse(statusline, catalog, locale)
when(httpClient.execute(capt.capture())).thenReturn(httpResponse);
ITestClientWithSummary client = ourCtx.newRestfulClient(ITestClientWithSummary.class, "http://foo");
int idx = 0;
client.getPatientWithIncludes((SummaryEnum) null);
assertEquals("http://foo/Patient", capt.getAllValues().get(idx).getURI().toString());
idx++;
client.getPatientWithIncludes(SummaryEnum.COUNT);
assertEquals("http://foo/Patient?_summary=count", capt.getAllValues().get(idx).getURI().toString());
idx++;
client.getPatientWithIncludes(SummaryEnum.DATA);
assertEquals("http://foo/Patient?_summary=data", capt.getAllValues().get(idx).getURI().toString());
idx++;
client.getPatientWithIncludes(Arrays.asList(SummaryEnum.DATA));
assertEquals("http://foo/Patient?_summary=data", capt.getAllValues().get(idx).getURI().toString());
idx++;
client.getPatientWithIncludes(Arrays.asList(SummaryEnum.COUNT, SummaryEnum.DATA));
assertThat(capt.getAllValues().get(idx).getURI().toString(), either(equalTo("http://foo/Patient?_summary=data&_summary=count")).or(equalTo("http://foo/Patient?_summary=count&_summary=data")));
idx++;
client.getPatientWithIncludes(new ArrayList<SummaryEnum>());
assertEquals("http://foo/Patient", capt.getAllValues().get(idx).getURI().toString());
idx++;
}
@Test
public void testSearchByCompartment() throws Exception {
@ -955,7 +1007,7 @@ public class ClientDstu1Test {
when(httpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader(msg), Charset.forName("UTF-8")));
client.setEncoding(EncodingEnum.JSON); // this needs to be actually
// implemented
// implemented
client.getPatientByDob(new DateParam(QuantityCompararatorEnum.GREATERTHAN_OR_EQUALS, "2011-01-02"));
assertEquals("http://foo/Patient?birthdate=%3E%3D2011-01-02&_format=json", capt.getAllValues().get(1).getURI().toString());
@ -984,6 +1036,26 @@ public class ClientDstu1Test {
}
@Test
public void testSearchWithGlobalSummary() throws Exception {
String msg = getPatientFeedWithOneResult();
ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class);
when(httpClient.execute(capt.capture())).thenReturn(httpResponse);
when(httpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 200, "OK"));
when(httpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", Constants.CT_FHIR_XML + "; charset=UTF-8"));
when(httpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader(msg), Charset.forName("UTF-8")));
ITestClient client = ourCtx.newRestfulClient(ITestClient.class, "http://foo");
client.setSummary(SummaryEnum.DATA);
client.findPatientByMrn(new TokenParam("sysm", "val"));
assertEquals("http://foo/Patient?identifier=sysm%7Cval&_summary=data", capt.getValue().getURI().toString());
}
@Test
public void testSearchWithOptionalParam() throws Exception {
@ -1204,36 +1276,6 @@ public class ClientDstu1Test {
}
@Test
public void testNarrativeModeParam() throws Exception {
final String msg = getPatientFeedWithOneResult();
ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class);
when(httpClient.execute(capt.capture())).thenReturn(httpResponse);
when(httpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 200, "OK"));
when(httpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", Constants.CT_FHIR_XML + "; charset=UTF-8"));
when(httpResponse.getEntity().getContent()).thenAnswer(new Answer<InputStream>() {
@Override
public InputStream answer(InvocationOnMock theInvocation) throws Throwable {
return new ReaderInputStream(new StringReader(msg), Charset.forName("UTF-8"));
}
});
ITestClientWithNarrativeParam client = ourCtx.newRestfulClient(ITestClientWithNarrativeParam.class, "http://foo");
int idx = 0;
Patient response = client.getPatients(null);
assertEquals("http://foo/Patient", capt.getAllValues().get(idx).getURI().toString());
assertNotNull(response);
idx++;
response = client.getPatients(NarrativeModeEnum.ONLY);
assertEquals("http://foo/Patient?_narrative=only", capt.getAllValues().get(idx).getURI().toString());
assertNotNull(response);
}
private Header[] toHeaderArray(String theName, String theValue) {
return new Header[] { new BasicHeader(theName, theValue) };
}
@ -1244,6 +1286,9 @@ public class ClientDstu1Test {
@ResourceDef(name = "Patient")
public static class CustomPatient extends Patient {
private static final long serialVersionUID = 1L;
// nothing
}
@ -1262,9 +1307,13 @@ public class ClientDstu1Test {
public Patient getPatientWithIncludes(@RequiredParam(name = "withIncludes") StringParam theString, @IncludeParam String theInclude);
}
public interface ITestClientWithNarrativeParam extends IBasicClient {
public interface ITestClientWithSummary extends IBasicClient {
@Search()
public Patient getPatients(NarrativeModeEnum theNarrativeMode);
public List<Patient> getPatientWithIncludes(SummaryEnum theSummary);
@Search()
public List<Patient> getPatientWithIncludes(List<SummaryEnum> theSummary);
}
}

View File

@ -56,7 +56,7 @@ public class SearchClientDstu1Test {
ourHttpClient = mock(HttpClient.class, new ReturnsDeepStubs());
ourCtx.getRestfulClientFactory().setHttpClient(ourHttpClient);
ourCtx.getRestfulClientFactory().setServerValidationModeEnum(ServerValidationModeEnum.NEVER);
ourCtx.getRestfulClientFactory().setServerValidationMode(ServerValidationModeEnum.NEVER);
ourHttpResponse = mock(HttpResponse.class, new ReturnsDeepStubs());
}

View File

@ -1,13 +1,10 @@
package ca.uhn.fhir.rest.server;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.net.URLEncoder;
import java.util.concurrent.TimeUnit;
import org.apache.commons.io.IOUtils;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
@ -22,8 +19,6 @@ import org.junit.Test;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.model.api.IResource;
import ca.uhn.fhir.model.dstu.composite.IdentifierDt;
import ca.uhn.fhir.model.dstu.resource.Organization;
import ca.uhn.fhir.model.dstu.resource.Patient;
import ca.uhn.fhir.model.primitive.IdDt;
import ca.uhn.fhir.rest.annotation.IdParam;
@ -46,7 +41,7 @@ public class AcceptHeaderTest {
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());
assertEquals(Constants.CT_FHIR_XML + Constants.CTSUFFIX_CHARSET_UTF8, status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue());
assertEquals(Constants.CT_FHIR_XML + Constants.CHARSET_UTF8_CTSUFFIX, status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue());
}
@Test
@ -56,7 +51,7 @@ public class AcceptHeaderTest {
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());
assertEquals(Constants.CT_FHIR_XML + Constants.CTSUFFIX_CHARSET_UTF8, status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue());
assertEquals(Constants.CT_FHIR_XML + Constants.CHARSET_UTF8_CTSUFFIX, status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue());
}
@Test
@ -66,7 +61,7 @@ public class AcceptHeaderTest {
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());
assertEquals(Constants.CT_FHIR_XML + Constants.CTSUFFIX_CHARSET_UTF8, status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue());
assertEquals(Constants.CT_FHIR_XML + Constants.CHARSET_UTF8_CTSUFFIX, status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue());
}
@Test
@ -76,7 +71,7 @@ public class AcceptHeaderTest {
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());
assertEquals(Constants.CT_FHIR_XML + Constants.CTSUFFIX_CHARSET_UTF8, status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue());
assertEquals(Constants.CT_FHIR_XML + Constants.CHARSET_UTF8_CTSUFFIX, status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue());
// Now with spaces
httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient/1");
@ -84,7 +79,7 @@ public class AcceptHeaderTest {
status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());
assertEquals(Constants.CT_FHIR_XML + Constants.CTSUFFIX_CHARSET_UTF8, status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue());
assertEquals(Constants.CT_FHIR_XML + Constants.CHARSET_UTF8_CTSUFFIX, status.getFirstHeader(Constants.HEADER_CONTENT_TYPE).getValue());
}
@AfterClass

View File

@ -1,11 +1,8 @@
package ca.uhn.fhir.rest.server;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.startsWith;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@ -20,8 +17,6 @@ import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
@ -34,6 +29,8 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import com.google.common.net.UrlEscapers;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.model.api.Bundle;
import ca.uhn.fhir.model.api.IResource;
@ -58,11 +55,8 @@ import ca.uhn.fhir.rest.param.StringOrListParam;
import ca.uhn.fhir.rest.param.StringParam;
import ca.uhn.fhir.rest.param.TokenOrListParam;
import ca.uhn.fhir.rest.param.TokenParam;
import ca.uhn.fhir.rest.server.RestfulServer.NarrativeModeEnum;
import ca.uhn.fhir.util.PortUtil;
import com.google.common.net.UrlEscapers;
/**
* Created by dsotnikov on 2/25/2014.
*/
@ -74,13 +68,11 @@ public class SearchSearchServerDstu1Test {
private static int ourPort;
private static Server ourServer;
private static NarrativeModeEnum ourLastNarrativeMode;
private static RestfulServer ourServlet;
private static IServerAddressStrategy ourDefaultAddressStrategy;
@Before
public void before() {
ourLastNarrativeMode=null;
ourServlet.setServerAddressStrategy(ourDefaultAddressStrategy);
}
@ -98,35 +90,6 @@ public class SearchSearchServerDstu1Test {
assertEquals("Organization/555", ref);
}
@Test
public void testNarrativeParamNone() throws Exception {
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient?_query=searchWithNarrative");
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());
assertEquals(200, status.getStatusLine().getStatusCode());
assertEquals(null, ourLastNarrativeMode);
}
@Test
public void testNarrativeParamPopulated() throws Exception {
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient?_query=searchWithNarrative&_narrative=ONly");
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());
assertEquals(200, status.getStatusLine().getStatusCode());
assertEquals(NarrativeModeEnum.ONLY, ourLastNarrativeMode);
}
@Test
public void testNarrativeParamPopulatedInvalid() throws Exception {
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient?_query=searchWithNarrative&_narrative=BLAH");
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());
assertEquals(200, status.getStatusLine().getStatusCode());
assertEquals(null, ourLastNarrativeMode);
}
@Test
public void testOmitEmptyOptionalParam() throws Exception {
@ -538,13 +501,6 @@ public class SearchSearchServerDstu1Test {
return retVal;
}
@Search(queryName="searchWithNarrative")
public Patient searchWithNarrative(NarrativeModeEnum theNarrativeMode) {
ourLastNarrativeMode = theNarrativeMode;
Patient patient = new Patient();
patient.setId("Patient/1/_history/1");
return patient;
}
@Search(queryName="searchWithRef")
public Patient searchWithRef() {

View File

@ -74,6 +74,92 @@ public class Dstu2BundleFactory implements IVersionSpecificBundleFactory {
myContext = theContext;
}
private void addResourcesForSearch(List<? extends IBaseResource> theResult) {
List<IBaseResource> includedResources = new ArrayList<IBaseResource>();
Set<IIdType> addedResourceIds = new HashSet<IIdType>();
for (IBaseResource next : theResult) {
if (next.getIdElement().isEmpty() == false) {
addedResourceIds.add(next.getIdElement());
}
}
for (IBaseResource nextBaseRes : theResult) {
IResource next = (IResource) nextBaseRes;
Set<String> containedIds = new HashSet<String>();
for (IResource nextContained : next.getContained().getContainedResources()) {
if (nextContained.getId().isEmpty() == false) {
containedIds.add(nextContained.getId().getValue());
}
}
if (myContext.getNarrativeGenerator() != null) {
String title = myContext.getNarrativeGenerator().generateTitle(next);
ourLog.trace("Narrative generator created title: {}", title);
if (StringUtils.isNotBlank(title)) {
ResourceMetadataKeyEnum.TITLE.put(next, title);
}
} else {
ourLog.trace("No narrative generator specified");
}
List<BaseResourceReferenceDt> references = myContext.newTerser().getAllPopulatedChildElementsOfType(next, BaseResourceReferenceDt.class);
do {
List<IResource> addedResourcesThisPass = new ArrayList<IResource>();
for (BaseResourceReferenceDt nextRef : references) {
IResource nextRes = (IResource) nextRef.getResource();
if (nextRes != null) {
if (nextRes.getId().hasIdPart()) {
if (containedIds.contains(nextRes.getId().getValue())) {
// Don't add contained IDs as top level resources
continue;
}
IdDt id = nextRes.getId();
if (id.hasResourceType() == false) {
String resName = myContext.getResourceDefinition(nextRes).getName();
id = id.withResourceType(resName);
}
if (!addedResourceIds.contains(id)) {
addedResourceIds.add(id);
addedResourcesThisPass.add(nextRes);
}
}
}
}
// Linked resources may themselves have linked resources
references = new ArrayList<BaseResourceReferenceDt>();
for (IResource iResource : addedResourcesThisPass) {
List<BaseResourceReferenceDt> newReferences = myContext.newTerser().getAllPopulatedChildElementsOfType(iResource, BaseResourceReferenceDt.class);
references.addAll(newReferences);
}
includedResources.addAll(addedResourcesThisPass);
} while (references.isEmpty() == false);
Entry entry = myBundle.addEntry().setResource(next);
if (next.getId().hasBaseUrl()) {
entry.setFullUrl(next.getId().getValue());
}
}
/*
* Actually add the resources to the bundle
*/
for (IBaseResource next : includedResources) {
Entry entry = myBundle.addEntry();
entry.setResource((IResource) next).getSearch().setMode(SearchEntryModeEnum.INCLUDE);
if (next.getIdElement().hasBaseUrl()) {
entry.setFullUrl(next.getIdElement().getValue());
}
}
}
@Override
public void addResourcesToBundle(List<IBaseResource> theResult, BundleTypeEnum theBundleType, String theServerBase, BundleInclusionRule theBundleInclusionRule, Set<Include> theIncludes) {
if (myBundle == null) {
@ -198,6 +284,16 @@ public class Dstu2BundleFactory implements IVersionSpecificBundleFactory {
}
}
@Override
public ca.uhn.fhir.model.api.Bundle getDstu1Bundle() {
return null;
}
@Override
public IResource getResourceBundle() {
return myBundle;
}
private boolean hasLink(String theLinkType, Bundle theBundle) {
for (Link next : theBundle.getLink()) {
if (theLinkType.equals(next.getRelation())) {
@ -283,16 +379,6 @@ public class Dstu2BundleFactory implements IVersionSpecificBundleFactory {
}
}
@Override
public ca.uhn.fhir.model.api.Bundle getDstu1Bundle() {
return null;
}
@Override
public IResource getResourceBundle() {
return myBundle;
}
@Override
public void initializeBundleFromResourceList(String theAuthor, List<? extends IBaseResource> theResources, String theServerBase, String theCompleteUrl, int theTotalResults,
BundleTypeEnum theBundleType) {
@ -331,92 +417,6 @@ public class Dstu2BundleFactory implements IVersionSpecificBundleFactory {
myBundle.getTotalElement().setValue(theTotalResults);
}
private void addResourcesForSearch(List<? extends IBaseResource> theResult) {
List<IBaseResource> includedResources = new ArrayList<IBaseResource>();
Set<IIdType> addedResourceIds = new HashSet<IIdType>();
for (IBaseResource next : theResult) {
if (next.getIdElement().isEmpty() == false) {
addedResourceIds.add(next.getIdElement());
}
}
for (IBaseResource nextBaseRes : theResult) {
IResource next = (IResource) nextBaseRes;
Set<String> containedIds = new HashSet<String>();
for (IResource nextContained : next.getContained().getContainedResources()) {
if (nextContained.getId().isEmpty() == false) {
containedIds.add(nextContained.getId().getValue());
}
}
if (myContext.getNarrativeGenerator() != null) {
String title = myContext.getNarrativeGenerator().generateTitle(next);
ourLog.trace("Narrative generator created title: {}", title);
if (StringUtils.isNotBlank(title)) {
ResourceMetadataKeyEnum.TITLE.put(next, title);
}
} else {
ourLog.trace("No narrative generator specified");
}
List<BaseResourceReferenceDt> references = myContext.newTerser().getAllPopulatedChildElementsOfType(next, BaseResourceReferenceDt.class);
do {
List<IResource> addedResourcesThisPass = new ArrayList<IResource>();
for (BaseResourceReferenceDt nextRef : references) {
IResource nextRes = (IResource) nextRef.getResource();
if (nextRes != null) {
if (nextRes.getId().hasIdPart()) {
if (containedIds.contains(nextRes.getId().getValue())) {
// Don't add contained IDs as top level resources
continue;
}
IdDt id = nextRes.getId();
if (id.hasResourceType() == false) {
String resName = myContext.getResourceDefinition(nextRes).getName();
id = id.withResourceType(resName);
}
if (!addedResourceIds.contains(id)) {
addedResourceIds.add(id);
addedResourcesThisPass.add(nextRes);
}
}
}
}
// Linked resources may themselves have linked resources
references = new ArrayList<BaseResourceReferenceDt>();
for (IResource iResource : addedResourcesThisPass) {
List<BaseResourceReferenceDt> newReferences = myContext.newTerser().getAllPopulatedChildElementsOfType(iResource, BaseResourceReferenceDt.class);
references.addAll(newReferences);
}
includedResources.addAll(addedResourcesThisPass);
} while (references.isEmpty() == false);
Entry entry = myBundle.addEntry().setResource(next);
if (next.getId().hasBaseUrl()) {
entry.setFullUrl(next.getId().getValue());
}
}
/*
* Actually add the resources to the bundle
*/
for (IBaseResource next : includedResources) {
Entry entry = myBundle.addEntry();
entry.setResource((IResource) next).getSearch().setMode(SearchEntryModeEnum.INCLUDE);
if (next.getIdElement().hasBaseUrl()) {
entry.setFullUrl(next.getIdElement().getValue());
}
}
}
@Override
public void initializeWithBundleResource(IBaseResource theBundle) {
myBundle = (Bundle) theBundle;

View File

@ -1,8 +1,6 @@
package ca.uhn.fhir.parser;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.stringContainsInOrder;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.io.IOException;
@ -39,12 +37,14 @@ import ca.uhn.fhir.model.dstu2.resource.QuestionnaireResponse;
import ca.uhn.fhir.model.dstu2.valueset.AdministrativeGenderEnum;
import ca.uhn.fhir.model.dstu2.valueset.BundleTypeEnum;
import ca.uhn.fhir.model.dstu2.valueset.IdentifierUseEnum;
import ca.uhn.fhir.model.dstu2.valueset.MaritalStatusCodesEnum;
import ca.uhn.fhir.model.dstu2.valueset.ObservationStatusEnum;
import ca.uhn.fhir.model.primitive.DateDt;
import ca.uhn.fhir.model.primitive.DateTimeDt;
import ca.uhn.fhir.model.primitive.IdDt;
import ca.uhn.fhir.model.primitive.InstantDt;
import ca.uhn.fhir.model.primitive.StringDt;
import ca.uhn.fhir.rest.server.Constants;
import net.sf.json.JSON;
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig;
@ -348,6 +348,65 @@ public class JsonParserDstu2Test {
assertThat(encoded, not(containsString("Label")));
}
@Test
public void testEncodeNarrativeSuppressed() throws Exception {
Patient patient = new Patient();
patient.setId("Patient/1/_history/1");
patient.getText().setDiv("<div>THE DIV</div>");
patient.addName().addFamily("FAMILY");
patient.setMaritalStatus(MaritalStatusCodesEnum.D);
String encoded = ourCtx.newJsonParser().setPrettyPrint(true).setSuppressNarratives(true).encodeResourceToString(patient);
ourLog.info(encoded);
assertThat(encoded, containsString("Patient"));
assertThat(encoded, stringContainsInOrder(Constants.TAG_SUBSETTED_SYSTEM, Constants.TAG_SUBSETTED_CODE));
assertThat(encoded, not(containsString("text")));
assertThat(encoded, not(containsString("THE DIV")));
assertThat(encoded, containsString("family"));
assertThat(encoded, containsString("maritalStatus"));
}
@Test
public void testEncodeSummary() {
Patient patient = new Patient();
patient.setId("Patient/1/_history/1");
patient.getText().setDiv("<div>THE DIV</div>");
patient.addName().addFamily("FAMILY");
patient.setMaritalStatus(MaritalStatusCodesEnum.D);
String encoded = ourCtx.newJsonParser().setPrettyPrint(true).setSummaryMode(true).encodeResourceToString(patient);
ourLog.info(encoded);
assertThat(encoded, containsString("Patient"));
assertThat(encoded, stringContainsInOrder("\"tag\"", "\"system\":\"" + Constants.TAG_SUBSETTED_SYSTEM + "\",", "\"code\":\"" + Constants.TAG_SUBSETTED_CODE + "\","));
assertThat(encoded, not(containsString("THE DIV")));
assertThat(encoded, containsString("family"));
assertThat(encoded, not(containsString("maritalStatus")));
}
@Test
public void testEncodeSummary2() {
Patient patient = new Patient();
patient.setId("Patient/1/_history/1");
patient.getText().setDiv("<div>THE DIV</div>");
patient.addName().addFamily("FAMILY");
patient.setMaritalStatus(MaritalStatusCodesEnum.D);
TagList tl = new TagList();
tl.add(new Tag("foo", "bar"));
ResourceMetadataKeyEnum.TAG_LIST.put(patient, tl);
String encoded = ourCtx.newJsonParser().setPrettyPrint(true).setSummaryMode(true).encodeResourceToString(patient);
ourLog.info(encoded);
assertThat(encoded, containsString("Patient"));
assertThat(encoded, stringContainsInOrder("\"tag\"", "\"system\":\"foo\",", "\"code\":\"bar\"", "\"system\":\"" + Constants.TAG_SUBSETTED_SYSTEM + "\",", "\"code\":\"" + Constants.TAG_SUBSETTED_CODE + "\","));
assertThat(encoded, not(containsString("THE DIV")));
assertThat(encoded, containsString("family"));
assertThat(encoded, not(containsString("maritalStatus")));
}
/**
* See #205
*/
@ -801,22 +860,6 @@ public class JsonParserDstu2Test {
assertNull(ResourceMetadataKeyEnum.PROFILES.get(patient));
}
/**
* See #207
*/
@Test
public void testParseResourceWithInvalidType() {
String input = "{" + "\"resourceType\":\"Patient\"," + "\"contained\":[" + " {" + " \"rezType\":\"Organization\"" + " }" + " ]" + "}";
IParser jsonParser = ourCtx.newJsonParser().setPrettyPrint(true);
try {
jsonParser.parseResource(input);
fail();
} catch (DataFormatException e) {
assertEquals("Missing required element 'resourceType' from JSON resource object, unable to parse", e.getMessage());
}
}
/**
* See #163
*/
@ -847,6 +890,22 @@ public class JsonParserDstu2Test {
assertEquals("Patient", reincarnatedPatient.getId().getResourceType());
}
/**
* See #207
*/
@Test
public void testParseResourceWithInvalidType() {
String input = "{" + "\"resourceType\":\"Patient\"," + "\"contained\":[" + " {" + " \"rezType\":\"Organization\"" + " }" + " ]" + "}";
IParser jsonParser = ourCtx.newJsonParser().setPrettyPrint(true);
try {
jsonParser.parseResource(input);
fail();
} catch (DataFormatException e) {
assertEquals("Missing required element 'resourceType' from JSON resource object, unable to parse", e.getMessage());
}
}
/**
* See #144 and #146
*/

View File

@ -15,6 +15,7 @@ import static org.junit.Assert.assertTrue;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.UUID;
@ -62,12 +63,14 @@ import ca.uhn.fhir.model.dstu2.valueset.AdministrativeGenderEnum;
import ca.uhn.fhir.model.dstu2.valueset.BundleTypeEnum;
import ca.uhn.fhir.model.dstu2.valueset.DocumentReferenceStatusEnum;
import ca.uhn.fhir.model.dstu2.valueset.IdentifierUseEnum;
import ca.uhn.fhir.model.dstu2.valueset.MaritalStatusCodesEnum;
import ca.uhn.fhir.model.primitive.DateDt;
import ca.uhn.fhir.model.primitive.DateTimeDt;
import ca.uhn.fhir.model.primitive.IdDt;
import ca.uhn.fhir.model.primitive.InstantDt;
import ca.uhn.fhir.model.primitive.StringDt;
import ca.uhn.fhir.rest.client.IGenericClient;
import ca.uhn.fhir.rest.server.Constants;
public class XmlParserDstu2Test {
private static final FhirContext ourCtx = FhirContext.forDstu2();
@ -558,7 +561,6 @@ public class XmlParserDstu2Test {
assertEquals("<Binary xmlns=\"http://hl7.org/fhir\"><content value=\"AQIDBA==\"/></Binary>", output);
}
@Test
public void testEncodeBundleOldStyleContainingResourceWithUuidBase() {
Patient p = new Patient();
@ -570,7 +572,7 @@ public class XmlParserDstu2Test {
String encoded = ourCtx.newXmlParser().setPrettyPrint(true).encodeBundleToString(b);
ourLog.info(encoded);
assertThat(encoded, stringContainsInOrder("<Bundle", "<entry>", "<fullUrl value=\"" + p.getId().getValue() +"\"/>", "<Patient", "<id value=\"" + p.getId().getIdPart() + "\"/>" ));
assertThat(encoded, stringContainsInOrder("<Bundle", "<entry>", "<fullUrl value=\"" + p.getId().getValue() + "\"/>", "<Patient", "<id value=\"" + p.getId().getIdPart() + "\"/>"));
}
@Test
@ -636,10 +638,8 @@ public class XmlParserDstu2Test {
ourLog.info(encoded);
// @formatter:on
assertThat(
encoded,
stringContainsInOrder("<MedicationPrescription xmlns=\"http://hl7.org/fhir\">", "<contained>", "<Medication xmlns=\"http://hl7.org/fhir\">", "<id value=\"123\"/>", "<code>", "<coding>", "<system value=\"urn:sys\"/>", "<code value=\"code1\"/>", "</coding>", "</code>", "</Medication>",
"</contained>", "<medicationReference>", "<reference value=\"#123\"/>", "<display value=\"MedRef\"/>", "</medicationReference>", "</MedicationPrescription>"));
assertThat(encoded, stringContainsInOrder("<MedicationPrescription xmlns=\"http://hl7.org/fhir\">", "<contained>", "<Medication xmlns=\"http://hl7.org/fhir\">", "<id value=\"123\"/>", "<code>", "<coding>", "<system value=\"urn:sys\"/>", "<code value=\"code1\"/>", "</coding>", "</code>",
"</Medication>", "</contained>", "<medicationReference>", "<reference value=\"#123\"/>", "<display value=\"MedRef\"/>", "</medicationReference>", "</MedicationPrescription>"));
//@formatter:off
}
@ -671,10 +671,8 @@ public class XmlParserDstu2Test {
ourLog.info(encoded);
//@formatter:on
assertThat(
encoded,
stringContainsInOrder("<MedicationPrescription xmlns=\"http://hl7.org/fhir\">", "<contained>", "<Medication xmlns=\"http://hl7.org/fhir\">", "<id value=\"1\"/>", "<code>", "<coding>", "<system value=\"urn:sys\"/>", "<code value=\"code1\"/>", "</coding>", "</code>", "</Medication>",
"</contained>", "<medicationReference>", "<reference value=\"#1\"/>", "<display value=\"MedRef\"/>", "</medicationReference>", "</MedicationPrescription>"));
assertThat(encoded, stringContainsInOrder("<MedicationPrescription xmlns=\"http://hl7.org/fhir\">", "<contained>", "<Medication xmlns=\"http://hl7.org/fhir\">", "<id value=\"1\"/>", "<code>", "<coding>", "<system value=\"urn:sys\"/>", "<code value=\"code1\"/>", "</coding>", "</code>",
"</Medication>", "</contained>", "<medicationReference>", "<reference value=\"#1\"/>", "<display value=\"MedRef\"/>", "</medicationReference>", "</MedicationPrescription>"));
//@formatter:off
}
@ -710,10 +708,8 @@ public class XmlParserDstu2Test {
ourLog.info(encoded);
//@formatter:on
assertThat(
encoded,
stringContainsInOrder("<MedicationPrescription xmlns=\"http://hl7.org/fhir\">", "<contained>", "<Medication xmlns=\"http://hl7.org/fhir\">", "<id value=\"123\"/>", "<code>", "<coding>", "<system value=\"urn:sys\"/>", "<code value=\"code1\"/>", "</coding>", "</code>", "</Medication>",
"</contained>", "<medicationReference>", "<reference value=\"#123\"/>", "<display value=\"MedRef\"/>", "</medicationReference>", "</MedicationPrescription>"));
assertThat(encoded, stringContainsInOrder("<MedicationPrescription xmlns=\"http://hl7.org/fhir\">", "<contained>", "<Medication xmlns=\"http://hl7.org/fhir\">", "<id value=\"123\"/>", "<code>", "<coding>", "<system value=\"urn:sys\"/>", "<code value=\"code1\"/>", "</coding>", "</code>",
"</Medication>", "</contained>", "<medicationReference>", "<reference value=\"#123\"/>", "<display value=\"MedRef\"/>", "</medicationReference>", "</MedicationPrescription>"));
//@formatter:off
}
@ -746,9 +742,6 @@ public class XmlParserDstu2Test {
}
/**
* #158
*/
@ -783,6 +776,7 @@ public class XmlParserDstu2Test {
assertThat(encoded, not(containsString("Label")));
}
@Test
public void testEncodeExtensionWithResourceContent() {
IParser parser = ourCtx.newXmlParser();
@ -804,7 +798,25 @@ public class XmlParserDstu2Test {
}
@Test
public void testEncodeNarrativeSuppressed() {
Patient patient = new Patient();
patient.setId("Patient/1/_history/1");
patient.getText().setDiv("<div>THE DIV</div>");
patient.addName().addFamily("FAMILY");
patient.setMaritalStatus(MaritalStatusCodesEnum.D);
String encoded = ourCtx.newXmlParser().setPrettyPrint(true).setSuppressNarratives(true).encodeResourceToString(patient);
ourLog.info(encoded);
assertThat(encoded, containsString("<Patient"));
assertThat(encoded, stringContainsInOrder("<tag>", "<system value=\"" + Constants.TAG_SUBSETTED_SYSTEM + "\"/>", "<code value=\"" + Constants.TAG_SUBSETTED_CODE+"\"/>", "</tag>"));
assertThat(encoded, not(containsString("text")));
assertThat(encoded, not(containsString("THE DIV")));
assertThat(encoded, containsString("family"));
assertThat(encoded, containsString("maritalStatus"));
}
@Test
public void testEncodeNonContained() {
// Create an organization
@ -845,6 +857,47 @@ public class XmlParserDstu2Test {
}
@Test
public void testEncodeSummary() {
Patient patient = new Patient();
patient.setId("Patient/1/_history/1");
patient.getText().setDiv("<div>THE DIV</div>");
patient.addName().addFamily("FAMILY");
patient.setMaritalStatus(MaritalStatusCodesEnum.D);
String encoded = ourCtx.newXmlParser().setPrettyPrint(true).setSummaryMode(true).encodeResourceToString(patient);
ourLog.info(encoded);
assertThat(encoded, containsString("<Patient"));
assertThat(encoded, stringContainsInOrder("<tag>", "<system value=\"" + Constants.TAG_SUBSETTED_SYSTEM + "\"/>", "<code value=\"" + Constants.TAG_SUBSETTED_CODE+"\"/>", "</tag>"));
assertThat(encoded, not(containsString("THE DIV")));
assertThat(encoded, containsString("family"));
assertThat(encoded, not(containsString("maritalStatus")));
}
@Test
public void testEncodeSummary2() {
Patient patient = new Patient();
patient.setId("Patient/1/_history/1");
patient.getText().setDiv("<div>THE DIV</div>");
patient.addName().addFamily("FAMILY");
patient.setMaritalStatus(MaritalStatusCodesEnum.D);
TagList tl = new TagList();
tl.add(new Tag("foo", "bar"));
ResourceMetadataKeyEnum.TAG_LIST.put(patient, tl);
String encoded = ourCtx.newXmlParser().setPrettyPrint(true).setSummaryMode(true).encodeResourceToString(patient);
ourLog.info(encoded);
assertThat(encoded, containsString("<Patient"));
assertThat(encoded, stringContainsInOrder("<tag>", "<system value=\"foo\"/>", "<code value=\"bar\"/>", "</tag>"));
assertThat(encoded, stringContainsInOrder("<tag>", "<system value=\"" + Constants.TAG_SUBSETTED_SYSTEM + "\"/>", "<code value=\"" + Constants.TAG_SUBSETTED_CODE+"\"/>", "</tag>"));
assertThat(encoded, not(containsString("THE DIV")));
assertThat(encoded, containsString("family"));
assertThat(encoded, not(containsString("maritalStatus")));
}
@Test
public void testMoreExtensions() throws Exception {
@ -911,6 +964,57 @@ public class XmlParserDstu2Test {
assertThat(ourCtx.newXmlParser().setOmitResourceId(true).encodeResourceToString(p), not(containsString("123")));
}
@Test
public void testEncodeWithEncodeElements() throws Exception {
String content = IOUtils.toString(XmlParserDstu2Test.class.getResourceAsStream("/bundle-example.xml"));
Patient patient = new Patient();
patient.addName().addFamily("FAMILY");
patient.addAddress().addLine("LINE1");
ca.uhn.fhir.model.dstu2.resource.Bundle bundle = new ca.uhn.fhir.model.dstu2.resource.Bundle();
bundle.setTotal(100);
bundle.addEntry().setResource(patient);
{
IParser p = ourCtx.newXmlParser();
p.setEncodeElements(new HashSet<String>(Arrays.asList("Patient.name", "Bundle.entry")));
p.setPrettyPrint(true);
String out = p.encodeResourceToString(bundle);
ourLog.info(out);
assertThat(out, not(containsString("total")));
assertThat(out, (containsString("Patient")));
assertThat(out, (containsString("name")));
assertThat(out, not(containsString("address")));
}
{
IParser p = ourCtx.newXmlParser();
p.setEncodeElements(new HashSet<String>(Arrays.asList("Patient.name")));
p.setEncodeElementsAppliesToResourceTypes(new HashSet<String>(Arrays.asList("Patient")));
p.setPrettyPrint(true);
String out = p.encodeResourceToString(bundle);
ourLog.info(out);
assertThat(out, (containsString("total")));
assertThat(out, (containsString("Patient")));
assertThat(out, (containsString("name")));
assertThat(out, not(containsString("address")));
}
{
IParser p = ourCtx.newXmlParser();
p.setEncodeElements(new HashSet<String>(Arrays.asList("Patient")));
p.setEncodeElementsAppliesToResourceTypes(new HashSet<String>(Arrays.asList("Patient")));
p.setPrettyPrint(true);
String out = p.encodeResourceToString(bundle);
ourLog.info(out);
assertThat(out, (containsString("total")));
assertThat(out, (containsString("Patient")));
assertThat(out, (containsString("name")));
assertThat(out, (containsString("address")));
}
}
@Test
public void testParseAndEncodeBundle() throws Exception {
String content = IOUtils.toString(XmlParserDstu2Test.class.getResourceAsStream("/bundle-example.xml"));
@ -1191,7 +1295,7 @@ public class XmlParserDstu2Test {
ElementDefinitionDt elem = de.getElement().get(0);
Binding b = elem.getBinding();
// assertEquals("All codes representing the gender of a person.", b.getDescription());
// assertEquals("All codes representing the gender of a person.", b.getDescription());
ResourceReferenceDt ref = (ResourceReferenceDt) b.getValueSet();
assertEquals("#2179414", ref.getReference().getValue());

View File

@ -55,6 +55,7 @@ import ca.uhn.fhir.parser.IParser;
import ca.uhn.fhir.parser.XmlParserDstu2Test;
import ca.uhn.fhir.rest.api.MethodOutcome;
import ca.uhn.fhir.rest.api.PreferReturnEnum;
import ca.uhn.fhir.rest.api.SummaryEnum;
import ca.uhn.fhir.rest.client.interceptor.LoggingInterceptor;
import ca.uhn.fhir.rest.param.DateRangeParam;
import ca.uhn.fhir.rest.server.Constants;
@ -1052,6 +1053,58 @@ public class GenericClientDstu2Test {
}
@Test
public void testSearchWithSummaryParam() throws Exception {
String msg = "{\"resourceType\":\"Bundle\",\"id\":null,\"base\":\"http://localhost:57931/fhir/contextDev\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"http://localhost:57931/fhir/contextDev/Patient?identifier=urn%3AMultiFhirVersionTest%7CtestSubmitPatient01&_format=json\"}],\"entry\":[{\"resource\":{\"resourceType\":\"Patient\",\"id\":\"1\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2014-12-20T18:41:29.706-05:00\"},\"identifier\":[{\"system\":\"urn:MultiFhirVersionTest\",\"value\":\"testSubmitPatient01\"}]}}]}";
ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class);
when(myHttpClient.execute(capt.capture())).thenReturn(myHttpResponse);
when(myHttpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 200, "OK"));
when(myHttpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", Constants.CT_FHIR_JSON + "; charset=UTF-8"));
when(myHttpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader(msg), Charset.forName("UTF-8")));
IGenericClient client = ourCtx.newRestfulGenericClient("http://example.com/fhir");
//@formatter:off
Bundle response = client.search()
.forResource("Patient")
.where(Patient.NAME.matches().value("james"))
.summaryMode(SummaryEnum.FALSE)
.execute();
//@formatter:on
assertEquals("http://example.com/fhir/Patient?name=james&_summary=false", capt.getValue().getURI().toString());
assertEquals(Patient.class, response.getEntries().get(0).getResource().getClass());
}
@Test
public void testReadWithSummaryParamHtml() throws Exception {
String msg = "<div>HELP IM A DIV</div>";
ArgumentCaptor<HttpUriRequest> capt = ArgumentCaptor.forClass(HttpUriRequest.class);
when(myHttpClient.execute(capt.capture())).thenReturn(myHttpResponse);
when(myHttpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 200, "OK"));
when(myHttpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", Constants.CT_HTML + "; charset=UTF-8"));
when(myHttpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader(msg), Charset.forName("UTF-8")));
IGenericClient client = ourCtx.newRestfulGenericClient("http://example.com/fhir");
//@formatter:off
Patient response = client.read()
.resource(Patient.class)
.withId("123")
.summaryMode(SummaryEnum.TEXT)
.execute();
//@formatter:on
assertEquals("http://example.com/fhir/Patient/123?_summary=text", capt.getValue().getURI().toString());
assertEquals(Patient.class, response.getClass());
assertEquals("<div>HELP IM A DIV</div>", response.getText().getDiv().getValueAsString());
}
/**
* See #191
*/

View File

@ -0,0 +1,286 @@
package ca.uhn.fhir.rest.server;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.model.api.IResource;
import ca.uhn.fhir.model.dstu2.resource.Patient;
import ca.uhn.fhir.model.dstu2.valueset.MaritalStatusCodesEnum;
import ca.uhn.fhir.model.primitive.IdDt;
import ca.uhn.fhir.rest.annotation.IdParam;
import ca.uhn.fhir.rest.annotation.Read;
import ca.uhn.fhir.rest.annotation.Search;
import ca.uhn.fhir.rest.api.SummaryEnum;
import ca.uhn.fhir.util.PortUtil;
public class SummaryParamTest {
private static CloseableHttpClient ourClient;
private static FhirContext ourCtx = FhirContext.forDstu2();
private static SummaryEnum ourLastSummary;
private static List<SummaryEnum> ourLastSummaryList;
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(SummaryParamTest.class);
private static int ourPort;
private static Server ourServer;
@Before
public void before() {
ourLastSummary = null;
ourLastSummaryList = null;
}
@Test
public void testReadSummaryData() throws Exception {
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient/1?_summary=" + SummaryEnum.DATA.getCode());
HttpResponse status = ourClient.execute(httpGet);
String responseContent = IOUtils.toString(status.getEntity().getContent());
IOUtils.closeQuietly(status.getEntity().getContent());
ourLog.info(responseContent);
assertEquals(200, status.getStatusLine().getStatusCode());
assertEquals(Constants.CT_FHIR_XML + Constants.CHARSET_UTF8_CTSUFFIX, status.getEntity().getContentType().getValue());
assertThat(responseContent, not(containsString("<Bundle")));
assertThat(responseContent, (containsString("<Patien")));
assertThat(responseContent, not(containsString("<div>THE DIV</div>")));
assertThat(responseContent, (containsString("family")));
assertThat(responseContent, (containsString("maritalStatus")));
assertEquals(SummaryEnum.DATA, ourLastSummary);
}
@Test
public void testReadSummaryText() throws Exception {
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient/1?_summary=" + SummaryEnum.TEXT.getCode());
HttpResponse status = ourClient.execute(httpGet);
String responseContent = IOUtils.toString(status.getEntity().getContent());
IOUtils.closeQuietly(status.getEntity().getContent());
ourLog.info(responseContent);
assertEquals(200, status.getStatusLine().getStatusCode());
assertEquals(Constants.CT_HTML_WITH_UTF8, status.getEntity().getContentType().getValue());
assertThat(responseContent, not(containsString("<Bundle")));
assertThat(responseContent, not(containsString("<Patien")));
assertEquals("<div>THE DIV</div>", responseContent);
assertThat(responseContent, not(containsString("family")));
assertThat(responseContent, not(containsString("maritalStatus")));
assertEquals(SummaryEnum.TEXT, ourLastSummary);
}
@Test
public void testReadSummaryTrue() throws Exception {
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient/1?_summary=" + SummaryEnum.TRUE.getCode());
HttpResponse status = ourClient.execute(httpGet);
String responseContent = IOUtils.toString(status.getEntity().getContent());
IOUtils.closeQuietly(status.getEntity().getContent());
ourLog.info(responseContent);
assertEquals(200, status.getStatusLine().getStatusCode());
assertEquals(Constants.CT_FHIR_XML + Constants.CHARSET_UTF8_CTSUFFIX, status.getEntity().getContentType().getValue());
assertThat(responseContent, not(containsString("<Bundle")));
assertThat(responseContent, (containsString("<Patien")));
assertThat(responseContent, not(containsString("<div>THE DIV</div>")));
assertThat(responseContent, (containsString("family")));
assertThat(responseContent, not(containsString("maritalStatus")));
assertEquals(SummaryEnum.TRUE, ourLastSummary);
}
@Test
public void testSearchSummaryCount() throws Exception {
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient?_pretty=true&_summary=" + SummaryEnum.COUNT.getCode());
HttpResponse status = ourClient.execute(httpGet);
String responseContent = IOUtils.toString(status.getEntity().getContent());
IOUtils.closeQuietly(status.getEntity().getContent());
ourLog.info(responseContent);
assertEquals(200, status.getStatusLine().getStatusCode());
assertThat(responseContent, (containsString("<total value=\"1\"/>")));
assertThat(responseContent, not(containsString("entry")));
assertThat(responseContent, not(containsString("THE DIV")));
assertThat(responseContent, not(containsString("family")));
assertThat(responseContent, not(containsString("maritalStatus")));
assertEquals(SummaryEnum.COUNT, ourLastSummary);
}
@Test
public void testSearchSummaryData() throws Exception {
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient?_summary=" + SummaryEnum.DATA.getCode());
HttpResponse status = ourClient.execute(httpGet);
String responseContent = IOUtils.toString(status.getEntity().getContent());
IOUtils.closeQuietly(status.getEntity().getContent());
ourLog.info(responseContent);
assertEquals(200, status.getStatusLine().getStatusCode());
assertThat(responseContent, containsString("<Patient"));
assertThat(responseContent, not(containsString("THE DIV")));
assertThat(responseContent, containsString("family"));
assertThat(responseContent, containsString("maritalStatus"));
assertEquals(SummaryEnum.DATA, ourLastSummary);
}
@Test
public void testSearchSummaryFalse() throws Exception {
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient?_summary=false");
HttpResponse status = ourClient.execute(httpGet);
String responseContent = IOUtils.toString(status.getEntity().getContent());
IOUtils.closeQuietly(status.getEntity().getContent());
ourLog.info(responseContent);
assertEquals(200, status.getStatusLine().getStatusCode());
assertThat(responseContent, containsString("<Patient"));
assertThat(responseContent, containsString("THE DIV"));
assertThat(responseContent, containsString("family"));
assertThat(responseContent, containsString("maritalStatus"));
assertEquals(SummaryEnum.FALSE, ourLastSummary);
}
@Test
public void testSearchSummaryText() throws Exception {
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient?_summary=" + SummaryEnum.TEXT.getCode());
HttpResponse status = ourClient.execute(httpGet);
String responseContent = IOUtils.toString(status.getEntity().getContent());
IOUtils.closeQuietly(status.getEntity().getContent());
ourLog.info(responseContent);
assertEquals(200, status.getStatusLine().getStatusCode());
assertThat(responseContent, (containsString("<total value=\"1\"/>")));
assertThat(responseContent, (containsString("entry")));
assertThat(responseContent, (containsString("THE DIV")));
assertThat(responseContent, not(containsString("family")));
assertThat(responseContent, not(containsString("maritalStatus")));
assertEquals(SummaryEnum.TEXT, ourLastSummary);
}
@Test
public void testSearchSummaryTextMulti() throws Exception {
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient?_query=multi&_summary=" + SummaryEnum.TEXT.getCode());
HttpResponse status = ourClient.execute(httpGet);
String responseContent = IOUtils.toString(status.getEntity().getContent());
IOUtils.closeQuietly(status.getEntity().getContent());
ourLog.info(responseContent);
assertEquals(200, status.getStatusLine().getStatusCode());
assertThat(responseContent, (containsString("<total value=\"1\"/>")));
assertThat(responseContent, (containsString("entry")));
assertThat(responseContent, (containsString("THE DIV")));
assertThat(responseContent, not(containsString("family")));
assertThat(responseContent, not(containsString("maritalStatus")));
assertThat(ourLastSummaryList, contains(SummaryEnum.TEXT));
}
@Test
public void testSearchSummaryTrue() throws Exception {
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient?_summary=" + SummaryEnum.TRUE.getCode());
HttpResponse status = ourClient.execute(httpGet);
String responseContent = IOUtils.toString(status.getEntity().getContent());
IOUtils.closeQuietly(status.getEntity().getContent());
ourLog.info(responseContent);
assertEquals(200, status.getStatusLine().getStatusCode());
assertThat(responseContent, containsString("<Patient"));
assertThat(responseContent, not(containsString("THE DIV")));
assertThat(responseContent, containsString("family"));
assertThat(responseContent, not(containsString("maritalStatus")));
assertEquals(SummaryEnum.TRUE, ourLastSummary);
}
@Test
public void testSearchSummaryWithTextAndOthers() throws Exception {
HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient?_summary=text&_summary=data");
HttpResponse status = ourClient.execute(httpGet);
String responseContent = IOUtils.toString(status.getEntity().getContent());
IOUtils.closeQuietly(status.getEntity().getContent());
ourLog.info(responseContent);
assertEquals(400, status.getStatusLine().getStatusCode());
assertThat(responseContent, containsString("Can not combine _summary=text with other values for _summary"));
}
@AfterClass
public static void afterClass() throws Exception {
ourServer.stop();
}
@BeforeClass
public static void beforeClass() throws Exception {
ourPort = PortUtil.findFreePort();
ourServer = new Server(ourPort);
DummyPatientResourceProvider patientProvider = new DummyPatientResourceProvider();
ServletHandler proxyHandler = new ServletHandler();
RestfulServer servlet = new RestfulServer(ourCtx);
servlet.setResourceProviders(patientProvider);
ServletHolder servletHolder = new ServletHolder(servlet);
proxyHandler.addServletWithMapping(servletHolder, "/*");
ourServer.setHandler(proxyHandler);
ourServer.start();
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(5000, TimeUnit.MILLISECONDS);
HttpClientBuilder builder = HttpClientBuilder.create();
builder.setConnectionManager(connectionManager);
ourClient = builder.build();
}
public static class DummyPatientResourceProvider implements IResourceProvider {
@Override
public Class<? extends IResource> getResourceType() {
return Patient.class;
}
@Read
public Patient read(@IdParam IdDt theId, SummaryEnum theSummary) {
ourLastSummary = theSummary;
Patient patient = new Patient();
patient.setId("Patient/1/_history/1");
patient.getText().setDiv("<div>THE DIV</div>");
patient.addName().addFamily("FAMILY");
patient.setMaritalStatus(MaritalStatusCodesEnum.D);
return patient;
}
@Search(queryName = "multi")
public Patient search(List<SummaryEnum> theSummary) {
ourLastSummaryList = theSummary;
Patient patient = new Patient();
patient.setId("Patient/1/_history/1");
patient.getText().setDiv("<div>THE DIV</div>");
patient.addName().addFamily("FAMILY");
patient.setMaritalStatus(MaritalStatusCodesEnum.D);
return patient;
}
@Search()
public Patient search(SummaryEnum theSummary) {
ourLastSummary = theSummary;
Patient patient = new Patient();
patient.setId("Patient/1/_history/1");
patient.getText().setDiv("<div>THE DIV</div>");
patient.addName().addFamily("FAMILY");
patient.setMaritalStatus(MaritalStatusCodesEnum.D);
return patient;
}
}
}

View File

@ -19,9 +19,7 @@ package ca.uhn.fhir.rest.server.provider.dstu2hl7org;
* limitations under the License.
* #L%
*/
import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import static org.apache.commons.lang3.StringUtils.*;
import java.util.ArrayList;
import java.util.Collections;
@ -66,14 +64,88 @@ import ca.uhn.fhir.util.ResourceReferenceInfo;
public class Dstu2Hl7OrgBundleFactory implements IVersionSpecificBundleFactory {
private String myBase;
private Bundle myBundle;
private FhirContext myContext;
private String myBase;
public Dstu2Hl7OrgBundleFactory(FhirContext theContext) {
myContext = theContext;
}
private void addResourcesForSearch(List<? extends IBaseResource> theResult) {
List<IBaseResource> includedResources = new ArrayList<IBaseResource>();
Set<IIdType> addedResourceIds = new HashSet<IIdType>();
for (IBaseResource next : theResult) {
if (next.getIdElement().isEmpty() == false) {
addedResourceIds.add(next.getIdElement());
}
}
for (IBaseResource nextBaseRes : theResult) {
IDomainResource next = (IDomainResource) nextBaseRes;
Set<String> containedIds = new HashSet<String>();
for (IBaseResource nextContained : next.getContained()) {
if (nextContained.getIdElement().isEmpty() == false) {
containedIds.add(nextContained.getIdElement().getValue());
}
}
List<IBaseReference> references = myContext.newTerser().getAllPopulatedChildElementsOfType(next, IBaseReference.class);
do {
List<IBaseResource> addedResourcesThisPass = new ArrayList<IBaseResource>();
for (IBaseReference nextRef : references) {
IBaseResource nextRes = (IBaseResource) nextRef.getResource();
if (nextRes != null) {
if (nextRes.getIdElement().hasIdPart()) {
if (containedIds.contains(nextRes.getIdElement().getValue())) {
// Don't add contained IDs as top level resources
continue;
}
IIdType id = nextRes.getIdElement();
if (id.hasResourceType() == false) {
String resName = myContext.getResourceDefinition(nextRes).getName();
id = id.withResourceType(resName);
}
if (!addedResourceIds.contains(id)) {
addedResourceIds.add(id);
addedResourcesThisPass.add(nextRes);
}
}
}
}
// Linked resources may themselves have linked resources
references = new ArrayList<IBaseReference>();
for (IBaseResource iResource : addedResourcesThisPass) {
List<IBaseReference> newReferences = myContext.newTerser().getAllPopulatedChildElementsOfType(iResource, IBaseReference.class);
references.addAll(newReferences);
}
includedResources.addAll(addedResourcesThisPass);
} while (references.isEmpty() == false);
BundleEntryComponent entry = myBundle.addEntry().setResource((Resource) next);
IdType nextId = (IdType) next.getIdElement();
if (isNotBlank(myBase) && isNotBlank(nextId.getResourceType())) {
entry.setFullUrlElement(nextId.withServerBase(myBase, nextId.getResourceType()));
}
}
/*
* Actually add the resources to the bundle
*/
for (IBaseResource next : includedResources) {
myBundle.addEntry().setResource((Resource) next).getSearch().setMode(SearchEntryMode.INCLUDE);
}
}
@Override
public void addResourcesToBundle(List<IBaseResource> theResult, BundleTypeEnum theBundleType, String theServerBase, BundleInclusionRule theBundleInclusionRule, Set<Include> theIncludes) {
if (myBundle == null) {
@ -182,7 +254,7 @@ public class Dstu2Hl7OrgBundleFactory implements IVersionSpecificBundleFactory {
}
myBase = theServerBase;
if (myBundle.getTypeElement().isEmpty() && theBundleType != null) {
myBundle.getTypeElement().setValueAsString(theBundleType.getCode());
}
@ -192,6 +264,16 @@ public class Dstu2Hl7OrgBundleFactory implements IVersionSpecificBundleFactory {
}
}
@Override
public ca.uhn.fhir.model.api.Bundle getDstu1Bundle() {
return null;
}
@Override
public IBaseResource getResourceBundle() {
return myBundle;
}
private boolean hasLink(String theLinkType, Bundle theBundle) {
for (BundleLinkComponent next : theBundle.getLink()) {
if (theLinkType.equals(next.getRelation())) {
@ -202,8 +284,8 @@ public class Dstu2Hl7OrgBundleFactory implements IVersionSpecificBundleFactory {
}
@Override
public void initializeBundleFromBundleProvider(RestfulServer theServer, IBundleProvider theResult, EncodingEnum theResponseEncoding, String theServerBase, String theCompleteUrl,
boolean thePrettyPrint, int theOffset, Integer theLimit, String theSearchId, BundleTypeEnum theBundleType, Set<Include> theIncludes) {
public void initializeBundleFromBundleProvider(RestfulServer theServer, IBundleProvider theResult, EncodingEnum theResponseEncoding, String theServerBase, String theCompleteUrl, boolean thePrettyPrint, int theOffset, Integer theLimit, String theSearchId, BundleTypeEnum theBundleType,
Set<Include> theIncludes) {
int numToReturn;
String searchId = null;
List<IBaseResource> resourceList;
@ -264,31 +346,18 @@ public class Dstu2Hl7OrgBundleFactory implements IVersionSpecificBundleFactory {
if (searchId != null) {
if (theOffset + numToReturn < theResult.size()) {
myBundle.addLink().setRelation(Constants.LINK_NEXT)
.setUrl(RestfulServerUtils.createPagingLink(theIncludes, theServerBase, searchId, theOffset + numToReturn, numToReturn, theResponseEncoding, thePrettyPrint));
myBundle.addLink().setRelation(Constants.LINK_NEXT).setUrl(RestfulServerUtils.createPagingLink(theIncludes, theServerBase, searchId, theOffset + numToReturn, numToReturn, theResponseEncoding, thePrettyPrint));
}
if (theOffset > 0) {
int start = Math.max(0, theOffset - limit);
myBundle.addLink().setRelation(Constants.LINK_PREVIOUS)
.setUrl(RestfulServerUtils.createPagingLink(theIncludes, theServerBase, searchId, start, limit, theResponseEncoding, thePrettyPrint));
myBundle.addLink().setRelation(Constants.LINK_PREVIOUS).setUrl(RestfulServerUtils.createPagingLink(theIncludes, theServerBase, searchId, start, limit, theResponseEncoding, thePrettyPrint));
}
}
}
}
@Override
public ca.uhn.fhir.model.api.Bundle getDstu1Bundle() {
return null;
}
@Override
public IBaseResource getResourceBundle() {
return myBundle;
}
@Override
public void initializeBundleFromResourceList(String theAuthor, List<? extends IBaseResource> theResources, String theServerBase, String theCompleteUrl, int theTotalResults,
BundleTypeEnum theBundleType) {
public void initializeBundleFromResourceList(String theAuthor, List<? extends IBaseResource> theResources, String theServerBase, String theCompleteUrl, int theTotalResults, BundleTypeEnum theBundleType) {
myBundle = new Bundle();
myBundle.setId(UUID.randomUUID().toString());
@ -324,80 +393,6 @@ public class Dstu2Hl7OrgBundleFactory implements IVersionSpecificBundleFactory {
myBundle.getTotalElement().setValue(theTotalResults);
}
private void addResourcesForSearch(List<? extends IBaseResource> theResult) {
List<IBaseResource> includedResources = new ArrayList<IBaseResource>();
Set<IIdType> addedResourceIds = new HashSet<IIdType>();
for (IBaseResource next : theResult) {
if (next.getIdElement().isEmpty() == false) {
addedResourceIds.add(next.getIdElement());
}
}
for (IBaseResource nextBaseRes : theResult) {
IDomainResource next = (IDomainResource) nextBaseRes;
Set<String> containedIds = new HashSet<String>();
for (IBaseResource nextContained : next.getContained()) {
if (nextContained.getIdElement().isEmpty() == false) {
containedIds.add(nextContained.getIdElement().getValue());
}
}
List<IBaseReference> references = myContext.newTerser().getAllPopulatedChildElementsOfType(next, IBaseReference.class);
do {
List<IBaseResource> addedResourcesThisPass = new ArrayList<IBaseResource>();
for (IBaseReference nextRef : references) {
IBaseResource nextRes = (IBaseResource) nextRef.getResource();
if (nextRes != null) {
if (nextRes.getIdElement().hasIdPart()) {
if (containedIds.contains(nextRes.getIdElement().getValue())) {
// Don't add contained IDs as top level resources
continue;
}
IIdType id = nextRes.getIdElement();
if (id.hasResourceType() == false) {
String resName = myContext.getResourceDefinition(nextRes).getName();
id = id.withResourceType(resName);
}
if (!addedResourceIds.contains(id)) {
addedResourceIds.add(id);
addedResourcesThisPass.add(nextRes);
}
}
}
}
// Linked resources may themselves have linked resources
references = new ArrayList<IBaseReference>();
for (IBaseResource iResource : addedResourcesThisPass) {
List<IBaseReference> newReferences = myContext.newTerser().getAllPopulatedChildElementsOfType(iResource, IBaseReference.class);
references.addAll(newReferences);
}
includedResources.addAll(addedResourcesThisPass);
} while (references.isEmpty() == false);
BundleEntryComponent entry = myBundle.addEntry().setResource((Resource) next);
IdType nextId = (IdType) next.getIdElement();
if (isNotBlank(myBase) && isNotBlank(nextId.getResourceType())) {
entry.setFullUrlElement(nextId.withServerBase(myBase, nextId.getResourceType()));
}
}
/*
* Actually add the resources to the bundle
*/
for (IBaseResource next : includedResources) {
myBundle.addEntry().setResource((Resource) next).getSearch().setMode(SearchEntryMode.INCLUDE);
}
}
@Override
public void initializeWithBundleResource(IBaseResource theBundle) {
myBundle = (Bundle) theBundle;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -121,63 +121,63 @@ public class Account extends DomainResource {
/**
* Unique identifier used to reference the account. May or may not be intended for human use. (E.g. credit card number).
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Account number", formalDefinition="Unique identifier used to reference the account. May or may not be intended for human use. (E.g. credit card number)." )
protected List<Identifier> identifier;
/**
* Name used for the account when displaying it to humans in reports, etc.
*/
@Child(name = "name", type = {StringType.class}, order=1, min=0, max=1)
@Child(name = "name", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Human-readable label", formalDefinition="Name used for the account when displaying it to humans in reports, etc." )
protected StringType name;
/**
* Categorizes the account for reporting and searching purposes.
*/
@Child(name = "type", type = {CodeableConcept.class}, order=2, min=0, max=1)
@Child(name = "type", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="E.g. patient, expense, depreciation", formalDefinition="Categorizes the account for reporting and searching purposes." )
protected CodeableConcept type;
/**
* Indicates whether the account is presently used/useable or not.
*/
@Child(name = "status", type = {CodeType.class}, order=3, min=0, max=1)
@Child(name = "status", type = {CodeType.class}, order=3, min=0, max=1, modifier=true, summary=true)
@Description(shortDefinition="active | inactive", formalDefinition="Indicates whether the account is presently used/useable or not." )
protected Enumeration<AccountStatus> status;
/**
* Indicates the period of time over which the account is allowed.
*/
@Child(name = "activePeriod", type = {Period.class}, order=4, min=0, max=1)
@Child(name = "activePeriod", type = {Period.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Valid from..to", formalDefinition="Indicates the period of time over which the account is allowed." )
protected Period activePeriod;
/**
* Identifies the currency to which transactions must be converted when crediting or debiting the account.
*/
@Child(name = "currency", type = {Coding.class}, order=5, min=0, max=1)
@Child(name = "currency", type = {Coding.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Base currency in which balance is tracked", formalDefinition="Identifies the currency to which transactions must be converted when crediting or debiting the account." )
protected Coding currency;
/**
* Represents the sum of all credits less all debits associated with the account. Might be positive, zero or negative.
*/
@Child(name = "balance", type = {Money.class}, order=6, min=0, max=1)
@Child(name = "balance", type = {Money.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="How much is in account?", formalDefinition="Represents the sum of all credits less all debits associated with the account. Might be positive, zero or negative." )
protected Money balance;
/**
* Identifies the period of time the account applies to. E.g. accounts created per fiscal year, quarter, etc.
*/
@Child(name = "coveragePeriod", type = {Period.class}, order=7, min=0, max=1)
@Child(name = "coveragePeriod", type = {Period.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Transaction window", formalDefinition="Identifies the period of time the account applies to. E.g. accounts created per fiscal year, quarter, etc." )
protected Period coveragePeriod;
/**
* Identifies the patient, device, practitioner, location or other object the account is associated with.
*/
@Child(name = "subject", type = {Patient.class, Device.class, Practitioner.class, Location.class, HealthcareService.class, Organization.class}, order=8, min=0, max=1)
@Child(name = "subject", type = {Patient.class, Device.class, Practitioner.class, Location.class, HealthcareService.class, Organization.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="What is account tied to?", formalDefinition="Identifies the patient, device, practitioner, location or other object the account is associated with." )
protected Reference subject;
@ -189,7 +189,7 @@ public class Account extends DomainResource {
/**
* Indicates the organization, department, etc. with responsibility for the account.
*/
@Child(name = "owner", type = {Organization.class}, order=9, min=0, max=1)
@Child(name = "owner", type = {Organization.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Who is responsible?", formalDefinition="Indicates the organization, department, etc. with responsibility for the account." )
protected Reference owner;
@ -201,7 +201,7 @@ public class Account extends DomainResource {
/**
* Provides additional information about what the account tracks and how it is used.
*/
@Child(name = "description", type = {StringType.class}, order=10, min=0, max=1)
@Child(name = "description", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Explanation of purpose/use", formalDefinition="Provides additional information about what the account tracks and how it is used." )
protected StringType description;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -234,70 +234,70 @@ public class Address extends Type implements ICompositeType {
/**
* The purpose of this address.
*/
@Child(name = "use", type = {CodeType.class}, order=0, min=0, max=1)
@Child(name = "use", type = {CodeType.class}, order=0, min=0, max=1, modifier=true, summary=true)
@Description(shortDefinition="home | work | temp | old - purpose of this address", formalDefinition="The purpose of this address." )
protected Enumeration<AddressUse> use;
/**
* Distinguishes between physical addresses (those you can visit) and mailing addresses (e.g. PO Boxes and care-of addresses). Most addresses are both.
*/
@Child(name = "type", type = {CodeType.class}, order=1, min=0, max=1)
@Child(name = "type", type = {CodeType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="postal | physical | both", formalDefinition="Distinguishes between physical addresses (those you can visit) and mailing addresses (e.g. PO Boxes and care-of addresses). Most addresses are both." )
protected Enumeration<AddressType> type;
/**
* A full text representation of the address.
*/
@Child(name = "text", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "text", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Text representation of the address", formalDefinition="A full text representation of the address." )
protected StringType text;
/**
* This component contains the house number, apartment number, street name, street direction, P.O. Box number, delivery hints, and similar address information.
*/
@Child(name = "line", type = {StringType.class}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "line", type = {StringType.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Street name, number, direction & P.O. Box etc", formalDefinition="This component contains the house number, apartment number, street name, street direction, P.O. Box number, delivery hints, and similar address information." )
protected List<StringType> line;
/**
* The name of the city, town, village or other community or delivery center.
*/
@Child(name = "city", type = {StringType.class}, order=4, min=0, max=1)
@Child(name = "city", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Name of city, town etc.", formalDefinition="The name of the city, town, village or other community or delivery center." )
protected StringType city;
/**
* The name of the administrative area (county).
*/
@Child(name = "district", type = {StringType.class}, order=5, min=0, max=1)
@Child(name = "district", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="District name (aka county)", formalDefinition="The name of the administrative area (county)." )
protected StringType district;
/**
* Sub-unit of a country with limited sovereignty in a federally organized country. A code may be used if codes are in common use (i.e. US 2 letter state codes).
*/
@Child(name = "state", type = {StringType.class}, order=6, min=0, max=1)
@Child(name = "state", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Sub-unit of country (abreviations ok)", formalDefinition="Sub-unit of a country with limited sovereignty in a federally organized country. A code may be used if codes are in common use (i.e. US 2 letter state codes)." )
protected StringType state;
/**
* A postal code designating a region defined by the postal service.
*/
@Child(name = "postalCode", type = {StringType.class}, order=7, min=0, max=1)
@Child(name = "postalCode", type = {StringType.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Postal code for area", formalDefinition="A postal code designating a region defined by the postal service." )
protected StringType postalCode;
/**
* Country - a nation as commonly understood or generally accepted.
*/
@Child(name = "country", type = {StringType.class}, order=8, min=0, max=1)
@Child(name = "country", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Country (can be ISO 3166 3 letter code)", formalDefinition="Country - a nation as commonly understood or generally accepted." )
protected StringType country;
/**
* Time period when address was/is in use.
*/
@Child(name = "period", type = {Period.class}, order=9, min=0, max=1)
@Child(name = "period", type = {Period.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Time period when address was/is in use", formalDefinition="Time period when address was/is in use." )
protected Period period;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import org.hl7.fhir.instance.model.annotations.DatatypeDef;
import org.hl7.fhir.instance.model.annotations.Block;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -48,21 +48,21 @@ public class Annotation extends Type implements ICompositeType {
/**
* The individual responsible for making the annotation.
*/
@Child(name = "author", type = {Practitioner.class, Patient.class, RelatedPerson.class, StringType.class}, order=0, min=0, max=1)
@Child(name = "author", type = {Practitioner.class, Patient.class, RelatedPerson.class, StringType.class}, order=0, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Individual responsible for the annotation", formalDefinition="The individual responsible for making the annotation." )
protected Type author;
/**
* Indicates when this particular annotation was made.
*/
@Child(name = "time", type = {DateTimeType.class}, order=1, min=0, max=1)
@Child(name = "time", type = {DateTimeType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When the annotation was made", formalDefinition="Indicates when this particular annotation was made." )
protected DateTimeType time;
/**
* The text of the annotation.
*/
@Child(name = "text", type = {StringType.class}, order=2, min=1, max=1)
@Child(name = "text", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="The annotation - text content", formalDefinition="The text of the annotation." )
protected StringType text;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -365,14 +365,14 @@ public class Appointment extends DomainResource {
/**
* Role of participant in the appointment.
*/
@Child(name = "type", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "type", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Role of participant in the appointment", formalDefinition="Role of participant in the appointment." )
protected List<CodeableConcept> type;
/**
* A Person, Location/HealthcareService or Device that is participating in the appointment.
*/
@Child(name = "actor", type = {Patient.class, Practitioner.class, RelatedPerson.class, Device.class, HealthcareService.class, Location.class}, order=2, min=0, max=1)
@Child(name = "actor", type = {Patient.class, Practitioner.class, RelatedPerson.class, Device.class, HealthcareService.class, Location.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="A Person, Location/HealthcareService or Device that is participating in the appointment", formalDefinition="A Person, Location/HealthcareService or Device that is participating in the appointment." )
protected Reference actor;
@ -384,14 +384,14 @@ public class Appointment extends DomainResource {
/**
* Is this participant required to be present at the meeting. This covers a use-case where 2 doctors need to meet to discuss the results for a specific patient, and the patient is not required to be present.
*/
@Child(name = "required", type = {CodeType.class}, order=3, min=0, max=1)
@Child(name = "required", type = {CodeType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="required | optional | information-only", formalDefinition="Is this participant required to be present at the meeting. This covers a use-case where 2 doctors need to meet to discuss the results for a specific patient, and the patient is not required to be present." )
protected Enumeration<ParticipantRequired> required;
/**
* Participation status of the Patient.
*/
@Child(name = "status", type = {CodeType.class}, order=4, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=4, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="accepted | declined | tentative | needs-action", formalDefinition="Participation status of the Patient." )
protected Enumeration<ParticipationStatus> status;
@ -638,63 +638,63 @@ public class Appointment extends DomainResource {
/**
* This records identifiers associated with this appointment concern that are defined by business processed and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="External Ids for this item", formalDefinition="This records identifiers associated with this appointment concern that are defined by business processed and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)." )
protected List<Identifier> identifier;
/**
* The overall status of the Appointment. Each of the participants has their own participation status which indicates their involvement in the process, however this status indicates the shared status.
*/
@Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="pending | booked | arrived | fulfilled | cancelled | noshow", formalDefinition="The overall status of the Appointment. Each of the participants has their own participation status which indicates their involvement in the process, however this status indicates the shared status." )
protected Enumeration<AppointmentStatus> status;
/**
* The type of appointment that is being booked (This may also be associated with participants for location, and/or a HealthcareService).
*/
@Child(name = "type", type = {CodeableConcept.class}, order=2, min=0, max=1)
@Child(name = "type", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The type of appointment that is being booked", formalDefinition="The type of appointment that is being booked (This may also be associated with participants for location, and/or a HealthcareService)." )
protected CodeableConcept type;
/**
* The reason that this appointment is being scheduled, this is more clinical than administrative.
*/
@Child(name = "reason", type = {CodeableConcept.class}, order=3, min=0, max=1)
@Child(name = "reason", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The reason that this appointment is being scheduled, this is more clinical than administrative", formalDefinition="The reason that this appointment is being scheduled, this is more clinical than administrative." )
protected CodeableConcept reason;
/**
* The priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority).
*/
@Child(name = "priority", type = {UnsignedIntType.class}, order=4, min=0, max=1)
@Child(name = "priority", type = {UnsignedIntType.class}, order=4, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="The priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority)", formalDefinition="The priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority)." )
protected UnsignedIntType priority;
/**
* The brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment field.
*/
@Child(name = "description", type = {StringType.class}, order=5, min=0, max=1)
@Child(name = "description", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="The brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment field", formalDefinition="The brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment field." )
protected StringType description;
/**
* Date/Time that the appointment is to take place.
*/
@Child(name = "start", type = {InstantType.class}, order=6, min=1, max=1)
@Child(name = "start", type = {InstantType.class}, order=6, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Date/Time that the appointment is to take place", formalDefinition="Date/Time that the appointment is to take place." )
protected InstantType start;
/**
* Date/Time that the appointment is to conclude.
*/
@Child(name = "end", type = {InstantType.class}, order=7, min=1, max=1)
@Child(name = "end", type = {InstantType.class}, order=7, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Date/Time that the appointment is to conclude", formalDefinition="Date/Time that the appointment is to conclude." )
protected InstantType end;
/**
* The slot that this appointment is filling. If provided then the schedule will not be provided as slots are not recursive, and the start/end values MUST be the same as from the slot.
*/
@Child(name = "slot", type = {Slot.class}, order=8, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "slot", type = {Slot.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="The slot that this appointment is filling. If provided then the schedule will not be provided as slots are not recursive, and the start/end values MUST be the same as from the slot", formalDefinition="The slot that this appointment is filling. If provided then the schedule will not be provided as slots are not recursive, and the start/end values MUST be the same as from the slot." )
protected List<Reference> slot;
/**
@ -706,14 +706,14 @@ public class Appointment extends DomainResource {
/**
* Additional comments about the appointment.
*/
@Child(name = "comment", type = {StringType.class}, order=9, min=0, max=1)
@Child(name = "comment", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Additional comments about the appointment", formalDefinition="Additional comments about the appointment." )
protected StringType comment;
/**
* An Order that lead to the creation of this appointment.
*/
@Child(name = "order", type = {Order.class}, order=10, min=0, max=1)
@Child(name = "order", type = {Order.class}, order=10, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="An Order that lead to the creation of this appointment", formalDefinition="An Order that lead to the creation of this appointment." )
protected Reference order;
@ -725,7 +725,7 @@ public class Appointment extends DomainResource {
/**
* List of participants involved in the appointment.
*/
@Child(name = "participant", type = {}, order=11, min=1, max=Child.MAX_UNLIMITED)
@Child(name = "participant", type = {}, order=11, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="List of participants involved in the appointment", formalDefinition="List of participants involved in the appointment." )
protected List<AppointmentParticipantComponent> participant;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -177,14 +177,14 @@ public class AppointmentResponse extends DomainResource {
/**
* This records identifiers associated with this appointment response concern that are defined by business processed and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="External Ids for this item", formalDefinition="This records identifiers associated with this appointment response concern that are defined by business processed and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate." )
protected List<Identifier> identifier;
/**
* Parent appointment that this response is replying to.
*/
@Child(name = "appointment", type = {Appointment.class}, order=1, min=1, max=1)
@Child(name = "appointment", type = {Appointment.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Parent appointment that this response is replying to", formalDefinition="Parent appointment that this response is replying to." )
protected Reference appointment;
@ -196,14 +196,14 @@ public class AppointmentResponse extends DomainResource {
/**
* Role of participant in the appointment.
*/
@Child(name = "participantType", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "participantType", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Role of participant in the appointment", formalDefinition="Role of participant in the appointment." )
protected List<CodeableConcept> participantType;
/**
* A Person, Location/HealthcareService or Device that is participating in the appointment.
*/
@Child(name = "actor", type = {Patient.class, Practitioner.class, RelatedPerson.class, Device.class, HealthcareService.class, Location.class}, order=3, min=0, max=1)
@Child(name = "actor", type = {Patient.class, Practitioner.class, RelatedPerson.class, Device.class, HealthcareService.class, Location.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="A Person, Location/HealthcareService or Device that is participating in the appointment", formalDefinition="A Person, Location/HealthcareService or Device that is participating in the appointment." )
protected Reference actor;
@ -215,28 +215,28 @@ public class AppointmentResponse extends DomainResource {
/**
* Participation status of the Participant. When the status is declined or tentative if the start/end times are different to the appointment, then these times should be interpreted as a requested time change. When the status is accepted, the times can either be the time of the appointment (as a confirmation of the time) or can be empty.
*/
@Child(name = "participantStatus", type = {CodeType.class}, order=4, min=1, max=1)
@Child(name = "participantStatus", type = {CodeType.class}, order=4, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="accepted | declined | tentative | in-process | completed | needs-action", formalDefinition="Participation status of the Participant. When the status is declined or tentative if the start/end times are different to the appointment, then these times should be interpreted as a requested time change. When the status is accepted, the times can either be the time of the appointment (as a confirmation of the time) or can be empty." )
protected Enumeration<ParticipantStatus> participantStatus;
/**
* This comment is particularly important when the responder is declining, tentative or requesting another time to indicate the reasons why.
*/
@Child(name = "comment", type = {StringType.class}, order=5, min=0, max=1)
@Child(name = "comment", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Additional comments about the appointment", formalDefinition="This comment is particularly important when the responder is declining, tentative or requesting another time to indicate the reasons why." )
protected StringType comment;
/**
* This may be either the same as the appointment request to confirm the details of the appointment, or alternately a new time to request a re-negotiation of the start time.
*/
@Child(name = "start", type = {InstantType.class}, order=6, min=0, max=1)
@Child(name = "start", type = {InstantType.class}, order=6, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Date/Time that the appointment is to take place, or requested new start time", formalDefinition="This may be either the same as the appointment request to confirm the details of the appointment, or alternately a new time to request a re-negotiation of the start time." )
protected InstantType start;
/**
* This may be either the same as the appointment request to confirm the details of the appointment, or alternately a new time to request a re-negotiation of the end time.
*/
@Child(name = "end", type = {InstantType.class}, order=7, min=0, max=1)
@Child(name = "end", type = {InstantType.class}, order=7, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Date/Time that the appointment is to conclude, or requested new end time", formalDefinition="This may be either the same as the appointment request to confirm the details of the appointment, or alternately a new time to request a re-negotiation of the end time." )
protected InstantType end;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -49,56 +49,56 @@ public class Attachment extends Type implements ICompositeType {
/**
* Identifies the type of the data in the attachment and allows a method to be chosen to interpret or render the data. Includes mime type parameters such as charset where appropriate.
*/
@Child(name = "contentType", type = {CodeType.class}, order=0, min=0, max=1)
@Child(name = "contentType", type = {CodeType.class}, order=0, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Mime type of the content, with charset etc.", formalDefinition="Identifies the type of the data in the attachment and allows a method to be chosen to interpret or render the data. Includes mime type parameters such as charset where appropriate." )
protected CodeType contentType;
/**
* The human language of the content. The value can be any valid value according to BCP 47.
*/
@Child(name = "language", type = {CodeType.class}, order=1, min=0, max=1)
@Child(name = "language", type = {CodeType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Human language of the content (BCP-47)", formalDefinition="The human language of the content. The value can be any valid value according to BCP 47." )
protected CodeType language;
/**
* The actual data of the attachment - a sequence of bytes. In XML, represented using base64.
*/
@Child(name = "data", type = {Base64BinaryType.class}, order=2, min=0, max=1)
@Child(name = "data", type = {Base64BinaryType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Data inline, base64ed", formalDefinition="The actual data of the attachment - a sequence of bytes. In XML, represented using base64." )
protected Base64BinaryType data;
/**
* An alternative location where the data can be accessed.
*/
@Child(name = "url", type = {UriType.class}, order=3, min=0, max=1)
@Child(name = "url", type = {UriType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Uri where the data can be found", formalDefinition="An alternative location where the data can be accessed." )
protected UriType url;
/**
* The number of bytes of data that make up this attachment.
*/
@Child(name = "size", type = {UnsignedIntType.class}, order=4, min=0, max=1)
@Child(name = "size", type = {UnsignedIntType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Number of bytes of content (if url provided)", formalDefinition="The number of bytes of data that make up this attachment." )
protected UnsignedIntType size;
/**
* The calculated hash of the data using SHA-1. Represented using base64.
*/
@Child(name = "hash", type = {Base64BinaryType.class}, order=5, min=0, max=1)
@Child(name = "hash", type = {Base64BinaryType.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Hash of the data (sha-1, base64ed )", formalDefinition="The calculated hash of the data using SHA-1. Represented using base64." )
protected Base64BinaryType hash;
/**
* A label or set of text to display in place of the data.
*/
@Child(name = "title", type = {StringType.class}, order=6, min=0, max=1)
@Child(name = "title", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Label to display in place of the data", formalDefinition="A label or set of text to display in place of the data." )
protected StringType title;
/**
* The date that the attachment was first created.
*/
@Child(name = "creation", type = {DateTimeType.class}, order=7, min=0, max=1)
@Child(name = "creation", type = {DateTimeType.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Date attachment was first created", formalDefinition="The date that the attachment was first created." )
protected DateTimeType creation;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -47,7 +47,7 @@ public abstract class BackboneElement extends Element implements IBaseBackboneEl
/**
* May be used to represent additional information that is not part of the basic definition of the element, and that modifies the understanding of the element that contains it. Usually modifier elements provide negation or qualification. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.
*/
@Child(name = "modifierExtension", type = {Extension.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "modifierExtension", type = {Extension.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=true, summary=false)
@Description(shortDefinition="Extensions that cannot be ignored", formalDefinition="May be used to represent additional information that is not part of the basic definition of the element, and that modifies the understanding of the element that contains it. Usually modifier elements provide negation or qualification. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions." )
protected List<Extension> modifierExtension;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -48,22 +48,22 @@ public class Basic extends DomainResource {
/**
* Identifier assigned to the resource for business purposes, outside the context of FHIR.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Business identifier", formalDefinition="Identifier assigned to the resource for business purposes, outside the context of FHIR." )
protected List<Identifier> identifier;
/**
* Identifies the 'type' of resource - equivalent to the resource name for other resources.
*/
@Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1)
@Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="Kind of Resource", formalDefinition="Identifies the 'type' of resource - equivalent to the resource name for other resources." )
protected CodeableConcept code;
/**
* Identifies the patient, practitioner, device or any other resource that is the "focus" of this resoruce.
*/
@Child(name = "subject", type = {}, order=2, min=0, max=1)
@Description(shortDefinition="Identifies the focus of this resource", formalDefinition="Identifies the patient, practitioner, device or any other resource that is the 'focus' of this resoruce." )
@Child(name = "subject", type = {}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Identifies the focus of this resource", formalDefinition="Identifies the patient, practitioner, device or any other resource that is the \"focus\" of this resoruce." )
protected Reference subject;
/**
@ -74,7 +74,7 @@ public class Basic extends DomainResource {
/**
* Indicates who was responsible for creating the resource instance.
*/
@Child(name = "author", type = {Practitioner.class, Patient.class, RelatedPerson.class}, order=3, min=0, max=1)
@Child(name = "author", type = {Practitioner.class, Patient.class, RelatedPerson.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Who created", formalDefinition="Indicates who was responsible for creating the resource instance." )
protected Reference author;
@ -86,7 +86,7 @@ public class Basic extends DomainResource {
/**
* Identifies when the resource was first created.
*/
@Child(name = "created", type = {DateType.class}, order=4, min=0, max=1)
@Child(name = "created", type = {DateType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When created", formalDefinition="Identifies when the resource was first created." )
protected DateType created;
@ -302,7 +302,7 @@ public class Basic extends DomainResource {
super.listChildren(childrenList);
childrenList.add(new Property("identifier", "Identifier", "Identifier assigned to the resource for business purposes, outside the context of FHIR.", 0, java.lang.Integer.MAX_VALUE, identifier));
childrenList.add(new Property("code", "CodeableConcept", "Identifies the 'type' of resource - equivalent to the resource name for other resources.", 0, java.lang.Integer.MAX_VALUE, code));
childrenList.add(new Property("subject", "Reference(Any)", "Identifies the patient, practitioner, device or any other resource that is the 'focus' of this resoruce.", 0, java.lang.Integer.MAX_VALUE, subject));
childrenList.add(new Property("subject", "Reference(Any)", "Identifies the patient, practitioner, device or any other resource that is the \"focus\" of this resoruce.", 0, java.lang.Integer.MAX_VALUE, subject));
childrenList.add(new Property("author", "Reference(Practitioner|Patient|RelatedPerson)", "Indicates who was responsible for creating the resource instance.", 0, java.lang.Integer.MAX_VALUE, author));
childrenList.add(new Property("created", "date", "Identifies when the resource was first created.", 0, java.lang.Integer.MAX_VALUE, created));
}

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -50,14 +50,14 @@ public class Binary extends BaseBinary implements IBaseBinary {
/**
* MimeType of the binary content represented as a standard MimeType (BCP 13).
*/
@Child(name = "contentType", type = {CodeType.class}, order=0, min=1, max=1)
@Child(name = "contentType", type = {CodeType.class}, order=0, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="MimeType of the binary content", formalDefinition="MimeType of the binary content represented as a standard MimeType (BCP 13)." )
protected CodeType contentType;
/**
* The actual content, base64 encoded.
*/
@Child(name = "content", type = {Base64BinaryType.class}, order=1, min=1, max=1)
@Child(name = "content", type = {Base64BinaryType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="The actual content", formalDefinition="The actual content, base64 encoded." )
protected Base64BinaryType content;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -49,7 +49,7 @@ public class BodySite extends DomainResource {
/**
* The person to which the body site belongs.
*/
@Child(name = "patient", type = {Patient.class}, order=0, min=1, max=1)
@Child(name = "patient", type = {Patient.class}, order=0, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Patient", formalDefinition="The person to which the body site belongs." )
protected Reference patient;
@ -61,35 +61,35 @@ public class BodySite extends DomainResource {
/**
* Identifier for this instance of the anatomical location.
*/
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Bodysite identifier", formalDefinition="Identifier for this instance of the anatomical location." )
protected List<Identifier> identifier;
/**
* Named anatomical location - ideally would be coded where possible.
*/
@Child(name = "code", type = {CodeableConcept.class}, order=2, min=0, max=1)
@Child(name = "code", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Named anatomical location", formalDefinition="Named anatomical location - ideally would be coded where possible." )
protected CodeableConcept code;
/**
* Modifier to refine the anatomical location. These include modifiers for laterality, relative location, directionality, number, and plane.
*/
@Child(name = "modifier", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "modifier", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Modification to location code", formalDefinition="Modifier to refine the anatomical location. These include modifiers for laterality, relative location, directionality, number, and plane." )
protected List<CodeableConcept> modifier;
/**
* Description of anatomical location.
*/
@Child(name = "description", type = {StringType.class}, order=4, min=0, max=1)
@Child(name = "description", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The Description of anatomical location", formalDefinition="Description of anatomical location." )
protected StringType description;
/**
* Image or images used to identify a location.
*/
@Child(name = "image", type = {Attachment.class}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "image", type = {Attachment.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Attached images", formalDefinition="Image or images used to identify a location." )
protected List<Attachment> image;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -408,14 +408,14 @@ public class Bundle extends Resource implements IBaseBundle {
/**
* A name which details the functional use for this link - see [[http://www.iana.org/assignments/link-relations/link-relations.xhtml]].
*/
@Child(name = "relation", type = {StringType.class}, order=1, min=1, max=1)
@Child(name = "relation", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="http://www.iana.org/assignments/link-relations/link-relations.xhtml", formalDefinition="A name which details the functional use for this link - see [[http://www.iana.org/assignments/link-relations/link-relations.xhtml]]." )
protected StringType relation;
/**
* The reference details for the link.
*/
@Child(name = "url", type = {UriType.class}, order=2, min=1, max=1)
@Child(name = "url", type = {UriType.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Reference details for the link", formalDefinition="The reference details for the link." )
protected UriType url;
@ -573,42 +573,42 @@ public class Bundle extends Resource implements IBaseBundle {
/**
* A series of links that provide context to this entry.
*/
@Child(name = "link", type = {BundleLinkComponent.class}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "link", type = {BundleLinkComponent.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Links related to this entry", formalDefinition="A series of links that provide context to this entry." )
protected List<BundleLinkComponent> link;
/**
* The Absolute URL for the resource. This must be provided for all resources. The fullUrl SHALL not disagree with the id in the resource. The fullUrl is a version independent reference to the resource.
*/
@Child(name = "fullUrl", type = {UriType.class}, order=2, min=0, max=1)
@Child(name = "fullUrl", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Absolute URL for resource (server address, or UUID/OID)", formalDefinition="The Absolute URL for the resource. This must be provided for all resources. The fullUrl SHALL not disagree with the id in the resource. The fullUrl is a version independent reference to the resource." )
protected UriType fullUrl;
/**
* The Resources for the entry.
*/
@Child(name = "resource", type = {Resource.class}, order=3, min=0, max=1)
@Child(name = "resource", type = {Resource.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="A resource in the bundle", formalDefinition="The Resources for the entry." )
protected Resource resource;
/**
* Information about the search process that lead to the creation of this entry.
*/
@Child(name = "search", type = {}, order=4, min=0, max=1)
@Child(name = "search", type = {}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Search related information", formalDefinition="Information about the search process that lead to the creation of this entry." )
protected BundleEntrySearchComponent search;
/**
* Additional information about how this entry should be processed as part of a transaction.
*/
@Child(name = "request", type = {}, order=5, min=0, max=1)
@Child(name = "request", type = {}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Transaction Related Information", formalDefinition="Additional information about how this entry should be processed as part of a transaction." )
protected BundleEntryRequestComponent request;
/**
* Additional information about how this entry should be processed as part of a transaction.
*/
@Child(name = "response", type = {}, order=6, min=0, max=1)
@Child(name = "response", type = {}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Transaction Related Information", formalDefinition="Additional information about how this entry should be processed as part of a transaction." )
protected BundleEntryResponseComponent response;
@ -862,14 +862,14 @@ public class Bundle extends Resource implements IBaseBundle {
/**
* Why this entry is in the result set - whether it's included as a match or because of an _include requirement.
*/
@Child(name = "mode", type = {CodeType.class}, order=1, min=0, max=1)
@Child(name = "mode", type = {CodeType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="match | include | outcome - why this is in the result set", formalDefinition="Why this entry is in the result set - whether it's included as a match or because of an _include requirement." )
protected Enumeration<SearchEntryMode> mode;
/**
* When searching, the server's search ranking score for the entry.
*/
@Child(name = "score", type = {DecimalType.class}, order=2, min=0, max=1)
@Child(name = "score", type = {DecimalType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Search ranking (between 0 and 1)", formalDefinition="When searching, the server's search ranking score for the entry." )
protected DecimalType score;
@ -1026,43 +1026,43 @@ public class Bundle extends Resource implements IBaseBundle {
/**
* The HTTP verb for this entry in either a update history, or a transaction/ transaction response.
*/
@Child(name = "method", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "method", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="GET | POST | PUT | DELETE", formalDefinition="The HTTP verb for this entry in either a update history, or a transaction/ transaction response." )
protected Enumeration<HTTPVerb> method;
/**
* The URL for this entry, relative to the root (the address to which the request is posted).
*/
@Child(name = "url", type = {UriType.class}, order=2, min=1, max=1)
@Child(name = "url", type = {UriType.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="URL for HTTP equivalent of this entry", formalDefinition="The URL for this entry, relative to the root (the address to which the request is posted)." )
protected UriType url;
/**
* If the ETag values match, return a 304 Not modified status. See the read/vread interaction documentation.
*/
@Child(name = "ifNoneMatch", type = {StringType.class}, order=3, min=0, max=1)
@Child(name = "ifNoneMatch", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="For managing cache currency", formalDefinition="If the ETag values match, return a 304 Not modified status. See the read/vread interaction documentation." )
protected StringType ifNoneMatch;
/**
* Only perform the operation if the Etag value matches. For more information, see the API section "Managing Resource Contention".
*/
@Child(name = "ifMatch", type = {StringType.class}, order=4, min=0, max=1)
@Description(shortDefinition="For managing update contention", formalDefinition="Only perform the operation if the Etag value matches. For more information, see the API section 'Managing Resource Contention'." )
@Child(name = "ifMatch", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="For managing update contention", formalDefinition="Only perform the operation if the Etag value matches. For more information, see the API section \"Managing Resource Contention\"." )
protected StringType ifMatch;
/**
* Only perform the operation if the last updated date matches. For more information, see the API section "Managing Resource Contention".
*/
@Child(name = "ifModifiedSince", type = {InstantType.class}, order=5, min=0, max=1)
@Description(shortDefinition="For managing update contention", formalDefinition="Only perform the operation if the last updated date matches. For more information, see the API section 'Managing Resource Contention'." )
@Child(name = "ifModifiedSince", type = {InstantType.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="For managing update contention", formalDefinition="Only perform the operation if the last updated date matches. For more information, see the API section \"Managing Resource Contention\"." )
protected InstantType ifModifiedSince;
/**
* Instruct the server not to perform the create if a specified resource already exists. For further information, see "Conditional Create". This is just the query portion of the URL - what follows the "?" (not including the "?").
*/
@Child(name = "ifNoneExist", type = {StringType.class}, order=6, min=0, max=1)
@Description(shortDefinition="For conditional creates", formalDefinition="Instruct the server not to perform the create if a specified resource already exists. For further information, see 'Conditional Create'. This is just the query portion of the URL - what follows the '?' (not including the '?')." )
@Child(name = "ifNoneExist", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="For conditional creates", formalDefinition="Instruct the server not to perform the create if a specified resource already exists. For further information, see \"Conditional Create\". This is just the query portion of the URL - what follows the \"?\" (not including the \"?\")." )
protected StringType ifNoneExist;
private static final long serialVersionUID = 1355750298L;
@ -1374,9 +1374,9 @@ public class Bundle extends Resource implements IBaseBundle {
childrenList.add(new Property("method", "code", "The HTTP verb for this entry in either a update history, or a transaction/ transaction response.", 0, java.lang.Integer.MAX_VALUE, method));
childrenList.add(new Property("url", "uri", "The URL for this entry, relative to the root (the address to which the request is posted).", 0, java.lang.Integer.MAX_VALUE, url));
childrenList.add(new Property("ifNoneMatch", "string", "If the ETag values match, return a 304 Not modified status. See the read/vread interaction documentation.", 0, java.lang.Integer.MAX_VALUE, ifNoneMatch));
childrenList.add(new Property("ifMatch", "string", "Only perform the operation if the Etag value matches. For more information, see the API section 'Managing Resource Contention'.", 0, java.lang.Integer.MAX_VALUE, ifMatch));
childrenList.add(new Property("ifModifiedSince", "instant", "Only perform the operation if the last updated date matches. For more information, see the API section 'Managing Resource Contention'.", 0, java.lang.Integer.MAX_VALUE, ifModifiedSince));
childrenList.add(new Property("ifNoneExist", "string", "Instruct the server not to perform the create if a specified resource already exists. For further information, see 'Conditional Create'. This is just the query portion of the URL - what follows the '?' (not including the '?').", 0, java.lang.Integer.MAX_VALUE, ifNoneExist));
childrenList.add(new Property("ifMatch", "string", "Only perform the operation if the Etag value matches. For more information, see the API section \"Managing Resource Contention\".", 0, java.lang.Integer.MAX_VALUE, ifMatch));
childrenList.add(new Property("ifModifiedSince", "instant", "Only perform the operation if the last updated date matches. For more information, see the API section \"Managing Resource Contention\".", 0, java.lang.Integer.MAX_VALUE, ifModifiedSince));
childrenList.add(new Property("ifNoneExist", "string", "Instruct the server not to perform the create if a specified resource already exists. For further information, see \"Conditional Create\". This is just the query portion of the URL - what follows the \"?\" (not including the \"?\").", 0, java.lang.Integer.MAX_VALUE, ifNoneExist));
}
public BundleEntryRequestComponent copy() {
@ -1429,28 +1429,28 @@ public class Bundle extends Resource implements IBaseBundle {
/**
* The status code returned by processing this entry.
*/
@Child(name = "status", type = {StringType.class}, order=1, min=1, max=1)
@Child(name = "status", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Status return code for entry", formalDefinition="The status code returned by processing this entry." )
protected StringType status;
/**
* The location header created by processing this operation.
*/
@Child(name = "location", type = {UriType.class}, order=2, min=0, max=1)
@Child(name = "location", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The location, if the operation returns a location", formalDefinition="The location header created by processing this operation." )
protected UriType location;
/**
* The etag for the resource, it the operation for the entry produced a versioned resource.
*/
@Child(name = "etag", type = {StringType.class}, order=3, min=0, max=1)
@Child(name = "etag", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The etag for the resource (if relevant)", formalDefinition="The etag for the resource, it the operation for the entry produced a versioned resource." )
protected StringType etag;
/**
* The date/time that the resource was modified on the server.
*/
@Child(name = "lastModified", type = {InstantType.class}, order=4, min=0, max=1)
@Child(name = "lastModified", type = {InstantType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Server's date time modified", formalDefinition="The date/time that the resource was modified on the server." )
protected InstantType lastModified;
@ -1713,35 +1713,35 @@ public class Bundle extends Resource implements IBaseBundle {
/**
* Indicates the purpose of this bundle- how it was intended to be used.
*/
@Child(name = "type", type = {CodeType.class}, order=0, min=1, max=1)
@Child(name = "type", type = {CodeType.class}, order=0, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection", formalDefinition="Indicates the purpose of this bundle- how it was intended to be used." )
protected Enumeration<BundleType> type;
/**
* If a set of search matches, this is the total number of matches for the search (as opposed to the number of results in this bundle).
*/
@Child(name = "total", type = {UnsignedIntType.class}, order=1, min=0, max=1)
@Child(name = "total", type = {UnsignedIntType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="If search, the total number of matches", formalDefinition="If a set of search matches, this is the total number of matches for the search (as opposed to the number of results in this bundle)." )
protected UnsignedIntType total;
/**
* A series of links that provide context to this bundle.
*/
@Child(name = "link", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "link", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Links related to this Bundle", formalDefinition="A series of links that provide context to this bundle." )
protected List<BundleLinkComponent> link;
/**
* An entry in a bundle resource - will either contain a resource, or information about a resource (transactions and history only).
*/
@Child(name = "entry", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "entry", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Entry in the bundle - will have a resource, or information", formalDefinition="An entry in a bundle resource - will either contain a resource, or information about a resource (transactions and history only)." )
protected List<BundleEntryComponent> entry;
/**
* Digital Signature - base64 encoded. XML DigSIg or a JWT.
*/
@Child(name = "signature", type = {Signature.class}, order=4, min=0, max=1)
@Child(name = "signature", type = {Signature.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Digital Signature", formalDefinition="Digital Signature - base64 encoded. XML DigSIg or a JWT." )
protected Signature signature;
@ -2067,11 +2067,11 @@ public class Bundle extends Resource implements IBaseBundle {
return ResourceType.Bundle;
}
@SearchParamDefinition(name="composition", path="Bundle.entry.resource(0)", description="The first resource in the bundle, if the bundle type is 'document' - this is a composition, and this parameter provides access to searches its contents", type="reference" )
@SearchParamDefinition(name="composition", path="Bundle.entry.resource(0)", description="The first resource in the bundle, if the bundle type is \"document\" - this is a composition, and this parameter provides access to searches its contents", type="reference" )
public static final String SP_COMPOSITION = "composition";
@SearchParamDefinition(name="type", path="Bundle.type", description="document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection", type="token" )
public static final String SP_TYPE = "type";
@SearchParamDefinition(name="message", path="Bundle.entry.resource(0)", description="The first resource in the bundle, if the bundle type is 'message' - this is a message header, and this parameter provides access to search its contents", type="reference" )
@SearchParamDefinition(name="message", path="Bundle.entry.resource(0)", description="The first resource in the bundle, if the bundle type is \"message\" - this is a message header, and this parameter provides access to search its contents", type="reference" )
public static final String SP_MESSAGE = "message";
}

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -407,14 +407,14 @@ public class CarePlan extends DomainResource {
/**
* Indicates specific responsibility of an individual within the care plan. E.g. "Primary physician", "Team coordinator", "Caregiver", etc.
*/
@Child(name = "role", type = {CodeableConcept.class}, order=1, min=0, max=1)
@Description(shortDefinition="Type of involvement", formalDefinition="Indicates specific responsibility of an individual within the care plan. E.g. 'Primary physician', 'Team coordinator', 'Caregiver', etc." )
@Child(name = "role", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Type of involvement", formalDefinition="Indicates specific responsibility of an individual within the care plan. E.g. \"Primary physician\", \"Team coordinator\", \"Caregiver\", etc." )
protected CodeableConcept role;
/**
* The specific person or organization who is participating/expected to participate in the care plan.
*/
@Child(name = "member", type = {Practitioner.class, RelatedPerson.class, Patient.class, Organization.class}, order=2, min=1, max=1)
@Child(name = "member", type = {Practitioner.class, RelatedPerson.class, Patient.class, Organization.class}, order=2, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Who is involved", formalDefinition="The specific person or organization who is participating/expected to participate in the care plan." )
protected Reference member;
@ -505,7 +505,7 @@ public class CarePlan extends DomainResource {
protected void listChildren(List<Property> childrenList) {
super.listChildren(childrenList);
childrenList.add(new Property("role", "CodeableConcept", "Indicates specific responsibility of an individual within the care plan. E.g. 'Primary physician', 'Team coordinator', 'Caregiver', etc.", 0, java.lang.Integer.MAX_VALUE, role));
childrenList.add(new Property("role", "CodeableConcept", "Indicates specific responsibility of an individual within the care plan. E.g. \"Primary physician\", \"Team coordinator\", \"Caregiver\", etc.", 0, java.lang.Integer.MAX_VALUE, role));
childrenList.add(new Property("member", "Reference(Practitioner|RelatedPerson|Patient|Organization)", "The specific person or organization who is participating/expected to participate in the care plan.", 0, java.lang.Integer.MAX_VALUE, member));
}
@ -549,7 +549,7 @@ public class CarePlan extends DomainResource {
/**
* Resources that describe follow-on actions resulting from the plan, such as drug prescriptions, encounter records, appointments, etc.
*/
@Child(name = "actionResulting", type = {}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "actionResulting", type = {}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Appointments, orders, etc.", formalDefinition="Resources that describe follow-on actions resulting from the plan, such as drug prescriptions, encounter records, appointments, etc." )
protected List<Reference> actionResulting;
/**
@ -561,14 +561,14 @@ public class CarePlan extends DomainResource {
/**
* Notes about the execution of the activity.
*/
@Child(name = "notes", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "notes", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Comments about the activity", formalDefinition="Notes about the execution of the activity." )
protected StringType notes;
/**
* The details of the proposed activity represented in a specific resource.
*/
@Child(name = "reference", type = {Appointment.class, CommunicationRequest.class, DeviceUseRequest.class, DiagnosticOrder.class, MedicationOrder.class, NutritionOrder.class, Order.class, ProcedureRequest.class, ProcessRequest.class, ReferralRequest.class, SupplyRequest.class, VisionPrescription.class}, order=3, min=0, max=1)
@Child(name = "reference", type = {Appointment.class, CommunicationRequest.class, DeviceUseRequest.class, DiagnosticOrder.class, MedicationOrder.class, NutritionOrder.class, Order.class, ProcedureRequest.class, ProcessRequest.class, ReferralRequest.class, SupplyRequest.class, VisionPrescription.class}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Activity details defined in specific resource", formalDefinition="The details of the proposed activity represented in a specific resource." )
protected Reference reference;
@ -580,7 +580,7 @@ public class CarePlan extends DomainResource {
/**
* A simple summary of a planned activity suitable for a general care plan system (e.g. form driven) that doesn't know about specific resources such as procedure etc.
*/
@Child(name = "detail", type = {}, order=4, min=0, max=1)
@Child(name = "detail", type = {}, order=4, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="In-line definition of activity", formalDefinition="A simple summary of a planned activity suitable for a general care plan system (e.g. form driven) that doesn't know about specific resources such as procedure etc." )
protected CarePlanActivityDetailComponent detail;
@ -809,28 +809,28 @@ public class CarePlan extends DomainResource {
/**
* High-level categorization of the type of activity in a care plan.
*/
@Child(name = "category", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "category", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="diet | drug | encounter | observation | procedure | supply | other", formalDefinition="High-level categorization of the type of activity in a care plan." )
protected Enumeration<CarePlanActivityCategory> category;
/**
* Detailed description of the type of planned activity. E.g. What lab test, what procedure, what kind of encounter.
*/
@Child(name = "code", type = {CodeableConcept.class}, order=2, min=0, max=1)
@Child(name = "code", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Detail type of activity", formalDefinition="Detailed description of the type of planned activity. E.g. What lab test, what procedure, what kind of encounter." )
protected CodeableConcept code;
/**
* Provides the health condition(s) or other rationale that drove the inclusion of this particular activity as part of the plan.
*/
@Child(name = "reason", type = {CodeableConcept.class, Condition.class}, order=3, min=0, max=1)
@Child(name = "reason", type = {CodeableConcept.class, Condition.class}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Why activity should be done", formalDefinition="Provides the health condition(s) or other rationale that drove the inclusion of this particular activity as part of the plan." )
protected Type reason;
/**
* Internal reference that identifies the goals that this activity is intended to contribute towards meeting.
*/
@Child(name = "goal", type = {Goal.class}, order=4, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "goal", type = {Goal.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Goals this activity relates to", formalDefinition="Internal reference that identifies the goals that this activity is intended to contribute towards meeting." )
protected List<Reference> goal;
/**
@ -842,35 +842,35 @@ public class CarePlan extends DomainResource {
/**
* Identifies what progress is being made for the specific activity.
*/
@Child(name = "status", type = {CodeType.class}, order=5, min=0, max=1)
@Child(name = "status", type = {CodeType.class}, order=5, min=0, max=1, modifier=true, summary=false)
@Description(shortDefinition="not-started | scheduled | in-progress | on-hold | completed | cancelled", formalDefinition="Identifies what progress is being made for the specific activity." )
protected Enumeration<CarePlanActivityStatus> status;
/**
* Provides reason why the activity isn't yet started, is on hold, was cancelled, etc.
*/
@Child(name = "statusReason", type = {CodeableConcept.class}, order=6, min=0, max=1)
@Child(name = "statusReason", type = {CodeableConcept.class}, order=6, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Reason for current status", formalDefinition="Provides reason why the activity isn't yet started, is on hold, was cancelled, etc." )
protected CodeableConcept statusReason;
/**
* If true, indicates that the described activity is one that must NOT be engaged in when following the plan.
*/
@Child(name = "prohibited", type = {BooleanType.class}, order=7, min=1, max=1)
@Child(name = "prohibited", type = {BooleanType.class}, order=7, min=1, max=1, modifier=true, summary=false)
@Description(shortDefinition="Do NOT do", formalDefinition="If true, indicates that the described activity is one that must NOT be engaged in when following the plan." )
protected BooleanType prohibited;
/**
* The period, timing or frequency upon which the described activity is to occur.
*/
@Child(name = "scheduled", type = {Timing.class, Period.class, StringType.class}, order=8, min=0, max=1)
@Child(name = "scheduled", type = {Timing.class, Period.class, StringType.class}, order=8, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="When activity is to occur", formalDefinition="The period, timing or frequency upon which the described activity is to occur." )
protected Type scheduled;
/**
* Identifies the facility where the activity will occur. E.g. home, hospital, specific clinic, etc.
*/
@Child(name = "location", type = {Location.class}, order=9, min=0, max=1)
@Child(name = "location", type = {Location.class}, order=9, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Where it should happen", formalDefinition="Identifies the facility where the activity will occur. E.g. home, hospital, specific clinic, etc." )
protected Reference location;
@ -882,7 +882,7 @@ public class CarePlan extends DomainResource {
/**
* Identifies who's expected to be involved in the activity.
*/
@Child(name = "performer", type = {Practitioner.class, Organization.class, RelatedPerson.class, Patient.class}, order=10, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "performer", type = {Practitioner.class, Organization.class, RelatedPerson.class, Patient.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Who will be responsible?", formalDefinition="Identifies who's expected to be involved in the activity." )
protected List<Reference> performer;
/**
@ -894,7 +894,7 @@ public class CarePlan extends DomainResource {
/**
* Identifies the food, drug or other product to be consumed or supplied in the activity.
*/
@Child(name = "product", type = {Medication.class, Substance.class}, order=11, min=0, max=1)
@Child(name = "product", type = {Medication.class, Substance.class}, order=11, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="What is to be administered/supplied", formalDefinition="Identifies the food, drug or other product to be consumed or supplied in the activity." )
protected Reference product;
@ -906,21 +906,21 @@ public class CarePlan extends DomainResource {
/**
* Identifies the quantity expected to be consumed in a given day.
*/
@Child(name = "dailyAmount", type = {SimpleQuantity.class}, order=12, min=0, max=1)
@Child(name = "dailyAmount", type = {SimpleQuantity.class}, order=12, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="How to consume/day?", formalDefinition="Identifies the quantity expected to be consumed in a given day." )
protected SimpleQuantity dailyAmount;
/**
* Identifies the quantity expected to be supplied, addministered or consumed by the subject.
*/
@Child(name = "quantity", type = {SimpleQuantity.class}, order=13, min=0, max=1)
@Child(name = "quantity", type = {SimpleQuantity.class}, order=13, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="How much to administer/supply/consume", formalDefinition="Identifies the quantity expected to be supplied, addministered or consumed by the subject." )
protected SimpleQuantity quantity;
/**
* This provides a textual description of constraints on the intended activity occurrence, including relation to other activities. It may also include objectives, pre-conditions and end-conditions. Finally, it may convey specifics about the activity such as body site, method, route, etc.
*/
@Child(name = "note", type = {StringType.class}, order=14, min=0, max=1)
@Child(name = "note", type = {StringType.class}, order=14, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Extra info on activity occurrence", formalDefinition="This provides a textual description of constraints on the intended activity occurrence, including relation to other activities. It may also include objectives, pre-conditions and end-conditions. Finally, it may convey specifics about the activity such as body site, method, route, etc." )
protected StringType note;
@ -1607,14 +1607,14 @@ public class CarePlan extends DomainResource {
/**
* This records identifiers associated with this care plan that are defined by business processed and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="External Ids for this plan", formalDefinition="This records identifiers associated with this care plan that are defined by business processed and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)." )
protected List<Identifier> identifier;
/**
* Identifies the patient/subject whose intended care is described by the plan.
*/
@Child(name = "patient", type = {Patient.class}, order=1, min=0, max=1)
@Child(name = "patient", type = {Patient.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Who care plan is for", formalDefinition="Identifies the patient/subject whose intended care is described by the plan." )
protected Reference patient;
@ -1626,21 +1626,21 @@ public class CarePlan extends DomainResource {
/**
* Indicates whether the plan is currently being acted upon, represents future intentions or is now just historical record.
*/
@Child(name = "status", type = {CodeType.class}, order=2, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=2, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="planned | active | completed", formalDefinition="Indicates whether the plan is currently being acted upon, represents future intentions or is now just historical record." )
protected Enumeration<CarePlanStatus> status;
/**
* Indicates when the plan did (or is intended to) come into effect and end.
*/
@Child(name = "period", type = {Period.class}, order=3, min=0, max=1)
@Child(name = "period", type = {Period.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Time period plan covers", formalDefinition="Indicates when the plan did (or is intended to) come into effect and end." )
protected Period period;
/**
* Identifies the individual(s) or ogranization who is responsible for the content of the care plan.
*/
@Child(name = "author", type = {Patient.class, Practitioner.class, RelatedPerson.class, Organization.class}, order=4, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "author", type = {Patient.class, Practitioner.class, RelatedPerson.class, Organization.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Who is responsible for plan", formalDefinition="Identifies the individual(s) or ogranization who is responsible for the content of the care plan." )
protected List<Reference> author;
/**
@ -1652,21 +1652,21 @@ public class CarePlan extends DomainResource {
/**
* Identifies the most recent date on which the plan has been revised.
*/
@Child(name = "modified", type = {DateTimeType.class}, order=5, min=0, max=1)
@Child(name = "modified", type = {DateTimeType.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When last updated", formalDefinition="Identifies the most recent date on which the plan has been revised." )
protected DateTimeType modified;
/**
* Identifies what "kind" of plan this is to support differentiation between multiple co-existing plans. E.g. "Home health", "psychiatric", "asthma", "disease management", etc.
*/
@Child(name = "category", type = {CodeableConcept.class}, order=6, min=0, max=Child.MAX_UNLIMITED)
@Description(shortDefinition="Type of plan", formalDefinition="Identifies what 'kind' of plan this is to support differentiation between multiple co-existing plans. E.g. 'Home health', 'psychiatric', 'asthma', 'disease management', etc." )
@Child(name = "category", type = {CodeableConcept.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Type of plan", formalDefinition="Identifies what \"kind\" of plan this is to support differentiation between multiple co-existing plans. E.g. \"Home health\", \"psychiatric\", \"asthma\", \"disease management\", etc." )
protected List<CodeableConcept> category;
/**
* Identifies the conditions/problems/concerns/diagnoses/etc. whose management and/or mitigation are handled by this plan.
*/
@Child(name = "concern", type = {Condition.class}, order=7, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "concern", type = {Condition.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Health issues this plan addresses", formalDefinition="Identifies the conditions/problems/concerns/diagnoses/etc. whose management and/or mitigation are handled by this plan." )
protected List<Reference> concern;
/**
@ -1678,7 +1678,7 @@ public class CarePlan extends DomainResource {
/**
* Identifies portions of the patient's record that specifically influenced the formation of the plan. These might include co-morbidities, recent procedures, limitations, recent assessments, etc.
*/
@Child(name = "support", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "support", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Information considered as part of plan", formalDefinition="Identifies portions of the patient's record that specifically influenced the formation of the plan. These might include co-morbidities, recent procedures, limitations, recent assessments, etc." )
protected List<Reference> support;
/**
@ -1690,14 +1690,14 @@ public class CarePlan extends DomainResource {
/**
* Identifies all people and organizations who are expected to be involved in the care envisioned by this plan.
*/
@Child(name = "participant", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "participant", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Who's involved in plan?", formalDefinition="Identifies all people and organizations who are expected to be involved in the care envisioned by this plan." )
protected List<CarePlanParticipantComponent> participant;
/**
* Describes the intended objective(s) of carrying out the Care Plan.
*/
@Child(name = "goal", type = {Goal.class}, order=10, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "goal", type = {Goal.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Desired outcome of plan", formalDefinition="Describes the intended objective(s) of carrying out the Care Plan." )
protected List<Reference> goal;
/**
@ -1709,14 +1709,14 @@ public class CarePlan extends DomainResource {
/**
* Identifies a planned action to occur as part of the plan. For example, a medication to be used, lab tests to perform, self-monitoring, education, etc.
*/
@Child(name = "activity", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "activity", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Action to occur as part of plan", formalDefinition="Identifies a planned action to occur as part of the plan. For example, a medication to be used, lab tests to perform, self-monitoring, education, etc." )
protected List<CarePlanActivityComponent> activity;
/**
* General notes about the care plan not covered elsewhere.
*/
@Child(name = "notes", type = {StringType.class}, order=12, min=0, max=1)
@Child(name = "notes", type = {StringType.class}, order=12, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Comments about the plan", formalDefinition="General notes about the care plan not covered elsewhere." )
protected StringType notes;
@ -2336,7 +2336,7 @@ public class CarePlan extends DomainResource {
childrenList.add(new Property("period", "Period", "Indicates when the plan did (or is intended to) come into effect and end.", 0, java.lang.Integer.MAX_VALUE, period));
childrenList.add(new Property("author", "Reference(Patient|Practitioner|RelatedPerson|Organization)", "Identifies the individual(s) or ogranization who is responsible for the content of the care plan.", 0, java.lang.Integer.MAX_VALUE, author));
childrenList.add(new Property("modified", "dateTime", "Identifies the most recent date on which the plan has been revised.", 0, java.lang.Integer.MAX_VALUE, modified));
childrenList.add(new Property("category", "CodeableConcept", "Identifies what 'kind' of plan this is to support differentiation between multiple co-existing plans. E.g. 'Home health', 'psychiatric', 'asthma', 'disease management', etc.", 0, java.lang.Integer.MAX_VALUE, category));
childrenList.add(new Property("category", "CodeableConcept", "Identifies what \"kind\" of plan this is to support differentiation between multiple co-existing plans. E.g. \"Home health\", \"psychiatric\", \"asthma\", \"disease management\", etc.", 0, java.lang.Integer.MAX_VALUE, category));
childrenList.add(new Property("concern", "Reference(Condition)", "Identifies the conditions/problems/concerns/diagnoses/etc. whose management and/or mitigation are handled by this plan.", 0, java.lang.Integer.MAX_VALUE, concern));
childrenList.add(new Property("support", "Reference(Any)", "Identifies portions of the patient's record that specifically influenced the formation of the plan. These might include co-morbidities, recent procedures, limitations, recent assessments, etc.", 0, java.lang.Integer.MAX_VALUE, support));
childrenList.add(new Property("participant", "", "Identifies all people and organizations who are expected to be involved in the care envisioned by this plan.", 0, java.lang.Integer.MAX_VALUE, participant));
@ -2449,7 +2449,7 @@ public class CarePlan extends DomainResource {
public static final String SP_CONDITION = "condition";
@SearchParamDefinition(name="activityreference", path="CarePlan.activity.reference", description="Activity details defined in specific resource", type="reference" )
public static final String SP_ACTIVITYREFERENCE = "activityreference";
@SearchParamDefinition(name="performer", path="CarePlan.activity.detail.performer", description="Matches if the practitioner is listed as a performer in any of the 'simple' activities. (For performers of the detailed activities, chain through the activitydetail search parameter.)", type="reference" )
@SearchParamDefinition(name="performer", path="CarePlan.activity.detail.performer", description="Matches if the practitioner is listed as a performer in any of the \"simple\" activities. (For performers of the detailed activities, chain through the activitydetail search parameter.)", type="reference" )
public static final String SP_PERFORMER = "performer";
@SearchParamDefinition(name="goal", path="CarePlan.goal", description="Desired outcome of plan", type="reference" )
public static final String SP_GOAL = "goal";

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -267,14 +267,14 @@ public class Claim extends DomainResource {
/**
* Party to be reimbursed: Subscriber, provider, other.
*/
@Child(name = "type", type = {Coding.class}, order=1, min=0, max=1)
@Child(name = "type", type = {Coding.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Party to be paid any benefits payable", formalDefinition="Party to be reimbursed: Subscriber, provider, other." )
protected Coding type;
/**
* The provider who is to be reimbursed for the claim (the party to whom any benefit is assigned).
*/
@Child(name = "provider", type = {Practitioner.class}, order=2, min=0, max=1)
@Child(name = "provider", type = {Practitioner.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Provider who is the payee", formalDefinition="The provider who is to be reimbursed for the claim (the party to whom any benefit is assigned)." )
protected Reference provider;
@ -286,7 +286,7 @@ public class Claim extends DomainResource {
/**
* The organization who is to be reimbursed for the claim (the party to whom any benefit is assigned).
*/
@Child(name = "organization", type = {Organization.class}, order=3, min=0, max=1)
@Child(name = "organization", type = {Organization.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Organization who is the payee", formalDefinition="The organization who is to be reimbursed for the claim (the party to whom any benefit is assigned)." )
protected Reference organization;
@ -298,7 +298,7 @@ public class Claim extends DomainResource {
/**
* The person other than the subscriber who is to be reimbursed for the claim (the party to whom any benefit is assigned).
*/
@Child(name = "person", type = {Patient.class}, order=4, min=0, max=1)
@Child(name = "person", type = {Patient.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Other person who is the payee", formalDefinition="The person other than the subscriber who is to be reimbursed for the claim (the party to whom any benefit is assigned)." )
protected Reference person;
@ -524,14 +524,14 @@ public class Claim extends DomainResource {
/**
* Sequence of diagnosis which serves to order and provide a link.
*/
@Child(name = "sequence", type = {PositiveIntType.class}, order=1, min=1, max=1)
@Child(name = "sequence", type = {PositiveIntType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Sequence of diagnosis", formalDefinition="Sequence of diagnosis which serves to order and provide a link." )
protected PositiveIntType sequence;
/**
* The diagnosis.
*/
@Child(name = "diagnosis", type = {Coding.class}, order=2, min=1, max=1)
@Child(name = "diagnosis", type = {Coding.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Patient's list of diagnosis", formalDefinition="The diagnosis." )
protected Coding diagnosis;
@ -668,21 +668,21 @@ public class Claim extends DomainResource {
/**
* A service line item.
*/
@Child(name = "sequence", type = {PositiveIntType.class}, order=1, min=1, max=1)
@Child(name = "sequence", type = {PositiveIntType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Service instance identifier", formalDefinition="A service line item." )
protected PositiveIntType sequence;
/**
* The instance number of the Coverage which is the focus for adjudication. The Coverage against which the claim is to be adjudicated.
*/
@Child(name = "focal", type = {BooleanType.class}, order=2, min=1, max=1)
@Child(name = "focal", type = {BooleanType.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Is the focal Coverage", formalDefinition="The instance number of the Coverage which is the focus for adjudication. The Coverage against which the claim is to be adjudicated." )
protected BooleanType focal;
/**
* Reference to the program or plan identification, underwriter or payor.
*/
@Child(name = "coverage", type = {Coverage.class}, order=3, min=1, max=1)
@Child(name = "coverage", type = {Coverage.class}, order=3, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Insurance information", formalDefinition="Reference to the program or plan identification, underwriter or payor." )
protected Reference coverage;
@ -694,28 +694,28 @@ public class Claim extends DomainResource {
/**
* The contract number of a business agreement which describes the terms and conditions.
*/
@Child(name = "businessArrangement", type = {StringType.class}, order=4, min=0, max=1)
@Child(name = "businessArrangement", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Business agreement", formalDefinition="The contract number of a business agreement which describes the terms and conditions." )
protected StringType businessArrangement;
/**
* The relationship of the patient to the subscriber.
*/
@Child(name = "relationship", type = {Coding.class}, order=5, min=1, max=1)
@Child(name = "relationship", type = {Coding.class}, order=5, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Patient relationship to subscriber", formalDefinition="The relationship of the patient to the subscriber." )
protected Coding relationship;
/**
* A list of references from the Insurer to which these services pertain.
*/
@Child(name = "preAuthRef", type = {StringType.class}, order=6, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "preAuthRef", type = {StringType.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Pre-Authorization/Determination Reference", formalDefinition="A list of references from the Insurer to which these services pertain." )
protected List<StringType> preAuthRef;
/**
* The Coverages adjudication details.
*/
@Child(name = "claimResponse", type = {ClaimResponse.class}, order=7, min=0, max=1)
@Child(name = "claimResponse", type = {ClaimResponse.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Adjudication results", formalDefinition="The Coverages adjudication details." )
protected Reference claimResponse;
@ -727,7 +727,7 @@ public class Claim extends DomainResource {
/**
* The style (standard) and version of the original material which was converted into this resource.
*/
@Child(name = "originalRuleset", type = {Coding.class}, order=8, min=0, max=1)
@Child(name = "originalRuleset", type = {Coding.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Original version", formalDefinition="The style (standard) and version of the original material which was converted into this resource." )
protected Coding originalRuleset;
@ -1149,21 +1149,21 @@ public class Claim extends DomainResource {
/**
* A service line number.
*/
@Child(name = "sequence", type = {PositiveIntType.class}, order=1, min=1, max=1)
@Child(name = "sequence", type = {PositiveIntType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Service instance", formalDefinition="A service line number." )
protected PositiveIntType sequence;
/**
* The type of product or service.
*/
@Child(name = "type", type = {Coding.class}, order=2, min=1, max=1)
@Child(name = "type", type = {Coding.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Group or type of product or service", formalDefinition="The type of product or service." )
protected Coding type;
/**
* The practitioner who is responsible for the services rendered to the patient.
*/
@Child(name = "provider", type = {Practitioner.class}, order=3, min=0, max=1)
@Child(name = "provider", type = {Practitioner.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible practitioner", formalDefinition="The practitioner who is responsible for the services rendered to the patient." )
protected Reference provider;
@ -1175,98 +1175,98 @@ public class Claim extends DomainResource {
/**
* Diagnosis applicable for this service or product line.
*/
@Child(name = "diagnosisLinkId", type = {PositiveIntType.class}, order=4, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "diagnosisLinkId", type = {PositiveIntType.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Diagnosis Link", formalDefinition="Diagnosis applicable for this service or product line." )
protected List<PositiveIntType> diagnosisLinkId;
/**
* If a grouping item then 'GROUP' otherwise it is a node therefore a code to indicate the Professional Service or Product supplied.
*/
@Child(name = "service", type = {Coding.class}, order=5, min=1, max=1)
@Child(name = "service", type = {Coding.class}, order=5, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Item Code", formalDefinition="If a grouping item then 'GROUP' otherwise it is a node therefore a code to indicate the Professional Service or Product supplied." )
protected Coding service;
/**
* The date when the enclosed suite of services were performed or completed.
*/
@Child(name = "serviceDate", type = {DateType.class}, order=6, min=0, max=1)
@Child(name = "serviceDate", type = {DateType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Date of Service", formalDefinition="The date when the enclosed suite of services were performed or completed." )
protected DateType serviceDate;
/**
* The number of repetitions of a service or product.
*/
@Child(name = "quantity", type = {SimpleQuantity.class}, order=7, min=0, max=1)
@Child(name = "quantity", type = {SimpleQuantity.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Count of Products or Services", formalDefinition="The number of repetitions of a service or product." )
protected SimpleQuantity quantity;
/**
* If the item is a node then this is the fee for the product or service, otherwise this is the total of the fees for the children of the group.
*/
@Child(name = "unitPrice", type = {Money.class}, order=8, min=0, max=1)
@Child(name = "unitPrice", type = {Money.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Fee, charge or cost per point", formalDefinition="If the item is a node then this is the fee for the product or service, otherwise this is the total of the fees for the children of the group." )
protected Money unitPrice;
/**
* A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
*/
@Child(name = "factor", type = {DecimalType.class}, order=9, min=0, max=1)
@Child(name = "factor", type = {DecimalType.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Price scaling factor", formalDefinition="A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount." )
protected DecimalType factor;
/**
* An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
*/
@Child(name = "points", type = {DecimalType.class}, order=10, min=0, max=1)
@Child(name = "points", type = {DecimalType.class}, order=10, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Difficulty scaling factor", formalDefinition="An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point." )
protected DecimalType points;
/**
* The quantity times the unit price for an addittional service or product or charge. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.
*/
@Child(name = "net", type = {Money.class}, order=11, min=0, max=1)
@Child(name = "net", type = {Money.class}, order=11, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Total item cost", formalDefinition="The quantity times the unit price for an addittional service or product or charge. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied." )
protected Money net;
/**
* List of Unique Device Identifiers associated with this line item.
*/
@Child(name = "udi", type = {Coding.class}, order=12, min=0, max=1)
@Child(name = "udi", type = {Coding.class}, order=12, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Unique Device Identifier", formalDefinition="List of Unique Device Identifiers associated with this line item." )
protected Coding udi;
/**
* Physical service site on the patient (limb, tooth, etc).
*/
@Child(name = "bodySite", type = {Coding.class}, order=13, min=0, max=1)
@Child(name = "bodySite", type = {Coding.class}, order=13, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Service Location", formalDefinition="Physical service site on the patient (limb, tooth, etc)." )
protected Coding bodySite;
/**
* A region or surface of the site, eg. limb region or tooth surface(s).
*/
@Child(name = "subSite", type = {Coding.class}, order=14, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "subSite", type = {Coding.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Service Sub-location", formalDefinition="A region or surface of the site, eg. limb region or tooth surface(s)." )
protected List<Coding> subSite;
/**
* Item typification or modifiers codes, eg for Oral whether the treatment is cosmetic or associated with TMJ, or an appliance was lost or stolen.
*/
@Child(name = "modifier", type = {Coding.class}, order=15, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "modifier", type = {Coding.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Service/Product billing modifiers", formalDefinition="Item typification or modifiers codes, eg for Oral whether the treatment is cosmetic or associated with TMJ, or an appliance was lost or stolen." )
protected List<Coding> modifier;
/**
* Second tier of goods and services.
*/
@Child(name = "detail", type = {}, order=16, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "detail", type = {}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Additional items", formalDefinition="Second tier of goods and services." )
protected List<DetailComponent> detail;
/**
* The materials and placement date of prior fixed prosthesis.
*/
@Child(name = "prosthesis", type = {}, order=17, min=0, max=1)
@Child(name = "prosthesis", type = {}, order=17, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Prosthetic details", formalDefinition="The materials and placement date of prior fixed prosthesis." )
protected ProsthesisComponent prosthesis;
@ -1997,70 +1997,70 @@ public class Claim extends DomainResource {
/**
* A service line number.
*/
@Child(name = "sequence", type = {PositiveIntType.class}, order=1, min=1, max=1)
@Child(name = "sequence", type = {PositiveIntType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Service instance", formalDefinition="A service line number." )
protected PositiveIntType sequence;
/**
* The type of product or service.
*/
@Child(name = "type", type = {Coding.class}, order=2, min=1, max=1)
@Child(name = "type", type = {Coding.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Group or type of product or service", formalDefinition="The type of product or service." )
protected Coding type;
/**
* If a grouping item then 'GROUP' otherwise it is a node therefore a code to indicate the Professional Service or Product supplied.
*/
@Child(name = "service", type = {Coding.class}, order=3, min=1, max=1)
@Child(name = "service", type = {Coding.class}, order=3, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Additional item codes", formalDefinition="If a grouping item then 'GROUP' otherwise it is a node therefore a code to indicate the Professional Service or Product supplied." )
protected Coding service;
/**
* The number of repetitions of a service or product.
*/
@Child(name = "quantity", type = {SimpleQuantity.class}, order=4, min=0, max=1)
@Child(name = "quantity", type = {SimpleQuantity.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Count of Products or Services", formalDefinition="The number of repetitions of a service or product." )
protected SimpleQuantity quantity;
/**
* If the item is a node then this is the fee for the product or service, otherwise this is the total of the fees for the children of the group.
*/
@Child(name = "unitPrice", type = {Money.class}, order=5, min=0, max=1)
@Child(name = "unitPrice", type = {Money.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Fee, charge or cost per point", formalDefinition="If the item is a node then this is the fee for the product or service, otherwise this is the total of the fees for the children of the group." )
protected Money unitPrice;
/**
* A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
*/
@Child(name = "factor", type = {DecimalType.class}, order=6, min=0, max=1)
@Child(name = "factor", type = {DecimalType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Price scaling factor", formalDefinition="A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount." )
protected DecimalType factor;
/**
* An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
*/
@Child(name = "points", type = {DecimalType.class}, order=7, min=0, max=1)
@Child(name = "points", type = {DecimalType.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Difficulty scaling factor", formalDefinition="An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point." )
protected DecimalType points;
/**
* The quantity times the unit price for an addittional service or product or charge. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.
*/
@Child(name = "net", type = {Money.class}, order=8, min=0, max=1)
@Child(name = "net", type = {Money.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Total additional item cost", formalDefinition="The quantity times the unit price for an addittional service or product or charge. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied." )
protected Money net;
/**
* List of Unique Device Identifiers associated with this line item.
*/
@Child(name = "udi", type = {Coding.class}, order=9, min=0, max=1)
@Child(name = "udi", type = {Coding.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Unique Device Identifier", formalDefinition="List of Unique Device Identifiers associated with this line item." )
protected Coding udi;
/**
* Third tier of goods and services.
*/
@Child(name = "subDetail", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "subDetail", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Additional items", formalDefinition="Third tier of goods and services." )
protected List<SubDetailComponent> subDetail;
@ -2482,63 +2482,63 @@ public class Claim extends DomainResource {
/**
* A service line number.
*/
@Child(name = "sequence", type = {PositiveIntType.class}, order=1, min=1, max=1)
@Child(name = "sequence", type = {PositiveIntType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Service instance", formalDefinition="A service line number." )
protected PositiveIntType sequence;
/**
* The type of product or service.
*/
@Child(name = "type", type = {Coding.class}, order=2, min=1, max=1)
@Child(name = "type", type = {Coding.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Type of product or service", formalDefinition="The type of product or service." )
protected Coding type;
/**
* The fee for an addittional service or product or charge.
*/
@Child(name = "service", type = {Coding.class}, order=3, min=1, max=1)
@Child(name = "service", type = {Coding.class}, order=3, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Additional item codes", formalDefinition="The fee for an addittional service or product or charge." )
protected Coding service;
/**
* The number of repetitions of a service or product.
*/
@Child(name = "quantity", type = {SimpleQuantity.class}, order=4, min=0, max=1)
@Child(name = "quantity", type = {SimpleQuantity.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Count of Products or Services", formalDefinition="The number of repetitions of a service or product." )
protected SimpleQuantity quantity;
/**
* The fee for an addittional service or product or charge.
*/
@Child(name = "unitPrice", type = {Money.class}, order=5, min=0, max=1)
@Child(name = "unitPrice", type = {Money.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Fee, charge or cost per point", formalDefinition="The fee for an addittional service or product or charge." )
protected Money unitPrice;
/**
* A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
*/
@Child(name = "factor", type = {DecimalType.class}, order=6, min=0, max=1)
@Child(name = "factor", type = {DecimalType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Price scaling factor", formalDefinition="A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount." )
protected DecimalType factor;
/**
* An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
*/
@Child(name = "points", type = {DecimalType.class}, order=7, min=0, max=1)
@Child(name = "points", type = {DecimalType.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Difficulty scaling factor", formalDefinition="An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point." )
protected DecimalType points;
/**
* The quantity times the unit price for an addittional service or product or charge. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.
*/
@Child(name = "net", type = {Money.class}, order=8, min=0, max=1)
@Child(name = "net", type = {Money.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Net additional item cost", formalDefinition="The quantity times the unit price for an addittional service or product or charge. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied." )
protected Money net;
/**
* List of Unique Device Identifiers associated with this line item.
*/
@Child(name = "udi", type = {Coding.class}, order=9, min=0, max=1)
@Child(name = "udi", type = {Coding.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Unique Device Identifier", formalDefinition="List of Unique Device Identifiers associated with this line item." )
protected Coding udi;
@ -2914,21 +2914,21 @@ public class Claim extends DomainResource {
/**
* Indicates whether this is the initial placement of a fixed prosthesis.
*/
@Child(name = "initial", type = {BooleanType.class}, order=1, min=0, max=1)
@Child(name = "initial", type = {BooleanType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Is this the initial service", formalDefinition="Indicates whether this is the initial placement of a fixed prosthesis." )
protected BooleanType initial;
/**
* Date of the initial placement.
*/
@Child(name = "priorDate", type = {DateType.class}, order=2, min=0, max=1)
@Child(name = "priorDate", type = {DateType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Initial service Date", formalDefinition="Date of the initial placement." )
protected DateType priorDate;
/**
* Material of the prior denture or bridge prosthesis. (Oral).
*/
@Child(name = "priorMaterial", type = {Coding.class}, order=3, min=0, max=1)
@Child(name = "priorMaterial", type = {Coding.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Prosthetic Material", formalDefinition="Material of the prior denture or bridge prosthesis. (Oral)." )
protected Coding priorMaterial;
@ -3108,21 +3108,21 @@ public class Claim extends DomainResource {
/**
* The code identifying which tooth is missing.
*/
@Child(name = "tooth", type = {Coding.class}, order=1, min=1, max=1)
@Child(name = "tooth", type = {Coding.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Tooth Code", formalDefinition="The code identifying which tooth is missing." )
protected Coding tooth;
/**
* Missing reason may be: E-extraction, O-other.
*/
@Child(name = "reason", type = {Coding.class}, order=2, min=0, max=1)
@Child(name = "reason", type = {Coding.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Reason for missing", formalDefinition="Missing reason may be: E-extraction, O-other." )
protected Coding reason;
/**
* The date of the extraction either known from records or patient reported estimate.
*/
@Child(name = "extractionDate", type = {DateType.class}, order=3, min=0, max=1)
@Child(name = "extractionDate", type = {DateType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Date of Extraction", formalDefinition="The date of the extraction either known from records or patient reported estimate." )
protected DateType extractionDate;
@ -3287,42 +3287,42 @@ public class Claim extends DomainResource {
/**
* The category of claim this is.
*/
@Child(name = "type", type = {CodeType.class}, order=0, min=1, max=1)
@Child(name = "type", type = {CodeType.class}, order=0, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="institutional | oral | pharmacy | professional | vision", formalDefinition="The category of claim this is." )
protected Enumeration<ClaimType> type;
/**
* The business identifier for the instance: invoice number, claim number, pre-determination or pre-authorization number.
*/
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Claim number", formalDefinition="The business identifier for the instance: invoice number, claim number, pre-determination or pre-authorization number." )
protected List<Identifier> identifier;
/**
* The version of the specification on which this instance relies.
*/
@Child(name = "ruleset", type = {Coding.class}, order=2, min=0, max=1)
@Child(name = "ruleset", type = {Coding.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Current specification followed", formalDefinition="The version of the specification on which this instance relies." )
protected Coding ruleset;
/**
* The version of the specification from which the original instance was created.
*/
@Child(name = "originalRuleset", type = {Coding.class}, order=3, min=0, max=1)
@Child(name = "originalRuleset", type = {Coding.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Original specification followed", formalDefinition="The version of the specification from which the original instance was created." )
protected Coding originalRuleset;
/**
* The date when the enclosed suite of services were performed or completed.
*/
@Child(name = "created", type = {DateTimeType.class}, order=4, min=0, max=1)
@Child(name = "created", type = {DateTimeType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Creation date", formalDefinition="The date when the enclosed suite of services were performed or completed." )
protected DateTimeType created;
/**
* Insurer Identifier, typical BIN number (6 digit).
*/
@Child(name = "target", type = {Organization.class}, order=5, min=0, max=1)
@Child(name = "target", type = {Organization.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Insurer", formalDefinition="Insurer Identifier, typical BIN number (6 digit)." )
protected Reference target;
@ -3334,7 +3334,7 @@ public class Claim extends DomainResource {
/**
* The provider which is responsible for the bill, claim pre-determination, pre-authorization.
*/
@Child(name = "provider", type = {Practitioner.class}, order=6, min=0, max=1)
@Child(name = "provider", type = {Practitioner.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible provider", formalDefinition="The provider which is responsible for the bill, claim pre-determination, pre-authorization." )
protected Reference provider;
@ -3346,7 +3346,7 @@ public class Claim extends DomainResource {
/**
* The organization which is responsible for the bill, claim pre-determination, pre-authorization.
*/
@Child(name = "organization", type = {Organization.class}, order=7, min=0, max=1)
@Child(name = "organization", type = {Organization.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible organization", formalDefinition="The organization which is responsible for the bill, claim pre-determination, pre-authorization." )
protected Reference organization;
@ -3358,28 +3358,28 @@ public class Claim extends DomainResource {
/**
* Complete (Bill or Claim), Proposed (Pre-Authorization), Exploratory (Pre-determination).
*/
@Child(name = "use", type = {CodeType.class}, order=8, min=0, max=1)
@Child(name = "use", type = {CodeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="complete | proposed | exploratory | other", formalDefinition="Complete (Bill or Claim), Proposed (Pre-Authorization), Exploratory (Pre-determination)." )
protected Enumeration<Use> use;
/**
* Immediate (STAT), best effort (NORMAL), deferred (DEFER).
*/
@Child(name = "priority", type = {Coding.class}, order=9, min=0, max=1)
@Child(name = "priority", type = {Coding.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Desired processing priority", formalDefinition="Immediate (STAT), best effort (NORMAL), deferred (DEFER)." )
protected Coding priority;
/**
* In the case of a Pre-Determination/Pre-Authorization the provider may request that funds in the amount of the expected Benefit be reserved ('Patient' or 'Provider') to pay for the Benefits determined on the subsequent claim(s). 'None' explicitly indicates no funds reserving is requested.
*/
@Child(name = "fundsReserve", type = {Coding.class}, order=10, min=0, max=1)
@Child(name = "fundsReserve", type = {Coding.class}, order=10, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Funds requested to be reserved", formalDefinition="In the case of a Pre-Determination/Pre-Authorization the provider may request that funds in the amount of the expected Benefit be reserved ('Patient' or 'Provider') to pay for the Benefits determined on the subsequent claim(s). 'None' explicitly indicates no funds reserving is requested." )
protected Coding fundsReserve;
/**
* Person who created the invoice/claim/pre-determination or pre-authorization.
*/
@Child(name = "enterer", type = {Practitioner.class}, order=11, min=0, max=1)
@Child(name = "enterer", type = {Practitioner.class}, order=11, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Author", formalDefinition="Person who created the invoice/claim/pre-determination or pre-authorization." )
protected Reference enterer;
@ -3391,7 +3391,7 @@ public class Claim extends DomainResource {
/**
* Facility where the services were provided.
*/
@Child(name = "facility", type = {Location.class}, order=12, min=0, max=1)
@Child(name = "facility", type = {Location.class}, order=12, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Servicing Facility", formalDefinition="Facility where the services were provided." )
protected Reference facility;
@ -3403,7 +3403,7 @@ public class Claim extends DomainResource {
/**
* Prescription to support the dispensing of Pharmacy or Vision products.
*/
@Child(name = "prescription", type = {MedicationOrder.class, VisionPrescription.class}, order=13, min=0, max=1)
@Child(name = "prescription", type = {MedicationOrder.class, VisionPrescription.class}, order=13, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Prescription", formalDefinition="Prescription to support the dispensing of Pharmacy or Vision products." )
protected Reference prescription;
@ -3415,7 +3415,7 @@ public class Claim extends DomainResource {
/**
* Original prescription to support the dispensing of pharmacy services, medications or products.
*/
@Child(name = "originalPrescription", type = {MedicationOrder.class}, order=14, min=0, max=1)
@Child(name = "originalPrescription", type = {MedicationOrder.class}, order=14, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Original Prescription", formalDefinition="Original prescription to support the dispensing of pharmacy services, medications or products." )
protected Reference originalPrescription;
@ -3427,14 +3427,14 @@ public class Claim extends DomainResource {
/**
* The party to be reimbursed for the services.
*/
@Child(name = "payee", type = {}, order=15, min=0, max=1)
@Child(name = "payee", type = {}, order=15, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Payee", formalDefinition="The party to be reimbursed for the services." )
protected PayeeComponent payee;
/**
* The referral resource which lists the date, practitioner, reason and other supporting information.
*/
@Child(name = "referral", type = {ReferralRequest.class}, order=16, min=0, max=1)
@Child(name = "referral", type = {ReferralRequest.class}, order=16, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Treatment Referral", formalDefinition="The referral resource which lists the date, practitioner, reason and other supporting information." )
protected Reference referral;
@ -3446,21 +3446,21 @@ public class Claim extends DomainResource {
/**
* Ordered list of patient diagnosis for which care is sought.
*/
@Child(name = "diagnosis", type = {}, order=17, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "diagnosis", type = {}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Diagnosis", formalDefinition="Ordered list of patient diagnosis for which care is sought." )
protected List<DiagnosisComponent> diagnosis;
/**
* List of patient conditions for which care is sought.
*/
@Child(name = "condition", type = {Coding.class}, order=18, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "condition", type = {Coding.class}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="List of presenting Conditions", formalDefinition="List of patient conditions for which care is sought." )
protected List<Coding> condition;
/**
* Patient Resource.
*/
@Child(name = "patient", type = {Patient.class}, order=19, min=1, max=1)
@Child(name = "patient", type = {Patient.class}, order=19, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="The subject of the Products and Services", formalDefinition="Patient Resource." )
protected Reference patient;
@ -3472,63 +3472,63 @@ public class Claim extends DomainResource {
/**
* Financial instrument by which payment information for health care.
*/
@Child(name = "coverage", type = {}, order=20, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "coverage", type = {}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Insurance or medical plan", formalDefinition="Financial instrument by which payment information for health care." )
protected List<CoverageComponent> coverage;
/**
* Factors which may influence the applicability of coverage.
*/
@Child(name = "exception", type = {Coding.class}, order=21, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "exception", type = {Coding.class}, order=21, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Eligibility exceptions", formalDefinition="Factors which may influence the applicability of coverage." )
protected List<Coding> exception;
/**
* Name of school for over-aged dependants.
*/
@Child(name = "school", type = {StringType.class}, order=22, min=0, max=1)
@Child(name = "school", type = {StringType.class}, order=22, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Name of School", formalDefinition="Name of school for over-aged dependants." )
protected StringType school;
/**
* Date of an accident which these services are addressing.
*/
@Child(name = "accident", type = {DateType.class}, order=23, min=0, max=1)
@Child(name = "accident", type = {DateType.class}, order=23, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Accident Date", formalDefinition="Date of an accident which these services are addressing." )
protected DateType accident;
/**
* Type of accident: work, auto, etc.
*/
@Child(name = "accidentType", type = {Coding.class}, order=24, min=0, max=1)
@Child(name = "accidentType", type = {Coding.class}, order=24, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Accident Type", formalDefinition="Type of accident: work, auto, etc." )
protected Coding accidentType;
/**
* A list of intervention and exception codes which may influence the adjudication of the claim.
*/
@Child(name = "interventionException", type = {Coding.class}, order=25, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "interventionException", type = {Coding.class}, order=25, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Intervention and exception code (Pharma)", formalDefinition="A list of intervention and exception codes which may influence the adjudication of the claim." )
protected List<Coding> interventionException;
/**
* First tier of goods and services.
*/
@Child(name = "item", type = {}, order=26, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "item", type = {}, order=26, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Goods and Services", formalDefinition="First tier of goods and services." )
protected List<ItemsComponent> item;
/**
* Code to indicate that Xrays, images, emails, documents, models or attachments are being sent in support of this submission.
*/
@Child(name = "additionalMaterials", type = {Coding.class}, order=27, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "additionalMaterials", type = {Coding.class}, order=27, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Additional materials, documents, etc.", formalDefinition="Code to indicate that Xrays, images, emails, documents, models or attachments are being sent in support of this submission." )
protected List<Coding> additionalMaterials;
/**
* A list of teeth which would be expected but are not found due to having been previously extracted or for other reasons.
*/
@Child(name = "missingTeeth", type = {}, order=28, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "missingTeeth", type = {}, order=28, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Only if type = oral", formalDefinition="A list of teeth which would be expected but are not found due to having been previously extracted or for other reasons." )
protected List<MissingTeethComponent> missingTeeth;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -53,28 +53,28 @@ public class ClaimResponse extends DomainResource {
/**
* A service line number.
*/
@Child(name = "sequenceLinkId", type = {PositiveIntType.class}, order=1, min=1, max=1)
@Child(name = "sequenceLinkId", type = {PositiveIntType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Service instance", formalDefinition="A service line number." )
protected PositiveIntType sequenceLinkId;
/**
* A list of note references to the notes provided below.
*/
@Child(name = "noteNumber", type = {PositiveIntType.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "noteNumber", type = {PositiveIntType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="List of note numbers which apply", formalDefinition="A list of note references to the notes provided below." )
protected List<PositiveIntType> noteNumber;
/**
* The adjudications results.
*/
@Child(name = "adjudication", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "adjudication", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Adjudication details", formalDefinition="The adjudications results." )
protected List<ItemAdjudicationComponent> adjudication;
/**
* The second tier service adjudications for submitted services.
*/
@Child(name = "detail", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "detail", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Detail line items", formalDefinition="The second tier service adjudications for submitted services." )
protected List<ItemDetailComponent> detail;
@ -339,21 +339,21 @@ public class ClaimResponse extends DomainResource {
/**
* Code indicating: Co-Pay, deductable, elegible, benefit, tax, etc.
*/
@Child(name = "code", type = {Coding.class}, order=1, min=1, max=1)
@Child(name = "code", type = {Coding.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Adjudication category such as co-pay, eligible, benefit, etc.", formalDefinition="Code indicating: Co-Pay, deductable, elegible, benefit, tax, etc." )
protected Coding code;
/**
* Monitory amount associated with the code.
*/
@Child(name = "amount", type = {Money.class}, order=2, min=0, max=1)
@Child(name = "amount", type = {Money.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Monetary amount", formalDefinition="Monitory amount associated with the code." )
protected Money amount;
/**
* A non-monetary value for example a percentage. Mutually exclusive to the amount element above.
*/
@Child(name = "value", type = {DecimalType.class}, order=3, min=0, max=1)
@Child(name = "value", type = {DecimalType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Non-monitory value", formalDefinition="A non-monetary value for example a percentage. Mutually exclusive to the amount element above." )
protected DecimalType value;
@ -520,21 +520,21 @@ public class ClaimResponse extends DomainResource {
/**
* A service line number.
*/
@Child(name = "sequenceLinkId", type = {PositiveIntType.class}, order=1, min=1, max=1)
@Child(name = "sequenceLinkId", type = {PositiveIntType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Service instance", formalDefinition="A service line number." )
protected PositiveIntType sequenceLinkId;
/**
* The adjudications results.
*/
@Child(name = "adjudication", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "adjudication", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Detail adjudication", formalDefinition="The adjudications results." )
protected List<DetailAdjudicationComponent> adjudication;
/**
* The third tier service adjudications for submitted services.
*/
@Child(name = "subDetail", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "subDetail", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Subdetail line items", formalDefinition="The third tier service adjudications for submitted services." )
protected List<SubDetailComponent> subDetail;
@ -737,21 +737,21 @@ public class ClaimResponse extends DomainResource {
/**
* Code indicating: Co-Pay, deductable, elegible, benefit, tax, etc.
*/
@Child(name = "code", type = {Coding.class}, order=1, min=1, max=1)
@Child(name = "code", type = {Coding.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Adjudication category such as co-pay, eligible, benefit, etc.", formalDefinition="Code indicating: Co-Pay, deductable, elegible, benefit, tax, etc." )
protected Coding code;
/**
* Monitory amount associated with the code.
*/
@Child(name = "amount", type = {Money.class}, order=2, min=0, max=1)
@Child(name = "amount", type = {Money.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Monetary amount", formalDefinition="Monitory amount associated with the code." )
protected Money amount;
/**
* A non-monetary value for example a percentage. Mutually exclusive to the amount element above.
*/
@Child(name = "value", type = {DecimalType.class}, order=3, min=0, max=1)
@Child(name = "value", type = {DecimalType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Non-monitory value", formalDefinition="A non-monetary value for example a percentage. Mutually exclusive to the amount element above." )
protected DecimalType value;
@ -918,14 +918,14 @@ public class ClaimResponse extends DomainResource {
/**
* A service line number.
*/
@Child(name = "sequenceLinkId", type = {PositiveIntType.class}, order=1, min=1, max=1)
@Child(name = "sequenceLinkId", type = {PositiveIntType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Service instance", formalDefinition="A service line number." )
protected PositiveIntType sequenceLinkId;
/**
* The adjudications results.
*/
@Child(name = "adjudication", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "adjudication", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Subdetail adjudication", formalDefinition="The adjudications results." )
protected List<SubdetailAdjudicationComponent> adjudication;
@ -1082,21 +1082,21 @@ public class ClaimResponse extends DomainResource {
/**
* Code indicating: Co-Pay, deductable, elegible, benefit, tax, etc.
*/
@Child(name = "code", type = {Coding.class}, order=1, min=1, max=1)
@Child(name = "code", type = {Coding.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Adjudication category such as co-pay, eligible, benefit, etc.", formalDefinition="Code indicating: Co-Pay, deductable, elegible, benefit, tax, etc." )
protected Coding code;
/**
* Monitory amount associated with the code.
*/
@Child(name = "amount", type = {Money.class}, order=2, min=0, max=1)
@Child(name = "amount", type = {Money.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Monetary amount", formalDefinition="Monitory amount associated with the code." )
protected Money amount;
/**
* A non-monetary value for example a percentage. Mutually exclusive to the amount element above.
*/
@Child(name = "value", type = {DecimalType.class}, order=3, min=0, max=1)
@Child(name = "value", type = {DecimalType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Non-monitory value", formalDefinition="A non-monetary value for example a percentage. Mutually exclusive to the amount element above." )
protected DecimalType value;
@ -1263,42 +1263,42 @@ public class ClaimResponse extends DomainResource {
/**
* List of input service items which this service line is intended to replace.
*/
@Child(name = "sequenceLinkId", type = {PositiveIntType.class}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "sequenceLinkId", type = {PositiveIntType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Service instances", formalDefinition="List of input service items which this service line is intended to replace." )
protected List<PositiveIntType> sequenceLinkId;
/**
* A code to indicate the Professional Service or Product supplied.
*/
@Child(name = "service", type = {Coding.class}, order=2, min=1, max=1)
@Child(name = "service", type = {Coding.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Group, Service or Product", formalDefinition="A code to indicate the Professional Service or Product supplied." )
protected Coding service;
/**
* The fee charged for the professional service or product..
*/
@Child(name = "fee", type = {Money.class}, order=3, min=0, max=1)
@Child(name = "fee", type = {Money.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Professional fee or Product charge", formalDefinition="The fee charged for the professional service or product.." )
protected Money fee;
/**
* A list of note references to the notes provided below.
*/
@Child(name = "noteNumberLinkId", type = {PositiveIntType.class}, order=4, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "noteNumberLinkId", type = {PositiveIntType.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="List of note numbers which apply", formalDefinition="A list of note references to the notes provided below." )
protected List<PositiveIntType> noteNumberLinkId;
/**
* The adjudications results.
*/
@Child(name = "adjudication", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "adjudication", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Added items adjudication", formalDefinition="The adjudications results." )
protected List<AddedItemAdjudicationComponent> adjudication;
/**
* The second tier service adjudications for payor added services.
*/
@Child(name = "detail", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "detail", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Added items details", formalDefinition="The second tier service adjudications for payor added services." )
protected List<AddedItemsDetailComponent> detail;
@ -1630,21 +1630,21 @@ public class ClaimResponse extends DomainResource {
/**
* Code indicating: Co-Pay, deductable, elegible, benefit, tax, etc.
*/
@Child(name = "code", type = {Coding.class}, order=1, min=1, max=1)
@Child(name = "code", type = {Coding.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Adjudication category such as co-pay, eligible, benefit, etc.", formalDefinition="Code indicating: Co-Pay, deductable, elegible, benefit, tax, etc." )
protected Coding code;
/**
* Monitory amount associated with the code.
*/
@Child(name = "amount", type = {Money.class}, order=2, min=0, max=1)
@Child(name = "amount", type = {Money.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Monetary amount", formalDefinition="Monitory amount associated with the code." )
protected Money amount;
/**
* A non-monetary value for example a percentage. Mutually exclusive to the amount element above.
*/
@Child(name = "value", type = {DecimalType.class}, order=3, min=0, max=1)
@Child(name = "value", type = {DecimalType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Non-monitory value", formalDefinition="A non-monetary value for example a percentage. Mutually exclusive to the amount element above." )
protected DecimalType value;
@ -1811,21 +1811,21 @@ public class ClaimResponse extends DomainResource {
/**
* A code to indicate the Professional Service or Product supplied.
*/
@Child(name = "service", type = {Coding.class}, order=1, min=1, max=1)
@Child(name = "service", type = {Coding.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Service or Product", formalDefinition="A code to indicate the Professional Service or Product supplied." )
protected Coding service;
/**
* The fee charged for the professional service or product..
*/
@Child(name = "fee", type = {Money.class}, order=2, min=0, max=1)
@Child(name = "fee", type = {Money.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Professional fee or Product charge", formalDefinition="The fee charged for the professional service or product.." )
protected Money fee;
/**
* The adjudications results.
*/
@Child(name = "adjudication", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "adjudication", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Added items detail adjudication", formalDefinition="The adjudications results." )
protected List<AddedItemDetailAdjudicationComponent> adjudication;
@ -1987,21 +1987,21 @@ public class ClaimResponse extends DomainResource {
/**
* Code indicating: Co-Pay, deductable, elegible, benefit, tax, etc.
*/
@Child(name = "code", type = {Coding.class}, order=1, min=1, max=1)
@Child(name = "code", type = {Coding.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Adjudication category such as co-pay, eligible, benefit, etc.", formalDefinition="Code indicating: Co-Pay, deductable, elegible, benefit, tax, etc." )
protected Coding code;
/**
* Monitory amount associated with the code.
*/
@Child(name = "amount", type = {Money.class}, order=2, min=0, max=1)
@Child(name = "amount", type = {Money.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Monetary amount", formalDefinition="Monitory amount associated with the code." )
protected Money amount;
/**
* A non-monetary value for example a percentage. Mutually exclusive to the amount element above.
*/
@Child(name = "value", type = {DecimalType.class}, order=3, min=0, max=1)
@Child(name = "value", type = {DecimalType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Non-monitory value", formalDefinition="A non-monetary value for example a percentage. Mutually exclusive to the amount element above." )
protected DecimalType value;
@ -2168,28 +2168,28 @@ public class ClaimResponse extends DomainResource {
/**
* The sequence number of the line item submitted which contains the error. This value is ommitted when the error is elsewhere.
*/
@Child(name = "sequenceLinkId", type = {PositiveIntType.class}, order=1, min=0, max=1)
@Child(name = "sequenceLinkId", type = {PositiveIntType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Item sequence number", formalDefinition="The sequence number of the line item submitted which contains the error. This value is ommitted when the error is elsewhere." )
protected PositiveIntType sequenceLinkId;
/**
* The sequence number of the addition within the line item submitted which contains the error. This value is ommitted when the error is not related to an Addition.
*/
@Child(name = "detailSequenceLinkId", type = {PositiveIntType.class}, order=2, min=0, max=1)
@Child(name = "detailSequenceLinkId", type = {PositiveIntType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Detail sequence number", formalDefinition="The sequence number of the addition within the line item submitted which contains the error. This value is ommitted when the error is not related to an Addition." )
protected PositiveIntType detailSequenceLinkId;
/**
* The sequence number of the addition within the line item submitted which contains the error. This value is ommitted when the error is not related to an Addition.
*/
@Child(name = "subdetailSequenceLinkId", type = {PositiveIntType.class}, order=3, min=0, max=1)
@Child(name = "subdetailSequenceLinkId", type = {PositiveIntType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Subdetail sequence number", formalDefinition="The sequence number of the addition within the line item submitted which contains the error. This value is ommitted when the error is not related to an Addition." )
protected PositiveIntType subdetailSequenceLinkId;
/**
* An error code,froma specified code system, which details why the claim could not be adjudicated.
*/
@Child(name = "code", type = {Coding.class}, order=4, min=1, max=1)
@Child(name = "code", type = {Coding.class}, order=4, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Error code detailing processing issues", formalDefinition="An error code,froma specified code system, which details why the claim could not be adjudicated." )
protected Coding code;
@ -2423,21 +2423,21 @@ public class ClaimResponse extends DomainResource {
/**
* An integer associated with each note which may be referred to from each service line item.
*/
@Child(name = "number", type = {PositiveIntType.class}, order=1, min=0, max=1)
@Child(name = "number", type = {PositiveIntType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Note Number for this note", formalDefinition="An integer associated with each note which may be referred to from each service line item." )
protected PositiveIntType number;
/**
* The note purpose: Print/Display.
*/
@Child(name = "type", type = {Coding.class}, order=2, min=0, max=1)
@Child(name = "type", type = {Coding.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="display | print | printoper", formalDefinition="The note purpose: Print/Display." )
protected Coding type;
/**
* The note text.
*/
@Child(name = "text", type = {StringType.class}, order=3, min=0, max=1)
@Child(name = "text", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Note explanitory text", formalDefinition="The note text." )
protected StringType text;
@ -2617,21 +2617,21 @@ public class ClaimResponse extends DomainResource {
/**
* A service line item.
*/
@Child(name = "sequence", type = {PositiveIntType.class}, order=1, min=1, max=1)
@Child(name = "sequence", type = {PositiveIntType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Service instance identifier", formalDefinition="A service line item." )
protected PositiveIntType sequence;
/**
* The instance number of the Coverage which is the focus for adjudication. The Coverage against which the claim is to be adjudicated.
*/
@Child(name = "focal", type = {BooleanType.class}, order=2, min=1, max=1)
@Child(name = "focal", type = {BooleanType.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Is the focal Coverage", formalDefinition="The instance number of the Coverage which is the focus for adjudication. The Coverage against which the claim is to be adjudicated." )
protected BooleanType focal;
/**
* Reference to the program or plan identification, underwriter or payor.
*/
@Child(name = "coverage", type = {Coverage.class}, order=3, min=1, max=1)
@Child(name = "coverage", type = {Coverage.class}, order=3, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Insurance information", formalDefinition="Reference to the program or plan identification, underwriter or payor." )
protected Reference coverage;
@ -2643,28 +2643,28 @@ public class ClaimResponse extends DomainResource {
/**
* The contract number of a business agreement which describes the terms and conditions.
*/
@Child(name = "businessArrangement", type = {StringType.class}, order=4, min=0, max=1)
@Child(name = "businessArrangement", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Business agreement", formalDefinition="The contract number of a business agreement which describes the terms and conditions." )
protected StringType businessArrangement;
/**
* The relationship of the patient to the subscriber.
*/
@Child(name = "relationship", type = {Coding.class}, order=5, min=1, max=1)
@Child(name = "relationship", type = {Coding.class}, order=5, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Patient relationship to subscriber", formalDefinition="The relationship of the patient to the subscriber." )
protected Coding relationship;
/**
* A list of references from the Insurer to which these services pertain.
*/
@Child(name = "preAuthRef", type = {StringType.class}, order=6, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "preAuthRef", type = {StringType.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Pre-Authorization/Determination Reference", formalDefinition="A list of references from the Insurer to which these services pertain." )
protected List<StringType> preAuthRef;
/**
* The Coverages adjudication details.
*/
@Child(name = "claimResponse", type = {ClaimResponse.class}, order=7, min=0, max=1)
@Child(name = "claimResponse", type = {ClaimResponse.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Adjudication results", formalDefinition="The Coverages adjudication details." )
protected Reference claimResponse;
@ -2676,7 +2676,7 @@ public class ClaimResponse extends DomainResource {
/**
* The style (standard) and version of the original material which was converted into this resource.
*/
@Child(name = "originalRuleset", type = {Coding.class}, order=8, min=0, max=1)
@Child(name = "originalRuleset", type = {Coding.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Original version", formalDefinition="The style (standard) and version of the original material which was converted into this resource." )
protected Coding originalRuleset;
@ -3096,14 +3096,14 @@ public class ClaimResponse extends DomainResource {
/**
* The Response Business Identifier.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Response number", formalDefinition="The Response Business Identifier." )
protected List<Identifier> identifier;
/**
* Original request resource referrence.
*/
@Child(name = "request", type = {Claim.class}, order=1, min=0, max=1)
@Child(name = "request", type = {Claim.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Id of resource triggering adjudication", formalDefinition="Original request resource referrence." )
protected Reference request;
@ -3115,28 +3115,28 @@ public class ClaimResponse extends DomainResource {
/**
* The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources.
*/
@Child(name = "ruleset", type = {Coding.class}, order=2, min=0, max=1)
@Child(name = "ruleset", type = {Coding.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Resource version", formalDefinition="The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources." )
protected Coding ruleset;
/**
* The style (standard) and version of the original material which was converted into this resource.
*/
@Child(name = "originalRuleset", type = {Coding.class}, order=3, min=0, max=1)
@Child(name = "originalRuleset", type = {Coding.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Original version", formalDefinition="The style (standard) and version of the original material which was converted into this resource." )
protected Coding originalRuleset;
/**
* The date when the enclosed suite of services were performed or completed.
*/
@Child(name = "created", type = {DateTimeType.class}, order=4, min=0, max=1)
@Child(name = "created", type = {DateTimeType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Creation date", formalDefinition="The date when the enclosed suite of services were performed or completed." )
protected DateTimeType created;
/**
* The Insurer who produced this adjudicated response.
*/
@Child(name = "organization", type = {Organization.class}, order=5, min=0, max=1)
@Child(name = "organization", type = {Organization.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Insurer", formalDefinition="The Insurer who produced this adjudicated response." )
protected Reference organization;
@ -3148,7 +3148,7 @@ public class ClaimResponse extends DomainResource {
/**
* The practitioner who is responsible for the services rendered to the patient.
*/
@Child(name = "requestProvider", type = {Practitioner.class}, order=6, min=0, max=1)
@Child(name = "requestProvider", type = {Practitioner.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible practitioner", formalDefinition="The practitioner who is responsible for the services rendered to the patient." )
protected Reference requestProvider;
@ -3160,7 +3160,7 @@ public class ClaimResponse extends DomainResource {
/**
* The organization which is responsible for the services rendered to the patient.
*/
@Child(name = "requestOrganization", type = {Organization.class}, order=7, min=0, max=1)
@Child(name = "requestOrganization", type = {Organization.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible organization", formalDefinition="The organization which is responsible for the services rendered to the patient." )
protected Reference requestOrganization;
@ -3172,126 +3172,126 @@ public class ClaimResponse extends DomainResource {
/**
* Transaction status: error, complete.
*/
@Child(name = "outcome", type = {CodeType.class}, order=8, min=0, max=1)
@Child(name = "outcome", type = {CodeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="complete | error", formalDefinition="Transaction status: error, complete." )
protected Enumeration<RemittanceOutcome> outcome;
/**
* A description of the status of the adjudication.
*/
@Child(name = "disposition", type = {StringType.class}, order=9, min=0, max=1)
@Child(name = "disposition", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Disposition Message", formalDefinition="A description of the status of the adjudication." )
protected StringType disposition;
/**
* Party to be reimbursed: Subscriber, provider, other.
*/
@Child(name = "payeeType", type = {Coding.class}, order=10, min=0, max=1)
@Child(name = "payeeType", type = {Coding.class}, order=10, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Party to be paid any benefits payable", formalDefinition="Party to be reimbursed: Subscriber, provider, other." )
protected Coding payeeType;
/**
* The first tier service adjudications for submitted services.
*/
@Child(name = "item", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "item", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Line items", formalDefinition="The first tier service adjudications for submitted services." )
protected List<ItemsComponent> item;
/**
* The first tier service adjudications for payor added services.
*/
@Child(name = "addItem", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "addItem", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Insurer added line items", formalDefinition="The first tier service adjudications for payor added services." )
protected List<AddedItemComponent> addItem;
/**
* Mutually exclusive with Services Provided (Item).
*/
@Child(name = "error", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "error", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Processing errors", formalDefinition="Mutually exclusive with Services Provided (Item)." )
protected List<ErrorsComponent> error;
/**
* The total cost of the services reported.
*/
@Child(name = "totalCost", type = {Money.class}, order=14, min=0, max=1)
@Child(name = "totalCost", type = {Money.class}, order=14, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Total Cost of service from the Claim", formalDefinition="The total cost of the services reported." )
protected Money totalCost;
/**
* The amount of deductable applied which was not allocated to any particular service line.
*/
@Child(name = "unallocDeductable", type = {Money.class}, order=15, min=0, max=1)
@Child(name = "unallocDeductable", type = {Money.class}, order=15, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Unallocated deductable", formalDefinition="The amount of deductable applied which was not allocated to any particular service line." )
protected Money unallocDeductable;
/**
* Total amount of benefit payable (Equal to sum of the Benefit amounts from all detail lines and additions less the Unallocated Deductable).
*/
@Child(name = "totalBenefit", type = {Money.class}, order=16, min=0, max=1)
@Child(name = "totalBenefit", type = {Money.class}, order=16, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Total benefit payable for the Claim", formalDefinition="Total amount of benefit payable (Equal to sum of the Benefit amounts from all detail lines and additions less the Unallocated Deductable)." )
protected Money totalBenefit;
/**
* Adjustment to the payment of this transaction which is not related to adjudication of this transaction.
*/
@Child(name = "paymentAdjustment", type = {Money.class}, order=17, min=0, max=1)
@Child(name = "paymentAdjustment", type = {Money.class}, order=17, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Payment adjustment for non-Claim issues", formalDefinition="Adjustment to the payment of this transaction which is not related to adjudication of this transaction." )
protected Money paymentAdjustment;
/**
* Reason for the payment adjustment.
*/
@Child(name = "paymentAdjustmentReason", type = {Coding.class}, order=18, min=0, max=1)
@Child(name = "paymentAdjustmentReason", type = {Coding.class}, order=18, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Reason for Payment adjustment", formalDefinition="Reason for the payment adjustment." )
protected Coding paymentAdjustmentReason;
/**
* Estimated payment data.
*/
@Child(name = "paymentDate", type = {DateType.class}, order=19, min=0, max=1)
@Child(name = "paymentDate", type = {DateType.class}, order=19, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Expected data of Payment", formalDefinition="Estimated payment data." )
protected DateType paymentDate;
/**
* Payable less any payment adjustment.
*/
@Child(name = "paymentAmount", type = {Money.class}, order=20, min=0, max=1)
@Child(name = "paymentAmount", type = {Money.class}, order=20, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Payment amount", formalDefinition="Payable less any payment adjustment." )
protected Money paymentAmount;
/**
* Payment identifer.
*/
@Child(name = "paymentRef", type = {Identifier.class}, order=21, min=0, max=1)
@Child(name = "paymentRef", type = {Identifier.class}, order=21, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Payment identifier", formalDefinition="Payment identifer." )
protected Identifier paymentRef;
/**
* Status of funds reservation (For provider, for Patient, None).
*/
@Child(name = "reserved", type = {Coding.class}, order=22, min=0, max=1)
@Child(name = "reserved", type = {Coding.class}, order=22, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Funds reserved status", formalDefinition="Status of funds reservation (For provider, for Patient, None)." )
protected Coding reserved;
/**
* The form to be used for printing the content.
*/
@Child(name = "form", type = {Coding.class}, order=23, min=0, max=1)
@Child(name = "form", type = {Coding.class}, order=23, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Printed Form Identifier", formalDefinition="The form to be used for printing the content." )
protected Coding form;
/**
* Note text.
*/
@Child(name = "note", type = {}, order=24, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "note", type = {}, order=24, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Processing notes", formalDefinition="Note text." )
protected List<NotesComponent> note;
/**
* Financial instrument by which payment information for health care.
*/
@Child(name = "coverage", type = {}, order=25, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "coverage", type = {}, order=25, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Insurance or medical plan", formalDefinition="Financial instrument by which payment information for health care." )
protected List<CoverageComponent> coverage;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -137,14 +137,14 @@ public class ClinicalImpression extends DomainResource {
/**
* A name/code for the group ("set") of investigations. Typically, this will be something like "signs", "symptoms", "clinical", "diagnostic", but the list is not constrained, and others such groups such as (exposure|family|travel|nutitirional) history may be used.
*/
@Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1)
@Description(shortDefinition="A name/code for the set", formalDefinition="A name/code for the group ('set') of investigations. Typically, this will be something like 'signs', 'symptoms', 'clinical', 'diagnostic', but the list is not constrained, and others such groups such as (exposure|family|travel|nutitirional) history may be used." )
@Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="A name/code for the set", formalDefinition="A name/code for the group (\"set\") of investigations. Typically, this will be something like \"signs\", \"symptoms\", \"clinical\", \"diagnostic\", but the list is not constrained, and others such groups such as (exposure|family|travel|nutitirional) history may be used." )
protected CodeableConcept code;
/**
* A record of a specific investigation that was undertaken.
*/
@Child(name = "item", type = {Observation.class, QuestionnaireResponse.class, FamilyMemberHistory.class, DiagnosticReport.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "item", type = {Observation.class, QuestionnaireResponse.class, FamilyMemberHistory.class, DiagnosticReport.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Record of a specific investigation", formalDefinition="A record of a specific investigation that was undertaken." )
protected List<Reference> item;
/**
@ -245,7 +245,7 @@ public class ClinicalImpression extends DomainResource {
protected void listChildren(List<Property> childrenList) {
super.listChildren(childrenList);
childrenList.add(new Property("code", "CodeableConcept", "A name/code for the group ('set') of investigations. Typically, this will be something like 'signs', 'symptoms', 'clinical', 'diagnostic', but the list is not constrained, and others such groups such as (exposure|family|travel|nutitirional) history may be used.", 0, java.lang.Integer.MAX_VALUE, code));
childrenList.add(new Property("code", "CodeableConcept", "A name/code for the group (\"set\") of investigations. Typically, this will be something like \"signs\", \"symptoms\", \"clinical\", \"diagnostic\", but the list is not constrained, and others such groups such as (exposure|family|travel|nutitirional) history may be used.", 0, java.lang.Integer.MAX_VALUE, code));
childrenList.add(new Property("item", "Reference(Observation|QuestionnaireResponse|FamilyMemberHistory|DiagnosticReport)", "A record of a specific investigation that was undertaken.", 0, java.lang.Integer.MAX_VALUE, item));
}
@ -293,14 +293,14 @@ public class ClinicalImpression extends DomainResource {
/**
* Specific text of code for finding or diagnosis.
*/
@Child(name = "item", type = {CodeableConcept.class}, order=1, min=1, max=1)
@Child(name = "item", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Specific text or code for finding", formalDefinition="Specific text of code for finding or diagnosis." )
protected CodeableConcept item;
/**
* Which investigations support finding or diagnosis.
*/
@Child(name = "cause", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "cause", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Which investigations support finding", formalDefinition="Which investigations support finding or diagnosis." )
protected StringType cause;
@ -440,14 +440,14 @@ public class ClinicalImpression extends DomainResource {
/**
* Specific text of code for diagnosis.
*/
@Child(name = "item", type = {CodeableConcept.class}, order=1, min=1, max=1)
@Child(name = "item", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Specific text of code for diagnosis", formalDefinition="Specific text of code for diagnosis." )
protected CodeableConcept item;
/**
* Grounds for elimination.
*/
@Child(name = "reason", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "reason", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Grounds for elimination", formalDefinition="Grounds for elimination." )
protected StringType reason;
@ -585,7 +585,7 @@ public class ClinicalImpression extends DomainResource {
/**
* The patient being assessed.
*/
@Child(name = "patient", type = {Patient.class}, order=0, min=1, max=1)
@Child(name = "patient", type = {Patient.class}, order=0, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="The patient being assessed", formalDefinition="The patient being assessed." )
protected Reference patient;
@ -597,7 +597,7 @@ public class ClinicalImpression extends DomainResource {
/**
* The clinician performing the assessment.
*/
@Child(name = "assessor", type = {Practitioner.class}, order=1, min=0, max=1)
@Child(name = "assessor", type = {Practitioner.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The clinician performing the assessment", formalDefinition="The clinician performing the assessment." )
protected Reference assessor;
@ -609,28 +609,28 @@ public class ClinicalImpression extends DomainResource {
/**
* Identifies the workflow status of the assessment.
*/
@Child(name = "status", type = {CodeType.class}, order=2, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=2, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="in-progress | completed | entered-in-error", formalDefinition="Identifies the workflow status of the assessment." )
protected Enumeration<ClinicalImpressionStatus> status;
/**
* The point in time at which the assessment was concluded (not when it was recorded).
*/
@Child(name = "date", type = {DateTimeType.class}, order=3, min=0, max=1)
@Child(name = "date", type = {DateTimeType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When the assessment occurred", formalDefinition="The point in time at which the assessment was concluded (not when it was recorded)." )
protected DateTimeType date;
/**
* A summary of the context and/or cause of the assessment - why / where was it peformed, and what patient events/sstatus prompted it.
*/
@Child(name = "description", type = {StringType.class}, order=4, min=0, max=1)
@Child(name = "description", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Why/how the assessment was performed", formalDefinition="A summary of the context and/or cause of the assessment - why / where was it peformed, and what patient events/sstatus prompted it." )
protected StringType description;
/**
* A reference to the last assesment that was conducted bon this patient. Assessments are often/usually ongoing in nature; a care provider (practitioner or team) will make new assessments on an ongoing basis as new data arises or the patient's conditions changes.
*/
@Child(name = "previous", type = {ClinicalImpression.class}, order=5, min=0, max=1)
@Child(name = "previous", type = {ClinicalImpression.class}, order=5, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Reference to last assessment", formalDefinition="A reference to the last assesment that was conducted bon this patient. Assessments are often/usually ongoing in nature; a care provider (practitioner or team) will make new assessments on an ongoing basis as new data arises or the patient's conditions changes." )
protected Reference previous;
@ -642,7 +642,7 @@ public class ClinicalImpression extends DomainResource {
/**
* This a list of the general problems/conditions for a patient.
*/
@Child(name = "problem", type = {Condition.class, AllergyIntolerance.class}, order=6, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "problem", type = {Condition.class, AllergyIntolerance.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="General assessment of patient state", formalDefinition="This a list of the general problems/conditions for a patient." )
protected List<Reference> problem;
/**
@ -654,63 +654,63 @@ public class ClinicalImpression extends DomainResource {
/**
* The request or event that necessitated this assessment. This may be a diagnosis, a Care Plan, a Request Referral, or some other resource.
*/
@Child(name = "trigger", type = {CodeableConcept.class}, order=7, min=0, max=1)
@Child(name = "trigger", type = {CodeableConcept.class}, order=7, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Request or event that necessitated this assessment", formalDefinition="The request or event that necessitated this assessment. This may be a diagnosis, a Care Plan, a Request Referral, or some other resource." )
protected Type trigger;
/**
* One or more sets of investigations (signs, symptions, etc). The actual grouping of investigations vary greatly depending on the type and context of the assessment. These investigations may include data generated during the assessment process, or data previously generated and recorded that is pertinent to the outcomes.
*/
@Child(name = "investigations", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "investigations", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="One or more sets of investigations (signs, symptions, etc)", formalDefinition="One or more sets of investigations (signs, symptions, etc). The actual grouping of investigations vary greatly depending on the type and context of the assessment. These investigations may include data generated during the assessment process, or data previously generated and recorded that is pertinent to the outcomes." )
protected List<ClinicalImpressionInvestigationsComponent> investigations;
/**
* Reference to a specific published clinical protocol that was followed during this assessment, and/or that provides evidence in support of the diagnosis.
*/
@Child(name = "protocol", type = {UriType.class}, order=9, min=0, max=1)
@Child(name = "protocol", type = {UriType.class}, order=9, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Clinical Protocol followed", formalDefinition="Reference to a specific published clinical protocol that was followed during this assessment, and/or that provides evidence in support of the diagnosis." )
protected UriType protocol;
/**
* A text summary of the investigations and the diagnosis.
*/
@Child(name = "summary", type = {StringType.class}, order=10, min=0, max=1)
@Child(name = "summary", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Summary of the assessment", formalDefinition="A text summary of the investigations and the diagnosis." )
protected StringType summary;
/**
* Specific findings or diagnoses that was considered likely or relevant to ongoing treatment.
*/
@Child(name = "finding", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "finding", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Possible or likely findings and diagnoses", formalDefinition="Specific findings or diagnoses that was considered likely or relevant to ongoing treatment." )
protected List<ClinicalImpressionFindingComponent> finding;
/**
* Diagnoses/conditions resolved since the last assessment.
*/
@Child(name = "resolved", type = {CodeableConcept.class}, order=12, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "resolved", type = {CodeableConcept.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Diagnosies/conditions resolved since previous assessment", formalDefinition="Diagnoses/conditions resolved since the last assessment." )
protected List<CodeableConcept> resolved;
/**
* Diagnosis considered not possible.
*/
@Child(name = "ruledOut", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "ruledOut", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Diagnosis considered not possible", formalDefinition="Diagnosis considered not possible." )
protected List<ClinicalImpressionRuledOutComponent> ruledOut;
/**
* Estimate of likely outcome.
*/
@Child(name = "prognosis", type = {StringType.class}, order=14, min=0, max=1)
@Child(name = "prognosis", type = {StringType.class}, order=14, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Estimate of likely outcome", formalDefinition="Estimate of likely outcome." )
protected StringType prognosis;
/**
* Plan of action after assessment.
*/
@Child(name = "plan", type = {CarePlan.class, Appointment.class, CommunicationRequest.class, DeviceUseRequest.class, DiagnosticOrder.class, MedicationOrder.class, NutritionOrder.class, Order.class, ProcedureRequest.class, ProcessRequest.class, ReferralRequest.class, SupplyRequest.class, VisionPrescription.class}, order=15, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "plan", type = {CarePlan.class, Appointment.class, CommunicationRequest.class, DeviceUseRequest.class, DiagnosticOrder.class, MedicationOrder.class, NutritionOrder.class, Order.class, ProcedureRequest.class, ProcessRequest.class, ReferralRequest.class, SupplyRequest.class, VisionPrescription.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Plan of action after assessment", formalDefinition="Plan of action after assessment." )
protected List<Reference> plan;
/**
@ -722,7 +722,7 @@ public class ClinicalImpression extends DomainResource {
/**
* Actions taken during assessment.
*/
@Child(name = "action", type = {ReferralRequest.class, ProcedureRequest.class, Procedure.class, MedicationOrder.class, DiagnosticOrder.class, NutritionOrder.class, SupplyRequest.class, Appointment.class}, order=16, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "action", type = {ReferralRequest.class, ProcedureRequest.class, Procedure.class, MedicationOrder.class, DiagnosticOrder.class, NutritionOrder.class, SupplyRequest.class, Appointment.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Actions taken during assessment", formalDefinition="Actions taken during assessment." )
protected List<Reference> action;
/**

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -48,14 +48,14 @@ public class CodeableConcept extends Type implements ICompositeType {
/**
* A reference to a code defined by a terminology system.
*/
@Child(name = "coding", type = {Coding.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "coding", type = {Coding.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Code defined by a terminology system", formalDefinition="A reference to a code defined by a terminology system." )
protected List<Coding> coding;
/**
* A human language representation of the concept as seen/selected/uttered by the user who entered the data and/or which represents the intended meaning of the user.
*/
@Child(name = "text", type = {StringType.class}, order=1, min=0, max=1)
@Child(name = "text", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Plain text representation of the concept", formalDefinition="A human language representation of the concept as seen/selected/uttered by the user who entered the data and/or which represents the intended meaning of the user." )
protected StringType text;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -48,35 +48,35 @@ public class Coding extends Type implements IBaseCoding, ICompositeType {
/**
* The identification of the code system that defines the meaning of the symbol in the code.
*/
@Child(name = "system", type = {UriType.class}, order=0, min=0, max=1)
@Child(name = "system", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Identity of the terminology system", formalDefinition="The identification of the code system that defines the meaning of the symbol in the code." )
protected UriType system;
/**
* The version of the code system which was used when choosing this code. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured. and when the meaning is not guaranteed to be consistent, the version SHOULD be exchanged.
*/
@Child(name = "version", type = {StringType.class}, order=1, min=0, max=1)
@Child(name = "version", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Version of the system - if relevant", formalDefinition="The version of the code system which was used when choosing this code. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured. and when the meaning is not guaranteed to be consistent, the version SHOULD be exchanged." )
protected StringType version;
/**
* A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).
*/
@Child(name = "code", type = {CodeType.class}, order=2, min=0, max=1)
@Child(name = "code", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Symbol in syntax defined by the system", formalDefinition="A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination)." )
protected CodeType code;
/**
* A representation of the meaning of the code in the system, following the rules of the system.
*/
@Child(name = "display", type = {StringType.class}, order=3, min=0, max=1)
@Child(name = "display", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Representation defined by the system", formalDefinition="A representation of the meaning of the code in the system, following the rules of the system." )
protected StringType display;
/**
* Indicates that this coding was chosen by a user directly - i.e. off a pick list of available items (codes or displays).
*/
@Child(name = "userSelected", type = {BooleanType.class}, order=4, min=0, max=1)
@Child(name = "userSelected", type = {BooleanType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="If this coding was chosen directly by the user", formalDefinition="Indicates that this coding was chosen by a user directly - i.e. off a pick list of available items (codes or displays)." )
protected BooleanType userSelected;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -165,7 +165,7 @@ public class Communication extends DomainResource {
/**
* An individual message part for multi-part messages.
*/
@Child(name = "content", type = {StringType.class, Attachment.class}, order=1, min=1, max=1)
@Child(name = "content", type = {StringType.class, Attachment.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Message part content", formalDefinition="An individual message part for multi-part messages." )
protected Type content;
@ -285,21 +285,21 @@ public class Communication extends DomainResource {
/**
* Identifiers associated with this Communication that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Unique identifier", formalDefinition="Identifiers associated with this Communication that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)." )
protected List<Identifier> identifier;
/**
* The type of message conveyed such as alert, notification, reminder, instruction, etc.
*/
@Child(name = "category", type = {CodeableConcept.class}, order=1, min=0, max=1)
@Child(name = "category", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Message category", formalDefinition="The type of message conveyed such as alert, notification, reminder, instruction, etc." )
protected CodeableConcept category;
/**
* The entity (e.g., person, organization, clinical information system, or device) which was the source of the communication.
*/
@Child(name = "sender", type = {Device.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class}, order=2, min=0, max=1)
@Child(name = "sender", type = {Device.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Message sender", formalDefinition="The entity (e.g., person, organization, clinical information system, or device) which was the source of the communication." )
protected Reference sender;
@ -311,7 +311,7 @@ public class Communication extends DomainResource {
/**
* The entity (e.g., person, organization, clinical information system, or device) which was the target of the communication.
*/
@Child(name = "recipient", type = {Device.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "recipient", type = {Device.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Message recipient", formalDefinition="The entity (e.g., person, organization, clinical information system, or device) which was the target of the communication." )
protected List<Reference> recipient;
/**
@ -323,28 +323,28 @@ public class Communication extends DomainResource {
/**
* Text, attachment(s), or resource(s) that was communicated to the recipient.
*/
@Child(name = "payload", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "payload", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Message payload", formalDefinition="Text, attachment(s), or resource(s) that was communicated to the recipient." )
protected List<CommunicationPayloadComponent> payload;
/**
* The communication medium, e.g., email, fax.
*/
@Child(name = "medium", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "medium", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Communication medium", formalDefinition="The communication medium, e.g., email, fax." )
protected List<CodeableConcept> medium;
/**
* The status of the transmission.
*/
@Child(name = "status", type = {CodeType.class}, order=6, min=0, max=1)
@Child(name = "status", type = {CodeType.class}, order=6, min=0, max=1, modifier=true, summary=true)
@Description(shortDefinition="in-progress | completed | suspended | rejected | failed", formalDefinition="The status of the transmission." )
protected Enumeration<CommunicationStatus> status;
/**
* The encounter within which the communication was sent.
*/
@Child(name = "encounter", type = {Encounter.class}, order=7, min=0, max=1)
@Child(name = "encounter", type = {Encounter.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Encounter leading to message", formalDefinition="The encounter within which the communication was sent." )
protected Reference encounter;
@ -356,28 +356,28 @@ public class Communication extends DomainResource {
/**
* The time when this communication was sent.
*/
@Child(name = "sent", type = {DateTimeType.class}, order=8, min=0, max=1)
@Child(name = "sent", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When sent", formalDefinition="The time when this communication was sent." )
protected DateTimeType sent;
/**
* The time when this communication arrived at the destination.
*/
@Child(name = "received", type = {DateTimeType.class}, order=9, min=0, max=1)
@Child(name = "received", type = {DateTimeType.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When received", formalDefinition="The time when this communication arrived at the destination." )
protected DateTimeType received;
/**
* The reason or justification for the communication.
*/
@Child(name = "reason", type = {CodeableConcept.class}, order=10, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "reason", type = {CodeableConcept.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Indication for message", formalDefinition="The reason or justification for the communication." )
protected List<CodeableConcept> reason;
/**
* The patient who was the focus of this communication.
*/
@Child(name = "subject", type = {Patient.class}, order=11, min=0, max=1)
@Child(name = "subject", type = {Patient.class}, order=11, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Focus of message", formalDefinition="The patient who was the focus of this communication." )
protected Reference subject;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -235,7 +235,7 @@ public class CommunicationRequest extends DomainResource {
/**
* An individual message part for multi-part messages.
*/
@Child(name = "content", type = {StringType.class, Attachment.class}, order=1, min=1, max=1)
@Child(name = "content", type = {StringType.class, Attachment.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Message part content", formalDefinition="An individual message part for multi-part messages." )
protected Type content;
@ -355,21 +355,21 @@ public class CommunicationRequest extends DomainResource {
/**
* A unique ID of this request for reference purposes. It must be provided if user wants it returned as part of any output, otherwise it will be auto-generated, if needed, by CDS system. Does not need to be the actual ID of the source system.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Unique identifier", formalDefinition="A unique ID of this request for reference purposes. It must be provided if user wants it returned as part of any output, otherwise it will be auto-generated, if needed, by CDS system. Does not need to be the actual ID of the source system." )
protected List<Identifier> identifier;
/**
* The type of message to be sent such as alert, notification, reminder, instruction, etc.
*/
@Child(name = "category", type = {CodeableConcept.class}, order=1, min=0, max=1)
@Child(name = "category", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Message category", formalDefinition="The type of message to be sent such as alert, notification, reminder, instruction, etc." )
protected CodeableConcept category;
/**
* The entity (e.g., person, organization, clinical information system, or device) which is to be the source of the communication.
*/
@Child(name = "sender", type = {Device.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class}, order=2, min=0, max=1)
@Child(name = "sender", type = {Device.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Message sender", formalDefinition="The entity (e.g., person, organization, clinical information system, or device) which is to be the source of the communication." )
protected Reference sender;
@ -381,7 +381,7 @@ public class CommunicationRequest extends DomainResource {
/**
* The entity (e.g., person, organization, clinical information system, or device) which is the intended target of the communication.
*/
@Child(name = "recipient", type = {Device.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "recipient", type = {Device.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Message recipient", formalDefinition="The entity (e.g., person, organization, clinical information system, or device) which is the intended target of the communication." )
protected List<Reference> recipient;
/**
@ -393,21 +393,21 @@ public class CommunicationRequest extends DomainResource {
/**
* Text, attachment(s), or resource(s) to be communicated to the recipient.
*/
@Child(name = "payload", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "payload", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Message payload", formalDefinition="Text, attachment(s), or resource(s) to be communicated to the recipient." )
protected List<CommunicationRequestPayloadComponent> payload;
/**
* The communication medium to be used, e.g., email, fax.
*/
@Child(name = "medium", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "medium", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Communication medium", formalDefinition="The communication medium to be used, e.g., email, fax." )
protected List<CodeableConcept> medium;
/**
* The responsible person who authorizes this order, e.g., physician. This may be different than the author of the order statement, e.g., clerk, who may have entered the statement into the order entry application.
*/
@Child(name = "requester", type = {Practitioner.class, Patient.class, RelatedPerson.class}, order=6, min=0, max=1)
@Child(name = "requester", type = {Practitioner.class, Patient.class, RelatedPerson.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Requester of communication", formalDefinition="The responsible person who authorizes this order, e.g., physician. This may be different than the author of the order statement, e.g., clerk, who may have entered the statement into the order entry application." )
protected Reference requester;
@ -419,14 +419,14 @@ public class CommunicationRequest extends DomainResource {
/**
* The status of the proposal or order.
*/
@Child(name = "status", type = {CodeType.class}, order=7, min=0, max=1)
@Child(name = "status", type = {CodeType.class}, order=7, min=0, max=1, modifier=true, summary=true)
@Description(shortDefinition="proposed | planned | requested | received | accepted | in-progress | completed | suspended | rejected | failed", formalDefinition="The status of the proposal or order." )
protected Enumeration<CommunicationRequestStatus> status;
/**
* The encounter within which the communication request was created.
*/
@Child(name = "encounter", type = {Encounter.class}, order=8, min=0, max=1)
@Child(name = "encounter", type = {Encounter.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Encounter leading to message", formalDefinition="The encounter within which the communication request was created." )
protected Reference encounter;
@ -438,28 +438,28 @@ public class CommunicationRequest extends DomainResource {
/**
* The time when this communication is to occur.
*/
@Child(name = "scheduledTime", type = {DateTimeType.class}, order=9, min=0, max=1)
@Child(name = "scheduledTime", type = {DateTimeType.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When scheduled", formalDefinition="The time when this communication is to occur." )
protected DateTimeType scheduledTime;
/**
* The reason or justification for the communication request.
*/
@Child(name = "reason", type = {CodeableConcept.class}, order=10, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "reason", type = {CodeableConcept.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Indication for message", formalDefinition="The reason or justification for the communication request." )
protected List<CodeableConcept> reason;
/**
* The time when the request was made.
*/
@Child(name = "orderedOn", type = {DateTimeType.class}, order=11, min=0, max=1)
@Child(name = "orderedOn", type = {DateTimeType.class}, order=11, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When ordered or proposed", formalDefinition="The time when the request was made." )
protected DateTimeType orderedOn;
/**
* The patient who is the focus of this communication request.
*/
@Child(name = "subject", type = {Patient.class}, order=12, min=0, max=1)
@Child(name = "subject", type = {Patient.class}, order=12, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Focus of message", formalDefinition="The patient who is the focus of this communication request." )
protected Reference subject;
@ -471,7 +471,7 @@ public class CommunicationRequest extends DomainResource {
/**
* Characterizes how quickly the proposed act must be initiated. Includes concepts such as stat, urgent, routine.
*/
@Child(name = "priority", type = {CodeableConcept.class}, order=13, min=0, max=1)
@Child(name = "priority", type = {CodeableConcept.class}, order=13, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Message urgency", formalDefinition="Characterizes how quickly the proposed act must be initiated. Includes concepts such as stat, urgent, routine." )
protected CodeableConcept priority;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -102,7 +102,7 @@ public class Composition extends DomainResource {
switch (this) {
case PRELIMINARY: return "This is a preliminary composition or document (also known as initial or interim). The content may be incomplete or unverified";
case FINAL: return "This version of the composition is complete and verified by an appropriate person and no further work is planned. Any subsequent updates would be on a new version of the composition.";
case AMENDED: return "The composition content or the referenced resources have been modified (edited or added to) subsequent to being released as 'final' and the composition is complete and verified by an authorized person";
case AMENDED: return "The composition content or the referenced resources have been modified (edited or added to) subsequent to being released as \"final\" and the composition is complete and verified by an authorized person";
case ENTEREDINERROR: return "The composition or document was originally created/issued in error, and this is an amendment that marks that the entire series should not be considered as valid";
default: return "?";
}
@ -251,21 +251,21 @@ public class Composition extends DomainResource {
/**
* The type of attestation the authenticator offers.
*/
@Child(name = "mode", type = {CodeType.class}, order=1, min=1, max=Child.MAX_UNLIMITED)
@Child(name = "mode", type = {CodeType.class}, order=1, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="personal | professional | legal | official", formalDefinition="The type of attestation the authenticator offers." )
protected List<Enumeration<CompositionAttestationMode>> mode;
/**
* When composition was attested by the party.
*/
@Child(name = "time", type = {DateTimeType.class}, order=2, min=0, max=1)
@Child(name = "time", type = {DateTimeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When composition attested", formalDefinition="When composition was attested by the party." )
protected DateTimeType time;
/**
* Who attested the composition in the specified way.
*/
@Child(name = "party", type = {Patient.class, Practitioner.class, Organization.class}, order=3, min=0, max=1)
@Child(name = "party", type = {Patient.class, Practitioner.class, Organization.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Who attested the composition", formalDefinition="Who attested the composition in the specified way." )
protected Reference party;
@ -478,21 +478,21 @@ public class Composition extends DomainResource {
/**
* This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a "History and Physical Report" in which the procedure being documented is necessarily a "History and Physical" act.
*/
@Child(name = "code", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Description(shortDefinition="Code(s) that apply to the event being documented", formalDefinition="This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a 'History and Physical Report' in which the procedure being documented is necessarily a 'History and Physical' act." )
@Child(name = "code", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Code(s) that apply to the event being documented", formalDefinition="This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a \"History and Physical Report\" in which the procedure being documented is necessarily a \"History and Physical\" act." )
protected List<CodeableConcept> code;
/**
* The period of time covered by the documentation. There is no assertion that the documentation is a complete representation for this period, only that it documents events during this time.
*/
@Child(name = "period", type = {Period.class}, order=2, min=0, max=1)
@Child(name = "period", type = {Period.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The period covered by the documentation", formalDefinition="The period of time covered by the documentation. There is no assertion that the documentation is a complete representation for this period, only that it documents events during this time." )
protected Period period;
/**
* The description and/or reference of the event(s) being documented. For example, this could be used to document such a colonoscopy or an appendectomy.
*/
@Child(name = "detail", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "detail", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="The event(s) being documented", formalDefinition="The description and/or reference of the event(s) being documented. For example, this could be used to document such a colonoscopy or an appendectomy." )
protected List<Reference> detail;
/**
@ -625,7 +625,7 @@ public class Composition extends DomainResource {
protected void listChildren(List<Property> childrenList) {
super.listChildren(childrenList);
childrenList.add(new Property("code", "CodeableConcept", "This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a 'History and Physical Report' in which the procedure being documented is necessarily a 'History and Physical' act.", 0, java.lang.Integer.MAX_VALUE, code));
childrenList.add(new Property("code", "CodeableConcept", "This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a \"History and Physical Report\" in which the procedure being documented is necessarily a \"History and Physical\" act.", 0, java.lang.Integer.MAX_VALUE, code));
childrenList.add(new Property("period", "Period", "The period of time covered by the documentation. There is no assertion that the documentation is a complete representation for this period, only that it documents events during this time.", 0, java.lang.Integer.MAX_VALUE, period));
childrenList.add(new Property("detail", "Reference(Any)", "The description and/or reference of the event(s) being documented. For example, this could be used to document such a colonoscopy or an appendectomy.", 0, java.lang.Integer.MAX_VALUE, detail));
}
@ -680,42 +680,42 @@ public class Composition extends DomainResource {
/**
* The label for this particular section. This will be part of the rendered content for the document, and is often used to build a table of contents.
*/
@Child(name = "title", type = {StringType.class}, order=1, min=0, max=1)
@Child(name = "title", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Label for section (e.g. for ToC)", formalDefinition="The label for this particular section. This will be part of the rendered content for the document, and is often used to build a table of contents." )
protected StringType title;
/**
* A code identifying the kind of content contained within the section. This must be consistent with the section title.
*/
@Child(name = "code", type = {CodeableConcept.class}, order=2, min=0, max=1)
@Child(name = "code", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Classification of section (recommended)", formalDefinition="A code identifying the kind of content contained within the section. This must be consistent with the section title." )
protected CodeableConcept code;
/**
* A human-readable narrative that contains the attested content of the section, used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it "clinically safe" for a human to just read the narrative.
*/
@Child(name = "text", type = {Narrative.class}, order=3, min=0, max=1)
@Description(shortDefinition="Text summary of the section, for human interpretation", formalDefinition="A human-readable narrative that contains the attested content of the section, used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it 'clinically safe' for a human to just read the narrative." )
@Child(name = "text", type = {Narrative.class}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Text summary of the section, for human interpretation", formalDefinition="A human-readable narrative that contains the attested content of the section, used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative." )
protected Narrative text;
/**
* How the entry list was prepared - whether it is a working list that is suitable for being maintained on an ongoing basis, or if it represents a snapshot of a list of items from another source, or whether it is a prepared list where items may be marked as added, modified or deleted.
*/
@Child(name = "mode", type = {CodeType.class}, order=4, min=0, max=1)
@Child(name = "mode", type = {CodeType.class}, order=4, min=0, max=1, modifier=true, summary=true)
@Description(shortDefinition="working | snapshot | changes", formalDefinition="How the entry list was prepared - whether it is a working list that is suitable for being maintained on an ongoing basis, or if it represents a snapshot of a list of items from another source, or whether it is a prepared list where items may be marked as added, modified or deleted." )
protected CodeType mode;
/**
* What order applies to the items in the section entries.
*/
@Child(name = "orderedBy", type = {CodeableConcept.class}, order=5, min=0, max=1)
@Child(name = "orderedBy", type = {CodeableConcept.class}, order=5, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="What order the section entries are in", formalDefinition="What order applies to the items in the section entries." )
protected CodeableConcept orderedBy;
/**
* A reference to the actual resource from which the narrative in the section is derived.
*/
@Child(name = "entry", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "entry", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="A reference to data that supports this section", formalDefinition="A reference to the actual resource from which the narrative in the section is derived." )
protected List<Reference> entry;
/**
@ -727,14 +727,14 @@ public class Composition extends DomainResource {
/**
* If the section is empty, why the list is empty. An empty section typically has some text explaining the empty reason.
*/
@Child(name = "emptyReason", type = {CodeableConcept.class}, order=7, min=0, max=1)
@Child(name = "emptyReason", type = {CodeableConcept.class}, order=7, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Why the section is empty", formalDefinition="If the section is empty, why the list is empty. An empty section typically has some text explaining the empty reason." )
protected CodeableConcept emptyReason;
/**
* A nested sub-section within this section.
*/
@Child(name = "section", type = {SectionComponent.class}, order=8, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "section", type = {SectionComponent.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Nested Section", formalDefinition="A nested sub-section within this section." )
protected List<SectionComponent> section;
@ -1034,7 +1034,7 @@ public class Composition extends DomainResource {
super.listChildren(childrenList);
childrenList.add(new Property("title", "string", "The label for this particular section. This will be part of the rendered content for the document, and is often used to build a table of contents.", 0, java.lang.Integer.MAX_VALUE, title));
childrenList.add(new Property("code", "CodeableConcept", "A code identifying the kind of content contained within the section. This must be consistent with the section title.", 0, java.lang.Integer.MAX_VALUE, code));
childrenList.add(new Property("text", "Narrative", "A human-readable narrative that contains the attested content of the section, used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it 'clinically safe' for a human to just read the narrative.", 0, java.lang.Integer.MAX_VALUE, text));
childrenList.add(new Property("text", "Narrative", "A human-readable narrative that contains the attested content of the section, used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative.", 0, java.lang.Integer.MAX_VALUE, text));
childrenList.add(new Property("mode", "code", "How the entry list was prepared - whether it is a working list that is suitable for being maintained on an ongoing basis, or if it represents a snapshot of a list of items from another source, or whether it is a prepared list where items may be marked as added, modified or deleted.", 0, java.lang.Integer.MAX_VALUE, mode));
childrenList.add(new Property("orderedBy", "CodeableConcept", "What order applies to the items in the section entries.", 0, java.lang.Integer.MAX_VALUE, orderedBy));
childrenList.add(new Property("entry", "Reference(Any)", "A reference to the actual resource from which the narrative in the section is derived.", 0, java.lang.Integer.MAX_VALUE, entry));
@ -1098,56 +1098,56 @@ public class Composition extends DomainResource {
/**
* Logical Identifier for the composition, assigned when created. This identifier stays constant as the composition is changed over time.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=1)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Logical identifier of composition (version-independent)", formalDefinition="Logical Identifier for the composition, assigned when created. This identifier stays constant as the composition is changed over time." )
protected Identifier identifier;
/**
* The composition editing time, when the composition was last logically changed by the author.
*/
@Child(name = "date", type = {DateTimeType.class}, order=1, min=1, max=1)
@Child(name = "date", type = {DateTimeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Composition editing time", formalDefinition="The composition editing time, when the composition was last logically changed by the author." )
protected DateTimeType date;
/**
* Specifies the particular kind of composition (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the composition.
*/
@Child(name = "type", type = {CodeableConcept.class}, order=2, min=1, max=1)
@Child(name = "type", type = {CodeableConcept.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Kind of composition (LOINC if possible)", formalDefinition="Specifies the particular kind of composition (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the composition." )
protected CodeableConcept type;
/**
* A categorization for the type of the composition - helps for indexing and searching. This may be implied by or derived from the code specified in the Composition Type.
*/
@Child(name = "class", type = {CodeableConcept.class}, order=3, min=0, max=1)
@Child(name = "class", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Categorization of Composition", formalDefinition="A categorization for the type of the composition - helps for indexing and searching. This may be implied by or derived from the code specified in the Composition Type." )
protected CodeableConcept class_;
/**
* Official human-readable label for the composition.
*/
@Child(name = "title", type = {StringType.class}, order=4, min=1, max=1)
@Child(name = "title", type = {StringType.class}, order=4, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Human Readable name/title", formalDefinition="Official human-readable label for the composition." )
protected StringType title;
/**
* The workflow/clinical status of this composition. The status is a marker for the clinical standing of the document.
*/
@Child(name = "status", type = {CodeType.class}, order=5, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=5, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="preliminary | final | amended | entered-in-error", formalDefinition="The workflow/clinical status of this composition. The status is a marker for the clinical standing of the document." )
protected Enumeration<CompositionStatus> status;
/**
* The code specifying the level of confidentiality of the Composition.
*/
@Child(name = "confidentiality", type = {CodeType.class}, order=6, min=0, max=1)
@Child(name = "confidentiality", type = {CodeType.class}, order=6, min=0, max=1, modifier=true, summary=true)
@Description(shortDefinition="As defined by affinity domain", formalDefinition="The code specifying the level of confidentiality of the Composition." )
protected CodeType confidentiality;
/**
* Who or what the composition is about. The composition can be about a person, (patient or healthcare practitioner), a device (I.e. machine) or even a group of subjects (such as a document about a herd of livestock, or a set of patients that share a common exposure).
*/
@Child(name = "subject", type = {}, order=7, min=1, max=1)
@Child(name = "subject", type = {}, order=7, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Who and/or what the composition is about", formalDefinition="Who or what the composition is about. The composition can be about a person, (patient or healthcare practitioner), a device (I.e. machine) or even a group of subjects (such as a document about a herd of livestock, or a set of patients that share a common exposure)." )
protected Reference subject;
@ -1159,7 +1159,7 @@ public class Composition extends DomainResource {
/**
* Identifies who is responsible for the information in the composition. (Not necessarily who typed it in.).
*/
@Child(name = "author", type = {Practitioner.class, Device.class, Patient.class, RelatedPerson.class}, order=8, min=1, max=Child.MAX_UNLIMITED)
@Child(name = "author", type = {Practitioner.class, Device.class, Patient.class, RelatedPerson.class}, order=8, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Who and/or what authored the composition", formalDefinition="Identifies who is responsible for the information in the composition. (Not necessarily who typed it in.)." )
protected List<Reference> author;
/**
@ -1171,14 +1171,14 @@ public class Composition extends DomainResource {
/**
* A participant who has attested to the accuracy of the composition/document.
*/
@Child(name = "attester", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "attester", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Attests to accuracy of composition", formalDefinition="A participant who has attested to the accuracy of the composition/document." )
protected List<CompositionAttesterComponent> attester;
/**
* Identifies the organization or group who is responsible for ongoing maintenance of and access to the composition/document information.
*/
@Child(name = "custodian", type = {Organization.class}, order=10, min=0, max=1)
@Child(name = "custodian", type = {Organization.class}, order=10, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Org which maintains the composition", formalDefinition="Identifies the organization or group who is responsible for ongoing maintenance of and access to the composition/document information." )
protected Reference custodian;
@ -1190,14 +1190,14 @@ public class Composition extends DomainResource {
/**
* The clinical service, such as a colonoscopy or an appendectomy, being documented.
*/
@Child(name = "event", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "event", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="The clinical service(s) being documented", formalDefinition="The clinical service, such as a colonoscopy or an appendectomy, being documented." )
protected List<CompositionEventComponent> event;
/**
* Describes the clinical encounter or type of care this documentation is associated with.
*/
@Child(name = "encounter", type = {Encounter.class}, order=12, min=0, max=1)
@Child(name = "encounter", type = {Encounter.class}, order=12, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Context of the conposition", formalDefinition="Describes the clinical encounter or type of care this documentation is associated with." )
protected Reference encounter;
@ -1209,7 +1209,7 @@ public class Composition extends DomainResource {
/**
* The root of the sections that make up the composition.
*/
@Child(name = "section", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "section", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Composition is broken into sections", formalDefinition="The root of the sections that make up the composition." )
protected List<SectionComponent> section;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -52,14 +52,14 @@ public class ConceptMap extends DomainResource {
/**
* The name of an individual to contact regarding the concept map.
*/
@Child(name = "name", type = {StringType.class}, order=1, min=0, max=1)
@Child(name = "name", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Name of a individual to contact", formalDefinition="The name of an individual to contact regarding the concept map." )
protected StringType name;
/**
* Contact details for individual (if a name was provided) or the publisher.
*/
@Child(name = "telecom", type = {ContactPoint.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "telecom", type = {ContactPoint.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Contact details for individual or publisher", formalDefinition="Contact details for individual (if a name was provided) or the publisher." )
protected List<ContactPoint> telecom;
@ -211,21 +211,21 @@ public class ConceptMap extends DomainResource {
/**
* An absolute URI that identifies the Code System (if the source is a value set that crosses more than one code system).
*/
@Child(name = "codeSystem", type = {UriType.class}, order=1, min=0, max=1)
@Child(name = "codeSystem", type = {UriType.class}, order=1, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Code System (if value set crosses code systems)", formalDefinition="An absolute URI that identifies the Code System (if the source is a value set that crosses more than one code system)." )
protected UriType codeSystem;
/**
* Identity (code or path) or the element/item being mapped.
*/
@Child(name = "code", type = {CodeType.class}, order=2, min=0, max=1)
@Child(name = "code", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Identifies element being mapped", formalDefinition="Identity (code or path) or the element/item being mapped." )
protected CodeType code;
/**
* A concept from the target value set that this concept maps to.
*/
@Child(name = "target", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "target", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Concept in target system for element", formalDefinition="A concept from the target value set that this concept maps to." )
protected List<TargetElementComponent> target;
@ -429,42 +429,42 @@ public class ConceptMap extends DomainResource {
/**
* An absolute URI that identifies the code system of the target code (if the target is a value set that cross code systems).
*/
@Child(name = "codeSystem", type = {UriType.class}, order=1, min=0, max=1)
@Child(name = "codeSystem", type = {UriType.class}, order=1, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="System of the target (if necessary)", formalDefinition="An absolute URI that identifies the code system of the target code (if the target is a value set that cross code systems)." )
protected UriType codeSystem;
/**
* Identity (code or path) or the element/item that the map refers to.
*/
@Child(name = "code", type = {CodeType.class}, order=2, min=0, max=1)
@Child(name = "code", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Code that identifies the target element", formalDefinition="Identity (code or path) or the element/item that the map refers to." )
protected CodeType code;
/**
* The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source).
*/
@Child(name = "equivalence", type = {CodeType.class}, order=3, min=1, max=1)
@Child(name = "equivalence", type = {CodeType.class}, order=3, min=1, max=1, modifier=true, summary=false)
@Description(shortDefinition="equivalent | equal | wider | subsumes | narrower | specializes | inexact | unmatched | disjoint", formalDefinition="The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source)." )
protected Enumeration<ConceptMapEquivalence> equivalence;
/**
* A description of status/issues in mapping that conveys additional information not represented in the structured data.
*/
@Child(name = "comments", type = {StringType.class}, order=4, min=0, max=1)
@Child(name = "comments", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Description of status/issues in mapping", formalDefinition="A description of status/issues in mapping that conveys additional information not represented in the structured data." )
protected StringType comments;
/**
* A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value.
*/
@Child(name = "dependsOn", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "dependsOn", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Other elements required for this mapping (from context)", formalDefinition="A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value." )
protected List<OtherElementComponent> dependsOn;
/**
* A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied on.
*/
@Child(name = "product", type = {OtherElementComponent.class}, order=6, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "product", type = {OtherElementComponent.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Other concepts that this mapping also produces", formalDefinition="A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied on." )
protected List<OtherElementComponent> product;
@ -823,21 +823,21 @@ public class ConceptMap extends DomainResource {
/**
* A reference to a specific concept that holds a coded value. This can be an element in a FHIR resource, or a specific reference to a data element in a different specification (e.g. v2) or a general reference to a kind of data field, or a reference to a value set with an appropriately narrow definition.
*/
@Child(name = "element", type = {UriType.class}, order=1, min=1, max=1)
@Child(name = "element", type = {UriType.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Reference to element/field/valueset mapping depends on", formalDefinition="A reference to a specific concept that holds a coded value. This can be an element in a FHIR resource, or a specific reference to a data element in a different specification (e.g. v2) or a general reference to a kind of data field, or a reference to a value set with an appropriately narrow definition." )
protected UriType element;
/**
* An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems).
*/
@Child(name = "codeSystem", type = {UriType.class}, order=2, min=1, max=1)
@Child(name = "codeSystem", type = {UriType.class}, order=2, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Code System (if necessary)", formalDefinition="An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems)." )
protected UriType codeSystem;
/**
* Identity (code or path) or the element/item that the map depends on / refers to.
*/
@Child(name = "code", type = {StringType.class}, order=3, min=1, max=1)
@Child(name = "code", type = {StringType.class}, order=3, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Value of the referenced element", formalDefinition="Identity (code or path) or the element/item that the map depends on / refers to." )
protected StringType code;
@ -1043,112 +1043,112 @@ public class ConceptMap extends DomainResource {
/**
* An absolute URL that is used to identify this concept map when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this concept map is (or will be) published.
*/
@Child(name = "url", type = {UriType.class}, order=0, min=0, max=1)
@Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Globally unique logical id for concept map", formalDefinition="An absolute URL that is used to identify this concept map when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this concept map is (or will be) published." )
protected UriType url;
/**
* Formal identifier that is used to identify this concept map when it is represented in other formats, or referenced in a specification, model, design or an instance.
*/
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1)
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Additional identifier for the concept map", formalDefinition="Formal identifier that is used to identify this concept map when it is represented in other formats, or referenced in a specification, model, design or an instance." )
protected Identifier identifier;
/**
* The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp.
*/
@Child(name = "version", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Logical id for this version of the concept map", formalDefinition="The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp." )
protected StringType version;
/**
* A free text natural language name describing the concept map.
*/
@Child(name = "name", type = {StringType.class}, order=3, min=0, max=1)
@Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Informal name for this concept map", formalDefinition="A free text natural language name describing the concept map." )
protected StringType name;
/**
* The status of the concept map.
*/
@Child(name = "status", type = {CodeType.class}, order=4, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=4, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="draft | active | retired", formalDefinition="The status of the concept map." )
protected Enumeration<ConformanceResourceStatus> status;
/**
* This ConceptMap was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage.
*/
@Child(name = "experimental", type = {BooleanType.class}, order=5, min=0, max=1)
@Child(name = "experimental", type = {BooleanType.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="If for testing purposes, not real usage", formalDefinition="This ConceptMap was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage." )
protected BooleanType experimental;
/**
* The name of the individual or organization that published the concept map.
*/
@Child(name = "publisher", type = {StringType.class}, order=6, min=0, max=1)
@Child(name = "publisher", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Name of the publisher (Organization or individual)", formalDefinition="The name of the individual or organization that published the concept map." )
protected StringType publisher;
/**
* Contacts to assist a user in finding and communicating with the publisher.
*/
@Child(name = "contact", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "contact", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Contact details of the publisher", formalDefinition="Contacts to assist a user in finding and communicating with the publisher." )
protected List<ConceptMapContactComponent> contact;
/**
* The date that this version of the concept map was published. The date must change when the business version changes, if it does, and it must change if the status code changes. in addition, it should change when the substantiative content of the concept map changes.
*/
@Child(name = "date", type = {DateTimeType.class}, order=8, min=0, max=1)
@Child(name = "date", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Date for given status", formalDefinition="The date that this version of the concept map was published. The date must change when the business version changes, if it does, and it must change if the status code changes. in addition, it should change when the substantiative content of the concept map changes." )
protected DateTimeType date;
/**
* A free text natural language description of the use of the concept map - reason for definition, conditions of use, etc.
*/
@Child(name = "description", type = {StringType.class}, order=9, min=0, max=1)
@Child(name = "description", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Human language description of the concept map", formalDefinition="A free text natural language description of the use of the concept map - reason for definition, conditions of use, etc." )
protected StringType description;
/**
* The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of concept maps.
*/
@Child(name = "useContext", type = {CodeableConcept.class}, order=10, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "useContext", type = {CodeableConcept.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Content intends to support these contexts", formalDefinition="The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of concept maps." )
protected List<CodeableConcept> useContext;
/**
* Explains why this concept map is needed and why it's been constrained as it has.
*/
@Child(name = "requirements", type = {StringType.class}, order=11, min=0, max=1)
@Child(name = "requirements", type = {StringType.class}, order=11, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Why is this needed?", formalDefinition="Explains why this concept map is needed and why it's been constrained as it has." )
protected StringType requirements;
/**
* A copyright statement relating to the concept map and/or its contents.
*/
@Child(name = "copyright", type = {StringType.class}, order=12, min=0, max=1)
@Child(name = "copyright", type = {StringType.class}, order=12, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Use and/or Publishing restrictions", formalDefinition="A copyright statement relating to the concept map and/or its contents." )
protected StringType copyright;
/**
* The source value set that specifies the concepts that are being mapped.
*/
@Child(name = "source", type = {UriType.class, ValueSet.class, StructureDefinition.class}, order=13, min=1, max=1)
@Child(name = "source", type = {UriType.class, ValueSet.class, StructureDefinition.class}, order=13, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Identifies the source of the concepts which are being mapped", formalDefinition="The source value set that specifies the concepts that are being mapped." )
protected Type source;
/**
* The target value set provides context to the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made.
*/
@Child(name = "target", type = {UriType.class, ValueSet.class, StructureDefinition.class}, order=14, min=1, max=1)
@Child(name = "target", type = {UriType.class, ValueSet.class, StructureDefinition.class}, order=14, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Provides context to the mappings", formalDefinition="The target value set provides context to the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made." )
protected Type target;
/**
* Mappings for an individual concept in the source to one or more concepts in the target.
*/
@Child(name = "element", type = {}, order=15, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "element", type = {}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Mappings for a concept from the source set", formalDefinition="Mappings for an individual concept in the source to one or more concepts in the target." )
protected List<SourceElementComponent> element;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -121,7 +121,7 @@ public class Condition extends DomainResource {
case CONFIRMED: return "There is sufficient diagnostic and/or clinical evidence to treat this as a confirmed condition";
case REFUTED: return "This condition has been ruled out by diagnostic and clinical evidence";
case ENTEREDINERROR: return "The statement was entered in error and Is not valid";
case UNKNOWN: return "The condition status is unknown. Note that 'unknown' is a value of last resort and every attempt should be made to provide a meaningful value other than 'unknown'";
case UNKNOWN: return "The condition status is unknown. Note that \"unknown\" is a value of last resort and every attempt should be made to provide a meaningful value other than \"unknown\"";
default: return "?";
}
}
@ -179,14 +179,14 @@ public class Condition extends DomainResource {
/**
* A simple summary of the stage such as "Stage 3". The determination of the stage is disease-specific.
*/
@Child(name = "summary", type = {CodeableConcept.class}, order=1, min=0, max=1)
@Description(shortDefinition="Simple summary (disease specific)", formalDefinition="A simple summary of the stage such as 'Stage 3'. The determination of the stage is disease-specific." )
@Child(name = "summary", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Simple summary (disease specific)", formalDefinition="A simple summary of the stage such as \"Stage 3\". The determination of the stage is disease-specific." )
protected CodeableConcept summary;
/**
* Reference to a formal record of the evidence on which the staging assessment is based.
*/
@Child(name = "assessment", type = {ClinicalImpression.class, DiagnosticReport.class, Observation.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "assessment", type = {ClinicalImpression.class, DiagnosticReport.class, Observation.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Formal record of assessment", formalDefinition="Reference to a formal record of the evidence on which the staging assessment is based." )
protected List<Reference> assessment;
/**
@ -279,7 +279,7 @@ public class Condition extends DomainResource {
protected void listChildren(List<Property> childrenList) {
super.listChildren(childrenList);
childrenList.add(new Property("summary", "CodeableConcept", "A simple summary of the stage such as 'Stage 3'. The determination of the stage is disease-specific.", 0, java.lang.Integer.MAX_VALUE, summary));
childrenList.add(new Property("summary", "CodeableConcept", "A simple summary of the stage such as \"Stage 3\". The determination of the stage is disease-specific.", 0, java.lang.Integer.MAX_VALUE, summary));
childrenList.add(new Property("assessment", "Reference(ClinicalImpression|DiagnosticReport|Observation)", "Reference to a formal record of the evidence on which the staging assessment is based.", 0, java.lang.Integer.MAX_VALUE, assessment));
}
@ -327,14 +327,14 @@ public class Condition extends DomainResource {
/**
* A manifestation or symptom that led to the recording of this condition.
*/
@Child(name = "code", type = {CodeableConcept.class}, order=1, min=0, max=1)
@Child(name = "code", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Manifestation/symptom", formalDefinition="A manifestation or symptom that led to the recording of this condition." )
protected CodeableConcept code;
/**
* Links to other relevant information, including pathology reports.
*/
@Child(name = "detail", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "detail", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Supporting information found elsewhere", formalDefinition="Links to other relevant information, including pathology reports." )
protected List<Reference> detail;
/**
@ -473,14 +473,14 @@ public class Condition extends DomainResource {
/**
* This records identifiers associated with this condition that are defined by business processed and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="External Ids for this condition", formalDefinition="This records identifiers associated with this condition that are defined by business processed and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)." )
protected List<Identifier> identifier;
/**
* Indicates the patient who the condition record is associated with.
*/
@Child(name = "patient", type = {Patient.class}, order=1, min=1, max=1)
@Child(name = "patient", type = {Patient.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Who has the condition?", formalDefinition="Indicates the patient who the condition record is associated with." )
protected Reference patient;
@ -492,7 +492,7 @@ public class Condition extends DomainResource {
/**
* Encounter during which the condition was first asserted.
*/
@Child(name = "encounter", type = {Encounter.class}, order=2, min=0, max=1)
@Child(name = "encounter", type = {Encounter.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Encounter when condition first asserted", formalDefinition="Encounter during which the condition was first asserted." )
protected Reference encounter;
@ -504,7 +504,7 @@ public class Condition extends DomainResource {
/**
* Individual who is making the condition statement.
*/
@Child(name = "asserter", type = {Practitioner.class, Patient.class}, order=3, min=0, max=1)
@Child(name = "asserter", type = {Practitioner.class, Patient.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Person who asserts this condition", formalDefinition="Individual who is making the condition statement." )
protected Reference asserter;
@ -516,84 +516,84 @@ public class Condition extends DomainResource {
/**
* A date, when the Condition statement was documented.
*/
@Child(name = "dateRecorded", type = {DateType.class}, order=4, min=0, max=1)
@Child(name = "dateRecorded", type = {DateType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When first entered", formalDefinition="A date, when the Condition statement was documented." )
protected DateType dateRecorded;
/**
* Identification of the condition, problem or diagnosis.
*/
@Child(name = "code", type = {CodeableConcept.class}, order=5, min=1, max=1)
@Child(name = "code", type = {CodeableConcept.class}, order=5, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Identification of the condition, problem or diagnosis", formalDefinition="Identification of the condition, problem or diagnosis." )
protected CodeableConcept code;
/**
* A category assigned to the condition.
*/
@Child(name = "category", type = {CodeableConcept.class}, order=6, min=0, max=1)
@Child(name = "category", type = {CodeableConcept.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="complaint | symptom | finding | diagnosis", formalDefinition="A category assigned to the condition." )
protected CodeableConcept category;
/**
* The clinical status of the condition.
*/
@Child(name = "clinicalStatus", type = {CodeType.class}, order=7, min=0, max=1)
@Child(name = "clinicalStatus", type = {CodeType.class}, order=7, min=0, max=1, modifier=true, summary=true)
@Description(shortDefinition="active | relapse | remission | resolved", formalDefinition="The clinical status of the condition." )
protected CodeType clinicalStatus;
/**
* The verification status to support the clinical status of the condition.
*/
@Child(name = "verificationStatus", type = {CodeType.class}, order=8, min=1, max=1)
@Child(name = "verificationStatus", type = {CodeType.class}, order=8, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="provisional | differential | confirmed | refuted | entered-in-error | unknown", formalDefinition="The verification status to support the clinical status of the condition." )
protected Enumeration<ConditionVerificationStatus> verificationStatus;
/**
* A subjective assessment of the severity of the condition as evaluated by the clinician.
*/
@Child(name = "severity", type = {CodeableConcept.class}, order=9, min=0, max=1)
@Child(name = "severity", type = {CodeableConcept.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Subjective severity of condition", formalDefinition="A subjective assessment of the severity of the condition as evaluated by the clinician." )
protected CodeableConcept severity;
/**
* Estimated or actual date or date-time the condition began, in the opinion of the clinician.
*/
@Child(name = "onset", type = {DateTimeType.class, Age.class, Period.class, Range.class, StringType.class}, order=10, min=0, max=1)
@Child(name = "onset", type = {DateTimeType.class, Age.class, Period.class, Range.class, StringType.class}, order=10, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Estimated or actual date, date-time, or age", formalDefinition="Estimated or actual date or date-time the condition began, in the opinion of the clinician." )
protected Type onset;
/**
* The date or estimated date that the condition resolved or went into remission. This is called "abatement" because of the many overloaded connotations associated with "remission" or "resolution" - Conditions are never really resolved, but they can abate.
*/
@Child(name = "abatement", type = {DateTimeType.class, Age.class, BooleanType.class, Period.class, Range.class, StringType.class}, order=11, min=0, max=1)
@Description(shortDefinition="If/when in resolution/remission", formalDefinition="The date or estimated date that the condition resolved or went into remission. This is called 'abatement' because of the many overloaded connotations associated with 'remission' or 'resolution' - Conditions are never really resolved, but they can abate." )
@Child(name = "abatement", type = {DateTimeType.class, Age.class, BooleanType.class, Period.class, Range.class, StringType.class}, order=11, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="If/when in resolution/remission", formalDefinition="The date or estimated date that the condition resolved or went into remission. This is called \"abatement\" because of the many overloaded connotations associated with \"remission\" or \"resolution\" - Conditions are never really resolved, but they can abate." )
protected Type abatement;
/**
* Clinical stage or grade of a condition. May include formal severity assessments.
*/
@Child(name = "stage", type = {}, order=12, min=0, max=1)
@Child(name = "stage", type = {}, order=12, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Stage/grade, usually assessed formally", formalDefinition="Clinical stage or grade of a condition. May include formal severity assessments." )
protected ConditionStageComponent stage;
/**
* Supporting Evidence / manifestations that are the basis on which this condition is suspected or confirmed.
*/
@Child(name = "evidence", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "evidence", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Supporting evidence", formalDefinition="Supporting Evidence / manifestations that are the basis on which this condition is suspected or confirmed." )
protected List<ConditionEvidenceComponent> evidence;
/**
* The anatomical location where this condition manifests itself.
*/
@Child(name = "bodySite", type = {CodeableConcept.class}, order=14, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "bodySite", type = {CodeableConcept.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Anatomical location, if relevant", formalDefinition="The anatomical location where this condition manifests itself." )
protected List<CodeableConcept> bodySite;
/**
* Additional information about the Condition. This is a general notes/comments entry for description of the Condition, its diagnosis and prognosis.
*/
@Child(name = "notes", type = {StringType.class}, order=15, min=0, max=1)
@Child(name = "notes", type = {StringType.class}, order=15, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Additional information about the Condition", formalDefinition="Additional information about the Condition. This is a general notes/comments entry for description of the Condition, its diagnosis and prognosis." )
protected StringType notes;
@ -1345,7 +1345,7 @@ public class Condition extends DomainResource {
childrenList.add(new Property("verificationStatus", "code", "The verification status to support the clinical status of the condition.", 0, java.lang.Integer.MAX_VALUE, verificationStatus));
childrenList.add(new Property("severity", "CodeableConcept", "A subjective assessment of the severity of the condition as evaluated by the clinician.", 0, java.lang.Integer.MAX_VALUE, severity));
childrenList.add(new Property("onset[x]", "dateTime|Age|Period|Range|string", "Estimated or actual date or date-time the condition began, in the opinion of the clinician.", 0, java.lang.Integer.MAX_VALUE, onset));
childrenList.add(new Property("abatement[x]", "dateTime|Age|boolean|Period|Range|string", "The date or estimated date that the condition resolved or went into remission. This is called 'abatement' because of the many overloaded connotations associated with 'remission' or 'resolution' - Conditions are never really resolved, but they can abate.", 0, java.lang.Integer.MAX_VALUE, abatement));
childrenList.add(new Property("abatement[x]", "dateTime|Age|boolean|Period|Range|string", "The date or estimated date that the condition resolved or went into remission. This is called \"abatement\" because of the many overloaded connotations associated with \"remission\" or \"resolution\" - Conditions are never really resolved, but they can abate.", 0, java.lang.Integer.MAX_VALUE, abatement));
childrenList.add(new Property("stage", "", "Clinical stage or grade of a condition. May include formal severity assessments.", 0, java.lang.Integer.MAX_VALUE, stage));
childrenList.add(new Property("evidence", "", "Supporting Evidence / manifestations that are the basis on which this condition is suspected or confirmed.", 0, java.lang.Integer.MAX_VALUE, evidence));
childrenList.add(new Property("bodySite", "CodeableConcept", "The anatomical location where this condition manifests itself.", 0, java.lang.Integer.MAX_VALUE, bodySite));

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -42,7 +42,7 @@ import org.hl7.fhir.instance.model.annotations.Description;
import org.hl7.fhir.instance.model.annotations.Block;
import org.hl7.fhir.instance.model.api.*;
/**
* A conformance statement is a set of requirements for a desired implementation or a description of how a target application fulfills those requirements in a particular implementation.
* A conformance statement is a set of capabilities of a FHIR Server that may be used as a statement of actual server functionality or a statement of required or desired server implementation.
*/
@ResourceDef(name="Conformance", profile="http://hl7.org/fhir/Profile/Conformance")
public class Conformance extends DomainResource implements IBaseConformance {
@ -1252,14 +1252,14 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* The name of an individual to contact regarding the conformance.
*/
@Child(name = "name", type = {StringType.class}, order=1, min=0, max=1)
@Child(name = "name", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Name of a individual to contact", formalDefinition="The name of an individual to contact regarding the conformance." )
protected StringType name;
/**
* Contact details for individual (if a name was provided) or the publisher.
*/
@Child(name = "telecom", type = {ContactPoint.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "telecom", type = {ContactPoint.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Contact details for individual or publisher", formalDefinition="Contact details for individual (if a name was provided) or the publisher." )
protected List<ContactPoint> telecom;
@ -1411,21 +1411,21 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* Name software is known by.
*/
@Child(name = "name", type = {StringType.class}, order=1, min=1, max=1)
@Child(name = "name", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="A name the software is known by", formalDefinition="Name software is known by." )
protected StringType name;
/**
* The version identifier for the software covered by this statement.
*/
@Child(name = "version", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Version covered by this statement", formalDefinition="The version identifier for the software covered by this statement." )
protected StringType version;
/**
* Date this version of the software released.
*/
@Child(name = "releaseDate", type = {DateTimeType.class}, order=3, min=0, max=1)
@Child(name = "releaseDate", type = {DateTimeType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Date this version released", formalDefinition="Date this version of the software released." )
protected DateTimeType releaseDate;
@ -1639,14 +1639,14 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* Information about the specific installation that this conformance statement relates to.
*/
@Child(name = "description", type = {StringType.class}, order=1, min=1, max=1)
@Child(name = "description", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Describes this specific instance", formalDefinition="Information about the specific installation that this conformance statement relates to." )
protected StringType description;
/**
* An absolute base URL for the implementation. This forms the base for REST interfaces as well as the mailbox and document interfaces.
*/
@Child(name = "url", type = {UriType.class}, order=2, min=0, max=1)
@Child(name = "url", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Base URL for the installation", formalDefinition="An absolute base URL for the implementation. This forms the base for REST interfaces as well as the mailbox and document interfaces." )
protected UriType url;
@ -1807,67 +1807,74 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* Identifies whether this portion of the statement is describing ability to initiate or receive restful operations.
*/
@Child(name = "mode", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "mode", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="client | server", formalDefinition="Identifies whether this portion of the statement is describing ability to initiate or receive restful operations." )
protected Enumeration<RestfulConformanceMode> mode;
/**
* Information about the system's restful capabilities that apply across all applications, such as security.
*/
@Child(name = "documentation", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "documentation", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="General description of implementation", formalDefinition="Information about the system's restful capabilities that apply across all applications, such as security." )
protected StringType documentation;
/**
* Information about security implementation from an interface perspective - what a client needs to know.
*/
@Child(name = "security", type = {}, order=3, min=0, max=1)
@Child(name = "security", type = {}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Information about security of implementation", formalDefinition="Information about security implementation from an interface perspective - what a client needs to know." )
protected ConformanceRestSecurityComponent security;
/**
* A specification of the restful capabilities of the solution for a specific resource type.
*/
@Child(name = "resource", type = {}, order=4, min=1, max=Child.MAX_UNLIMITED)
@Child(name = "resource", type = {}, order=4, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Resource served on the REST interface", formalDefinition="A specification of the restful capabilities of the solution for a specific resource type." )
protected List<ConformanceRestResourceComponent> resource;
/**
* A specification of restful operations supported by the system.
*/
@Child(name = "interaction", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "interaction", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="What operations are supported?", formalDefinition="A specification of restful operations supported by the system." )
protected List<SystemInteractionComponent> interaction;
/**
* A code that indicates how transactions are supported.
*/
@Child(name = "transactionMode", type = {CodeType.class}, order=6, min=0, max=1)
@Child(name = "transactionMode", type = {CodeType.class}, order=6, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="not-supported | batch | transaction | both", formalDefinition="A code that indicates how transactions are supported." )
protected Enumeration<TransactionMode> transactionMode;
/**
* Search parameters that are supported for searching all resources for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation.
*/
@Child(name = "searchParam", type = {ConformanceRestResourceSearchParamComponent.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Search params for searching all resources", formalDefinition="Search parameters that are supported for searching all resources for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation." )
protected List<ConformanceRestResourceSearchParamComponent> searchParam;
/**
* Definition of an operation or a named query and with its parameters and their meaning and type.
*/
@Child(name = "operation", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "operation", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Definition of an operation or a custom query", formalDefinition="Definition of an operation or a named query and with its parameters and their meaning and type." )
protected List<ConformanceRestOperationComponent> operation;
/**
* A list of absolute URIs that identify profiles that this server implements for accepting documents in the mailbox. If this list is empty, then documents are not accepted. The base specification has the profile identifier "http://hl7.org/fhir/documents/mailbox". Other specifications can declare their own identifier for this purpose.
*/
@Child(name = "documentMailbox", type = {UriType.class}, order=8, min=0, max=Child.MAX_UNLIMITED)
@Description(shortDefinition="How documents are accepted in /Mailbox", formalDefinition="A list of absolute URIs that identify profiles that this server implements for accepting documents in the mailbox. If this list is empty, then documents are not accepted. The base specification has the profile identifier 'http://hl7.org/fhir/documents/mailbox'. Other specifications can declare their own identifier for this purpose." )
@Child(name = "documentMailbox", type = {UriType.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="How documents are accepted in /Mailbox", formalDefinition="A list of absolute URIs that identify profiles that this server implements for accepting documents in the mailbox. If this list is empty, then documents are not accepted. The base specification has the profile identifier \"http://hl7.org/fhir/documents/mailbox\". Other specifications can declare their own identifier for this purpose." )
protected List<UriType> documentMailbox;
/**
* An absolute URI which is a reference to the definition of a compartment hosted by the system.
*/
@Child(name = "compartment", type = {UriType.class}, order=9, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "compartment", type = {UriType.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Compartments served/used by system", formalDefinition="An absolute URI which is a reference to the definition of a compartment hosted by the system." )
protected List<UriType> compartment;
private static final long serialVersionUID = 471286912L;
private static final long serialVersionUID = -881838536L;
/*
* Constructor
@ -2131,6 +2138,46 @@ public class Conformance extends DomainResource implements IBaseConformance {
return this;
}
/**
* @return {@link #searchParam} (Search parameters that are supported for searching all resources for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation.)
*/
public List<ConformanceRestResourceSearchParamComponent> getSearchParam() {
if (this.searchParam == null)
this.searchParam = new ArrayList<ConformanceRestResourceSearchParamComponent>();
return this.searchParam;
}
public boolean hasSearchParam() {
if (this.searchParam == null)
return false;
for (ConformanceRestResourceSearchParamComponent item : this.searchParam)
if (!item.isEmpty())
return true;
return false;
}
/**
* @return {@link #searchParam} (Search parameters that are supported for searching all resources for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation.)
*/
// syntactic sugar
public ConformanceRestResourceSearchParamComponent addSearchParam() { //3
ConformanceRestResourceSearchParamComponent t = new ConformanceRestResourceSearchParamComponent();
if (this.searchParam == null)
this.searchParam = new ArrayList<ConformanceRestResourceSearchParamComponent>();
this.searchParam.add(t);
return t;
}
// syntactic sugar
public ConformanceRestComponent addSearchParam(ConformanceRestResourceSearchParamComponent t) { //3
if (t == null)
return this;
if (this.searchParam == null)
this.searchParam = new ArrayList<ConformanceRestResourceSearchParamComponent>();
this.searchParam.add(t);
return this;
}
/**
* @return {@link #operation} (Definition of an operation or a named query and with its parameters and their meaning and type.)
*/
@ -2287,8 +2334,9 @@ public class Conformance extends DomainResource implements IBaseConformance {
childrenList.add(new Property("resource", "", "A specification of the restful capabilities of the solution for a specific resource type.", 0, java.lang.Integer.MAX_VALUE, resource));
childrenList.add(new Property("interaction", "", "A specification of restful operations supported by the system.", 0, java.lang.Integer.MAX_VALUE, interaction));
childrenList.add(new Property("transactionMode", "code", "A code that indicates how transactions are supported.", 0, java.lang.Integer.MAX_VALUE, transactionMode));
childrenList.add(new Property("searchParam", "@Conformance.rest.resource.searchParam", "Search parameters that are supported for searching all resources for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation.", 0, java.lang.Integer.MAX_VALUE, searchParam));
childrenList.add(new Property("operation", "", "Definition of an operation or a named query and with its parameters and their meaning and type.", 0, java.lang.Integer.MAX_VALUE, operation));
childrenList.add(new Property("documentMailbox", "uri", "A list of absolute URIs that identify profiles that this server implements for accepting documents in the mailbox. If this list is empty, then documents are not accepted. The base specification has the profile identifier 'http://hl7.org/fhir/documents/mailbox'. Other specifications can declare their own identifier for this purpose.", 0, java.lang.Integer.MAX_VALUE, documentMailbox));
childrenList.add(new Property("documentMailbox", "uri", "A list of absolute URIs that identify profiles that this server implements for accepting documents in the mailbox. If this list is empty, then documents are not accepted. The base specification has the profile identifier \"http://hl7.org/fhir/documents/mailbox\". Other specifications can declare their own identifier for this purpose.", 0, java.lang.Integer.MAX_VALUE, documentMailbox));
childrenList.add(new Property("compartment", "uri", "An absolute URI which is a reference to the definition of a compartment hosted by the system.", 0, java.lang.Integer.MAX_VALUE, compartment));
}
@ -2309,6 +2357,11 @@ public class Conformance extends DomainResource implements IBaseConformance {
dst.interaction.add(i.copy());
};
dst.transactionMode = transactionMode == null ? null : transactionMode.copy();
if (searchParam != null) {
dst.searchParam = new ArrayList<ConformanceRestResourceSearchParamComponent>();
for (ConformanceRestResourceSearchParamComponent i : searchParam)
dst.searchParam.add(i.copy());
};
if (operation != null) {
dst.operation = new ArrayList<ConformanceRestOperationComponent>();
for (ConformanceRestOperationComponent i : operation)
@ -2336,7 +2389,7 @@ public class Conformance extends DomainResource implements IBaseConformance {
ConformanceRestComponent o = (ConformanceRestComponent) other;
return compareDeep(mode, o.mode, true) && compareDeep(documentation, o.documentation, true) && compareDeep(security, o.security, true)
&& compareDeep(resource, o.resource, true) && compareDeep(interaction, o.interaction, true) && compareDeep(transactionMode, o.transactionMode, true)
&& compareDeep(operation, o.operation, true) && compareDeep(documentMailbox, o.documentMailbox, true)
&& compareDeep(searchParam, o.searchParam, true) && compareDeep(operation, o.operation, true) && compareDeep(documentMailbox, o.documentMailbox, true)
&& compareDeep(compartment, o.compartment, true);
}
@ -2355,9 +2408,9 @@ public class Conformance extends DomainResource implements IBaseConformance {
public boolean isEmpty() {
return super.isEmpty() && (mode == null || mode.isEmpty()) && (documentation == null || documentation.isEmpty())
&& (security == null || security.isEmpty()) && (resource == null || resource.isEmpty()) && (interaction == null || interaction.isEmpty())
&& (transactionMode == null || transactionMode.isEmpty()) && (operation == null || operation.isEmpty())
&& (documentMailbox == null || documentMailbox.isEmpty()) && (compartment == null || compartment.isEmpty())
;
&& (transactionMode == null || transactionMode.isEmpty()) && (searchParam == null || searchParam.isEmpty())
&& (operation == null || operation.isEmpty()) && (documentMailbox == null || documentMailbox.isEmpty())
&& (compartment == null || compartment.isEmpty());
}
}
@ -2367,28 +2420,28 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* Server adds CORS headers when responding to requests - this enables javascript applications to use the server.
*/
@Child(name = "cors", type = {BooleanType.class}, order=1, min=0, max=1)
@Child(name = "cors", type = {BooleanType.class}, order=1, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Adds CORS Headers (http://enable-cors.org/)", formalDefinition="Server adds CORS headers when responding to requests - this enables javascript applications to use the server." )
protected BooleanType cors;
/**
* Types of security services are supported/required by the system.
*/
@Child(name = "service", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "service", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="OAuth | SMART-on-FHIR | NTLM | Basic | Kerberos | Certificates", formalDefinition="Types of security services are supported/required by the system." )
protected List<CodeableConcept> service;
/**
* General description of how security works.
*/
@Child(name = "description", type = {StringType.class}, order=3, min=0, max=1)
@Child(name = "description", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="General description of how security works", formalDefinition="General description of how security works." )
protected StringType description;
/**
* Certificates associated with security profiles.
*/
@Child(name = "certificate", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "certificate", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Certificates associated with security profiles", formalDefinition="Certificates associated with security profiles." )
protected List<ConformanceRestSecurityCertificateComponent> certificate;
@ -2635,14 +2688,14 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* Mime type for certificate.
*/
@Child(name = "type", type = {CodeType.class}, order=1, min=0, max=1)
@Child(name = "type", type = {CodeType.class}, order=1, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Mime type for certificate", formalDefinition="Mime type for certificate." )
protected CodeType type;
/**
* Actual certificate.
*/
@Child(name = "blob", type = {Base64BinaryType.class}, order=2, min=0, max=1)
@Child(name = "blob", type = {Base64BinaryType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Actual certificate", formalDefinition="Actual certificate." )
protected Base64BinaryType blob;
@ -2799,89 +2852,89 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* A type of resource exposed via the restful interface.
*/
@Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="A resource type that is supported", formalDefinition="A type of resource exposed via the restful interface." )
protected CodeType type;
/**
* A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses.
* A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses}.
*/
@Child(name = "profile", type = {StructureDefinition.class}, order=2, min=0, max=1)
@Description(shortDefinition="Base System profile for all uses of resource", formalDefinition="A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses." )
@Child(name = "profile", type = {StructureDefinition.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Base System profile for all uses of resource", formalDefinition="A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses}." )
protected Reference profile;
/**
* The actual object that is the target of the reference (A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses.)
* The actual object that is the target of the reference (A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses}.)
*/
protected StructureDefinition profileTarget;
/**
* Identifies a restful operation supported by the solution.
*/
@Child(name = "interaction", type = {}, order=3, min=1, max=Child.MAX_UNLIMITED)
@Child(name = "interaction", type = {}, order=3, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="What operations are supported?", formalDefinition="Identifies a restful operation supported by the solution." )
protected List<ResourceInteractionComponent> interaction;
/**
* Thi field is set to true to specify that the system does not support (server) or use (client) versioning for this resource type. If this is not set to true, the server must at least correctly track and populate the versionId meta-property on resources.
* This field is set to no-version to specify that the system does not support (server) or use (client) versioning for this resource type. If this has some other value, the server must at least correctly track and populate the versionId meta-property on resources.
*/
@Child(name = "versioning", type = {CodeType.class}, order=4, min=0, max=1)
@Description(shortDefinition="no-version | versioned | versioned-update", formalDefinition="Thi field is set to true to specify that the system does not support (server) or use (client) versioning for this resource type. If this is not set to true, the server must at least correctly track and populate the versionId meta-property on resources." )
@Child(name = "versioning", type = {CodeType.class}, order=4, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="no-version | versioned | versioned-update", formalDefinition="This field is set to no-version to specify that the system does not support (server) or use (client) versioning for this resource type. If this has some other value, the server must at least correctly track and populate the versionId meta-property on resources." )
protected Enumeration<ResourceVersionPolicy> versioning;
/**
* A flag for whether the server is able to return past versions as part of the vRead operation.
*/
@Child(name = "readHistory", type = {BooleanType.class}, order=5, min=0, max=1)
@Child(name = "readHistory", type = {BooleanType.class}, order=5, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Whether vRead can return past versions", formalDefinition="A flag for whether the server is able to return past versions as part of the vRead operation." )
protected BooleanType readHistory;
/**
* A flag to indicate that the server allows or needs to allow the client to create new identities on the server (e.g. that is, the client PUTs to a location where there is no existing resource). Allowing this operation means that the server allows the client to create new identities on the server.
*/
@Child(name = "updateCreate", type = {BooleanType.class}, order=6, min=0, max=1)
@Child(name = "updateCreate", type = {BooleanType.class}, order=6, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="If update can commit to a new identity", formalDefinition="A flag to indicate that the server allows or needs to allow the client to create new identities on the server (e.g. that is, the client PUTs to a location where there is no existing resource). Allowing this operation means that the server allows the client to create new identities on the server." )
protected BooleanType updateCreate;
/**
* A flag that indicates that the server supports conditional create.
*/
@Child(name = "conditionalCreate", type = {BooleanType.class}, order=7, min=0, max=1)
@Child(name = "conditionalCreate", type = {BooleanType.class}, order=7, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="If allows/uses conditional create", formalDefinition="A flag that indicates that the server supports conditional create." )
protected BooleanType conditionalCreate;
/**
* A flag that indicates that the server supports conditional update.
*/
@Child(name = "conditionalUpdate", type = {BooleanType.class}, order=8, min=0, max=1)
@Child(name = "conditionalUpdate", type = {BooleanType.class}, order=8, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="If allows/uses conditional update", formalDefinition="A flag that indicates that the server supports conditional update." )
protected BooleanType conditionalUpdate;
/**
* A code that indicates how the server supports conditional delete.
*/
@Child(name = "conditionalDelete", type = {CodeType.class}, order=9, min=0, max=1)
@Child(name = "conditionalDelete", type = {CodeType.class}, order=9, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="not-supported | single | multiple - how conditional delete is supported", formalDefinition="A code that indicates how the server supports conditional delete." )
protected Enumeration<ConditionalDeleteStatus> conditionalDelete;
/**
* A list of _include values supported by the server.
*/
@Child(name = "searchInclude", type = {StringType.class}, order=10, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "searchInclude", type = {StringType.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="_include values supported by the server", formalDefinition="A list of _include values supported by the server." )
protected List<StringType> searchInclude;
/**
* A list of _revinclude (reverse include) values supported by the server.
*/
@Child(name = "searchRevInclude", type = {StringType.class}, order=11, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "searchRevInclude", type = {StringType.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="_revinclude values supported by the server", formalDefinition="A list of _revinclude (reverse include) values supported by the server." )
protected List<StringType> searchRevInclude;
/**
* Search parameters for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation.
*/
@Child(name = "searchParam", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "searchParam", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Search params supported by implementation", formalDefinition="Search parameters for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation." )
protected List<ConformanceRestResourceSearchParamComponent> searchParam;
@ -2948,7 +3001,7 @@ public class Conformance extends DomainResource implements IBaseConformance {
}
/**
* @return {@link #profile} (A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses.)
* @return {@link #profile} (A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses}.)
*/
public Reference getProfile() {
if (this.profile == null)
@ -2964,7 +3017,7 @@ public class Conformance extends DomainResource implements IBaseConformance {
}
/**
* @param value {@link #profile} (A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses.)
* @param value {@link #profile} (A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses}.)
*/
public ConformanceRestResourceComponent setProfile(Reference value) {
this.profile = value;
@ -2972,7 +3025,7 @@ public class Conformance extends DomainResource implements IBaseConformance {
}
/**
* @return {@link #profile} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses.)
* @return {@link #profile} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses}.)
*/
public StructureDefinition getProfileTarget() {
if (this.profileTarget == null)
@ -2984,7 +3037,7 @@ public class Conformance extends DomainResource implements IBaseConformance {
}
/**
* @param value {@link #profile} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses.)
* @param value {@link #profile} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses}.)
*/
public ConformanceRestResourceComponent setProfileTarget(StructureDefinition value) {
this.profileTarget = value;
@ -3032,7 +3085,7 @@ public class Conformance extends DomainResource implements IBaseConformance {
}
/**
* @return {@link #versioning} (Thi field is set to true to specify that the system does not support (server) or use (client) versioning for this resource type. If this is not set to true, the server must at least correctly track and populate the versionId meta-property on resources.). This is the underlying object with id, value and extensions. The accessor "getVersioning" gives direct access to the value
* @return {@link #versioning} (This field is set to no-version to specify that the system does not support (server) or use (client) versioning for this resource type. If this has some other value, the server must at least correctly track and populate the versionId meta-property on resources.). This is the underlying object with id, value and extensions. The accessor "getVersioning" gives direct access to the value
*/
public Enumeration<ResourceVersionPolicy> getVersioningElement() {
if (this.versioning == null)
@ -3052,7 +3105,7 @@ public class Conformance extends DomainResource implements IBaseConformance {
}
/**
* @param value {@link #versioning} (Thi field is set to true to specify that the system does not support (server) or use (client) versioning for this resource type. If this is not set to true, the server must at least correctly track and populate the versionId meta-property on resources.). This is the underlying object with id, value and extensions. The accessor "getVersioning" gives direct access to the value
* @param value {@link #versioning} (This field is set to no-version to specify that the system does not support (server) or use (client) versioning for this resource type. If this has some other value, the server must at least correctly track and populate the versionId meta-property on resources.). This is the underlying object with id, value and extensions. The accessor "getVersioning" gives direct access to the value
*/
public ConformanceRestResourceComponent setVersioningElement(Enumeration<ResourceVersionPolicy> value) {
this.versioning = value;
@ -3060,14 +3113,14 @@ public class Conformance extends DomainResource implements IBaseConformance {
}
/**
* @return Thi field is set to true to specify that the system does not support (server) or use (client) versioning for this resource type. If this is not set to true, the server must at least correctly track and populate the versionId meta-property on resources.
* @return This field is set to no-version to specify that the system does not support (server) or use (client) versioning for this resource type. If this has some other value, the server must at least correctly track and populate the versionId meta-property on resources.
*/
public ResourceVersionPolicy getVersioning() {
return this.versioning == null ? null : this.versioning.getValue();
}
/**
* @param value Thi field is set to true to specify that the system does not support (server) or use (client) versioning for this resource type. If this is not set to true, the server must at least correctly track and populate the versionId meta-property on resources.
* @param value This field is set to no-version to specify that the system does not support (server) or use (client) versioning for this resource type. If this has some other value, the server must at least correctly track and populate the versionId meta-property on resources.
*/
public ConformanceRestResourceComponent setVersioning(ResourceVersionPolicy value) {
if (value == null)
@ -3460,9 +3513,9 @@ public class Conformance extends DomainResource implements IBaseConformance {
protected void listChildren(List<Property> childrenList) {
super.listChildren(childrenList);
childrenList.add(new Property("type", "code", "A type of resource exposed via the restful interface.", 0, java.lang.Integer.MAX_VALUE, type));
childrenList.add(new Property("profile", "Reference(StructureDefinition)", "A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses.", 0, java.lang.Integer.MAX_VALUE, profile));
childrenList.add(new Property("profile", "Reference(StructureDefinition)", "A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses}.", 0, java.lang.Integer.MAX_VALUE, profile));
childrenList.add(new Property("interaction", "", "Identifies a restful operation supported by the solution.", 0, java.lang.Integer.MAX_VALUE, interaction));
childrenList.add(new Property("versioning", "code", "Thi field is set to true to specify that the system does not support (server) or use (client) versioning for this resource type. If this is not set to true, the server must at least correctly track and populate the versionId meta-property on resources.", 0, java.lang.Integer.MAX_VALUE, versioning));
childrenList.add(new Property("versioning", "code", "This field is set to no-version to specify that the system does not support (server) or use (client) versioning for this resource type. If this has some other value, the server must at least correctly track and populate the versionId meta-property on resources.", 0, java.lang.Integer.MAX_VALUE, versioning));
childrenList.add(new Property("readHistory", "boolean", "A flag for whether the server is able to return past versions as part of the vRead operation.", 0, java.lang.Integer.MAX_VALUE, readHistory));
childrenList.add(new Property("updateCreate", "boolean", "A flag to indicate that the server allows or needs to allow the client to create new identities on the server (e.g. that is, the client PUTs to a location where there is no existing resource). Allowing this operation means that the server allows the client to create new identities on the server.", 0, java.lang.Integer.MAX_VALUE, updateCreate));
childrenList.add(new Property("conditionalCreate", "boolean", "A flag that indicates that the server supports conditional create.", 0, java.lang.Integer.MAX_VALUE, conditionalCreate));
@ -3553,14 +3606,14 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* Coded identifier of the operation, supported by the system resource.
*/
@Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="read | vread | update | delete | history-instance | validate | history-type | create | search-type", formalDefinition="Coded identifier of the operation, supported by the system resource." )
protected Enumeration<TypeRestfulInteraction> code;
/**
* Guidance specific to the implementation of this operation, such as 'delete is a logical delete' or 'updates are only allowed with version id' or 'creates permitted from pre-authorized certificates only'.
*/
@Child(name = "documentation", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "documentation", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Anything special about operation behavior", formalDefinition="Guidance specific to the implementation of this operation, such as 'delete is a logical delete' or 'updates are only allowed with version id' or 'creates permitted from pre-authorized certificates only'." )
protected StringType documentation;
@ -3721,49 +3774,49 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* The name of the search parameter used in the interface.
*/
@Child(name = "name", type = {StringType.class}, order=1, min=1, max=1)
@Child(name = "name", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Name of search parameter", formalDefinition="The name of the search parameter used in the interface." )
protected StringType name;
/**
* An absolute URI that is a formal reference to where this parameter was first defined, so that a client can be confident of the meaning of the search parameter (a reference to [[[SearchParameter.url]]]).
*/
@Child(name = "definition", type = {UriType.class}, order=2, min=0, max=1)
@Child(name = "definition", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Source of definition for parameter", formalDefinition="An absolute URI that is a formal reference to where this parameter was first defined, so that a client can be confident of the meaning of the search parameter (a reference to [[[SearchParameter.url]]])." )
protected UriType definition;
/**
* The type of value a search parameter refers to, and how the content is interpreted.
*/
@Child(name = "type", type = {CodeType.class}, order=3, min=1, max=1)
@Child(name = "type", type = {CodeType.class}, order=3, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="number | date | string | token | reference | composite | quantity | uri", formalDefinition="The type of value a search parameter refers to, and how the content is interpreted." )
protected Enumeration<SearchParamType> type;
/**
* This allows documentation of any distinct behaviors about how the search parameter is used. For example, text matching algorithms.
*/
@Child(name = "documentation", type = {StringType.class}, order=4, min=0, max=1)
@Child(name = "documentation", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Server-specific usage", formalDefinition="This allows documentation of any distinct behaviors about how the search parameter is used. For example, text matching algorithms." )
protected StringType documentation;
/**
* Types of resource (if a resource is referenced).
*/
@Child(name = "target", type = {CodeType.class}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "target", type = {CodeType.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Types of resource (if a resource reference)", formalDefinition="Types of resource (if a resource is referenced)." )
protected List<CodeType> target;
/**
* A modifier supported for the search parameter.
*/
@Child(name = "modifier", type = {CodeType.class}, order=6, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "modifier", type = {CodeType.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="missing | exact | contains | not | text | in | not-in | below | above | type", formalDefinition="A modifier supported for the search parameter." )
protected List<Enumeration<SearchModifierCode>> modifier;
/**
* Contains the names of any search parameters which may be chained to the containing search parameter. Chained parameters may be added to search parameters of type reference, and specify that resources will only be returned if they contain a reference to a resource which matches the chained parameter value. Values for this field should be drawn from Conformance.rest.resource.searchParam.name on the target resource type.
*/
@Child(name = "chain", type = {StringType.class}, order=7, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "chain", type = {StringType.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Chained names supported", formalDefinition="Contains the names of any search parameters which may be chained to the containing search parameter. Chained parameters may be added to search parameters of type reference, and specify that resources will only be returned if they contain a reference to a resource which matches the chained parameter value. Values for this field should be drawn from Conformance.rest.resource.searchParam.name on the target resource type." )
protected List<StringType> chain;
@ -4209,14 +4262,14 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* A coded identifier of the operation, supported by the system.
*/
@Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="transaction | search-system | history-system", formalDefinition="A coded identifier of the operation, supported by the system." )
protected Enumeration<SystemRestfulInteraction> code;
/**
* Guidance specific to the implementation of this operation, such as limitations on the kind of transactions allowed, or information about system wide search is implemented.
*/
@Child(name = "documentation", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "documentation", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Anything special about operation behavior", formalDefinition="Guidance specific to the implementation of this operation, such as limitations on the kind of transactions allowed, or information about system wide search is implemented." )
protected StringType documentation;
@ -4377,14 +4430,14 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* The name of a query, which is used in the _query parameter when the query is called.
*/
@Child(name = "name", type = {StringType.class}, order=1, min=1, max=1)
@Child(name = "name", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Name by which the operation/query is invoked", formalDefinition="The name of a query, which is used in the _query parameter when the query is called." )
protected StringType name;
/**
* Where the formal definition can be found.
*/
@Child(name = "definition", type = {OperationDefinition.class}, order=2, min=1, max=1)
@Child(name = "definition", type = {OperationDefinition.class}, order=2, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="The defined operation/query", formalDefinition="Where the formal definition can be found." )
protected Reference definition;
@ -4546,28 +4599,28 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* An endpoint (network accessible address) to which messages and/or replies are to be sent.
*/
@Child(name = "endpoint", type = {}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "endpoint", type = {}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="A messaging service end point", formalDefinition="An endpoint (network accessible address) to which messages and/or replies are to be sent." )
protected List<ConformanceMessagingEndpointComponent> endpoint;
/**
* Length if the receiver's reliable messaging cache in minutes (if a receiver) or how long the cache length on the receiver should be (if a sender).
*/
@Child(name = "reliableCache", type = {UnsignedIntType.class}, order=2, min=0, max=1)
@Child(name = "reliableCache", type = {UnsignedIntType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Reliable Message Cache Length (min)", formalDefinition="Length if the receiver's reliable messaging cache in minutes (if a receiver) or how long the cache length on the receiver should be (if a sender)." )
protected UnsignedIntType reliableCache;
/**
* Documentation about the system's messaging capabilities for this endpoint not otherwise documented by the conformance statement. For example, process for becoming an authorized messaging exchange partner.
*/
@Child(name = "documentation", type = {StringType.class}, order=3, min=0, max=1)
@Child(name = "documentation", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Messaging interface behavior details", formalDefinition="Documentation about the system's messaging capabilities for this endpoint not otherwise documented by the conformance statement. For example, process for becoming an authorized messaging exchange partner." )
protected StringType documentation;
/**
* A description of the solution's support for an event at this end point.
*/
@Child(name = "event", type = {}, order=4, min=1, max=Child.MAX_UNLIMITED)
@Child(name = "event", type = {}, order=4, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Declare support for this event", formalDefinition="A description of the solution's support for an event at this end point." )
protected List<ConformanceMessagingEventComponent> event;
@ -4815,14 +4868,14 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* A list of the messaging transport protocol(s) identifiers, supported by this endpoint.
*/
@Child(name = "protocol", type = {Coding.class}, order=1, min=1, max=1)
@Child(name = "protocol", type = {Coding.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="http | ftp | mllp +", formalDefinition="A list of the messaging transport protocol(s) identifiers, supported by this endpoint." )
protected Coding protocol;
/**
* The network address of the end-point. For solutions that do not use network addresses for routing, it can be just an identifier.
*/
@Child(name = "address", type = {UriType.class}, order=2, min=1, max=1)
@Child(name = "address", type = {UriType.class}, order=2, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Address of end point", formalDefinition="The network address of the end-point. For solutions that do not use network addresses for routing, it can be just an identifier." )
protected UriType address;
@ -4959,35 +5012,35 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* A coded identifier of a supported messaging event.
*/
@Child(name = "code", type = {Coding.class}, order=1, min=1, max=1)
@Child(name = "code", type = {Coding.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Event type", formalDefinition="A coded identifier of a supported messaging event." )
protected Coding code;
/**
* The impact of the content of the message.
*/
@Child(name = "category", type = {CodeType.class}, order=2, min=0, max=1)
@Child(name = "category", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Consequence | Currency | Notification", formalDefinition="The impact of the content of the message." )
protected Enumeration<MessageSignificanceCategory> category;
/**
* The mode of this event declaration - whether application is sender or receiver.
*/
@Child(name = "mode", type = {CodeType.class}, order=3, min=1, max=1)
@Child(name = "mode", type = {CodeType.class}, order=3, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="sender | receiver", formalDefinition="The mode of this event declaration - whether application is sender or receiver." )
protected Enumeration<ConformanceEventMode> mode;
/**
* A resource associated with the event. This is the resource that defines the event.
*/
@Child(name = "focus", type = {CodeType.class}, order=4, min=1, max=1)
@Child(name = "focus", type = {CodeType.class}, order=4, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Resource that's focus of message", formalDefinition="A resource associated with the event. This is the resource that defines the event." )
protected CodeType focus;
/**
* Information about the request for this event.
*/
@Child(name = "request", type = {StructureDefinition.class}, order=5, min=1, max=1)
@Child(name = "request", type = {StructureDefinition.class}, order=5, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Profile that describes the request", formalDefinition="Information about the request for this event." )
protected Reference request;
@ -4999,7 +5052,7 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* Information about the response for this event.
*/
@Child(name = "response", type = {StructureDefinition.class}, order=6, min=1, max=1)
@Child(name = "response", type = {StructureDefinition.class}, order=6, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Profile that describes the response", formalDefinition="Information about the response for this event." )
protected Reference response;
@ -5011,7 +5064,7 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* Guidance on how this event is handled, such as internal system trigger points, business rules, etc.
*/
@Child(name = "documentation", type = {StringType.class}, order=7, min=0, max=1)
@Child(name = "documentation", type = {StringType.class}, order=7, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Endpoint-specific event documentation", formalDefinition="Guidance on how this event is handled, such as internal system trigger points, business rules, etc." )
protected StringType documentation;
@ -5397,21 +5450,21 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* Mode of this document declaration - whether application is producer or consumer.
*/
@Child(name = "mode", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "mode", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="producer | consumer", formalDefinition="Mode of this document declaration - whether application is producer or consumer." )
protected Enumeration<DocumentMode> mode;
/**
* A description of how the application supports or uses the specified document profile. For example, when are documents created, what action is taken with consumed documents, etc.
*/
@Child(name = "documentation", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "documentation", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Description of document support", formalDefinition="A description of how the application supports or uses the specified document profile. For example, when are documents created, what action is taken with consumed documents, etc." )
protected StringType documentation;
/**
* A constraint on a resource used in the document.
*/
@Child(name = "profile", type = {StructureDefinition.class}, order=3, min=1, max=1)
@Child(name = "profile", type = {StructureDefinition.class}, order=3, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Constraint on a resource used in the document", formalDefinition="A constraint on a resource used in the document." )
protected Reference profile;
@ -5623,127 +5676,127 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* An absolute URL that is used to identify this conformance statement when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this conformance statement is (or will be) published.
*/
@Child(name = "url", type = {UriType.class}, order=0, min=0, max=1)
@Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Logical uri to reference this statement", formalDefinition="An absolute URL that is used to identify this conformance statement when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this conformance statement is (or will be) published." )
protected UriType url;
/**
* The identifier that is used to identify this version of the conformance statement when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp.
*/
@Child(name = "version", type = {StringType.class}, order=1, min=0, max=1)
@Child(name = "version", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Logical id for this version of the statement", formalDefinition="The identifier that is used to identify this version of the conformance statement when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp." )
protected StringType version;
/**
* A free text natural language name identifying the conformance statement.
*/
@Child(name = "name", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "name", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Informal name for this conformance statement", formalDefinition="A free text natural language name identifying the conformance statement." )
protected StringType name;
/**
* The status of this conformance statement.
*/
@Child(name = "status", type = {CodeType.class}, order=3, min=0, max=1)
@Child(name = "status", type = {CodeType.class}, order=3, min=0, max=1, modifier=true, summary=true)
@Description(shortDefinition="draft | active | retired", formalDefinition="The status of this conformance statement." )
protected Enumeration<ConformanceResourceStatus> status;
/**
* A flag to indicate that this conformance statement is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage.
*/
@Child(name = "experimental", type = {BooleanType.class}, order=4, min=0, max=1)
@Child(name = "experimental", type = {BooleanType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="If for testing purposes, not real usage", formalDefinition="A flag to indicate that this conformance statement is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage." )
protected BooleanType experimental;
/**
* The name of the individual or organization that published the conformance.
*/
@Child(name = "publisher", type = {StringType.class}, order=5, min=0, max=1)
@Child(name = "publisher", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Name of the publisher (Organization or individual)", formalDefinition="The name of the individual or organization that published the conformance." )
protected StringType publisher;
/**
* Contacts to assist a user in finding and communicating with the publisher.
*/
@Child(name = "contact", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "contact", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Contact details of the publisher", formalDefinition="Contacts to assist a user in finding and communicating with the publisher." )
protected List<ConformanceContactComponent> contact;
/**
* The date (and optionally time) when the conformance statement was published. The date must change when the business version changes, if it does, and it must change if the status code changes. in addition, it should change when the substantiative content of the conformance statement changes.
*/
@Child(name = "date", type = {DateTimeType.class}, order=7, min=1, max=1)
@Child(name = "date", type = {DateTimeType.class}, order=7, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Publication Date(/time)", formalDefinition="The date (and optionally time) when the conformance statement was published. The date must change when the business version changes, if it does, and it must change if the status code changes. in addition, it should change when the substantiative content of the conformance statement changes." )
protected DateTimeType date;
/**
* A free text natural language description of the conformance statement and its use. Typically, this is used when the conformance statement describes a desired rather than an actual solution, for example as a formal expression of requirements as part of an RFP.
*/
@Child(name = "description", type = {StringType.class}, order=8, min=0, max=1)
@Child(name = "description", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Human description of the conformance statement", formalDefinition="A free text natural language description of the conformance statement and its use. Typically, this is used when the conformance statement describes a desired rather than an actual solution, for example as a formal expression of requirements as part of an RFP." )
protected StringType description;
/**
* Explains why this conformance statement is needed and why it's been constrained as it has.
*/
@Child(name = "requirements", type = {StringType.class}, order=9, min=0, max=1)
@Child(name = "requirements", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Why is this needed?", formalDefinition="Explains why this conformance statement is needed and why it's been constrained as it has." )
protected StringType requirements;
/**
* A copyright statement relating to the conformamce statement and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the system described by the conformance statement.
*/
@Child(name = "copyright", type = {StringType.class}, order=10, min=0, max=1)
@Child(name = "copyright", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Use and/or Publishing restrictions", formalDefinition="A copyright statement relating to the conformamce statement and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the system described by the conformance statement." )
protected StringType copyright;
/**
* The way that this statement is intended to be used, to describe an actual running instance of software, a particular product (kind not instance of software) or a class of implementation (e.g. a desired purchase).
*/
@Child(name = "kind", type = {CodeType.class}, order=11, min=1, max=1)
@Child(name = "kind", type = {CodeType.class}, order=11, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="instance | capability | requirements", formalDefinition="The way that this statement is intended to be used, to describe an actual running instance of software, a particular product (kind not instance of software) or a class of implementation (e.g. a desired purchase)." )
protected Enumeration<ConformanceStatementKind> kind;
/**
* Software that is covered by this conformance statement. It is used when the conformance statement describes the capabilities of a particular software version, independent of an installation.
*/
@Child(name = "software", type = {}, order=12, min=0, max=1)
@Child(name = "software", type = {}, order=12, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Software that is covered by this conformance statement", formalDefinition="Software that is covered by this conformance statement. It is used when the conformance statement describes the capabilities of a particular software version, independent of an installation." )
protected ConformanceSoftwareComponent software;
/**
* Identifies a specific implementation instance that is described by the conformance statement - i.e. a particular installation, rather than the capabilities of a software program.
*/
@Child(name = "implementation", type = {}, order=13, min=0, max=1)
@Child(name = "implementation", type = {}, order=13, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="If this describes a specific instance", formalDefinition="Identifies a specific implementation instance that is described by the conformance statement - i.e. a particular installation, rather than the capabilities of a software program." )
protected ConformanceImplementationComponent implementation;
/**
* The version of the FHIR specification on which this conformance statement is based.
*/
@Child(name = "fhirVersion", type = {IdType.class}, order=14, min=1, max=1)
@Child(name = "fhirVersion", type = {IdType.class}, order=14, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="FHIR Version", formalDefinition="The version of the FHIR specification on which this conformance statement is based." )
protected IdType fhirVersion;
/**
* A code that indicates whether the application accepts unknown elements or extensions when reading resources.
*/
@Child(name = "acceptUnknown", type = {CodeType.class}, order=15, min=1, max=1)
@Child(name = "acceptUnknown", type = {CodeType.class}, order=15, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="no | extensions | elements | both", formalDefinition="A code that indicates whether the application accepts unknown elements or extensions when reading resources." )
protected Enumeration<UnknownContentCode> acceptUnknown;
/**
* A list of the formats supported by this implementation using their content types.
*/
@Child(name = "format", type = {CodeType.class}, order=16, min=1, max=Child.MAX_UNLIMITED)
@Child(name = "format", type = {CodeType.class}, order=16, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="formats supported (xml | json | mime type)", formalDefinition="A list of the formats supported by this implementation using their content types." )
protected List<CodeType> format;
/**
* A list of profiles that represent different use cases supported by the system. For a server, "supported by the system" means the system hosts/produces a set of resources that are conformant to a particular profile, and allows clients that use its services to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile. See further discussion in [Using Profiles]{profiling.html#profile-uses}.
*/
@Child(name = "profile", type = {StructureDefinition.class}, order=17, min=0, max=Child.MAX_UNLIMITED)
@Description(shortDefinition="Profiles for use cases supported", formalDefinition="A list of profiles that represent different use cases supported by the system. For a server, 'supported by the system' means the system hosts/produces a set of resources that are conformant to a particular profile, and allows clients that use its services to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile. See further discussion in [Using Profiles]{profiling.html#profile-uses}." )
@Child(name = "profile", type = {StructureDefinition.class}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Profiles for use cases supported", formalDefinition="A list of profiles that represent different use cases supported by the system. For a server, \"supported by the system\" means the system hosts/produces a set of resources that are conformant to a particular profile, and allows clients that use its services to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile. See further discussion in [Using Profiles]{profiling.html#profile-uses}." )
protected List<Reference> profile;
/**
* The actual objects that are the target of the reference (A list of profiles that represent different use cases supported by the system. For a server, "supported by the system" means the system hosts/produces a set of resources that are conformant to a particular profile, and allows clients that use its services to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile. See further discussion in [Using Profiles]{profiling.html#profile-uses}.)
@ -5754,21 +5807,21 @@ public class Conformance extends DomainResource implements IBaseConformance {
/**
* A definition of the restful capabilities of the solution, if any.
*/
@Child(name = "rest", type = {}, order=18, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "rest", type = {}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="If the endpoint is a RESTful one", formalDefinition="A definition of the restful capabilities of the solution, if any." )
protected List<ConformanceRestComponent> rest;
/**
* A description of the messaging capabilities of the solution.
*/
@Child(name = "messaging", type = {}, order=19, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "messaging", type = {}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="If messaging is supported", formalDefinition="A description of the messaging capabilities of the solution." )
protected List<ConformanceMessagingComponent> messaging;
/**
* A document definition.
*/
@Child(name = "document", type = {}, order=20, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "document", type = {}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Document definition", formalDefinition="A document definition." )
protected List<ConformanceDocumentComponent> document;
@ -6751,7 +6804,7 @@ public class Conformance extends DomainResource implements IBaseConformance {
childrenList.add(new Property("fhirVersion", "id", "The version of the FHIR specification on which this conformance statement is based.", 0, java.lang.Integer.MAX_VALUE, fhirVersion));
childrenList.add(new Property("acceptUnknown", "code", "A code that indicates whether the application accepts unknown elements or extensions when reading resources.", 0, java.lang.Integer.MAX_VALUE, acceptUnknown));
childrenList.add(new Property("format", "code", "A list of the formats supported by this implementation using their content types.", 0, java.lang.Integer.MAX_VALUE, format));
childrenList.add(new Property("profile", "Reference(StructureDefinition)", "A list of profiles that represent different use cases supported by the system. For a server, 'supported by the system' means the system hosts/produces a set of resources that are conformant to a particular profile, and allows clients that use its services to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile. See further discussion in [Using Profiles]{profiling.html#profile-uses}.", 0, java.lang.Integer.MAX_VALUE, profile));
childrenList.add(new Property("profile", "Reference(StructureDefinition)", "A list of profiles that represent different use cases supported by the system. For a server, \"supported by the system\" means the system hosts/produces a set of resources that are conformant to a particular profile, and allows clients that use its services to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile. See further discussion in [Using Profiles]{profiling.html#profile-uses}.", 0, java.lang.Integer.MAX_VALUE, profile));
childrenList.add(new Property("rest", "", "A definition of the restful capabilities of the solution, if any.", 0, java.lang.Integer.MAX_VALUE, rest));
childrenList.add(new Property("messaging", "", "A description of the messaging capabilities of the solution.", 0, java.lang.Integer.MAX_VALUE, messaging));
childrenList.add(new Property("document", "", "A document definition.", 0, java.lang.Integer.MAX_VALUE, document));

View File

@ -29,12 +29,12 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
public class Constants {
public final static String VERSION = "0.5.0";
public final static String REVISION = "6313";
public final static String DATE = "Thu Aug 13 16:43:28 EDT 2015";
public final static String REVISION = "6524";
public final static String DATE = "Sat Aug 22 23:00:35 EDT 2015";
}

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -276,35 +276,35 @@ public class ContactPoint extends Type implements ICompositeType {
/**
* Telecommunications form for contact point - what communications system is required to make use of the contact.
*/
@Child(name = "system", type = {CodeType.class}, order=0, min=0, max=1)
@Child(name = "system", type = {CodeType.class}, order=0, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="phone | fax | email | pager | other", formalDefinition="Telecommunications form for contact point - what communications system is required to make use of the contact." )
protected Enumeration<ContactPointSystem> system;
/**
* The actual contact point details, in a form that is meaningful to the designated communication system (i.e. phone number or email address).
*/
@Child(name = "value", type = {StringType.class}, order=1, min=0, max=1)
@Child(name = "value", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The actual contact point details", formalDefinition="The actual contact point details, in a form that is meaningful to the designated communication system (i.e. phone number or email address)." )
protected StringType value;
/**
* Identifies the purpose for the contact point.
*/
@Child(name = "use", type = {CodeType.class}, order=2, min=0, max=1)
@Child(name = "use", type = {CodeType.class}, order=2, min=0, max=1, modifier=true, summary=true)
@Description(shortDefinition="home | work | temp | old | mobile - purpose of this contact point", formalDefinition="Identifies the purpose for the contact point." )
protected Enumeration<ContactPointUse> use;
/**
* Specifies a preferred order in which to use a set of contacts. Contacts are ranked with lower values coming before higher values.
*/
@Child(name = "rank", type = {PositiveIntType.class}, order=3, min=0, max=1)
@Child(name = "rank", type = {PositiveIntType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Specify preferred order of use (1 = highest)", formalDefinition="Specifies a preferred order in which to use a set of contacts. Contacts are ranked with lower values coming before higher values." )
protected PositiveIntType rank;
/**
* Time period when the contact point was/is in use.
*/
@Child(name = "period", type = {Period.class}, order=4, min=0, max=1)
@Child(name = "period", type = {Period.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Time period when the contact point was/is in use", formalDefinition="Time period when the contact point was/is in use." )
protected Period period;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -52,7 +52,7 @@ public class Contract extends DomainResource {
/**
* Who or what actors are assigned roles in this Contract.
*/
@Child(name = "entity", type = {Contract.class, Device.class, Group.class, Location.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class, Substance.class}, order=1, min=1, max=1)
@Child(name = "entity", type = {Contract.class, Device.class, Group.class, Location.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class, Substance.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Actor Type", formalDefinition="Who or what actors are assigned roles in this Contract." )
protected Reference entity;
@ -64,7 +64,7 @@ public class Contract extends DomainResource {
/**
* Role type of actors assigned roles in this Contract.
*/
@Child(name = "role", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "role", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contract Actor Role", formalDefinition="Role type of actors assigned roles in this Contract." )
protected List<CodeableConcept> role;
@ -214,56 +214,56 @@ public class Contract extends DomainResource {
/**
* Specific type of Contract Valued Item that may be priced.
*/
@Child(name = "entity", type = {CodeableConcept.class}, order=1, min=0, max=1)
@Child(name = "entity", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Valued Item Type", formalDefinition="Specific type of Contract Valued Item that may be priced." )
protected Type entity;
/**
* Identifies a Contract Valued Item instance.
*/
@Child(name = "identifier", type = {Identifier.class}, order=2, min=0, max=1)
@Child(name = "identifier", type = {Identifier.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Valued Item Identifier", formalDefinition="Identifies a Contract Valued Item instance." )
protected Identifier identifier;
/**
* Indicates the time during which this Contract ValuedItem information is effective.
*/
@Child(name = "effectiveTime", type = {DateTimeType.class}, order=3, min=0, max=1)
@Child(name = "effectiveTime", type = {DateTimeType.class}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Valued Item Effective Tiem", formalDefinition="Indicates the time during which this Contract ValuedItem information is effective." )
protected DateTimeType effectiveTime;
/**
* Specifies the units by which the Contract Valued Item is measured or counted, and quantifies the countable or measurable Contract Valued Item instances.
*/
@Child(name = "quantity", type = {SimpleQuantity.class}, order=4, min=0, max=1)
@Child(name = "quantity", type = {SimpleQuantity.class}, order=4, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Count of Contract Valued Items", formalDefinition="Specifies the units by which the Contract Valued Item is measured or counted, and quantifies the countable or measurable Contract Valued Item instances." )
protected SimpleQuantity quantity;
/**
* A Contract Valued Item unit valuation measure.
*/
@Child(name = "unitPrice", type = {Money.class}, order=5, min=0, max=1)
@Child(name = "unitPrice", type = {Money.class}, order=5, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Valued Item fee, charge, or cost", formalDefinition="A Contract Valued Item unit valuation measure." )
protected Money unitPrice;
/**
* A real number that represents a multiplier used in determining the overall value of the Contract Valued Item delivered. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
*/
@Child(name = "factor", type = {DecimalType.class}, order=6, min=0, max=1)
@Child(name = "factor", type = {DecimalType.class}, order=6, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Valued Item Price Scaling Factor", formalDefinition="A real number that represents a multiplier used in determining the overall value of the Contract Valued Item delivered. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount." )
protected DecimalType factor;
/**
* An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the Contract Valued Item delivered. The concept of Points allows for assignment of point values for a Contract Valued Item, such that a monetary amount can be assigned to each point.
*/
@Child(name = "points", type = {DecimalType.class}, order=7, min=0, max=1)
@Child(name = "points", type = {DecimalType.class}, order=7, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Valued Item Difficulty Scaling Factor", formalDefinition="An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the Contract Valued Item delivered. The concept of Points allows for assignment of point values for a Contract Valued Item, such that a monetary amount can be assigned to each point." )
protected DecimalType points;
/**
* Expresses the product of the Contract Valued Item unitQuantity and the unitPriceAmt. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.
*/
@Child(name = "net", type = {Money.class}, order=8, min=0, max=1)
@Child(name = "net", type = {Money.class}, order=8, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Total Contract Valued Item Value", formalDefinition="Expresses the product of the Contract Valued Item unitQuantity and the unitPriceAmt. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied." )
protected Money net;
@ -627,14 +627,14 @@ public class Contract extends DomainResource {
/**
* Role of this Contract signer, e.g., notary, grantee.
*/
@Child(name = "type", type = {Coding.class}, order=1, min=1, max=1)
@Child(name = "type", type = {Coding.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Signer Type", formalDefinition="Role of this Contract signer, e.g., notary, grantee." )
protected Coding type;
/**
* Party which is a signator to this Contract.
*/
@Child(name = "party", type = {Organization.class, Patient.class, Practitioner.class, RelatedPerson.class}, order=2, min=1, max=1)
@Child(name = "party", type = {Organization.class, Patient.class, Practitioner.class, RelatedPerson.class}, order=2, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Signatory Party", formalDefinition="Party which is a signator to this Contract." )
protected Reference party;
@ -646,7 +646,7 @@ public class Contract extends DomainResource {
/**
* Legally binding Contract DSIG signature contents in Base64.
*/
@Child(name = "signature", type = {StringType.class}, order=3, min=1, max=1)
@Child(name = "signature", type = {StringType.class}, order=3, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Documentation Signature", formalDefinition="Legally binding Contract DSIG signature contents in Base64." )
protected StringType signature;
@ -826,42 +826,42 @@ public class Contract extends DomainResource {
/**
* Unique identifier for this particular Contract Provision.
*/
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1)
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Contract Term identifier", formalDefinition="Unique identifier for this particular Contract Provision." )
protected Identifier identifier;
/**
* When this Contract Provision was issued.
*/
@Child(name = "issued", type = {DateTimeType.class}, order=2, min=0, max=1)
@Child(name = "issued", type = {DateTimeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Contract Term Issue Date Time", formalDefinition="When this Contract Provision was issued." )
protected DateTimeType issued;
/**
* Relevant time or time-period when this Contract Provision is applicable.
*/
@Child(name = "applies", type = {Period.class}, order=3, min=0, max=1)
@Child(name = "applies", type = {Period.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Contract Term Effective Time", formalDefinition="Relevant time or time-period when this Contract Provision is applicable." )
protected Period applies;
/**
* Type of Contract Provision such as specific requirements, purposes for actions, obligations, prohibitions, e.g., life time maximum benefit.
*/
@Child(name = "type", type = {CodeableConcept.class}, order=4, min=0, max=1)
@Child(name = "type", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Term Type", formalDefinition="Type of Contract Provision such as specific requirements, purposes for actions, obligations, prohibitions, e.g., life time maximum benefit." )
protected CodeableConcept type;
/**
* Subtype of this Contract Provision, e.g., life time maximum payment for a contract term for specific valued item, e.g., disability payment.
*/
@Child(name = "subType", type = {CodeableConcept.class}, order=5, min=0, max=1)
@Child(name = "subType", type = {CodeableConcept.class}, order=5, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Term Subtype", formalDefinition="Subtype of this Contract Provision, e.g., life time maximum payment for a contract term for specific valued item, e.g., disability payment." )
protected CodeableConcept subType;
/**
* Who or what this Contract Provision is about.
*/
@Child(name = "subject", type = {}, order=6, min=0, max=1)
@Child(name = "subject", type = {}, order=6, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Subject of this Contract Term", formalDefinition="Who or what this Contract Provision is about." )
protected Reference subject;
@ -873,42 +873,42 @@ public class Contract extends DomainResource {
/**
* Action stipulated by this Contract Provision.
*/
@Child(name = "action", type = {CodeableConcept.class}, order=7, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "action", type = {CodeableConcept.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contract Term Action", formalDefinition="Action stipulated by this Contract Provision." )
protected List<CodeableConcept> action;
/**
* Reason or purpose for the action stipulated by this Contract Provision.
*/
@Child(name = "actionReason", type = {CodeableConcept.class}, order=8, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "actionReason", type = {CodeableConcept.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contract Term Action Reason", formalDefinition="Reason or purpose for the action stipulated by this Contract Provision." )
protected List<CodeableConcept> actionReason;
/**
* List of actors participating in this Contract Provision.
*/
@Child(name = "actor", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "actor", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contract Term Actor List", formalDefinition="List of actors participating in this Contract Provision." )
protected List<TermActorComponent> actor;
/**
* Human readable form of this Contract Provision.
*/
@Child(name = "text", type = {StringType.class}, order=10, min=0, max=1)
@Child(name = "text", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Human readable Contract term text", formalDefinition="Human readable form of this Contract Provision." )
protected StringType text;
/**
* Contract Provision Valued Item List.
*/
@Child(name = "valuedItem", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "valuedItem", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contract Term Valued Item", formalDefinition="Contract Provision Valued Item List." )
protected List<TermValuedItemComponent> valuedItem;
/**
* Nested group of Contract Provisions.
*/
@Child(name = "group", type = {TermComponent.class}, order=12, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "group", type = {TermComponent.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Nested Contract Term Group", formalDefinition="Nested group of Contract Provisions." )
protected List<TermComponent> group;
@ -1447,7 +1447,7 @@ public class Contract extends DomainResource {
/**
* The actor assigned a role in this Contract Provision.
*/
@Child(name = "entity", type = {Contract.class, Device.class, Group.class, Location.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class, Substance.class}, order=1, min=1, max=1)
@Child(name = "entity", type = {Contract.class, Device.class, Group.class, Location.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class, Substance.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Term Actor", formalDefinition="The actor assigned a role in this Contract Provision." )
protected Reference entity;
@ -1459,7 +1459,7 @@ public class Contract extends DomainResource {
/**
* Role played by the actor assigned this role in this Contract Provision.
*/
@Child(name = "role", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "role", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contract Term Actor Role", formalDefinition="Role played by the actor assigned this role in this Contract Provision." )
protected List<CodeableConcept> role;
@ -1609,56 +1609,56 @@ public class Contract extends DomainResource {
/**
* Specific type of Contract Provision Valued Item that may be priced.
*/
@Child(name = "entity", type = {CodeableConcept.class}, order=1, min=0, max=1)
@Child(name = "entity", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Term Valued Item Type", formalDefinition="Specific type of Contract Provision Valued Item that may be priced." )
protected Type entity;
/**
* Identifies a Contract Provision Valued Item instance.
*/
@Child(name = "identifier", type = {Identifier.class}, order=2, min=0, max=1)
@Child(name = "identifier", type = {Identifier.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Term Valued Item Identifier", formalDefinition="Identifies a Contract Provision Valued Item instance." )
protected Identifier identifier;
/**
* Indicates the time during which this Contract Term ValuedItem information is effective.
*/
@Child(name = "effectiveTime", type = {DateTimeType.class}, order=3, min=0, max=1)
@Child(name = "effectiveTime", type = {DateTimeType.class}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Term Valued Item Effective Tiem", formalDefinition="Indicates the time during which this Contract Term ValuedItem information is effective." )
protected DateTimeType effectiveTime;
/**
* Specifies the units by which the Contract Provision Valued Item is measured or counted, and quantifies the countable or measurable Contract Term Valued Item instances.
*/
@Child(name = "quantity", type = {SimpleQuantity.class}, order=4, min=0, max=1)
@Child(name = "quantity", type = {SimpleQuantity.class}, order=4, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Term Valued Item Count", formalDefinition="Specifies the units by which the Contract Provision Valued Item is measured or counted, and quantifies the countable or measurable Contract Term Valued Item instances." )
protected SimpleQuantity quantity;
/**
* A Contract Provision Valued Item unit valuation measure.
*/
@Child(name = "unitPrice", type = {Money.class}, order=5, min=0, max=1)
@Child(name = "unitPrice", type = {Money.class}, order=5, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Term Valued Item fee, charge, or cost", formalDefinition="A Contract Provision Valued Item unit valuation measure." )
protected Money unitPrice;
/**
* A real number that represents a multiplier used in determining the overall value of the Contract Provision Valued Item delivered. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
*/
@Child(name = "factor", type = {DecimalType.class}, order=6, min=0, max=1)
@Child(name = "factor", type = {DecimalType.class}, order=6, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Term Valued Item Price Scaling Factor", formalDefinition="A real number that represents a multiplier used in determining the overall value of the Contract Provision Valued Item delivered. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount." )
protected DecimalType factor;
/**
* An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the Contract Provision Valued Item delivered. The concept of Points allows for assignment of point values for a Contract ProvisionValued Item, such that a monetary amount can be assigned to each point.
*/
@Child(name = "points", type = {DecimalType.class}, order=7, min=0, max=1)
@Child(name = "points", type = {DecimalType.class}, order=7, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Term Valued Item Difficulty Scaling Factor", formalDefinition="An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the Contract Provision Valued Item delivered. The concept of Points allows for assignment of point values for a Contract ProvisionValued Item, such that a monetary amount can be assigned to each point." )
protected DecimalType points;
/**
* Expresses the product of the Contract Provision Valued Item unitQuantity and the unitPriceAmt. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.
*/
@Child(name = "net", type = {Money.class}, order=8, min=0, max=1)
@Child(name = "net", type = {Money.class}, order=8, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Total Contract Term Valued Item Value", formalDefinition="Expresses the product of the Contract Provision Valued Item unitQuantity and the unitPriceAmt. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied." )
protected Money net;
@ -2022,7 +2022,7 @@ public class Contract extends DomainResource {
/**
* Human readable rendering of this Contract in a format and representation intended to enhance comprehension and ensure understandability.
*/
@Child(name = "content", type = {Attachment.class, Composition.class, DocumentReference.class, QuestionnaireResponse.class}, order=1, min=1, max=1)
@Child(name = "content", type = {Attachment.class, Composition.class, DocumentReference.class, QuestionnaireResponse.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Easily comprehended representation of this Contract", formalDefinition="Human readable rendering of this Contract in a format and representation intended to enhance comprehension and ensure understandability." )
protected Type content;
@ -2131,7 +2131,7 @@ public class Contract extends DomainResource {
/**
* Contract legal text in human renderable form.
*/
@Child(name = "content", type = {Attachment.class, Composition.class, DocumentReference.class, QuestionnaireResponse.class}, order=1, min=1, max=1)
@Child(name = "content", type = {Attachment.class, Composition.class, DocumentReference.class, QuestionnaireResponse.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Contract Legal Text", formalDefinition="Contract legal text in human renderable form." )
protected Type content;
@ -2240,7 +2240,7 @@ public class Contract extends DomainResource {
/**
* Computable Contract conveyed using a policy rule language (e.g. XACML, DKAL, SecPal).
*/
@Child(name = "content", type = {Attachment.class, DocumentReference.class}, order=1, min=1, max=1)
@Child(name = "content", type = {Attachment.class, DocumentReference.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Computable Contract Rules", formalDefinition="Computable Contract conveyed using a policy rule language (e.g. XACML, DKAL, SecPal)." )
protected Type content;
@ -2347,28 +2347,28 @@ public class Contract extends DomainResource {
/**
* Unique identifier for this Contract.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=1)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Contract identifier", formalDefinition="Unique identifier for this Contract." )
protected Identifier identifier;
/**
* When this Contract was issued.
*/
@Child(name = "issued", type = {DateTimeType.class}, order=1, min=0, max=1)
@Child(name = "issued", type = {DateTimeType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When this Contract was issued", formalDefinition="When this Contract was issued." )
protected DateTimeType issued;
/**
* Relevant time or time-period when this Contract is applicable.
*/
@Child(name = "applies", type = {Period.class}, order=2, min=0, max=1)
@Child(name = "applies", type = {Period.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Effective time", formalDefinition="Relevant time or time-period when this Contract is applicable." )
protected Period applies;
/**
* Who and/or what this Contract is about: typically a Patient, Organization, or valued items such as goods and services.
*/
@Child(name = "subject", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "subject", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Subject of this Contract", formalDefinition="Who and/or what this Contract is about: typically a Patient, Organization, or valued items such as goods and services." )
protected List<Reference> subject;
/**
@ -2380,7 +2380,7 @@ public class Contract extends DomainResource {
/**
* A formally or informally recognized grouping of people, principals, organizations, or jurisdictions formed for the purpose of achieving some form of collective action such as the promulgation, administration and enforcement of contracts and policies.
*/
@Child(name = "authority", type = {Organization.class}, order=4, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "authority", type = {Organization.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Authority under which this Contract has standing", formalDefinition="A formally or informally recognized grouping of people, principals, organizations, or jurisdictions formed for the purpose of achieving some form of collective action such as the promulgation, administration and enforcement of contracts and policies." )
protected List<Reference> authority;
/**
@ -2392,7 +2392,7 @@ public class Contract extends DomainResource {
/**
* Recognized governance framework or system operating with a circumscribed scope in accordance with specified principles, policies, processes or procedures for managing rights, actions, or behaviors of parties or principals relative to resources.
*/
@Child(name = "domain", type = {Location.class}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "domain", type = {Location.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Domain in which this Contract applies", formalDefinition="Recognized governance framework or system operating with a circumscribed scope in accordance with specified principles, policies, processes or procedures for managing rights, actions, or behaviors of parties or principals relative to resources." )
protected List<Reference> domain;
/**
@ -2404,84 +2404,84 @@ public class Contract extends DomainResource {
/**
* Type of Contract such as an insurance policy, real estate contract, a will, power of attorny, Privacy or Security policy , trust framework agreement, etc.
*/
@Child(name = "type", type = {CodeableConcept.class}, order=6, min=0, max=1)
@Child(name = "type", type = {CodeableConcept.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Contract Tyoe", formalDefinition="Type of Contract such as an insurance policy, real estate contract, a will, power of attorny, Privacy or Security policy , trust framework agreement, etc." )
protected CodeableConcept type;
/**
* More specific type or specialization of an overarching or more general contract such as auto insurance, home owner insurance, prenupial agreement, Advanced-Directive, or privacy consent.
*/
@Child(name = "subType", type = {CodeableConcept.class}, order=7, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "subType", type = {CodeableConcept.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Contract Subtype", formalDefinition="More specific type or specialization of an overarching or more general contract such as auto insurance, home owner insurance, prenupial agreement, Advanced-Directive, or privacy consent." )
protected List<CodeableConcept> subType;
/**
* Action stipulated by this Contract.
*/
@Child(name = "action", type = {CodeableConcept.class}, order=8, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "action", type = {CodeableConcept.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contract Action", formalDefinition="Action stipulated by this Contract." )
protected List<CodeableConcept> action;
/**
* Reason for action stipulated by this Contract.
*/
@Child(name = "actionReason", type = {CodeableConcept.class}, order=9, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "actionReason", type = {CodeableConcept.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contract Action Reason", formalDefinition="Reason for action stipulated by this Contract." )
protected List<CodeableConcept> actionReason;
/**
* List of Contract actors.
*/
@Child(name = "actor", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "actor", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contract Actor", formalDefinition="List of Contract actors." )
protected List<ActorComponent> actor;
/**
* Contract Valued Item List.
*/
@Child(name = "valuedItem", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "valuedItem", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contract Valued Item", formalDefinition="Contract Valued Item List." )
protected List<ValuedItemComponent> valuedItem;
/**
* Party signing this Contract.
*/
@Child(name = "signer", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "signer", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contract Signer", formalDefinition="Party signing this Contract." )
protected List<SignatoryComponent> signer;
/**
* One or more Contract Provisions, which may be related and conveyed as a group, and may contain nested groups.
*/
@Child(name = "term", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "term", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contract Term List", formalDefinition="One or more Contract Provisions, which may be related and conveyed as a group, and may contain nested groups." )
protected List<TermComponent> term;
/**
* Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the "source of truth" and which would be the basis for legal action related to enforcement of this Contract.
*/
@Child(name = "binding", type = {Attachment.class, Composition.class, DocumentReference.class, QuestionnaireResponse.class}, order=14, min=0, max=1)
@Description(shortDefinition="Binding Contract", formalDefinition="Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the 'source of truth' and which would be the basis for legal action related to enforcement of this Contract." )
@Child(name = "binding", type = {Attachment.class, Composition.class, DocumentReference.class, QuestionnaireResponse.class}, order=14, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Binding Contract", formalDefinition="Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the \"source of truth\" and which would be the basis for legal action related to enforcement of this Contract." )
protected Type binding;
/**
* The "patient friendly language" versionof the Contract in whole or in parts. "Patient friendly language" means the representation of the Contract and Contract Provisions in a manner that is readily accessible and understandable by a layperson in accordance with best practices for communication styles that ensure that those agreeing to or signing the Contract understand the roles, actions, obligations, responsibilities, and implication of the agreement.
*/
@Child(name = "friendly", type = {}, order=15, min=0, max=Child.MAX_UNLIMITED)
@Description(shortDefinition="Contract Friendly Language", formalDefinition="The 'patient friendly language' versionof the Contract in whole or in parts. 'Patient friendly language' means the representation of the Contract and Contract Provisions in a manner that is readily accessible and understandable by a layperson in accordance with best practices for communication styles that ensure that those agreeing to or signing the Contract understand the roles, actions, obligations, responsibilities, and implication of the agreement." )
@Child(name = "friendly", type = {}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contract Friendly Language", formalDefinition="The \"patient friendly language\" versionof the Contract in whole or in parts. \"Patient friendly language\" means the representation of the Contract and Contract Provisions in a manner that is readily accessible and understandable by a layperson in accordance with best practices for communication styles that ensure that those agreeing to or signing the Contract understand the roles, actions, obligations, responsibilities, and implication of the agreement." )
protected List<FriendlyLanguageComponent> friendly;
/**
* List of Legal expressions or representations of this Contract.
*/
@Child(name = "legal", type = {}, order=16, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "legal", type = {}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contract Legal Language", formalDefinition="List of Legal expressions or representations of this Contract." )
protected List<LegalLanguageComponent> legal;
/**
* List of Computable Policy Rule Language Representations of this Contract.
*/
@Child(name = "rule", type = {}, order=17, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "rule", type = {}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Computable Contract Language", formalDefinition="List of Computable Policy Rule Language Representations of this Contract." )
protected List<ComputableLanguageComponent> rule;
@ -3247,8 +3247,8 @@ public class Contract extends DomainResource {
childrenList.add(new Property("valuedItem", "", "Contract Valued Item List.", 0, java.lang.Integer.MAX_VALUE, valuedItem));
childrenList.add(new Property("signer", "", "Party signing this Contract.", 0, java.lang.Integer.MAX_VALUE, signer));
childrenList.add(new Property("term", "", "One or more Contract Provisions, which may be related and conveyed as a group, and may contain nested groups.", 0, java.lang.Integer.MAX_VALUE, term));
childrenList.add(new Property("binding[x]", "Attachment|Reference(Composition|DocumentReference|QuestionnaireResponse)", "Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the 'source of truth' and which would be the basis for legal action related to enforcement of this Contract.", 0, java.lang.Integer.MAX_VALUE, binding));
childrenList.add(new Property("friendly", "", "The 'patient friendly language' versionof the Contract in whole or in parts. 'Patient friendly language' means the representation of the Contract and Contract Provisions in a manner that is readily accessible and understandable by a layperson in accordance with best practices for communication styles that ensure that those agreeing to or signing the Contract understand the roles, actions, obligations, responsibilities, and implication of the agreement.", 0, java.lang.Integer.MAX_VALUE, friendly));
childrenList.add(new Property("binding[x]", "Attachment|Reference(Composition|DocumentReference|QuestionnaireResponse)", "Legally binding Contract: This is the signed and legally recognized representation of the Contract, which is considered the \"source of truth\" and which would be the basis for legal action related to enforcement of this Contract.", 0, java.lang.Integer.MAX_VALUE, binding));
childrenList.add(new Property("friendly", "", "The \"patient friendly language\" versionof the Contract in whole or in parts. \"Patient friendly language\" means the representation of the Contract and Contract Provisions in a manner that is readily accessible and understandable by a layperson in accordance with best practices for communication styles that ensure that those agreeing to or signing the Contract understand the roles, actions, obligations, responsibilities, and implication of the agreement.", 0, java.lang.Integer.MAX_VALUE, friendly));
childrenList.add(new Property("legal", "", "List of Legal expressions or representations of this Contract.", 0, java.lang.Integer.MAX_VALUE, legal));
childrenList.add(new Property("rule", "", "List of Computable Policy Rule Language Representations of this Contract.", 0, java.lang.Integer.MAX_VALUE, rule));
}

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -137,21 +137,21 @@ public class Contraindication extends DomainResource {
/**
* Describes the action that was taken or the observation that was made that reduces/eliminates the risk associated with the identified contraindication.
*/
@Child(name = "action", type = {CodeableConcept.class}, order=1, min=1, max=1)
@Child(name = "action", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="What mitigation?", formalDefinition="Describes the action that was taken or the observation that was made that reduces/eliminates the risk associated with the identified contraindication." )
protected CodeableConcept action;
/**
* Indicates when the mitigating action was documented.
*/
@Child(name = "date", type = {DateTimeType.class}, order=2, min=0, max=1)
@Child(name = "date", type = {DateTimeType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Date committed", formalDefinition="Indicates when the mitigating action was documented." )
protected DateTimeType date;
/**
* Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring.
*/
@Child(name = "author", type = {Practitioner.class}, order=3, min=0, max=1)
@Child(name = "author", type = {Practitioner.class}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Who is committing?", formalDefinition="Identifies the practitioner who determined the mitigation and takes responsibility for the mitigation step occurring." )
protected Reference author;
@ -341,7 +341,7 @@ public class Contraindication extends DomainResource {
/**
* Indicates the patient whose record the contraindication is associated with.
*/
@Child(name = "patient", type = {Patient.class}, order=0, min=0, max=1)
@Child(name = "patient", type = {Patient.class}, order=0, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Associated patient", formalDefinition="Indicates the patient whose record the contraindication is associated with." )
protected Reference patient;
@ -353,21 +353,21 @@ public class Contraindication extends DomainResource {
/**
* Identifies the general type of issue identified.
*/
@Child(name = "category", type = {CodeableConcept.class}, order=1, min=0, max=1)
@Child(name = "category", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="E.g. Drug-drug, duplicate therapy, etc.", formalDefinition="Identifies the general type of issue identified." )
protected CodeableConcept category;
/**
* Indicates the degree of importance associated with the identified issue based on the potential impact on the patient.
*/
@Child(name = "severity", type = {CodeType.class}, order=2, min=0, max=1)
@Child(name = "severity", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="high | moderate | low", formalDefinition="Indicates the degree of importance associated with the identified issue based on the potential impact on the patient." )
protected Enumeration<ContraindicationSeverity> severity;
/**
* Indicates the resource representing the current activity or proposed activity that.
*/
@Child(name = "implicated", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "implicated", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Problem resource", formalDefinition="Indicates the resource representing the current activity or proposed activity that." )
protected List<Reference> implicated;
/**
@ -379,21 +379,21 @@ public class Contraindication extends DomainResource {
/**
* A textual explanation of the contraindication.
*/
@Child(name = "detail", type = {StringType.class}, order=4, min=0, max=1)
@Child(name = "detail", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Description and context", formalDefinition="A textual explanation of the contraindication." )
protected StringType detail;
/**
* The date or date-time when the contraindication was initially identified.
*/
@Child(name = "date", type = {DateTimeType.class}, order=5, min=0, max=1)
@Child(name = "date", type = {DateTimeType.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When identified", formalDefinition="The date or date-time when the contraindication was initially identified." )
protected DateTimeType date;
/**
* Identifies the provider or software that identified the.
*/
@Child(name = "author", type = {Practitioner.class, Device.class}, order=6, min=0, max=1)
@Child(name = "author", type = {Practitioner.class, Device.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Who found issue?", formalDefinition="Identifies the provider or software that identified the." )
protected Reference author;
@ -405,21 +405,21 @@ public class Contraindication extends DomainResource {
/**
* Business identifier associated with the contraindication record.
*/
@Child(name = "identifier", type = {Identifier.class}, order=7, min=0, max=1)
@Child(name = "identifier", type = {Identifier.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Unique id for the contraindication", formalDefinition="Business identifier associated with the contraindication record." )
protected Identifier identifier;
/**
* The literature, knowledge-base or similar reference that describes the propensity for the contraindication identified.
*/
@Child(name = "reference", type = {UriType.class}, order=8, min=0, max=1)
@Child(name = "reference", type = {UriType.class}, order=8, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Authority for issue", formalDefinition="The literature, knowledge-base or similar reference that describes the propensity for the contraindication identified." )
protected UriType reference;
/**
* Indicates an action that has been taken or is committed to to reduce or eliminate the likelihood of the risk identified by the contraindication from manifesting. Can also reflect an observation of known mitigating factors that may reduce/eliminate the need for any action.
*/
@Child(name = "mitigation", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "mitigation", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Step taken to address", formalDefinition="Indicates an action that has been taken or is committed to to reduce or eliminate the likelihood of the risk identified by the contraindication from manifesting. Can also reflect an observation of known mitigating factors that may reduce/eliminate the need for any action." )
protected List<ContraindicationMitigationComponent> mitigation;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import org.hl7.fhir.instance.model.annotations.DatatypeDef;
import org.hl7.fhir.instance.model.annotations.Block;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -49,7 +49,7 @@ public class Coverage extends DomainResource {
/**
* The program or plan underwriter or payor.
*/
@Child(name = "issuer", type = {Organization.class}, order=0, min=0, max=1)
@Child(name = "issuer", type = {Organization.class}, order=0, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="An identifier for the plan issuer", formalDefinition="The program or plan underwriter or payor." )
protected Reference issuer;
@ -61,77 +61,77 @@ public class Coverage extends DomainResource {
/**
* Business Identification Number (BIN number) used to identify the routing of eclaims if the insurer themselves don't have a BIN number for all of their business.
*/
@Child(name = "bin", type = {Identifier.class}, order=1, min=0, max=1)
@Child(name = "bin", type = {Identifier.class}, order=1, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="BIN Number", formalDefinition="Business Identification Number (BIN number) used to identify the routing of eclaims if the insurer themselves don't have a BIN number for all of their business." )
protected Identifier bin;
/**
* Time period during which the coverage is in force. A missing start date indicates the start date isn't known, a missing end date means the coverage is continuing to be in force.
*/
@Child(name = "period", type = {Period.class}, order=2, min=0, max=1)
@Child(name = "period", type = {Period.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Coverage start and end dates", formalDefinition="Time period during which the coverage is in force. A missing start date indicates the start date isn't known, a missing end date means the coverage is continuing to be in force." )
protected Period period;
/**
* The type of coverage: social program, medical plan, accident coverage (workers compensation, auto), group health.
*/
@Child(name = "type", type = {Coding.class}, order=3, min=0, max=1)
@Child(name = "type", type = {Coding.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Type of coverage", formalDefinition="The type of coverage: social program, medical plan, accident coverage (workers compensation, auto), group health." )
protected Coding type;
/**
* The id issued to the subscriber.
*/
@Child(name = "subscriberId", type = {Identifier.class}, order=4, min=0, max=1)
@Child(name = "subscriberId", type = {Identifier.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Subscriber ID", formalDefinition="The id issued to the subscriber." )
protected Identifier subscriberId;
/**
* The main (and possibly only) identifier for the coverage - often referred to as a Member Id, Subscriber Id, Certificate number or Personal Health Number or Case ID.
*/
@Child(name = "identifier", type = {Identifier.class}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="The primary coverage ID", formalDefinition="The main (and possibly only) identifier for the coverage - often referred to as a Member Id, Subscriber Id, Certificate number or Personal Health Number or Case ID." )
protected List<Identifier> identifier;
/**
* Identifies a style or collective of coverage issues by the underwriter, for example may be used to identify a class of coverage or employer group. May also be referred to as a Policy or Group ID.
*/
@Child(name = "group", type = {StringType.class}, order=6, min=0, max=1)
@Child(name = "group", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="An identifier for the group", formalDefinition="Identifies a style or collective of coverage issues by the underwriter, for example may be used to identify a class of coverage or employer group. May also be referred to as a Policy or Group ID." )
protected StringType group;
/**
* Identifies a style or collective of coverage issues by the underwriter, for example may be used to identify a class of coverage or employer group. May also be referred to as a Policy or Group ID.
*/
@Child(name = "plan", type = {StringType.class}, order=7, min=0, max=1)
@Child(name = "plan", type = {StringType.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="An identifier for the plan", formalDefinition="Identifies a style or collective of coverage issues by the underwriter, for example may be used to identify a class of coverage or employer group. May also be referred to as a Policy or Group ID." )
protected StringType plan;
/**
* Identifies a sub-style or sub-collective of coverage issues by the underwriter, for example may be used to identify a specific employer group within a class of employers. May be referred to as a Section or Division ID.
*/
@Child(name = "subPlan", type = {StringType.class}, order=8, min=0, max=1)
@Child(name = "subPlan", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="An identifier for the subsection of the plan", formalDefinition="Identifies a sub-style or sub-collective of coverage issues by the underwriter, for example may be used to identify a specific employer group within a class of employers. May be referred to as a Section or Division ID." )
protected StringType subPlan;
/**
* A unique identifier for a dependent under the coverage.
*/
@Child(name = "dependent", type = {PositiveIntType.class}, order=9, min=0, max=1)
@Child(name = "dependent", type = {PositiveIntType.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The dependent number", formalDefinition="A unique identifier for a dependent under the coverage." )
protected PositiveIntType dependent;
/**
* An optional counter for a particular instance of the identified coverage which increments upon each renewal.
*/
@Child(name = "sequence", type = {PositiveIntType.class}, order=10, min=0, max=1)
@Child(name = "sequence", type = {PositiveIntType.class}, order=10, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The plan instance or sequence counter", formalDefinition="An optional counter for a particular instance of the identified coverage which increments upon each renewal." )
protected PositiveIntType sequence;
/**
* The party who 'owns' the insurance contractual relationship to the policy or to whom the benefit of the policy is due.
*/
@Child(name = "subscriber", type = {Patient.class}, order=11, min=0, max=1)
@Child(name = "subscriber", type = {Patient.class}, order=11, min=0, max=1, modifier=true, summary=false)
@Description(shortDefinition="Plan holder information", formalDefinition="The party who 'owns' the insurance contractual relationship to the policy or to whom the benefit of the policy is due." )
protected Reference subscriber;
@ -143,14 +143,14 @@ public class Coverage extends DomainResource {
/**
* The identifier for a community of providers.
*/
@Child(name = "network", type = {Identifier.class}, order=12, min=0, max=1)
@Child(name = "network", type = {Identifier.class}, order=12, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Insurer network", formalDefinition="The identifier for a community of providers." )
protected Identifier network;
/**
* The policy(s) which constitute this insurance coverage.
*/
@Child(name = "contract", type = {Contract.class}, order=13, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "contract", type = {Contract.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contract details", formalDefinition="The policy(s) which constitute this insurance coverage." )
protected List<Reference> contract;
/**

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -119,7 +119,7 @@ public class DataElement extends DomainResource {
switch (this) {
case COMPARABLE: return "The data element is sufficiently well-constrained that multiple pieces of data captured according to the constraints of the data element will be comparable (though in some cases, a degree of automated conversion/normalization may be required).";
case FULLYSPECIFIED: return "The data element is fully specified down to a single value set, single unit of measure, single data type, etc. Multiple pieces of data associated with this data element are fully compareable";
case EQUIVALENT: return "The data element allows multiple units of measure having equivalent meaning. E.g. 'cc' (cubic centimeter) and 'mL'.";
case EQUIVALENT: return "The data element allows multiple units of measure having equivalent meaning. E.g. \"cc\" (cubic centimeter) and \"mL\".";
case CONVERTABLE: return "The data element allows multiple units of measure that are convertable between each other (e.g. Inches and centimeters) and/or allows data to be captured in multiple value sets for which a known mapping exists allowing conversion of meaning";
case SCALEABLE: return "A convertable data element where unit conversions are different only by a power of 10. E.g. g, mg, kg";
case FLEXIBLE: return "The data element is unconstrained in units, choice of data types and/or choice of vocabulary such that automated comparison of data captured using the data element is not possible.";
@ -180,14 +180,14 @@ public class DataElement extends DomainResource {
/**
* The name of an individual to contact regarding the data element.
*/
@Child(name = "name", type = {StringType.class}, order=1, min=0, max=1)
@Child(name = "name", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Name of a individual to contact", formalDefinition="The name of an individual to contact regarding the data element." )
protected StringType name;
/**
* Contact details for individual (if a name was provided) or the publisher.
*/
@Child(name = "telecom", type = {ContactPoint.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "telecom", type = {ContactPoint.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Contact details for individual or publisher", formalDefinition="Contact details for individual (if a name was provided) or the publisher." )
protected List<ContactPoint> telecom;
@ -339,28 +339,28 @@ public class DataElement extends DomainResource {
/**
* An Internal id that is used to identify this mapping set when specific mappings are made on a per-element basis.
*/
@Child(name = "identity", type = {IdType.class}, order=1, min=1, max=1)
@Child(name = "identity", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Internal id when this mapping is used", formalDefinition="An Internal id that is used to identify this mapping set when specific mappings are made on a per-element basis." )
protected IdType identity;
/**
* An absolute URI that identifies the specification that this mapping is expressed to.
*/
@Child(name = "uri", type = {UriType.class}, order=2, min=0, max=1)
@Child(name = "uri", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Identifies what this mapping refers to", formalDefinition="An absolute URI that identifies the specification that this mapping is expressed to." )
protected UriType uri;
/**
* A name for the specification that is being mapped to.
*/
@Child(name = "name", type = {StringType.class}, order=3, min=0, max=1)
@Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Names what this mapping refers to", formalDefinition="A name for the specification that is being mapped to." )
protected StringType name;
/**
* Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage.
*/
@Child(name = "comments", type = {StringType.class}, order=4, min=0, max=1)
@Child(name = "comments", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Versions, Issues, Scope limitations etc", formalDefinition="Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage." )
protected StringType comments;
@ -623,98 +623,98 @@ public class DataElement extends DomainResource {
/**
* An absolute URL that is used to identify this data element when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this data element is (or will be) published.
*/
@Child(name = "url", type = {UriType.class}, order=0, min=0, max=1)
@Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Globally unique logical id for data element", formalDefinition="An absolute URL that is used to identify this data element when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this data element is (or will be) published." )
protected UriType url;
/**
* Formal identifier that is used to identify this data element when it is represented in other formats, or referenced in a specification, model, design or an instance.
*/
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Logical id to reference this data element", formalDefinition="Formal identifier that is used to identify this data element when it is represented in other formats, or referenced in a specification, model, design or an instance." )
protected List<Identifier> identifier;
/**
* The identifier that is used to identify this version of the data element when it is referenced in a StructureDefinition, Questionnaire or instance. This is an arbitrary value managed by the definition author manually.
*/
@Child(name = "version", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Logical id for this version of the data element", formalDefinition="The identifier that is used to identify this version of the data element when it is referenced in a StructureDefinition, Questionnaire or instance. This is an arbitrary value managed by the definition author manually." )
protected StringType version;
/**
* The term used by humans to refer to the data element. Should ideally be unique within the context in which the data element is expected to be used.
*/
@Child(name = "name", type = {StringType.class}, order=3, min=0, max=1)
@Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Descriptive label for this element definition", formalDefinition="The term used by humans to refer to the data element. Should ideally be unique within the context in which the data element is expected to be used." )
protected StringType name;
/**
* The status of the data element.
*/
@Child(name = "status", type = {CodeType.class}, order=4, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=4, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="draft | active | retired", formalDefinition="The status of the data element." )
protected Enumeration<ConformanceResourceStatus> status;
/**
* A flag to indicate that this search data elemnt definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage.
*/
@Child(name = "experimental", type = {BooleanType.class}, order=5, min=0, max=1)
@Child(name = "experimental", type = {BooleanType.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="If for testing purposes, not real usage", formalDefinition="A flag to indicate that this search data elemnt definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage." )
protected BooleanType experimental;
/**
* The name of the individual or organization that published the data element.
*/
@Child(name = "publisher", type = {StringType.class}, order=6, min=0, max=1)
@Child(name = "publisher", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Name of the publisher (Organization or individual)", formalDefinition="The name of the individual or organization that published the data element." )
protected StringType publisher;
/**
* Contacts to assist a user in finding and communicating with the publisher.
*/
@Child(name = "contact", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "contact", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Contact details of the publisher", formalDefinition="Contacts to assist a user in finding and communicating with the publisher." )
protected List<DataElementContactComponent> contact;
/**
* The date that this version of the Data Element was published. The date must change when the business version changes, if it does, and it must change if the status code changes. in addition, it should change when the substantiative content of the data element changes.
*/
@Child(name = "date", type = {DateTimeType.class}, order=8, min=0, max=1)
@Child(name = "date", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Date for this version of the data element", formalDefinition="The date that this version of the Data Element was published. The date must change when the business version changes, if it does, and it must change if the status code changes. in addition, it should change when the substantiative content of the data element changes." )
protected DateTimeType date;
/**
* The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of data element definitions.
*/
@Child(name = "useContext", type = {CodeableConcept.class}, order=9, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "useContext", type = {CodeableConcept.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Content intends to support these contexts", formalDefinition="The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of data element definitions." )
protected List<CodeableConcept> useContext;
/**
* A copyright statement relating to the definition of the data element. Copyright statements are generally legal restrictions on the use and publishing of the details of the definition of the data element.
*/
@Child(name = "copyright", type = {StringType.class}, order=10, min=0, max=1)
@Child(name = "copyright", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Use and/or Publishing restrictions", formalDefinition="A copyright statement relating to the definition of the data element. Copyright statements are generally legal restrictions on the use and publishing of the details of the definition of the data element." )
protected StringType copyright;
/**
* Identifies how precise the data element is in its definition.
*/
@Child(name = "stringency", type = {CodeType.class}, order=11, min=0, max=1)
@Child(name = "stringency", type = {CodeType.class}, order=11, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="comparable | fully-specified | equivalent | convertable | scaleable | flexible", formalDefinition="Identifies how precise the data element is in its definition." )
protected Enumeration<DataElementStringency> stringency;
/**
* Identifies a specification (other than a terminology) that the elements that make up the DataElement hav some correspondance with.
*/
@Child(name = "mapping", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "mapping", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="External specification mapped to", formalDefinition="Identifies a specification (other than a terminology) that the elements that make up the DataElement hav some correspondance with." )
protected List<DataElementMappingComponent> mapping;
/**
* Defines the structure, type, allowed values and other constraining characteristics of the data element.
*/
@Child(name = "element", type = {ElementDefinition.class}, order=13, min=1, max=Child.MAX_UNLIMITED)
@Child(name = "element", type = {ElementDefinition.class}, order=13, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Definition of element", formalDefinition="Defines the structure, type, allowed values and other constraining characteristics of the data element." )
protected List<ElementDefinition> element;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -135,84 +135,84 @@ public class Device extends DomainResource {
/**
* Unique instance identifiers assigned to a device by organizations like manufacturers or owners . If the identifier identifies the type of device, Device.type should be used.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Instance id from manufacturer, owner, and others", formalDefinition="Unique instance identifiers assigned to a device by organizations like manufacturers or owners . If the identifier identifies the type of device, Device.type should be used." )
protected List<Identifier> identifier;
/**
* Code or identifier to identify a kind of device.
*/
@Child(name = "type", type = {CodeableConcept.class}, order=1, min=1, max=1)
@Child(name = "type", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="What kind of device this is", formalDefinition="Code or identifier to identify a kind of device." )
protected CodeableConcept type;
/**
* Descriptive information, usage information or implantation information that is not captured in an existing element.
*/
@Child(name = "note", type = {Annotation.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "note", type = {Annotation.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Device notes and comments", formalDefinition="Descriptive information, usage information or implantation information that is not captured in an existing element." )
protected List<Annotation> note;
/**
* Status of the Device availability.
*/
@Child(name = "status", type = {CodeType.class}, order=3, min=0, max=1)
@Child(name = "status", type = {CodeType.class}, order=3, min=0, max=1, modifier=true, summary=true)
@Description(shortDefinition="available | not-available | entered-in-error", formalDefinition="Status of the Device availability." )
protected Enumeration<DeviceStatus> status;
/**
* A name of the manufacturer.
*/
@Child(name = "manufacturer", type = {StringType.class}, order=4, min=0, max=1)
@Child(name = "manufacturer", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Name of device manufacturer", formalDefinition="A name of the manufacturer." )
protected StringType manufacturer;
/**
* The "model" - an identifier assigned by the manufacturer to identify the product by its type. This number is shared by the all devices sold as the same type.
*/
@Child(name = "model", type = {StringType.class}, order=5, min=0, max=1)
@Description(shortDefinition="Model id assigned by the manufacturer", formalDefinition="The 'model' - an identifier assigned by the manufacturer to identify the product by its type. This number is shared by the all devices sold as the same type." )
@Child(name = "model", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Model id assigned by the manufacturer", formalDefinition="The \"model\" - an identifier assigned by the manufacturer to identify the product by its type. This number is shared by the all devices sold as the same type." )
protected StringType model;
/**
* The version of the device, if the device has multiple releases under the same model, or if the device is software or carries firmware.
*/
@Child(name = "version", type = {StringType.class}, order=6, min=0, max=1)
@Child(name = "version", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Version number (i.e. software)", formalDefinition="The version of the device, if the device has multiple releases under the same model, or if the device is software or carries firmware." )
protected StringType version;
/**
* The Date and time when the device was manufactured.
*/
@Child(name = "manufactureDate", type = {DateTimeType.class}, order=7, min=0, max=1)
@Child(name = "manufactureDate", type = {DateTimeType.class}, order=7, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Manufacture date", formalDefinition="The Date and time when the device was manufactured." )
protected DateTimeType manufactureDate;
/**
* The date and time beyond which this device is no longer valid or should not be used (if applicable).
*/
@Child(name = "expiry", type = {DateTimeType.class}, order=8, min=0, max=1)
@Child(name = "expiry", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Date and time of expiry of this device (if applicable)", formalDefinition="The date and time beyond which this device is no longer valid or should not be used (if applicable)." )
protected DateTimeType expiry;
/**
* United States Food and Drug Administration mandated Unique Device Identifier (UDI). Use the human readable information (the content that the user sees, which is sometimes different to the exact syntax represented in the barcode) - see http://www.fda.gov/MedicalDevices/DeviceRegulationandGuidance/UniqueDeviceIdentification/default.htm.
*/
@Child(name = "udi", type = {StringType.class}, order=9, min=0, max=1)
@Child(name = "udi", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="FDA Mandated Unique Device Identifier", formalDefinition="United States Food and Drug Administration mandated Unique Device Identifier (UDI). Use the human readable information (the content that the user sees, which is sometimes different to the exact syntax represented in the barcode) - see http://www.fda.gov/MedicalDevices/DeviceRegulationandGuidance/UniqueDeviceIdentification/default.htm." )
protected StringType udi;
/**
* Lot number assigned by the manufacturer.
*/
@Child(name = "lotNumber", type = {StringType.class}, order=10, min=0, max=1)
@Child(name = "lotNumber", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Lot number of manufacture", formalDefinition="Lot number assigned by the manufacturer." )
protected StringType lotNumber;
/**
* An organization that is responsible for the provision and ongoing maintenance of the device.
*/
@Child(name = "owner", type = {Organization.class}, order=11, min=0, max=1)
@Child(name = "owner", type = {Organization.class}, order=11, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Organization responsible for device", formalDefinition="An organization that is responsible for the provision and ongoing maintenance of the device." )
protected Reference owner;
@ -224,7 +224,7 @@ public class Device extends DomainResource {
/**
* The place where the device can be found.
*/
@Child(name = "location", type = {Location.class}, order=12, min=0, max=1)
@Child(name = "location", type = {Location.class}, order=12, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Where the resource is found", formalDefinition="The place where the device can be found." )
protected Reference location;
@ -236,7 +236,7 @@ public class Device extends DomainResource {
/**
* Patient information, if the resource is affixed to a person.
*/
@Child(name = "patient", type = {Patient.class}, order=13, min=0, max=1)
@Child(name = "patient", type = {Patient.class}, order=13, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="If the resource is affixed to a person", formalDefinition="Patient information, if the resource is affixed to a person." )
protected Reference patient;
@ -248,14 +248,14 @@ public class Device extends DomainResource {
/**
* Contact details for an organization or a particular human that is responsible for the device.
*/
@Child(name = "contact", type = {ContactPoint.class}, order=14, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "contact", type = {ContactPoint.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Details for human/organization for support", formalDefinition="Contact details for an organization or a particular human that is responsible for the device." )
protected List<ContactPoint> contact;
/**
* A network address on which the device may be contacted directly.
*/
@Child(name = "url", type = {UriType.class}, order=15, min=0, max=1)
@Child(name = "url", type = {UriType.class}, order=15, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Network address to contact device", formalDefinition="A network address on which the device may be contacted directly." )
protected UriType url;
@ -1000,7 +1000,7 @@ public class Device extends DomainResource {
childrenList.add(new Property("note", "Annotation", "Descriptive information, usage information or implantation information that is not captured in an existing element.", 0, java.lang.Integer.MAX_VALUE, note));
childrenList.add(new Property("status", "code", "Status of the Device availability.", 0, java.lang.Integer.MAX_VALUE, status));
childrenList.add(new Property("manufacturer", "string", "A name of the manufacturer.", 0, java.lang.Integer.MAX_VALUE, manufacturer));
childrenList.add(new Property("model", "string", "The 'model' - an identifier assigned by the manufacturer to identify the product by its type. This number is shared by the all devices sold as the same type.", 0, java.lang.Integer.MAX_VALUE, model));
childrenList.add(new Property("model", "string", "The \"model\" - an identifier assigned by the manufacturer to identify the product by its type. This number is shared by the all devices sold as the same type.", 0, java.lang.Integer.MAX_VALUE, model));
childrenList.add(new Property("version", "string", "The version of the device, if the device has multiple releases under the same model, or if the device is software or carries firmware.", 0, java.lang.Integer.MAX_VALUE, version));
childrenList.add(new Property("manufactureDate", "dateTime", "The Date and time when the device was manufactured.", 0, java.lang.Integer.MAX_VALUE, manufactureDate));
childrenList.add(new Property("expiry", "dateTime", "The date and time beyond which this device is no longer valid or should not be used (if applicable).", 0, java.lang.Integer.MAX_VALUE, expiry));

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -249,21 +249,21 @@ public class DeviceComponent extends DomainResource {
/**
* Describes the specification type, such as, serial number, part number, hardware revision, software revision, etc.
*/
@Child(name = "specType", type = {CodeableConcept.class}, order=1, min=0, max=1)
@Child(name = "specType", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Specification type", formalDefinition="Describes the specification type, such as, serial number, part number, hardware revision, software revision, etc." )
protected CodeableConcept specType;
/**
* Describes the internal component unique identification. This is a provision for manufacture specific standard components using a private OID. 11073-10101 has a partition for private OID semantic that the manufacture can make use of.
*/
@Child(name = "componentId", type = {Identifier.class}, order=2, min=0, max=1)
@Child(name = "componentId", type = {Identifier.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Internal component unique identification", formalDefinition="Describes the internal component unique identification. This is a provision for manufacture specific standard components using a private OID. 11073-10101 has a partition for private OID semantic that the manufacture can make use of." )
protected Identifier componentId;
/**
* Describes the printable string defining the component.
*/
@Child(name = "productionSpec", type = {StringType.class}, order=3, min=0, max=1)
@Child(name = "productionSpec", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="A printable string defining the component", formalDefinition="Describes the printable string defining the component." )
protected StringType productionSpec;
@ -420,28 +420,28 @@ public class DeviceComponent extends DomainResource {
/**
* Describes the specific component type as defined in the object-oriented or metric nomenclature partition.
*/
@Child(name = "type", type = {CodeableConcept.class}, order=0, min=1, max=1)
@Child(name = "type", type = {CodeableConcept.class}, order=0, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="What kind of component it is", formalDefinition="Describes the specific component type as defined in the object-oriented or metric nomenclature partition." )
protected CodeableConcept type;
/**
* Describes the local assigned unique identification by the software. For example: handle ID.
*/
@Child(name = "identifier", type = {Identifier.class}, order=1, min=1, max=1)
@Child(name = "identifier", type = {Identifier.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Instance id assigned by the software stack", formalDefinition="Describes the local assigned unique identification by the software. For example: handle ID." )
protected Identifier identifier;
/**
* Describes the timestamp for the most recent system change which includes device configuration or setting change.
*/
@Child(name = "lastSystemChange", type = {InstantType.class}, order=2, min=1, max=1)
@Child(name = "lastSystemChange", type = {InstantType.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Recent system change timestamp", formalDefinition="Describes the timestamp for the most recent system change which includes device configuration or setting change." )
protected InstantType lastSystemChange;
/**
* Describes the link to the source Device that contains administrative device information such as manufacture, serial number, etc.
*/
@Child(name = "source", type = {Device.class}, order=3, min=0, max=1)
@Child(name = "source", type = {Device.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="A source device of this component", formalDefinition="Describes the link to the source Device that contains administrative device information such as manufacture, serial number, etc." )
protected Reference source;
@ -453,7 +453,7 @@ public class DeviceComponent extends DomainResource {
/**
* Describes the link to the parent resource. For example: Channel is linked to its VMD parent.
*/
@Child(name = "parent", type = {DeviceComponent.class}, order=4, min=0, max=1)
@Child(name = "parent", type = {DeviceComponent.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Parent resource link", formalDefinition="Describes the link to the parent resource. For example: Channel is linked to its VMD parent." )
protected Reference parent;
@ -465,35 +465,35 @@ public class DeviceComponent extends DomainResource {
/**
* Indicates current operational status of the device. For example: On, Off, Standby, etc.
*/
@Child(name = "operationalStatus", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "operationalStatus", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Component operational status", formalDefinition="Indicates current operational status of the device. For example: On, Off, Standby, etc." )
protected List<CodeableConcept> operationalStatus;
/**
* Describes the parameter group supported by the current device component that is based on some nomenclature, e.g., cardiovascular.
*/
@Child(name = "parameterGroup", type = {CodeableConcept.class}, order=6, min=0, max=1)
@Child(name = "parameterGroup", type = {CodeableConcept.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Current supported parameter group", formalDefinition="Describes the parameter group supported by the current device component that is based on some nomenclature, e.g., cardiovascular." )
protected CodeableConcept parameterGroup;
/**
* Describes the physical principle of the measurement. For example: thermal, chemical, acoustical, etc.
*/
@Child(name = "measurementPrinciple", type = {CodeType.class}, order=7, min=0, max=1)
@Child(name = "measurementPrinciple", type = {CodeType.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="other | chemical | electrical | impedance | nuclear | optical | thermal | biological | mechanical | acoustical | manual+", formalDefinition="Describes the physical principle of the measurement. For example: thermal, chemical, acoustical, etc." )
protected Enumeration<MeasmntPrinciple> measurementPrinciple;
/**
* Describes the production specification such as component revision, serial number, etc.
*/
@Child(name = "productionSpecification", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "productionSpecification", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Production specification of the component", formalDefinition="Describes the production specification such as component revision, serial number, etc." )
protected List<DeviceComponentProductionSpecificationComponent> productionSpecification;
/**
* Describes the language code for the human-readable text string produced by the device. This language code will follow the IETF language tag. Example: en-US.
*/
@Child(name = "languageCode", type = {CodeableConcept.class}, order=9, min=0, max=1)
@Child(name = "languageCode", type = {CodeableConcept.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Language code for the human-readable text strings produced by the device", formalDefinition="Describes the language code for the human-readable text string produced by the device. This language code will follow the IETF language tag. Example: en-US." )
protected CodeableConcept languageCode;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -593,21 +593,21 @@ public class DeviceMetric extends DomainResource {
/**
* Describes the type of the calibration method.
*/
@Child(name = "type", type = {CodeType.class}, order=1, min=0, max=1)
@Child(name = "type", type = {CodeType.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="unspecified | offset | gain | two-point", formalDefinition="Describes the type of the calibration method." )
protected Enumeration<DeviceMetricCalibrationType> type;
/**
* Describes the state of the calibration.
*/
@Child(name = "state", type = {CodeType.class}, order=2, min=0, max=1)
@Child(name = "state", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="not-calibrated | calibration-required | calibrated | unspecified", formalDefinition="Describes the state of the calibration." )
protected Enumeration<DeviceMetricCalibrationState> state;
/**
* Describes the time last calibration has been performed.
*/
@Child(name = "time", type = {InstantType.class}, order=3, min=0, max=1)
@Child(name = "time", type = {InstantType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Describes the time last calibration has been performed", formalDefinition="Describes the time last calibration has been performed." )
protected InstantType time;
@ -815,7 +815,7 @@ public class DeviceMetric extends DomainResource {
/**
* Describes the type of the metric. For example: Heart Rate, PEEP Setting, etc.
*/
@Child(name = "type", type = {CodeableConcept.class}, order=0, min=1, max=1)
@Child(name = "type", type = {CodeableConcept.class}, order=0, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Type of metric", formalDefinition="Describes the type of the metric. For example: Heart Rate, PEEP Setting, etc." )
protected CodeableConcept type;
@ -823,21 +823,21 @@ public class DeviceMetric extends DomainResource {
* Describes the unique identification of this metric that has been assigned by the device or gateway software. For example: handle ID.
It should be noted that in order to make the identifier unique, the system element of the identifier should be set to the unique identifier of the device.
*/
@Child(name = "identifier", type = {Identifier.class}, order=1, min=1, max=1)
@Child(name = "identifier", type = {Identifier.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Unique identifier of this DeviceMetric", formalDefinition="Describes the unique identification of this metric that has been assigned by the device or gateway software. For example: handle ID. \nIt should be noted that in order to make the identifier unique, the system element of the identifier should be set to the unique identifier of the device." )
protected Identifier identifier;
/**
* Describes the unit that an observed value determined for this metric will have. For example: Percent, Seconds, etc.
*/
@Child(name = "unit", type = {CodeableConcept.class}, order=2, min=0, max=1)
@Child(name = "unit", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Unit of metric", formalDefinition="Describes the unit that an observed value determined for this metric will have. For example: Percent, Seconds, etc." )
protected CodeableConcept unit;
/**
* Describes the link to the Device that this DeviceMetric belongs to and that contains administrative device information such as manufacture, serial number, etc.
*/
@Child(name = "source", type = {Device.class}, order=3, min=0, max=1)
@Child(name = "source", type = {Device.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Describes the link to the source Device", formalDefinition="Describes the link to the Device that this DeviceMetric belongs to and that contains administrative device information such as manufacture, serial number, etc." )
protected Reference source;
@ -850,7 +850,7 @@ It should be noted that in order to make the identifier unique, the system eleme
* Describes the link to the DeviceComponent that this DeviceMetric belongs to and that provide information about the location of this DeviceMetric in the containment structure of the parent Device.
An example would be a DeviceComponent that represents a Channel. This reference can be used by a client application to distinguish DeviceMetrics that have the same type, but should be interpreted based on their containment location.
*/
@Child(name = "parent", type = {DeviceComponent.class}, order=4, min=0, max=1)
@Child(name = "parent", type = {DeviceComponent.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Describes the link to the parent DeviceComponent", formalDefinition="Describes the link to the DeviceComponent that this DeviceMetric belongs to and that provide information about the location of this DeviceMetric in the containment structure of the parent Device.\nAn example would be a DeviceComponent that represents a Channel. This reference can be used by a client application to distinguish DeviceMetrics that have the same type, but should be interpreted based on their containment location." )
protected Reference parent;
@ -863,21 +863,21 @@ An example would be a DeviceComponent that represents a Channel. This reference
/**
* Indicates current operational state of the device. For example: On, Off, Standby, etc.
*/
@Child(name = "operationalStatus", type = {CodeType.class}, order=5, min=0, max=1)
@Child(name = "operationalStatus", type = {CodeType.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="on | off | standby", formalDefinition="Indicates current operational state of the device. For example: On, Off, Standby, etc." )
protected Enumeration<DeviceMetricOperationalStatus> operationalStatus;
/**
* Describes the color representation for the metric. This is often used to aid clinicians to track and identify parameter types by color. In practice, consider a Patient Monitor that has ECG/HR and Pleth for example; the parameters are displayed in different characteristic colors, such as HR-blue, BP-green, and PR and SpO2- magenta.
*/
@Child(name = "color", type = {CodeType.class}, order=6, min=0, max=1)
@Child(name = "color", type = {CodeType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="black | red | green | yellow | blue | magenta | cyan | white", formalDefinition="Describes the color representation for the metric. This is often used to aid clinicians to track and identify parameter types by color. In practice, consider a Patient Monitor that has ECG/HR and Pleth for example; the parameters are displayed in different characteristic colors, such as HR-blue, BP-green, and PR and SpO2- magenta." )
protected Enumeration<DeviceMetricColor> color;
/**
* Indicates the category of the observation generation process. A DeviceMetric can be for example a setting, measurement, or calculation.
*/
@Child(name = "category", type = {CodeType.class}, order=7, min=1, max=1)
@Child(name = "category", type = {CodeType.class}, order=7, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="measurement | setting | calculation | unspecified", formalDefinition="Indicates the category of the observation generation process. A DeviceMetric can be for example a setting, measurement, or calculation." )
protected Enumeration<DeviceMetricCategory> category;
@ -886,14 +886,14 @@ An example would be a DeviceComponent that represents a Channel. This reference
The measurement repetition time can range from milliseconds up to hours. An example for a measurement repetition time in the range of milliseconds is the sampling rate of an ECG. An example for a measurement repetition time in the range of hours is a NIBP that is triggered automatically every hour.
The update period may be different than the measurement repetition time, if the device does not update the published observed value with the same frequency as it was measured.
*/
@Child(name = "measurementPeriod", type = {Timing.class}, order=8, min=0, max=1)
@Child(name = "measurementPeriod", type = {Timing.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Describes the measurement repetition time", formalDefinition="Describes the measurement repetition time. This is not necessarily the same as the update period.\nThe measurement repetition time can range from milliseconds up to hours. An example for a measurement repetition time in the range of milliseconds is the sampling rate of an ECG. An example for a measurement repetition time in the range of hours is a NIBP that is triggered automatically every hour.\nThe update period may be different than the measurement repetition time, if the device does not update the published observed value with the same frequency as it was measured." )
protected Timing measurementPeriod;
/**
* Describes the calibrations that have been performed or that are required to be performed.
*/
@Child(name = "calibration", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "calibration", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Describes the calibrations that have been performed or that are required to be performed", formalDefinition="Describes the calibrations that have been performed or that are required to be performed." )
protected List<DeviceMetricCalibrationComponent> calibration;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -333,21 +333,21 @@ public class DeviceUseRequest extends DomainResource {
/**
* Indicates the site on the subject's body where the device should be used ( i.e. the target site).
*/
@Child(name = "bodySite", type = {CodeableConcept.class, BodySite.class}, order=0, min=0, max=1)
@Child(name = "bodySite", type = {CodeableConcept.class, BodySite.class}, order=0, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Target body site", formalDefinition="Indicates the site on the subject's body where the device should be used ( i.e. the target site)." )
protected Type bodySite;
/**
* The status of the request.
*/
@Child(name = "status", type = {CodeType.class}, order=1, min=0, max=1)
@Child(name = "status", type = {CodeType.class}, order=1, min=0, max=1, modifier=true, summary=true)
@Description(shortDefinition="proposed | planned | requested | received | accepted | in-progress | completed | suspended | rejected | aborted", formalDefinition="The status of the request." )
protected Enumeration<DeviceUseRequestStatus> status;
/**
* The details of the device to be used.
*/
@Child(name = "device", type = {Device.class}, order=2, min=1, max=1)
@Child(name = "device", type = {Device.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Device requested", formalDefinition="The details of the device to be used." )
protected Reference device;
@ -359,7 +359,7 @@ public class DeviceUseRequest extends DomainResource {
/**
* An encounter that provides additional context in which this request is made.
*/
@Child(name = "encounter", type = {Encounter.class}, order=3, min=0, max=1)
@Child(name = "encounter", type = {Encounter.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Encounter motivating request", formalDefinition="An encounter that provides additional context in which this request is made." )
protected Reference encounter;
@ -371,49 +371,49 @@ public class DeviceUseRequest extends DomainResource {
/**
* Identifiers assigned to this order by the orderer or by the receiver.
*/
@Child(name = "identifier", type = {Identifier.class}, order=4, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Request identifier", formalDefinition="Identifiers assigned to this order by the orderer or by the receiver." )
protected List<Identifier> identifier;
/**
* Reason or justification for the use of this device.
*/
@Child(name = "indication", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "indication", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Reason for request", formalDefinition="Reason or justification for the use of this device." )
protected List<CodeableConcept> indication;
/**
* Details about this request that were not represented at all or sufficiently in one of the attributes provided in a class. These may include for example a comment, an instruction, or a note associated with the statement.
*/
@Child(name = "notes", type = {StringType.class}, order=6, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "notes", type = {StringType.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Notes or comments", formalDefinition="Details about this request that were not represented at all or sufficiently in one of the attributes provided in a class. These may include for example a comment, an instruction, or a note associated with the statement." )
protected List<StringType> notes;
/**
* The proposed act must be performed if the indicated conditions occur, e.g.., shortness of breath, SpO2 less than x%.
*/
@Child(name = "prnReason", type = {CodeableConcept.class}, order=7, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "prnReason", type = {CodeableConcept.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="PRN", formalDefinition="The proposed act must be performed if the indicated conditions occur, e.g.., shortness of breath, SpO2 less than x%." )
protected List<CodeableConcept> prnReason;
/**
* The time when the request was made.
*/
@Child(name = "orderedOn", type = {DateTimeType.class}, order=8, min=0, max=1)
@Child(name = "orderedOn", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When ordered", formalDefinition="The time when the request was made." )
protected DateTimeType orderedOn;
/**
* The time at which the request was made/recorded.
*/
@Child(name = "recordedOn", type = {DateTimeType.class}, order=9, min=0, max=1)
@Child(name = "recordedOn", type = {DateTimeType.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When recorded", formalDefinition="The time at which the request was made/recorded." )
protected DateTimeType recordedOn;
/**
* The patient who will use the device.
*/
@Child(name = "subject", type = {Patient.class}, order=10, min=1, max=1)
@Child(name = "subject", type = {Patient.class}, order=10, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Focus of request", formalDefinition="The patient who will use the device." )
protected Reference subject;
@ -425,14 +425,14 @@ public class DeviceUseRequest extends DomainResource {
/**
* The timing schedule for the use of the device The Schedule data type allows many different expressions, for example. "Every 8 hours"; "Three times a day"; "1/2 an hour before breakfast for 10 days from 23-Dec 2011:"; "15 Oct 2013, 17 Oct 2013 and 1 Nov 2013".
*/
@Child(name = "timing", type = {Timing.class, Period.class, DateTimeType.class}, order=11, min=0, max=1)
@Description(shortDefinition="Schedule for use", formalDefinition="The timing schedule for the use of the device The Schedule data type allows many different expressions, for example. 'Every 8 hours'; 'Three times a day'; '1/2 an hour before breakfast for 10 days from 23-Dec 2011:'; '15 Oct 2013, 17 Oct 2013 and 1 Nov 2013'." )
@Child(name = "timing", type = {Timing.class, Period.class, DateTimeType.class}, order=11, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Schedule for use", formalDefinition="The timing schedule for the use of the device The Schedule data type allows many different expressions, for example. \"Every 8 hours\"; \"Three times a day\"; \"1/2 an hour before breakfast for 10 days from 23-Dec 2011:\"; \"15 Oct 2013, 17 Oct 2013 and 1 Nov 2013\"." )
protected Type timing;
/**
* Characterizes how quickly the use of device must be initiated. Includes concepts such as stat, urgent, routine.
*/
@Child(name = "priority", type = {CodeType.class}, order=12, min=0, max=1)
@Child(name = "priority", type = {CodeType.class}, order=12, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="routine | urgent | stat | asap", formalDefinition="Characterizes how quickly the use of device must be initiated. Includes concepts such as stat, urgent, routine." )
protected Enumeration<DeviceUseRequestPriority> priority;
@ -1072,7 +1072,7 @@ public class DeviceUseRequest extends DomainResource {
childrenList.add(new Property("orderedOn", "dateTime", "The time when the request was made.", 0, java.lang.Integer.MAX_VALUE, orderedOn));
childrenList.add(new Property("recordedOn", "dateTime", "The time at which the request was made/recorded.", 0, java.lang.Integer.MAX_VALUE, recordedOn));
childrenList.add(new Property("subject", "Reference(Patient)", "The patient who will use the device.", 0, java.lang.Integer.MAX_VALUE, subject));
childrenList.add(new Property("timing[x]", "Timing|Period|dateTime", "The timing schedule for the use of the device The Schedule data type allows many different expressions, for example. 'Every 8 hours'; 'Three times a day'; '1/2 an hour before breakfast for 10 days from 23-Dec 2011:'; '15 Oct 2013, 17 Oct 2013 and 1 Nov 2013'.", 0, java.lang.Integer.MAX_VALUE, timing));
childrenList.add(new Property("timing[x]", "Timing|Period|dateTime", "The timing schedule for the use of the device The Schedule data type allows many different expressions, for example. \"Every 8 hours\"; \"Three times a day\"; \"1/2 an hour before breakfast for 10 days from 23-Dec 2011:\"; \"15 Oct 2013, 17 Oct 2013 and 1 Nov 2013\".", 0, java.lang.Integer.MAX_VALUE, timing));
childrenList.add(new Property("priority", "code", "Characterizes how quickly the use of device must be initiated. Includes concepts such as stat, urgent, routine.", 0, java.lang.Integer.MAX_VALUE, priority));
}

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -49,21 +49,21 @@ public class DeviceUseStatement extends DomainResource {
/**
* Indicates the site on the subject's body where the device was used ( i.e. the target site).
*/
@Child(name = "bodySite", type = {CodeableConcept.class, BodySite.class}, order=0, min=0, max=1)
@Child(name = "bodySite", type = {CodeableConcept.class, BodySite.class}, order=0, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Target body site", formalDefinition="Indicates the site on the subject's body where the device was used ( i.e. the target site)." )
protected Type bodySite;
/**
* The time period over which the device was used.
*/
@Child(name = "whenUsed", type = {Period.class}, order=1, min=0, max=1)
@Child(name = "whenUsed", type = {Period.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="", formalDefinition="The time period over which the device was used." )
protected Period whenUsed;
/**
* The details of the device used.
*/
@Child(name = "device", type = {Device.class}, order=2, min=1, max=1)
@Child(name = "device", type = {Device.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="", formalDefinition="The details of the device used." )
protected Reference device;
@ -75,35 +75,35 @@ public class DeviceUseStatement extends DomainResource {
/**
* An external identifier for this statement such as an IRI.
*/
@Child(name = "identifier", type = {Identifier.class}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="", formalDefinition="An external identifier for this statement such as an IRI." )
protected List<Identifier> identifier;
/**
* Reason or justification for the use of the device.
*/
@Child(name = "indication", type = {CodeableConcept.class}, order=4, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "indication", type = {CodeableConcept.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="", formalDefinition="Reason or justification for the use of the device." )
protected List<CodeableConcept> indication;
/**
* Details about the device statement that were not represented at all or sufficiently in one of the attributes provided in a class. These may include for example a comment, an instruction, or a note associated with the statement.
*/
@Child(name = "notes", type = {StringType.class}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "notes", type = {StringType.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="", formalDefinition="Details about the device statement that were not represented at all or sufficiently in one of the attributes provided in a class. These may include for example a comment, an instruction, or a note associated with the statement." )
protected List<StringType> notes;
/**
* The time at which the statement was made/recorded.
*/
@Child(name = "recordedOn", type = {DateTimeType.class}, order=6, min=0, max=1)
@Child(name = "recordedOn", type = {DateTimeType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="", formalDefinition="The time at which the statement was made/recorded." )
protected DateTimeType recordedOn;
/**
* The patient who used the device.
*/
@Child(name = "subject", type = {Patient.class}, order=7, min=1, max=1)
@Child(name = "subject", type = {Patient.class}, order=7, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="", formalDefinition="The patient who used the device." )
protected Reference subject;
@ -115,7 +115,7 @@ public class DeviceUseStatement extends DomainResource {
/**
* How often the device was used.
*/
@Child(name = "timing", type = {Timing.class, Period.class, DateTimeType.class}, order=8, min=0, max=1)
@Child(name = "timing", type = {Timing.class, Period.class, DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="", formalDefinition="How often the device was used." )
protected Type timing;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -377,28 +377,28 @@ public class DiagnosticOrder extends DomainResource {
/**
* The status for the event.
*/
@Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="proposed | draft | planned | requested | received | accepted | in-progress | review | completed | cancelled | suspended | rejected | failed", formalDefinition="The status for the event." )
protected Enumeration<DiagnosticOrderStatus> status;
/**
* Additional information about the event that occurred - e.g. if the status remained unchanged.
*/
@Child(name = "description", type = {CodeableConcept.class}, order=2, min=0, max=1)
@Child(name = "description", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="More information about the event and its context", formalDefinition="Additional information about the event that occurred - e.g. if the status remained unchanged." )
protected CodeableConcept description;
/**
* The date/time at which the event occurred.
*/
@Child(name = "dateTime", type = {DateTimeType.class}, order=3, min=1, max=1)
@Child(name = "dateTime", type = {DateTimeType.class}, order=3, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="The date at which the event happened", formalDefinition="The date/time at which the event occurred." )
protected DateTimeType dateTime;
/**
* The person who was responsible for performing or recording the action.
*/
@Child(name = "actor", type = {Practitioner.class, Device.class}, order=4, min=0, max=1)
@Child(name = "actor", type = {Practitioner.class, Device.class}, order=4, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Who recorded or did this", formalDefinition="The person who was responsible for performing or recording the action." )
protected Reference actor;
@ -629,14 +629,14 @@ public class DiagnosticOrder extends DomainResource {
/**
* A code that identifies a particular diagnostic investigation, or panel of investigations, that have been requested.
*/
@Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1)
@Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Code to indicate the item (test or panel) being ordered", formalDefinition="A code that identifies a particular diagnostic investigation, or panel of investigations, that have been requested." )
protected CodeableConcept code;
/**
* If the item is related to a specific specimen.
*/
@Child(name = "specimen", type = {Specimen.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "specimen", type = {Specimen.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="If this item relates to specific specimens", formalDefinition="If the item is related to a specific specimen." )
protected List<Reference> specimen;
/**
@ -648,21 +648,21 @@ public class DiagnosticOrder extends DomainResource {
/**
* Anatomical location where the request test should be performed. This is the target site.
*/
@Child(name = "bodySite", type = {CodeableConcept.class}, order=3, min=0, max=1)
@Child(name = "bodySite", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Location of requested test (if applicable)", formalDefinition="Anatomical location where the request test should be performed. This is the target site." )
protected CodeableConcept bodySite;
/**
* The status of this individual item within the order.
*/
@Child(name = "status", type = {CodeType.class}, order=4, min=0, max=1)
@Child(name = "status", type = {CodeType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="proposed | draft | planned | requested | received | accepted | in-progress | review | completed | cancelled | suspended | rejected | failed", formalDefinition="The status of this individual item within the order." )
protected Enumeration<DiagnosticOrderStatus> status;
/**
* A summary of the events of interest that have occurred as this item of the request is processed.
*/
@Child(name = "event", type = {DiagnosticOrderEventComponent.class}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "event", type = {DiagnosticOrderEventComponent.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Events specific to this item", formalDefinition="A summary of the events of interest that have occurred as this item of the request is processed." )
protected List<DiagnosticOrderEventComponent> event;
@ -941,7 +941,7 @@ public class DiagnosticOrder extends DomainResource {
/**
* Who or what the investigation is to be performed on. This is usually a human patient, but diagnostic tests can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans).
*/
@Child(name = "subject", type = {Patient.class, Group.class, Location.class, Device.class}, order=0, min=1, max=1)
@Child(name = "subject", type = {Patient.class, Group.class, Location.class, Device.class}, order=0, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Who and/or what test is about", formalDefinition="Who or what the investigation is to be performed on. This is usually a human patient, but diagnostic tests can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans)." )
protected Reference subject;
@ -953,7 +953,7 @@ public class DiagnosticOrder extends DomainResource {
/**
* The practitioner that holds legal responsibility for ordering the investigation.
*/
@Child(name = "orderer", type = {Practitioner.class}, order=1, min=0, max=1)
@Child(name = "orderer", type = {Practitioner.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Who ordered the test", formalDefinition="The practitioner that holds legal responsibility for ordering the investigation." )
protected Reference orderer;
@ -965,14 +965,14 @@ public class DiagnosticOrder extends DomainResource {
/**
* Identifiers assigned to this order instance by the orderer and/or the receiver and/or order fulfiller.
*/
@Child(name = "identifier", type = {Identifier.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Identifiers assigned to this order", formalDefinition="Identifiers assigned to this order instance by the orderer and/or the receiver and/or order fulfiller." )
protected List<Identifier> identifier;
/**
* An encounter that provides additional information about the healthcare context in which this request is made.
*/
@Child(name = "encounter", type = {Encounter.class}, order=3, min=0, max=1)
@Child(name = "encounter", type = {Encounter.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The encounter that this diagnostic order is associated with", formalDefinition="An encounter that provides additional information about the healthcare context in which this request is made." )
protected Reference encounter;
@ -984,14 +984,14 @@ public class DiagnosticOrder extends DomainResource {
/**
* An explanation or justification for why this diagnostic investigation is being requested. This is often for billing purposes. May relate to the resources referred to in supportingInformation.
*/
@Child(name = "reason", type = {CodeableConcept.class}, order=4, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "reason", type = {CodeableConcept.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Explanation/Justification for test", formalDefinition="An explanation or justification for why this diagnostic investigation is being requested. This is often for billing purposes. May relate to the resources referred to in supportingInformation." )
protected List<CodeableConcept> reason;
/**
* Additional clinical information about the patient or specimen that may influence test interpretations. This includes observations explicitly requested by the producer(filler) to provide context or supporting information needed to complete the order.
*/
@Child(name = "supportingInformation", type = {Observation.class, Condition.class, DocumentReference.class}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "supportingInformation", type = {Observation.class, Condition.class, DocumentReference.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Additional clinical information", formalDefinition="Additional clinical information about the patient or specimen that may influence test interpretations. This includes observations explicitly requested by the producer(filler) to provide context or supporting information needed to complete the order." )
protected List<Reference> supportingInformation;
/**
@ -1003,7 +1003,7 @@ public class DiagnosticOrder extends DomainResource {
/**
* One or more specimens that the diagnostic investigation is about.
*/
@Child(name = "specimen", type = {Specimen.class}, order=6, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "specimen", type = {Specimen.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="If the whole order relates to specific specimens", formalDefinition="One or more specimens that the diagnostic investigation is about." )
protected List<Reference> specimen;
/**
@ -1015,36 +1015,36 @@ public class DiagnosticOrder extends DomainResource {
/**
* The status of the order.
*/
@Child(name = "status", type = {CodeType.class}, order=7, min=0, max=1)
@Child(name = "status", type = {CodeType.class}, order=7, min=0, max=1, modifier=true, summary=true)
@Description(shortDefinition="proposed | draft | planned | requested | received | accepted | in-progress | review | completed | cancelled | suspended | rejected | failed", formalDefinition="The status of the order." )
protected Enumeration<DiagnosticOrderStatus> status;
/**
* The clinical priority associated with this order.
*/
@Child(name = "priority", type = {CodeType.class}, order=8, min=0, max=1)
@Child(name = "priority", type = {CodeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="routine | urgent | stat | asap", formalDefinition="The clinical priority associated with this order." )
protected Enumeration<DiagnosticOrderPriority> priority;
/**
* A summary of the events of interest that have occurred as the request is processed. E.g. when the order was made, various processing steps (specimens received), when it was completed.
*/
@Child(name = "event", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "event", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="A list of events of interest in the lifecycle", formalDefinition="A summary of the events of interest that have occurred as the request is processed. E.g. when the order was made, various processing steps (specimens received), when it was completed." )
protected List<DiagnosticOrderEventComponent> event;
/**
* The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested.
*/
@Child(name = "item", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "item", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="The items the orderer requested", formalDefinition="The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested." )
protected List<DiagnosticOrderItemComponent> item;
/**
* Any other notes associated with this patient or specimen or order (e.g. "patient hates needles").
*/
@Child(name = "note", type = {Annotation.class}, order=11, min=0, max=Child.MAX_UNLIMITED)
@Description(shortDefinition="Other notes and comments", formalDefinition="Any other notes associated with this patient or specimen or order (e.g. 'patient hates needles')." )
@Child(name = "note", type = {Annotation.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Other notes and comments", formalDefinition="Any other notes associated with this patient or specimen or order (e.g. \"patient hates needles\")." )
protected List<Annotation> note;
private static final long serialVersionUID = 700891227L;
@ -1612,7 +1612,7 @@ public class DiagnosticOrder extends DomainResource {
childrenList.add(new Property("priority", "code", "The clinical priority associated with this order.", 0, java.lang.Integer.MAX_VALUE, priority));
childrenList.add(new Property("event", "", "A summary of the events of interest that have occurred as the request is processed. E.g. when the order was made, various processing steps (specimens received), when it was completed.", 0, java.lang.Integer.MAX_VALUE, event));
childrenList.add(new Property("item", "", "The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested.", 0, java.lang.Integer.MAX_VALUE, item));
childrenList.add(new Property("note", "Annotation", "Any other notes associated with this patient or specimen or order (e.g. 'patient hates needles').", 0, java.lang.Integer.MAX_VALUE, note));
childrenList.add(new Property("note", "Annotation", "Any other notes associated with this patient or specimen or order (e.g. \"patient hates needles\").", 0, java.lang.Integer.MAX_VALUE, note));
}
public DiagnosticOrder copy() {

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -129,7 +129,7 @@ public class DiagnosticReport extends DomainResource {
case FINAL: return "The report is complete and verified by an authorized person";
case CORRECTED: return "The report has been modified subsequent to being Final, and is complete and verified by an authorized person";
case APPENDED: return "The report has been modified subsequent to being Final, and is complete and verified by an authorized person. New content has been added, but existing content hasn't changed";
case CANCELLED: return "The report is unavailable because the measurement was not started or not completed (also sometimes called 'aborted')";
case CANCELLED: return "The report is unavailable because the measurement was not started or not completed (also sometimes called \"aborted\")";
case ENTEREDINERROR: return "The report has been withdrawn following previous Final release";
default: return "?";
}
@ -193,14 +193,14 @@ public class DiagnosticReport extends DomainResource {
/**
* A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features.
*/
@Child(name = "comment", type = {StringType.class}, order=1, min=0, max=1)
@Child(name = "comment", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Comment about the image (e.g. explanation)", formalDefinition="A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features." )
protected StringType comment;
/**
* Reference to the image source.
*/
@Child(name = "link", type = {Media.class}, order=2, min=1, max=1)
@Child(name = "link", type = {Media.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Reference to the image source", formalDefinition="Reference to the image source." )
protected Reference link;
@ -363,35 +363,35 @@ public class DiagnosticReport extends DomainResource {
/**
* The local ID assigned to the report by the order filler, usually by the Information System of the diagnostic service provider.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Id for external references to this report", formalDefinition="The local ID assigned to the report by the order filler, usually by the Information System of the diagnostic service provider." )
protected List<Identifier> identifier;
/**
* The status of the diagnostic report as a whole.
*/
@Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="registered | partial | final | corrected | appended | cancelled | entered-in-error", formalDefinition="The status of the diagnostic report as a whole." )
protected Enumeration<DiagnosticReportStatus> status;
/**
* A code that classifies the dlinical discipline, department or diagnostic service that created the report (e.g. cardiology, biochemistry, hematology, MRI). This is used for searching, sorting and display purposes.
*/
@Child(name = "category", type = {CodeableConcept.class}, order=2, min=0, max=1)
@Child(name = "category", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Service category", formalDefinition="A code that classifies the dlinical discipline, department or diagnostic service that created the report (e.g. cardiology, biochemistry, hematology, MRI). This is used for searching, sorting and display purposes." )
protected CodeableConcept category;
/**
* A code or name that describes this diagnostic report.
*/
@Child(name = "code", type = {CodeableConcept.class}, order=3, min=1, max=1)
@Child(name = "code", type = {CodeableConcept.class}, order=3, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Name/Code for this diagnostic report", formalDefinition="A code or name that describes this diagnostic report." )
protected CodeableConcept code;
/**
* The subject of the report. Usually, but not always, this is a patient. However diagnostic services also perform analyses on specimens collected from a variety of other sources.
*/
@Child(name = "subject", type = {Patient.class, Group.class, Device.class, Location.class}, order=4, min=1, max=1)
@Child(name = "subject", type = {Patient.class, Group.class, Device.class, Location.class}, order=4, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="The subject of the report, usually, but not always, the patient", formalDefinition="The subject of the report. Usually, but not always, this is a patient. However diagnostic services also perform analyses on specimens collected from a variety of other sources." )
protected Reference subject;
@ -403,7 +403,7 @@ public class DiagnosticReport extends DomainResource {
/**
* The link to the health care event (encounter) when the order was made.
*/
@Child(name = "encounter", type = {Encounter.class}, order=5, min=0, max=1)
@Child(name = "encounter", type = {Encounter.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Health care event when test ordered", formalDefinition="The link to the health care event (encounter) when the order was made." )
protected Reference encounter;
@ -415,21 +415,21 @@ public class DiagnosticReport extends DomainResource {
/**
* The time or time-period the observed values are related to. When the subject of the report is a patient, this is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself.
*/
@Child(name = "effective", type = {DateTimeType.class, Period.class}, order=6, min=1, max=1)
@Child(name = "effective", type = {DateTimeType.class, Period.class}, order=6, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Clinically Relevant time/time-period for report", formalDefinition="The time or time-period the observed values are related to. When the subject of the report is a patient, this is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself." )
protected Type effective;
/**
* The date and time that this version of the report was released from the source diagnostic service.
*/
@Child(name = "issued", type = {InstantType.class}, order=7, min=1, max=1)
@Child(name = "issued", type = {InstantType.class}, order=7, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="DateTime this version was released", formalDefinition="The date and time that this version of the report was released from the source diagnostic service." )
protected InstantType issued;
/**
* The diagnostic service that is responsible for issuing the report.
*/
@Child(name = "performer", type = {Practitioner.class, Organization.class}, order=8, min=1, max=1)
@Child(name = "performer", type = {Practitioner.class, Organization.class}, order=8, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible Diagnostic Service", formalDefinition="The diagnostic service that is responsible for issuing the report." )
protected Reference performer;
@ -441,7 +441,7 @@ public class DiagnosticReport extends DomainResource {
/**
* Details concerning a test or procedure requested.
*/
@Child(name = "request", type = {DiagnosticOrder.class, ProcedureRequest.class, ReferralRequest.class}, order=9, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "request", type = {DiagnosticOrder.class, ProcedureRequest.class, ReferralRequest.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="What was requested", formalDefinition="Details concerning a test or procedure requested." )
protected List<Reference> request;
/**
@ -453,7 +453,7 @@ public class DiagnosticReport extends DomainResource {
/**
* Details about the specimens on which this diagnostic report is based.
*/
@Child(name = "specimen", type = {Specimen.class}, order=10, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "specimen", type = {Specimen.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Specimens this report is based on", formalDefinition="Details about the specimens on which this diagnostic report is based." )
protected List<Reference> specimen;
/**
@ -465,8 +465,8 @@ public class DiagnosticReport extends DomainResource {
/**
* Observations that are part of this diagnostic report. Observations can be simple name/value pairs (e.g. "atomic" results), or they can be grouping observations that include references to other members of the group (e.g. "panels").
*/
@Child(name = "result", type = {Observation.class}, order=11, min=0, max=Child.MAX_UNLIMITED)
@Description(shortDefinition="Observations - simple, or complex nested groups", formalDefinition="Observations that are part of this diagnostic report. Observations can be simple name/value pairs (e.g. 'atomic' results), or they can be grouping observations that include references to other members of the group (e.g. 'panels')." )
@Child(name = "result", type = {Observation.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Observations - simple, or complex nested groups", formalDefinition="Observations that are part of this diagnostic report. Observations can be simple name/value pairs (e.g. \"atomic\" results), or they can be grouping observations that include references to other members of the group (e.g. \"panels\")." )
protected List<Reference> result;
/**
* The actual objects that are the target of the reference (Observations that are part of this diagnostic report. Observations can be simple name/value pairs (e.g. "atomic" results), or they can be grouping observations that include references to other members of the group (e.g. "panels").)
@ -477,7 +477,7 @@ public class DiagnosticReport extends DomainResource {
/**
* One or more links to full details of any imaging performed during the diagnostic investigation. Typically, this is imaging performed by DICOM enabled modalities, but this is not required. A fully enabled PACS viewer can use this information to provide views of the source images.
*/
@Child(name = "imagingStudy", type = {ImagingStudy.class, ImagingObjectSelection.class}, order=12, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "imagingStudy", type = {ImagingStudy.class, ImagingObjectSelection.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Reference to full details of imaging associated with the diagnostic report", formalDefinition="One or more links to full details of any imaging performed during the diagnostic investigation. Typically, this is imaging performed by DICOM enabled modalities, but this is not required. A fully enabled PACS viewer can use this information to provide views of the source images." )
protected List<Reference> imagingStudy;
/**
@ -489,28 +489,28 @@ public class DiagnosticReport extends DomainResource {
/**
* A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest).
*/
@Child(name = "image", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "image", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Key images associated with this report", formalDefinition="A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest)." )
protected List<DiagnosticReportImageComponent> image;
/**
* Concise and clinically contextualized narrative interpretation of the diagnostic report.
*/
@Child(name = "conclusion", type = {StringType.class}, order=14, min=0, max=1)
@Child(name = "conclusion", type = {StringType.class}, order=14, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Clinical Interpretation of test results", formalDefinition="Concise and clinically contextualized narrative interpretation of the diagnostic report." )
protected StringType conclusion;
/**
* Codes for the conclusion.
*/
@Child(name = "codedDiagnosis", type = {CodeableConcept.class}, order=15, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "codedDiagnosis", type = {CodeableConcept.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Codes for the conclusion", formalDefinition="Codes for the conclusion." )
protected List<CodeableConcept> codedDiagnosis;
/**
* Rich text representation of the entire result as issued by the diagnostic service. Multiple formats are allowed but they SHALL be semantically equivalent.
*/
@Child(name = "presentedForm", type = {Attachment.class}, order=16, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "presentedForm", type = {Attachment.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Entire Report as issued", formalDefinition="Rich text representation of the entire result as issued by the diagnostic service. Multiple formats are allowed but they SHALL be semantically equivalent." )
protected List<Attachment> presentedForm;
@ -1283,7 +1283,7 @@ public class DiagnosticReport extends DomainResource {
childrenList.add(new Property("performer", "Reference(Practitioner|Organization)", "The diagnostic service that is responsible for issuing the report.", 0, java.lang.Integer.MAX_VALUE, performer));
childrenList.add(new Property("request", "Reference(DiagnosticOrder|ProcedureRequest|ReferralRequest)", "Details concerning a test or procedure requested.", 0, java.lang.Integer.MAX_VALUE, request));
childrenList.add(new Property("specimen", "Reference(Specimen)", "Details about the specimens on which this diagnostic report is based.", 0, java.lang.Integer.MAX_VALUE, specimen));
childrenList.add(new Property("result", "Reference(Observation)", "Observations that are part of this diagnostic report. Observations can be simple name/value pairs (e.g. 'atomic' results), or they can be grouping observations that include references to other members of the group (e.g. 'panels').", 0, java.lang.Integer.MAX_VALUE, result));
childrenList.add(new Property("result", "Reference(Observation)", "Observations that are part of this diagnostic report. Observations can be simple name/value pairs (e.g. \"atomic\" results), or they can be grouping observations that include references to other members of the group (e.g. \"panels\").", 0, java.lang.Integer.MAX_VALUE, result));
childrenList.add(new Property("imagingStudy", "Reference(ImagingStudy|ImagingObjectSelection)", "One or more links to full details of any imaging performed during the diagnostic investigation. Typically, this is imaging performed by DICOM enabled modalities, but this is not required. A fully enabled PACS viewer can use this information to provide views of the source images.", 0, java.lang.Integer.MAX_VALUE, imagingStudy));
childrenList.add(new Property("image", "", "A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest).", 0, java.lang.Integer.MAX_VALUE, image));
childrenList.add(new Property("conclusion", "string", "Concise and clinically contextualized narrative interpretation of the diagnostic report.", 0, java.lang.Integer.MAX_VALUE, conclusion));

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import org.hl7.fhir.instance.model.annotations.DatatypeDef;
import org.hl7.fhir.instance.model.annotations.Block;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -52,7 +52,7 @@ public class DocumentManifest extends DomainResource {
/**
* The list of references to document content, or Attachment that consist of the parts of this document manifest. Usually, these would be document references, but direct references to Media or Attachments are also allowed.
*/
@Child(name = "p", type = {Attachment.class, DocumentReference.class, Media.class}, order=1, min=1, max=1)
@Child(name = "p", type = {Attachment.class, DocumentReference.class, Media.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Contents of this set of documents", formalDefinition="The list of references to document content, or Attachment that consist of the parts of this document manifest. Usually, these would be document references, but direct references to Media or Attachments are also allowed." )
protected Type p;
@ -161,14 +161,14 @@ public class DocumentManifest extends DomainResource {
/**
* Related identifier to this DocumentManifest. If both id and ref are present they shall refer to the same thing.
*/
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1)
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Related Identifier", formalDefinition="Related identifier to this DocumentManifest. If both id and ref are present they shall refer to the same thing." )
protected Identifier identifier;
/**
* Related Resource to this DocumentManifest. If both id and ref are present they shall refer to the same thing.
*/
@Child(name = "ref", type = {}, order=2, min=0, max=1)
@Child(name = "ref", type = {}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Related Resource", formalDefinition="Related Resource to this DocumentManifest. If both id and ref are present they shall refer to the same thing." )
protected Reference ref;
@ -293,21 +293,21 @@ public class DocumentManifest extends DomainResource {
/**
* A single identifier that uniquely identifies this manifest. Principally used to refer to the manifest in non-FHIR contexts.
*/
@Child(name = "masterIdentifier", type = {Identifier.class}, order=0, min=0, max=1)
@Child(name = "masterIdentifier", type = {Identifier.class}, order=0, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Unique Identifier for the set of documents", formalDefinition="A single identifier that uniquely identifies this manifest. Principally used to refer to the manifest in non-FHIR contexts." )
protected Identifier masterIdentifier;
/**
* Other identifiers associated with the document manifest, including version independent identifiers.
*/
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Other identifiers for the manifest", formalDefinition="Other identifiers associated with the document manifest, including version independent identifiers." )
protected List<Identifier> identifier;
/**
* Who or what the set of documents is about. The documents can be about a person, (patient or healthcare practitioner), a device (i.e. machine) or even a group of subjects (such as a document about a herd of farm animals, or a set of patients that share a common exposure). If the documents cross more than one subject, then more than one subject is allowed here (unusual use case).
*/
@Child(name = "subject", type = {Patient.class, Practitioner.class, Group.class, Device.class}, order=2, min=0, max=1)
@Child(name = "subject", type = {Patient.class, Practitioner.class, Group.class, Device.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The subject of the set of documents", formalDefinition="Who or what the set of documents is about. The documents can be about a person, (patient or healthcare practitioner), a device (i.e. machine) or even a group of subjects (such as a document about a herd of farm animals, or a set of patients that share a common exposure). If the documents cross more than one subject, then more than one subject is allowed here (unusual use case)." )
protected Reference subject;
@ -319,7 +319,7 @@ public class DocumentManifest extends DomainResource {
/**
* A patient, practitioner, or organization for which this set of documents is intended.
*/
@Child(name = "recipient", type = {Patient.class, Practitioner.class, RelatedPerson.class, Organization.class}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "recipient", type = {Patient.class, Practitioner.class, RelatedPerson.class, Organization.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Intended to get notified about this set of documents", formalDefinition="A patient, practitioner, or organization for which this set of documents is intended." )
protected List<Reference> recipient;
/**
@ -331,14 +331,14 @@ public class DocumentManifest extends DomainResource {
/**
* Specifies the kind of this set of documents (e.g. Patient Summary, Discharge Summary, Prescription, etc.). The type of a set of documents may be the same as one of the documents in it - especially if there is only one - but it may be wider.
*/
@Child(name = "type", type = {CodeableConcept.class}, order=4, min=0, max=1)
@Child(name = "type", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="What kind of document set this is", formalDefinition="Specifies the kind of this set of documents (e.g. Patient Summary, Discharge Summary, Prescription, etc.). The type of a set of documents may be the same as one of the documents in it - especially if there is only one - but it may be wider." )
protected CodeableConcept type;
/**
* Identifies who is responsible for creating the manifest, and adding documents to it.
*/
@Child(name = "author", type = {Practitioner.class, Organization.class, Device.class, Patient.class, RelatedPerson.class}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "author", type = {Practitioner.class, Organization.class, Device.class, Patient.class, RelatedPerson.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Who and/or what authored the manifest", formalDefinition="Identifies who is responsible for creating the manifest, and adding documents to it." )
protected List<Reference> author;
/**
@ -350,42 +350,42 @@ public class DocumentManifest extends DomainResource {
/**
* When the document manifest was created for submission to the server (not necessarily the same thing as the actual resource last modified time, since it may be modified, replicated etc).
*/
@Child(name = "created", type = {DateTimeType.class}, order=6, min=0, max=1)
@Child(name = "created", type = {DateTimeType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When this document manifest created", formalDefinition="When the document manifest was created for submission to the server (not necessarily the same thing as the actual resource last modified time, since it may be modified, replicated etc)." )
protected DateTimeType created;
/**
* Identifies the source system, application, or software that produced the document manifest.
*/
@Child(name = "source", type = {UriType.class}, order=7, min=0, max=1)
@Child(name = "source", type = {UriType.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The source system/application/software", formalDefinition="Identifies the source system, application, or software that produced the document manifest." )
protected UriType source;
/**
* The status of this document manifest.
*/
@Child(name = "status", type = {CodeType.class}, order=8, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=8, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="current | superseded | entered-in-error", formalDefinition="The status of this document manifest." )
protected Enumeration<DocumentReferenceStatus> status;
/**
* Human-readable description of the source document. This is sometimes known as the "title".
*/
@Child(name = "description", type = {StringType.class}, order=9, min=0, max=1)
@Description(shortDefinition="Human-readable description (title)", formalDefinition="Human-readable description of the source document. This is sometimes known as the 'title'." )
@Child(name = "description", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Human-readable description (title)", formalDefinition="Human-readable description of the source document. This is sometimes known as the \"title\"." )
protected StringType description;
/**
* The manifest list.
*/
@Child(name = "content", type = {}, order=10, min=1, max=Child.MAX_UNLIMITED)
@Child(name = "content", type = {}, order=10, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Contents of the manifest", formalDefinition="The manifest list." )
protected List<DocumentManifestContentComponent> content;
/**
* Related identifiers or resources associated with the DocumentManifest.
*/
@Child(name = "related", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "related", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Related things", formalDefinition="Related identifiers or resources associated with the DocumentManifest." )
protected List<DocumentManifestRelatedComponent> related;
@ -914,7 +914,7 @@ public class DocumentManifest extends DomainResource {
childrenList.add(new Property("created", "dateTime", "When the document manifest was created for submission to the server (not necessarily the same thing as the actual resource last modified time, since it may be modified, replicated etc).", 0, java.lang.Integer.MAX_VALUE, created));
childrenList.add(new Property("source", "uri", "Identifies the source system, application, or software that produced the document manifest.", 0, java.lang.Integer.MAX_VALUE, source));
childrenList.add(new Property("status", "code", "The status of this document manifest.", 0, java.lang.Integer.MAX_VALUE, status));
childrenList.add(new Property("description", "string", "Human-readable description of the source document. This is sometimes known as the 'title'.", 0, java.lang.Integer.MAX_VALUE, description));
childrenList.add(new Property("description", "string", "Human-readable description of the source document. This is sometimes known as the \"title\".", 0, java.lang.Integer.MAX_VALUE, description));
childrenList.add(new Property("content", "", "The manifest list.", 0, java.lang.Integer.MAX_VALUE, content));
childrenList.add(new Property("related", "", "Related identifiers or resources associated with the DocumentManifest.", 0, java.lang.Integer.MAX_VALUE, related));
}

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -152,14 +152,14 @@ public class DocumentReference extends DomainResource {
/**
* The type of relationship that this document has with anther document.
*/
@Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="replaces | transforms | signs | appends", formalDefinition="The type of relationship that this document has with anther document." )
protected Enumeration<DocumentRelationshipType> code;
/**
* The target document of this relationship.
*/
@Child(name = "target", type = {DocumentReference.class}, order=2, min=1, max=1)
@Child(name = "target", type = {DocumentReference.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Target of the relationship", formalDefinition="The target document of this relationship." )
protected Reference target;
@ -321,7 +321,7 @@ public class DocumentReference extends DomainResource {
/**
* Describes the clinical encounter or type of care that the document content is associated with.
*/
@Child(name = "encounter", type = {Encounter.class}, order=1, min=0, max=1)
@Child(name = "encounter", type = {Encounter.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Context of the document content", formalDefinition="Describes the clinical encounter or type of care that the document content is associated with." )
protected Reference encounter;
@ -333,35 +333,35 @@ public class DocumentReference extends DomainResource {
/**
* This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a "History and Physical Report" in which the procedure being documented is necessarily a "History and Physical" act.
*/
@Child(name = "event", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Description(shortDefinition="Main Clinical Acts Documented", formalDefinition="This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a 'History and Physical Report' in which the procedure being documented is necessarily a 'History and Physical' act." )
@Child(name = "event", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Main Clinical Acts Documented", formalDefinition="This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a \"History and Physical Report\" in which the procedure being documented is necessarily a \"History and Physical\" act." )
protected List<CodeableConcept> event;
/**
* The time period over which the service that is described by the document was provided.
*/
@Child(name = "period", type = {Period.class}, order=3, min=0, max=1)
@Child(name = "period", type = {Period.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Time of service that is being documented", formalDefinition="The time period over which the service that is described by the document was provided." )
protected Period period;
/**
* The kind of facility where the patient was seen.
*/
@Child(name = "facilityType", type = {CodeableConcept.class}, order=4, min=0, max=1)
@Child(name = "facilityType", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Kind of facility where patient was seen", formalDefinition="The kind of facility where the patient was seen." )
protected CodeableConcept facilityType;
/**
* This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty.
*/
@Child(name = "practiceSetting", type = {CodeableConcept.class}, order=5, min=0, max=1)
@Child(name = "practiceSetting", type = {CodeableConcept.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Additional details about where the content was created (e.g. clinical specialty)", formalDefinition="This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty." )
protected CodeableConcept practiceSetting;
/**
* The Patient Information as known when the document was published. May be a reference to a version specific, or contained.
*/
@Child(name = "sourcePatientInfo", type = {Patient.class}, order=6, min=0, max=1)
@Child(name = "sourcePatientInfo", type = {Patient.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Source patient info", formalDefinition="The Patient Information as known when the document was published. May be a reference to a version specific, or contained." )
protected Reference sourcePatientInfo;
@ -373,7 +373,7 @@ public class DocumentReference extends DomainResource {
/**
* Related identifiers or resources associated with the DocumentReference.
*/
@Child(name = "related", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "related", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Related identifiers or resources", formalDefinition="Related identifiers or resources associated with the DocumentReference." )
protected List<DocumentReferenceContextRelatedComponent> related;
@ -629,7 +629,7 @@ public class DocumentReference extends DomainResource {
protected void listChildren(List<Property> childrenList) {
super.listChildren(childrenList);
childrenList.add(new Property("encounter", "Reference(Encounter)", "Describes the clinical encounter or type of care that the document content is associated with.", 0, java.lang.Integer.MAX_VALUE, encounter));
childrenList.add(new Property("event", "CodeableConcept", "This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a 'History and Physical Report' in which the procedure being documented is necessarily a 'History and Physical' act.", 0, java.lang.Integer.MAX_VALUE, event));
childrenList.add(new Property("event", "CodeableConcept", "This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a \"History and Physical Report\" in which the procedure being documented is necessarily a \"History and Physical\" act.", 0, java.lang.Integer.MAX_VALUE, event));
childrenList.add(new Property("period", "Period", "The time period over which the service that is described by the document was provided.", 0, java.lang.Integer.MAX_VALUE, period));
childrenList.add(new Property("facilityType", "CodeableConcept", "The kind of facility where the patient was seen.", 0, java.lang.Integer.MAX_VALUE, facilityType));
childrenList.add(new Property("practiceSetting", "CodeableConcept", "This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty.", 0, java.lang.Integer.MAX_VALUE, practiceSetting));
@ -695,14 +695,14 @@ public class DocumentReference extends DomainResource {
/**
* Related identifier to this DocumentReference. If both id and ref are present they shall refer to the same thing.
*/
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1)
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Related Identifier", formalDefinition="Related identifier to this DocumentReference. If both id and ref are present they shall refer to the same thing." )
protected Identifier identifier;
/**
* Related Resource to this DocumentReference. If both id and ref are present they shall refer to the same thing.
*/
@Child(name = "ref", type = {}, order=2, min=0, max=1)
@Child(name = "ref", type = {}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Related Resource", formalDefinition="Related Resource to this DocumentReference. If both id and ref are present they shall refer to the same thing." )
protected Reference ref;
@ -827,21 +827,21 @@ public class DocumentReference extends DomainResource {
/**
* Document identifier as assigned by the source of the document. This identifier is specific to this version of the document. This unique identifier may be used elsewhere to identify this version of the document.
*/
@Child(name = "masterIdentifier", type = {Identifier.class}, order=0, min=0, max=1)
@Child(name = "masterIdentifier", type = {Identifier.class}, order=0, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Master Version Specific Identifier", formalDefinition="Document identifier as assigned by the source of the document. This identifier is specific to this version of the document. This unique identifier may be used elsewhere to identify this version of the document." )
protected Identifier masterIdentifier;
/**
* Other identifiers associated with the document, including version independent identifiers.
*/
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Other identifiers for the document", formalDefinition="Other identifiers associated with the document, including version independent identifiers." )
protected List<Identifier> identifier;
/**
* Who or what the document is about. The document can be about a person, (patient or healthcare practitioner), a device (I.e. machine) or even a group of subjects (such as a document about a herd of farm animals, or a set of patients that share a common exposure).
*/
@Child(name = "subject", type = {Patient.class, Practitioner.class, Group.class, Device.class}, order=2, min=0, max=1)
@Child(name = "subject", type = {Patient.class, Practitioner.class, Group.class, Device.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Who|what is the subject of the document", formalDefinition="Who or what the document is about. The document can be about a person, (patient or healthcare practitioner), a device (I.e. machine) or even a group of subjects (such as a document about a herd of farm animals, or a set of patients that share a common exposure)." )
protected Reference subject;
@ -853,28 +853,28 @@ public class DocumentReference extends DomainResource {
/**
* Specifies the particular kind of document. This usually equates to the purpose of making the document. It is recommended that the value Set be drawn from a coding scheme providing a fine level of granularity such as LOINC. (e.g. Patient Summary, Discharge Summary, Prescription, etc.).
*/
@Child(name = "type", type = {CodeableConcept.class}, order=3, min=1, max=1)
@Child(name = "type", type = {CodeableConcept.class}, order=3, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Kind of document", formalDefinition="Specifies the particular kind of document. This usually equates to the purpose of making the document. It is recommended that the value Set be drawn from a coding scheme providing a fine level of granularity such as LOINC. (e.g. Patient Summary, Discharge Summary, Prescription, etc.)." )
protected CodeableConcept type;
/**
* A categorization for the type of document - helps for indexing and searching. This may be implied by or derived from the code specified in the Composition Type.
*/
@Child(name = "class", type = {CodeableConcept.class}, order=4, min=0, max=1)
@Child(name = "class", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Categorization of document", formalDefinition="A categorization for the type of document - helps for indexing and searching. This may be implied by or derived from the code specified in the Composition Type." )
protected CodeableConcept class_;
/**
* An identifier of the document encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType.
*/
@Child(name = "format", type = {Coding.class}, order=5, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "format", type = {Coding.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Format/content rules for the document", formalDefinition="An identifier of the document encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType." )
protected List<Coding> format;
/**
* Identifies who is responsible for adding the information to the document.
*/
@Child(name = "author", type = {Practitioner.class, Organization.class, Device.class, Patient.class, RelatedPerson.class}, order=6, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "author", type = {Practitioner.class, Organization.class, Device.class, Patient.class, RelatedPerson.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Who and/or what authored the document", formalDefinition="Identifies who is responsible for adding the information to the document." )
protected List<Reference> author;
/**
@ -886,7 +886,7 @@ public class DocumentReference extends DomainResource {
/**
* Identifies the organization or group who is responsible for ongoing maintenance of and access to the document.
*/
@Child(name = "custodian", type = {Organization.class}, order=7, min=0, max=1)
@Child(name = "custodian", type = {Organization.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Org which maintains the document", formalDefinition="Identifies the organization or group who is responsible for ongoing maintenance of and access to the document." )
protected Reference custodian;
@ -898,7 +898,7 @@ public class DocumentReference extends DomainResource {
/**
* Which person or organization authenticates that this document is valid.
*/
@Child(name = "authenticator", type = {Practitioner.class, Organization.class}, order=8, min=0, max=1)
@Child(name = "authenticator", type = {Practitioner.class, Organization.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Who/What authenticated the document", formalDefinition="Which person or organization authenticates that this document is valid." )
protected Reference authenticator;
@ -910,63 +910,63 @@ public class DocumentReference extends DomainResource {
/**
* When the document was created.
*/
@Child(name = "created", type = {DateTimeType.class}, order=9, min=0, max=1)
@Child(name = "created", type = {DateTimeType.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Document creation time", formalDefinition="When the document was created." )
protected DateTimeType created;
/**
* When the document reference was created.
*/
@Child(name = "indexed", type = {InstantType.class}, order=10, min=1, max=1)
@Child(name = "indexed", type = {InstantType.class}, order=10, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="When this document reference created", formalDefinition="When the document reference was created." )
protected InstantType indexed;
/**
* The status of this document reference.
*/
@Child(name = "status", type = {CodeType.class}, order=11, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=11, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="current | superseded | entered-in-error", formalDefinition="The status of this document reference." )
protected Enumeration<DocumentReferenceStatus> status;
/**
* The status of the underlying document.
*/
@Child(name = "docStatus", type = {CodeableConcept.class}, order=12, min=0, max=1)
@Child(name = "docStatus", type = {CodeableConcept.class}, order=12, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="preliminary | final | appended | amended | entered-in-error", formalDefinition="The status of the underlying document." )
protected CodeableConcept docStatus;
/**
* Relationships that this document has with other document references that already exist.
*/
@Child(name = "relatesTo", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "relatesTo", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=true, summary=true)
@Description(shortDefinition="Relationships to other documents", formalDefinition="Relationships that this document has with other document references that already exist." )
protected List<DocumentReferenceRelatesToComponent> relatesTo;
/**
* Human-readable description of the source document. This is sometimes known as the "title".
*/
@Child(name = "description", type = {StringType.class}, order=14, min=0, max=1)
@Description(shortDefinition="Human-readable description (title)", formalDefinition="Human-readable description of the source document. This is sometimes known as the 'title'." )
@Child(name = "description", type = {StringType.class}, order=14, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Human-readable description (title)", formalDefinition="Human-readable description of the source document. This is sometimes known as the \"title\"." )
protected StringType description;
/**
* A set of Security-Tag codes specifying the level of privacy/security of the Document. Note that DocumentReference.meta.security is the security labels of the reference to the document, while DocumentReference.securityLabel is the security labels on the document it refers to.
*/
@Child(name = "securityLabel", type = {CodeableConcept.class}, order=15, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "securityLabel", type = {CodeableConcept.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Document security-tags", formalDefinition="A set of Security-Tag codes specifying the level of privacy/security of the Document. Note that DocumentReference.meta.security is the security labels of the reference to the document, while DocumentReference.securityLabel is the security labels on the document it refers to." )
protected List<CodeableConcept> securityLabel;
/**
* The document or url to the document along with critical metadata to prove content has integrity.
*/
@Child(name = "content", type = {Attachment.class}, order=16, min=1, max=Child.MAX_UNLIMITED)
@Child(name = "content", type = {Attachment.class}, order=16, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Where to access the document", formalDefinition="The document or url to the document along with critical metadata to prove content has integrity." )
protected List<Attachment> content;
/**
* The clinical context in which the document was prepared.
*/
@Child(name = "context", type = {}, order=17, min=0, max=1)
@Child(name = "context", type = {}, order=17, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Clinical context of document", formalDefinition="The clinical context in which the document was prepared." )
protected DocumentReferenceContextComponent context;
@ -1684,7 +1684,7 @@ public class DocumentReference extends DomainResource {
childrenList.add(new Property("status", "code", "The status of this document reference.", 0, java.lang.Integer.MAX_VALUE, status));
childrenList.add(new Property("docStatus", "CodeableConcept", "The status of the underlying document.", 0, java.lang.Integer.MAX_VALUE, docStatus));
childrenList.add(new Property("relatesTo", "", "Relationships that this document has with other document references that already exist.", 0, java.lang.Integer.MAX_VALUE, relatesTo));
childrenList.add(new Property("description", "string", "Human-readable description of the source document. This is sometimes known as the 'title'.", 0, java.lang.Integer.MAX_VALUE, description));
childrenList.add(new Property("description", "string", "Human-readable description of the source document. This is sometimes known as the \"title\".", 0, java.lang.Integer.MAX_VALUE, description));
childrenList.add(new Property("securityLabel", "CodeableConcept", "A set of Security-Tag codes specifying the level of privacy/security of the Document. Note that DocumentReference.meta.security is the security labels of the reference to the document, while DocumentReference.securityLabel is the security labels on the document it refers to.", 0, java.lang.Integer.MAX_VALUE, securityLabel));
childrenList.add(new Property("content", "Attachment", "The document or url to the document along with critical metadata to prove content has integrity.", 0, java.lang.Integer.MAX_VALUE, content));
childrenList.add(new Property("context", "", "The clinical context in which the document was prepared.", 0, java.lang.Integer.MAX_VALUE, context));

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -47,28 +47,28 @@ public abstract class DomainResource extends Resource implements IBaseHasExtensi
/**
* A human-readable narrative that contains a summary of the resource, and may be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it "clinically safe" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety.
*/
@Child(name = "text", type = {Narrative.class}, order=0, min=0, max=1)
@Description(shortDefinition="Text summary of the resource, for human interpretation", formalDefinition="A human-readable narrative that contains a summary of the resource, and may be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it 'clinically safe' for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety." )
@Child(name = "text", type = {Narrative.class}, order=0, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Text summary of the resource, for human interpretation", formalDefinition="A human-readable narrative that contains a summary of the resource, and may be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety." )
protected Narrative text;
/**
* These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope.
*/
@Child(name = "contained", type = {Resource.class}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "contained", type = {Resource.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Contained, inline Resources", formalDefinition="These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope." )
protected List<Resource> contained;
/**
* May be used to represent additional information that is not part of the basic definition of the resource. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
*/
@Child(name = "extension", type = {Extension.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "extension", type = {Extension.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Additional Content defined by implementations", formalDefinition="May be used to represent additional information that is not part of the basic definition of the resource. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension." )
protected List<Extension> extension;
/**
* May be used to represent additional information that is not part of the basic definition of the resource, and that modifies the understanding of the element that contains it. Usually modifier elements provide negation or qualification. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.
*/
@Child(name = "modifierExtension", type = {Extension.class}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "modifierExtension", type = {Extension.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=true, summary=false)
@Description(shortDefinition="Extensions that cannot be ignored", formalDefinition="May be used to represent additional information that is not part of the basic definition of the resource, and that modifies the understanding of the element that contains it. Usually modifier elements provide negation or qualification. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions." )
protected List<Extension> modifierExtension;
@ -207,7 +207,7 @@ public abstract class DomainResource extends Resource implements IBaseHasExtensi
}
protected void listChildren(List<Property> childrenList) {
childrenList.add(new Property("text", "Narrative", "A human-readable narrative that contains a summary of the resource, and may be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it 'clinically safe' for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety.", 0, java.lang.Integer.MAX_VALUE, text));
childrenList.add(new Property("text", "Narrative", "A human-readable narrative that contains a summary of the resource, and may be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety.", 0, java.lang.Integer.MAX_VALUE, text));
childrenList.add(new Property("contained", "Resource", "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope.", 0, java.lang.Integer.MAX_VALUE, contained));
childrenList.add(new Property("extension", "Extension", "May be used to represent additional information that is not part of the basic definition of the resource. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.", 0, java.lang.Integer.MAX_VALUE, extension));
childrenList.add(new Property("modifierExtension", "Extension", "May be used to represent additional information that is not part of the basic definition of the resource, and that modifies the understanding of the element that contains it. Usually modifier elements provide negation or qualification. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.", 0, java.lang.Integer.MAX_VALUE, modifierExtension));

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import org.hl7.fhir.instance.model.annotations.DatatypeDef;
import org.hl7.fhir.instance.model.annotations.Block;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -47,14 +47,14 @@ public abstract class Element extends Base implements IBaseHasExtensions {
/**
* unique id for the element within a resource (for internal references).
*/
@Child(name = "id", type = {IdType.class}, order=0, min=0, max=1)
@Child(name = "id", type = {IdType.class}, order=0, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="xml:id (or equivalent in JSON)", formalDefinition="unique id for the element within a resource (for internal references)." )
protected IdType id;
/**
* May be used to represent additional information that is not part of the basic definition of the element. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
*/
@Child(name = "extension", type = {Extension.class}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "extension", type = {Extension.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Additional Content defined by implementations", formalDefinition="May be used to represent additional information that is not part of the basic definition of the element. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension." )
protected List<Extension> extension;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -353,28 +353,28 @@ public class ElementDefinition extends Type implements ICompositeType {
/**
* Designates which child elements are used to discriminate between the slices when processing an instance. If one or more discriminators are provided, the value of the child elements in the instance data SHALL completely distinguish which slice the element in the resource matches based on the allowed values for those elements in each of the slices.
*/
@Child(name = "discriminator", type = {StringType.class}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "discriminator", type = {StringType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Element values that used to distinguish the slices", formalDefinition="Designates which child elements are used to discriminate between the slices when processing an instance. If one or more discriminators are provided, the value of the child elements in the instance data SHALL completely distinguish which slice the element in the resource matches based on the allowed values for those elements in each of the slices." )
protected List<StringType> discriminator;
/**
* A human-readable text description of how the slicing works. If there is no discriminator, this is required to be present to provide whatever information is possible about how the slices can be differentiated.
*/
@Child(name = "description", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Text description of how slicing works (or not)", formalDefinition="A human-readable text description of how the slicing works. If there is no discriminator, this is required to be present to provide whatever information is possible about how the slices can be differentiated." )
protected StringType description;
/**
* If the matching elements have to occur in the same order as defined in the profile.
*/
@Child(name = "ordered", type = {BooleanType.class}, order=3, min=0, max=1)
@Child(name = "ordered", type = {BooleanType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="If elements must be in same order as slices", formalDefinition="If the matching elements have to occur in the same order as defined in the profile." )
protected BooleanType ordered;
/**
* Whether additional slices are allowed or not. When the slices are ordered, profile authors can also say that additional slices are only allowed at the end.
*/
@Child(name = "rules", type = {CodeType.class}, order=4, min=1, max=1)
@Child(name = "rules", type = {CodeType.class}, order=4, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="closed | open | openAtEnd", formalDefinition="Whether additional slices are allowed or not. When the slices are ordered, profile authors can also say that additional slices are only allowed at the end." )
protected Enumeration<SlicingRules> rules;
@ -644,21 +644,21 @@ public class ElementDefinition extends Type implements ICompositeType {
/**
* The Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [[[StructureDefinition]]] without a StructureDefinition.base.
*/
@Child(name = "path", type = {StringType.class}, order=1, min=1, max=1)
@Child(name = "path", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Path that identifies the base element", formalDefinition="The Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [[[StructureDefinition]]] without a StructureDefinition.base." )
protected StringType path;
/**
* Minimum cardinality of the base element identified by the path.
*/
@Child(name = "min", type = {IntegerType.class}, order=2, min=1, max=1)
@Child(name = "min", type = {IntegerType.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Min cardinality of the base element", formalDefinition="Minimum cardinality of the base element identified by the path." )
protected IntegerType min;
/**
* Maximum cardinality of the base element identified by the path.
*/
@Child(name = "max", type = {StringType.class}, order=3, min=1, max=1)
@Child(name = "max", type = {StringType.class}, order=3, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Max cardinality of the base element", formalDefinition="Maximum cardinality of the base element identified by the path." )
protected StringType max;
@ -866,21 +866,21 @@ public class ElementDefinition extends Type implements ICompositeType {
/**
* Name of Data type or Resource that is a(or the) type used for this element.
*/
@Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Name of Data type or Resource", formalDefinition="Name of Data type or Resource that is a(or the) type used for this element." )
protected CodeType code;
/**
* Identifies a profile structure or implementation Guide that SHALL hold for resources or datatypes referenced as the type of this element. Can be a local reference - to another structure in this profile, or a reference to a structure in another profile. When more than one profile is specified, the content must conform to all of them. When an implementation guide is specified, the resource SHALL conform to at least one profile defined in the implementation guide.
*/
@Child(name = "profile", type = {UriType.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "profile", type = {UriType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Profile (StructureDefinition) to apply (or IG)", formalDefinition="Identifies a profile structure or implementation Guide that SHALL hold for resources or datatypes referenced as the type of this element. Can be a local reference - to another structure in this profile, or a reference to a structure in another profile. When more than one profile is specified, the content must conform to all of them. When an implementation guide is specified, the resource SHALL conform to at least one profile defined in the implementation guide." )
protected List<UriType> profile;
/**
* If the type is a reference to another resource, how the resource is or can be aggreated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundle.
*/
@Child(name = "aggregation", type = {CodeType.class}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "aggregation", type = {CodeType.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="contained | referenced | bundled - how aggregated", formalDefinition="If the type is a reference to another resource, how the resource is or can be aggreated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundle." )
protected List<Enumeration<AggregationMode>> aggregation;
@ -1112,35 +1112,35 @@ public class ElementDefinition extends Type implements ICompositeType {
/**
* Allows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinality.
*/
@Child(name = "key", type = {IdType.class}, order=1, min=1, max=1)
@Child(name = "key", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Target of 'condition' reference above", formalDefinition="Allows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinality." )
protected IdType key;
/**
* Description of why this constraint is necessary or appropriate.
*/
@Child(name = "requirements", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "requirements", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Why this constraint necessary or appropriate", formalDefinition="Description of why this constraint is necessary or appropriate." )
protected StringType requirements;
/**
* Identifies the impact constraint violation has on the conformance of the instance.
*/
@Child(name = "severity", type = {CodeType.class}, order=3, min=1, max=1)
@Child(name = "severity", type = {CodeType.class}, order=3, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="error | warning", formalDefinition="Identifies the impact constraint violation has on the conformance of the instance." )
protected Enumeration<ConstraintSeverity> severity;
/**
* Text that can be used to describe the constraint in messages identifying that the constraint has been violated.
*/
@Child(name = "human", type = {StringType.class}, order=4, min=1, max=1)
@Child(name = "human", type = {StringType.class}, order=4, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Human description of constraint", formalDefinition="Text that can be used to describe the constraint in messages identifying that the constraint has been violated." )
protected StringType human;
/**
* An XPath expression of constraint that can be executed to see if this constraint is met.
*/
@Child(name = "xpath", type = {StringType.class}, order=5, min=1, max=1)
@Child(name = "xpath", type = {StringType.class}, order=5, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="XPath expression of constraint", formalDefinition="An XPath expression of constraint that can be executed to see if this constraint is met." )
protected StringType xpath;
@ -1448,21 +1448,21 @@ public class ElementDefinition extends Type implements ICompositeType {
/**
* Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances.
*/
@Child(name = "strength", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "strength", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="required | extensible | preferred | example", formalDefinition="Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances." )
protected Enumeration<BindingStrength> strength;
/**
* Describes the intended use of this particular set of codes.
*/
@Child(name = "description", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Human explanation of the value set", formalDefinition="Describes the intended use of this particular set of codes." )
protected StringType description;
/**
* Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used.
*/
@Child(name = "valueSet", type = {UriType.class, ValueSet.class}, order=3, min=0, max=1)
@Child(name = "valueSet", type = {UriType.class, ValueSet.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Source of value set", formalDefinition="Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used." )
protected Type valueSet;
@ -1672,21 +1672,21 @@ public class ElementDefinition extends Type implements ICompositeType {
/**
* An internal reference to the definition of a mapping.
*/
@Child(name = "identity", type = {IdType.class}, order=1, min=1, max=1)
@Child(name = "identity", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Reference to mapping declaration", formalDefinition="An internal reference to the definition of a mapping." )
protected IdType identity;
/**
* Identifies the computable language in which mapping.map is expressed.
*/
@Child(name = "language", type = {CodeType.class}, order=2, min=0, max=1)
@Child(name = "language", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Computable language of mapping", formalDefinition="Identifies the computable language in which mapping.map is expressed." )
protected CodeType language;
/**
* Expresses what part of the target specification corresponds to this element.
*/
@Child(name = "map", type = {StringType.class}, order=3, min=1, max=1)
@Child(name = "map", type = {StringType.class}, order=3, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Details of the mapping", formalDefinition="Expresses what part of the target specification corresponds to this element." )
protected StringType map;
@ -1895,217 +1895,217 @@ public class ElementDefinition extends Type implements ICompositeType {
/**
* The path identifies the element and is expressed as a "."-separated list of ancestor elements, beginning with the name of the resource or extension.
*/
@Child(name = "path", type = {StringType.class}, order=0, min=1, max=1)
@Description(shortDefinition="The path of the element (see the Detailed Descriptions)", formalDefinition="The path identifies the element and is expressed as a '.'-separated list of ancestor elements, beginning with the name of the resource or extension." )
@Child(name = "path", type = {StringType.class}, order=0, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="The path of the element (see the Detailed Descriptions)", formalDefinition="The path identifies the element and is expressed as a \".\"-separated list of ancestor elements, beginning with the name of the resource or extension." )
protected StringType path;
/**
* Codes that define how this element is represented in instances, when the deviation varies from the normal case.
*/
@Child(name = "representation", type = {CodeType.class}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "representation", type = {CodeType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="How this element is represented in instances", formalDefinition="Codes that define how this element is represented in instances, when the deviation varies from the normal case." )
protected List<Enumeration<PropertyRepresentation>> representation;
/**
* The name of this element definition (to refer to it from other element definitions using ElementDefinition.nameReference). This is a unique name referring to a specific set of constraints applied to this element. One use of this is to provide a name to different slices of the same element.
*/
@Child(name = "name", type = {StringType.class}, order=2, min=0, max=1)
@Child(name = "name", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Name for this particular element definition (reference target)", formalDefinition="The name of this element definition (to refer to it from other element definitions using ElementDefinition.nameReference). This is a unique name referring to a specific set of constraints applied to this element. One use of this is to provide a name to different slices of the same element." )
protected StringType name;
/**
* The text to display beside the element indicating its meaning or to use to prompt for the element in a user display or form.
*/
@Child(name = "label", type = {StringType.class}, order=3, min=0, max=1)
@Child(name = "label", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Name for element to display with or prompt for element", formalDefinition="The text to display beside the element indicating its meaning or to use to prompt for the element in a user display or form." )
protected StringType label;
/**
* A code that provides the meaning for the element according to a particular terminology.
*/
@Child(name = "code", type = {Coding.class}, order=4, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "code", type = {Coding.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Defining code", formalDefinition="A code that provides the meaning for the element according to a particular terminology." )
protected List<Coding> code;
/**
* Indicates that the element is sliced into a set of alternative definitions (i.e. in a structure definition, there are multiple different constraints on a single element in the base resource). The set of slices is any elements that come after this in the element sequence that have the same path, until a shorter path occurs (the shorter path terminates the set).
*/
@Child(name = "slicing", type = {}, order=5, min=0, max=1)
@Child(name = "slicing", type = {}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="This element is sliced - slices follow", formalDefinition="Indicates that the element is sliced into a set of alternative definitions (i.e. in a structure definition, there are multiple different constraints on a single element in the base resource). The set of slices is any elements that come after this in the element sequence that have the same path, until a shorter path occurs (the shorter path terminates the set)." )
protected ElementDefinitionSlicingComponent slicing;
/**
* A concise definition that is shown in the generated XML format that summarizes profiles (used throughout the specification).
* A concise description of what this element means (e.g. for use in auto-generated summaries).
*/
@Child(name = "short", type = {StringType.class}, order=6, min=0, max=1)
@Description(shortDefinition="Concise definition for xml presentation", formalDefinition="A concise definition that is shown in the generated XML format that summarizes profiles (used throughout the specification)." )
@Child(name = "short", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Concise definition for xml presentation", formalDefinition="A concise description of what this element means (e.g. for use in auto-generated summaries)." )
protected StringType short_;
/**
* Provides a complete explanation of the meaning of the data element for human readability. For the case of elements derived from existing elements (e.g. constraints), the definition SHALL be consistent with the base definition, but convey the meaning of the element in the particular context of use of the resource.
*/
@Child(name = "definition", type = {MarkdownType.class}, order=7, min=0, max=1)
@Child(name = "definition", type = {MarkdownType.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Full formal definition as narrative text", formalDefinition="Provides a complete explanation of the meaning of the data element for human readability. For the case of elements derived from existing elements (e.g. constraints), the definition SHALL be consistent with the base definition, but convey the meaning of the element in the particular context of use of the resource." )
protected MarkdownType definition;
/**
* Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc.
*/
@Child(name = "comments", type = {MarkdownType.class}, order=8, min=0, max=1)
@Child(name = "comments", type = {MarkdownType.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Comments about the use of this element", formalDefinition="Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc." )
protected MarkdownType comments;
/**
* This element is for traceability of why the element was created and why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this element.
*/
@Child(name = "requirements", type = {MarkdownType.class}, order=9, min=0, max=1)
@Child(name = "requirements", type = {MarkdownType.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Why is this needed?", formalDefinition="This element is for traceability of why the element was created and why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this element." )
protected MarkdownType requirements;
/**
* Identifies additional names by which this element might also be known.
*/
@Child(name = "alias", type = {StringType.class}, order=10, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "alias", type = {StringType.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Other names", formalDefinition="Identifies additional names by which this element might also be known." )
protected List<StringType> alias;
/**
* The minimum number of times this element SHALL appear in the instance.
*/
@Child(name = "min", type = {IntegerType.class}, order=11, min=0, max=1)
@Child(name = "min", type = {IntegerType.class}, order=11, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Minimum Cardinality", formalDefinition="The minimum number of times this element SHALL appear in the instance." )
protected IntegerType min;
/**
* The maximum number of times this element is permitted to appear in the instance.
*/
@Child(name = "max", type = {StringType.class}, order=12, min=0, max=1)
@Child(name = "max", type = {StringType.class}, order=12, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Maximum Cardinality (a number or *)", formalDefinition="The maximum number of times this element is permitted to appear in the instance." )
protected StringType max;
/**
* Information about the base definition of the element, provided to make it unncessary for tools to trace the derviation of the element through the derived and related profiles. This information is only provided where the element definition represents a constraint on another element definition, and must be present if there is a base element definition.
*/
@Child(name = "base", type = {}, order=13, min=0, max=1)
@Child(name = "base", type = {}, order=13, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Base definition information for tools", formalDefinition="Information about the base definition of the element, provided to make it unncessary for tools to trace the derviation of the element through the derived and related profiles. This information is only provided where the element definition represents a constraint on another element definition, and must be present if there is a base element definition." )
protected ElementDefinitionBaseComponent base;
/**
* The data type or resource that the value of this element is permitted to be.
*/
@Child(name = "type", type = {}, order=14, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "type", type = {}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Data type and Profile for this element", formalDefinition="The data type or resource that the value of this element is permitted to be." )
protected List<TypeRefComponent> type;
/**
* Identifies the name of a slice defined elsewhere in the profile whose constraints should be applied to the current element.
*/
@Child(name = "nameReference", type = {StringType.class}, order=15, min=0, max=1)
@Child(name = "nameReference", type = {StringType.class}, order=15, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="To another element constraint (by element.name)", formalDefinition="Identifies the name of a slice defined elsewhere in the profile whose constraints should be applied to the current element." )
protected StringType nameReference;
/**
* The value that should be used if there is no value stated in the instance.
* The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').
*/
@Child(name = "defaultValue", type = {}, order=16, min=0, max=1)
@Description(shortDefinition="Specified value it missing from instance", formalDefinition="The value that should be used if there is no value stated in the instance." )
@Child(name = "defaultValue", type = {}, order=16, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Specified value it missing from instance", formalDefinition="The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false')." )
protected org.hl7.fhir.instance.model.Type defaultValue;
/**
* The Implicit meaning that is to be understood when this element is missing.
* The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing'.
*/
@Child(name = "meaningWhenMissing", type = {MarkdownType.class}, order=17, min=0, max=1)
@Description(shortDefinition="Implicit meaning when this element is missing", formalDefinition="The Implicit meaning that is to be understood when this element is missing." )
@Child(name = "meaningWhenMissing", type = {MarkdownType.class}, order=17, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Implicit meaning when this element is missing", formalDefinition="The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing'." )
protected MarkdownType meaningWhenMissing;
/**
* Specifies a value that SHALL be exactly the value for this element in the instance. For purposes of comparison, non-signficant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.
*/
@Child(name = "fixed", type = {}, order=18, min=0, max=1)
@Child(name = "fixed", type = {}, order=18, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Value must be exactly this", formalDefinition="Specifies a value that SHALL be exactly the value for this element in the instance. For purposes of comparison, non-signficant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing." )
protected org.hl7.fhir.instance.model.Type fixed;
/**
* Specifies a value that the value in the instance SHALL follow - that is, any value in the pattern must be found in the instance. Other additional values may be found too. This is effectively constraint by example. The values of elements present in the pattern must match exactly (case-senstive, accent-sensitive, etc.).
*/
@Child(name = "pattern", type = {}, order=19, min=0, max=1)
@Child(name = "pattern", type = {}, order=19, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Value must have at least these property values", formalDefinition="Specifies a value that the value in the instance SHALL follow - that is, any value in the pattern must be found in the instance. Other additional values may be found too. This is effectively constraint by example. The values of elements present in the pattern must match exactly (case-senstive, accent-sensitive, etc.)." )
protected org.hl7.fhir.instance.model.Type pattern;
/**
* A sample value for this element demonstrating the type of information that would typically be captured.
*/
@Child(name = "example", type = {}, order=20, min=0, max=1)
@Child(name = "example", type = {}, order=20, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Example value: [as defined for type]", formalDefinition="A sample value for this element demonstrating the type of information that would typically be captured." )
protected org.hl7.fhir.instance.model.Type example;
/**
* The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.
*/
@Child(name = "minValue", type = {}, order=21, min=0, max=1)
@Child(name = "minValue", type = {}, order=21, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Minimum Allowed Value (for some types)", formalDefinition="The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity." )
protected org.hl7.fhir.instance.model.Type minValue;
/**
* The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity.
*/
@Child(name = "maxValue", type = {}, order=22, min=0, max=1)
@Child(name = "maxValue", type = {}, order=22, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Maximum Allowed Value (for some types)", formalDefinition="The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity." )
protected org.hl7.fhir.instance.model.Type maxValue;
/**
* Indicates the maximum length in characters that is permitted to be present in conformant instances and which is expected to be supported by conformant consumers that support the element.
*/
@Child(name = "maxLength", type = {IntegerType.class}, order=23, min=0, max=1)
@Child(name = "maxLength", type = {IntegerType.class}, order=23, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Max length for strings", formalDefinition="Indicates the maximum length in characters that is permitted to be present in conformant instances and which is expected to be supported by conformant consumers that support the element." )
protected IntegerType maxLength;
/**
* A reference to an invariant that may make additional statements about the cardinality or value in the instance.
*/
@Child(name = "condition", type = {IdType.class}, order=24, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "condition", type = {IdType.class}, order=24, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Reference to invariant about presence", formalDefinition="A reference to an invariant that may make additional statements about the cardinality or value in the instance." )
protected List<IdType> condition;
/**
* Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instance.
*/
@Child(name = "constraint", type = {}, order=25, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "constraint", type = {}, order=25, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Condition that must evaluate to true", formalDefinition="Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instance." )
protected List<ElementDefinitionConstraintComponent> constraint;
/**
* If true, implementations that produce or consume resources SHALL provide "support" for the element in some meaningful way. If false, the element may be ignored and not supported.
*/
@Child(name = "mustSupport", type = {BooleanType.class}, order=26, min=0, max=1)
@Description(shortDefinition="If the element must supported", formalDefinition="If true, implementations that produce or consume resources SHALL provide 'support' for the element in some meaningful way. If false, the element may be ignored and not supported." )
@Child(name = "mustSupport", type = {BooleanType.class}, order=26, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="If the element must supported", formalDefinition="If true, implementations that produce or consume resources SHALL provide \"support\" for the element in some meaningful way. If false, the element may be ignored and not supported." )
protected BooleanType mustSupport;
/**
* If true, the value of this element affects the interpretation of the element or resource that contains it, and the value of the element cannot be ignored. Typically, this is used for status, negation and qualification codes. The effect of this is that the element cannot be ignored by systems: they SHALL either recognize the element and process it, and/or a pre-determination has been made that it is not relevant to their particular system.
*/
@Child(name = "isModifier", type = {BooleanType.class}, order=27, min=0, max=1)
@Child(name = "isModifier", type = {BooleanType.class}, order=27, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="If this modifies the meaning of other elements", formalDefinition="If true, the value of this element affects the interpretation of the element or resource that contains it, and the value of the element cannot be ignored. Typically, this is used for status, negation and qualification codes. The effect of this is that the element cannot be ignored by systems: they SHALL either recognize the element and process it, and/or a pre-determination has been made that it is not relevant to their particular system." )
protected BooleanType isModifier;
/**
* Whether the element should be included if a client requests a search with the parameter _summary=true.
*/
@Child(name = "isSummary", type = {BooleanType.class}, order=28, min=0, max=1)
@Child(name = "isSummary", type = {BooleanType.class}, order=28, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Include when _summary = true?", formalDefinition="Whether the element should be included if a client requests a search with the parameter _summary=true." )
protected BooleanType isSummary;
/**
* Binds to a value set if this element is coded (code, Coding, CodeableConcept).
*/
@Child(name = "binding", type = {}, order=29, min=0, max=1)
@Child(name = "binding", type = {}, order=29, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="ValueSet details if this is coded", formalDefinition="Binds to a value set if this element is coded (code, Coding, CodeableConcept)." )
protected ElementDefinitionBindingComponent binding;
/**
* Identifies a concept from an external specification that roughly corresponds to this element.
*/
@Child(name = "mapping", type = {}, order=30, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "mapping", type = {}, order=30, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Map element to another set of definitions", formalDefinition="Identifies a concept from an external specification that roughly corresponds to this element." )
protected List<ElementDefinitionMappingComponent> mapping;
@ -2388,7 +2388,7 @@ public class ElementDefinition extends Type implements ICompositeType {
}
/**
* @return {@link #short_} (A concise definition that is shown in the generated XML format that summarizes profiles (used throughout the specification).). This is the underlying object with id, value and extensions. The accessor "getShort" gives direct access to the value
* @return {@link #short_} (A concise description of what this element means (e.g. for use in auto-generated summaries).). This is the underlying object with id, value and extensions. The accessor "getShort" gives direct access to the value
*/
public StringType getShortElement() {
if (this.short_ == null)
@ -2408,7 +2408,7 @@ public class ElementDefinition extends Type implements ICompositeType {
}
/**
* @param value {@link #short_} (A concise definition that is shown in the generated XML format that summarizes profiles (used throughout the specification).). This is the underlying object with id, value and extensions. The accessor "getShort" gives direct access to the value
* @param value {@link #short_} (A concise description of what this element means (e.g. for use in auto-generated summaries).). This is the underlying object with id, value and extensions. The accessor "getShort" gives direct access to the value
*/
public ElementDefinition setShortElement(StringType value) {
this.short_ = value;
@ -2416,14 +2416,14 @@ public class ElementDefinition extends Type implements ICompositeType {
}
/**
* @return A concise definition that is shown in the generated XML format that summarizes profiles (used throughout the specification).
* @return A concise description of what this element means (e.g. for use in auto-generated summaries).
*/
public String getShort() {
return this.short_ == null ? null : this.short_.getValue();
}
/**
* @param value A concise definition that is shown in the generated XML format that summarizes profiles (used throughout the specification).
* @param value A concise description of what this element means (e.g. for use in auto-generated summaries).
*/
public ElementDefinition setShort(String value) {
if (Utilities.noString(value))
@ -2845,7 +2845,7 @@ public class ElementDefinition extends Type implements ICompositeType {
}
/**
* @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance.)
* @return {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').)
*/
public org.hl7.fhir.instance.model.Type getDefaultValue() {
return this.defaultValue;
@ -2856,7 +2856,7 @@ public class ElementDefinition extends Type implements ICompositeType {
}
/**
* @param value {@link #defaultValue} (The value that should be used if there is no value stated in the instance.)
* @param value {@link #defaultValue} (The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').)
*/
public ElementDefinition setDefaultValue(org.hl7.fhir.instance.model.Type value) {
this.defaultValue = value;
@ -2864,7 +2864,7 @@ public class ElementDefinition extends Type implements ICompositeType {
}
/**
* @return {@link #meaningWhenMissing} (The Implicit meaning that is to be understood when this element is missing.). This is the underlying object with id, value and extensions. The accessor "getMeaningWhenMissing" gives direct access to the value
* @return {@link #meaningWhenMissing} (The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing'.). This is the underlying object with id, value and extensions. The accessor "getMeaningWhenMissing" gives direct access to the value
*/
public MarkdownType getMeaningWhenMissingElement() {
if (this.meaningWhenMissing == null)
@ -2884,7 +2884,7 @@ public class ElementDefinition extends Type implements ICompositeType {
}
/**
* @param value {@link #meaningWhenMissing} (The Implicit meaning that is to be understood when this element is missing.). This is the underlying object with id, value and extensions. The accessor "getMeaningWhenMissing" gives direct access to the value
* @param value {@link #meaningWhenMissing} (The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing'.). This is the underlying object with id, value and extensions. The accessor "getMeaningWhenMissing" gives direct access to the value
*/
public ElementDefinition setMeaningWhenMissingElement(MarkdownType value) {
this.meaningWhenMissing = value;
@ -2892,14 +2892,14 @@ public class ElementDefinition extends Type implements ICompositeType {
}
/**
* @return The Implicit meaning that is to be understood when this element is missing.
* @return The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing'.
*/
public String getMeaningWhenMissing() {
return this.meaningWhenMissing == null ? null : this.meaningWhenMissing.getValue();
}
/**
* @param value The Implicit meaning that is to be understood when this element is missing.
* @param value The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing'.
*/
public ElementDefinition setMeaningWhenMissing(String value) {
if (value == null)
@ -3347,13 +3347,13 @@ public class ElementDefinition extends Type implements ICompositeType {
protected void listChildren(List<Property> childrenList) {
super.listChildren(childrenList);
childrenList.add(new Property("path", "string", "The path identifies the element and is expressed as a '.'-separated list of ancestor elements, beginning with the name of the resource or extension.", 0, java.lang.Integer.MAX_VALUE, path));
childrenList.add(new Property("path", "string", "The path identifies the element and is expressed as a \".\"-separated list of ancestor elements, beginning with the name of the resource or extension.", 0, java.lang.Integer.MAX_VALUE, path));
childrenList.add(new Property("representation", "code", "Codes that define how this element is represented in instances, when the deviation varies from the normal case.", 0, java.lang.Integer.MAX_VALUE, representation));
childrenList.add(new Property("name", "string", "The name of this element definition (to refer to it from other element definitions using ElementDefinition.nameReference). This is a unique name referring to a specific set of constraints applied to this element. One use of this is to provide a name to different slices of the same element.", 0, java.lang.Integer.MAX_VALUE, name));
childrenList.add(new Property("label", "string", "The text to display beside the element indicating its meaning or to use to prompt for the element in a user display or form.", 0, java.lang.Integer.MAX_VALUE, label));
childrenList.add(new Property("code", "Coding", "A code that provides the meaning for the element according to a particular terminology.", 0, java.lang.Integer.MAX_VALUE, code));
childrenList.add(new Property("slicing", "", "Indicates that the element is sliced into a set of alternative definitions (i.e. in a structure definition, there are multiple different constraints on a single element in the base resource). The set of slices is any elements that come after this in the element sequence that have the same path, until a shorter path occurs (the shorter path terminates the set).", 0, java.lang.Integer.MAX_VALUE, slicing));
childrenList.add(new Property("short", "string", "A concise definition that is shown in the generated XML format that summarizes profiles (used throughout the specification).", 0, java.lang.Integer.MAX_VALUE, short_));
childrenList.add(new Property("short", "string", "A concise description of what this element means (e.g. for use in auto-generated summaries).", 0, java.lang.Integer.MAX_VALUE, short_));
childrenList.add(new Property("definition", "markdown", "Provides a complete explanation of the meaning of the data element for human readability. For the case of elements derived from existing elements (e.g. constraints), the definition SHALL be consistent with the base definition, but convey the meaning of the element in the particular context of use of the resource.", 0, java.lang.Integer.MAX_VALUE, definition));
childrenList.add(new Property("comments", "markdown", "Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc.", 0, java.lang.Integer.MAX_VALUE, comments));
childrenList.add(new Property("requirements", "markdown", "This element is for traceability of why the element was created and why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this element.", 0, java.lang.Integer.MAX_VALUE, requirements));
@ -3363,8 +3363,8 @@ public class ElementDefinition extends Type implements ICompositeType {
childrenList.add(new Property("base", "", "Information about the base definition of the element, provided to make it unncessary for tools to trace the derviation of the element through the derived and related profiles. This information is only provided where the element definition represents a constraint on another element definition, and must be present if there is a base element definition.", 0, java.lang.Integer.MAX_VALUE, base));
childrenList.add(new Property("type", "", "The data type or resource that the value of this element is permitted to be.", 0, java.lang.Integer.MAX_VALUE, type));
childrenList.add(new Property("nameReference", "string", "Identifies the name of a slice defined elsewhere in the profile whose constraints should be applied to the current element.", 0, java.lang.Integer.MAX_VALUE, nameReference));
childrenList.add(new Property("defaultValue[x]", "*", "The value that should be used if there is no value stated in the instance.", 0, java.lang.Integer.MAX_VALUE, defaultValue));
childrenList.add(new Property("meaningWhenMissing", "markdown", "The Implicit meaning that is to be understood when this element is missing.", 0, java.lang.Integer.MAX_VALUE, meaningWhenMissing));
childrenList.add(new Property("defaultValue[x]", "*", "The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false').", 0, java.lang.Integer.MAX_VALUE, defaultValue));
childrenList.add(new Property("meaningWhenMissing", "markdown", "The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing'.", 0, java.lang.Integer.MAX_VALUE, meaningWhenMissing));
childrenList.add(new Property("fixed[x]", "*", "Specifies a value that SHALL be exactly the value for this element in the instance. For purposes of comparison, non-signficant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing.", 0, java.lang.Integer.MAX_VALUE, fixed));
childrenList.add(new Property("pattern[x]", "*", "Specifies a value that the value in the instance SHALL follow - that is, any value in the pattern must be found in the instance. Other additional values may be found too. This is effectively constraint by example. The values of elements present in the pattern must match exactly (case-senstive, accent-sensitive, etc.).", 0, java.lang.Integer.MAX_VALUE, pattern));
childrenList.add(new Property("example[x]", "*", "A sample value for this element demonstrating the type of information that would typically be captured.", 0, java.lang.Integer.MAX_VALUE, example));
@ -3373,7 +3373,7 @@ public class ElementDefinition extends Type implements ICompositeType {
childrenList.add(new Property("maxLength", "integer", "Indicates the maximum length in characters that is permitted to be present in conformant instances and which is expected to be supported by conformant consumers that support the element.", 0, java.lang.Integer.MAX_VALUE, maxLength));
childrenList.add(new Property("condition", "id", "A reference to an invariant that may make additional statements about the cardinality or value in the instance.", 0, java.lang.Integer.MAX_VALUE, condition));
childrenList.add(new Property("constraint", "", "Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instance.", 0, java.lang.Integer.MAX_VALUE, constraint));
childrenList.add(new Property("mustSupport", "boolean", "If true, implementations that produce or consume resources SHALL provide 'support' for the element in some meaningful way. If false, the element may be ignored and not supported.", 0, java.lang.Integer.MAX_VALUE, mustSupport));
childrenList.add(new Property("mustSupport", "boolean", "If true, implementations that produce or consume resources SHALL provide \"support\" for the element in some meaningful way. If false, the element may be ignored and not supported.", 0, java.lang.Integer.MAX_VALUE, mustSupport));
childrenList.add(new Property("isModifier", "boolean", "If true, the value of this element affects the interpretation of the element or resource that contains it, and the value of the element cannot be ignored. Typically, this is used for status, negation and qualification codes. The effect of this is that the element cannot be ignored by systems: they SHALL either recognize the element and process it, and/or a pre-determination has been made that it is not relevant to their particular system.", 0, java.lang.Integer.MAX_VALUE, isModifier));
childrenList.add(new Property("isSummary", "boolean", "Whether the element should be included if a client requests a search with the parameter _summary=true.", 0, java.lang.Integer.MAX_VALUE, isSummary));
childrenList.add(new Property("binding", "", "Binds to a value set if this element is coded (code, Coding, CodeableConcept).", 0, java.lang.Integer.MAX_VALUE, binding));

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -49,35 +49,35 @@ public class EligibilityRequest extends DomainResource {
/**
* The Response Business Identifier.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Business Identifier", formalDefinition="The Response Business Identifier." )
protected List<Identifier> identifier;
/**
* The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources.
*/
@Child(name = "ruleset", type = {Coding.class}, order=1, min=0, max=1)
@Child(name = "ruleset", type = {Coding.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Resource version", formalDefinition="The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources." )
protected Coding ruleset;
/**
* The style (standard) and version of the original material which was converted into this resource.
*/
@Child(name = "originalRuleset", type = {Coding.class}, order=2, min=0, max=1)
@Child(name = "originalRuleset", type = {Coding.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Original version", formalDefinition="The style (standard) and version of the original material which was converted into this resource." )
protected Coding originalRuleset;
/**
* The date when this resource was created.
*/
@Child(name = "created", type = {DateTimeType.class}, order=3, min=0, max=1)
@Child(name = "created", type = {DateTimeType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Creation date", formalDefinition="The date when this resource was created." )
protected DateTimeType created;
/**
* The Insurer who is target of the request.
*/
@Child(name = "target", type = {Organization.class}, order=4, min=0, max=1)
@Child(name = "target", type = {Organization.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Insurer", formalDefinition="The Insurer who is target of the request." )
protected Reference target;
@ -89,7 +89,7 @@ public class EligibilityRequest extends DomainResource {
/**
* The practitioner who is responsible for the services rendered to the patient.
*/
@Child(name = "provider", type = {Practitioner.class}, order=5, min=0, max=1)
@Child(name = "provider", type = {Practitioner.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible practitioner", formalDefinition="The practitioner who is responsible for the services rendered to the patient." )
protected Reference provider;
@ -101,7 +101,7 @@ public class EligibilityRequest extends DomainResource {
/**
* The organization which is responsible for the services rendered to the patient.
*/
@Child(name = "organization", type = {Organization.class}, order=6, min=0, max=1)
@Child(name = "organization", type = {Organization.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible organization", formalDefinition="The organization which is responsible for the services rendered to the patient." )
protected Reference organization;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -50,14 +50,14 @@ public class EligibilityResponse extends DomainResource {
/**
* The Response Business Identifier.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Business Identifier", formalDefinition="The Response Business Identifier." )
protected List<Identifier> identifier;
/**
* Original request resource reference.
*/
@Child(name = "request", type = {EligibilityRequest.class}, order=1, min=0, max=1)
@Child(name = "request", type = {EligibilityRequest.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Claim reference", formalDefinition="Original request resource reference." )
protected Reference request;
@ -69,42 +69,42 @@ public class EligibilityResponse extends DomainResource {
/**
* Transaction status: error, complete.
*/
@Child(name = "outcome", type = {CodeType.class}, order=2, min=0, max=1)
@Child(name = "outcome", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="complete | error", formalDefinition="Transaction status: error, complete." )
protected Enumeration<RemittanceOutcome> outcome;
/**
* A description of the status of the adjudication.
*/
@Child(name = "disposition", type = {StringType.class}, order=3, min=0, max=1)
@Child(name = "disposition", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Disposition Message", formalDefinition="A description of the status of the adjudication." )
protected StringType disposition;
/**
* The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources.
*/
@Child(name = "ruleset", type = {Coding.class}, order=4, min=0, max=1)
@Child(name = "ruleset", type = {Coding.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Resource version", formalDefinition="The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources." )
protected Coding ruleset;
/**
* The style (standard) and version of the original material which was converted into this resource.
*/
@Child(name = "originalRuleset", type = {Coding.class}, order=5, min=0, max=1)
@Child(name = "originalRuleset", type = {Coding.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Original version", formalDefinition="The style (standard) and version of the original material which was converted into this resource." )
protected Coding originalRuleset;
/**
* The date when the enclosed suite of services were performed or completed.
*/
@Child(name = "created", type = {DateTimeType.class}, order=6, min=0, max=1)
@Child(name = "created", type = {DateTimeType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Creation date", formalDefinition="The date when the enclosed suite of services were performed or completed." )
protected DateTimeType created;
/**
* The Insurer who produced this adjudicated response.
*/
@Child(name = "organization", type = {Organization.class}, order=7, min=0, max=1)
@Child(name = "organization", type = {Organization.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Insurer", formalDefinition="The Insurer who produced this adjudicated response." )
protected Reference organization;
@ -116,7 +116,7 @@ public class EligibilityResponse extends DomainResource {
/**
* The practitioner who is responsible for the services rendered to the patient.
*/
@Child(name = "requestProvider", type = {Practitioner.class}, order=8, min=0, max=1)
@Child(name = "requestProvider", type = {Practitioner.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible practitioner", formalDefinition="The practitioner who is responsible for the services rendered to the patient." )
protected Reference requestProvider;
@ -128,7 +128,7 @@ public class EligibilityResponse extends DomainResource {
/**
* The organization which is responsible for the services rendered to the patient.
*/
@Child(name = "requestOrganization", type = {Organization.class}, order=9, min=0, max=1)
@Child(name = "requestOrganization", type = {Organization.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible organization", formalDefinition="The organization which is responsible for the services rendered to the patient." )
protected Reference requestOrganization;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -435,14 +435,14 @@ public class Encounter extends DomainResource {
/**
* planned | arrived | in-progress | onleave | finished | cancelled.
*/
@Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="planned | arrived | in-progress | onleave | finished | cancelled", formalDefinition="planned | arrived | in-progress | onleave | finished | cancelled." )
protected Enumeration<EncounterState> status;
/**
* The time that the episode was in the specified status.
*/
@Child(name = "period", type = {Period.class}, order=2, min=1, max=1)
@Child(name = "period", type = {Period.class}, order=2, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="The time that the episode was in the specified status", formalDefinition="The time that the episode was in the specified status." )
protected Period period;
@ -579,21 +579,21 @@ public class Encounter extends DomainResource {
/**
* Role of participant in encounter.
*/
@Child(name = "type", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "type", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Role of participant in encounter", formalDefinition="Role of participant in encounter." )
protected List<CodeableConcept> type;
/**
* The period of time that the specified participant was present during the encounter. These can overlap or be sub-sets of the overall encounters period.
*/
@Child(name = "period", type = {Period.class}, order=2, min=0, max=1)
@Child(name = "period", type = {Period.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Period of time during the encounter participant was present", formalDefinition="The period of time that the specified participant was present during the encounter. These can overlap or be sub-sets of the overall encounters period." )
protected Period period;
/**
* Persons involved in the encounter other than the patient.
*/
@Child(name = "individual", type = {Practitioner.class, RelatedPerson.class}, order=3, min=0, max=1)
@Child(name = "individual", type = {Practitioner.class, RelatedPerson.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Persons involved in the encounter other than the patient", formalDefinition="Persons involved in the encounter other than the patient." )
protected Reference individual;
@ -767,14 +767,14 @@ public class Encounter extends DomainResource {
/**
* Pre-admission identifier.
*/
@Child(name = "preAdmissionIdentifier", type = {Identifier.class}, order=1, min=0, max=1)
@Child(name = "preAdmissionIdentifier", type = {Identifier.class}, order=1, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Pre-admission identifier", formalDefinition="Pre-admission identifier." )
protected Identifier preAdmissionIdentifier;
/**
* The location from which the patient came before admission.
*/
@Child(name = "origin", type = {Location.class}, order=2, min=0, max=1)
@Child(name = "origin", type = {Location.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="The location from which the patient came before admission", formalDefinition="The location from which the patient came before admission." )
protected Reference origin;
@ -786,14 +786,14 @@ public class Encounter extends DomainResource {
/**
* From where patient was admitted (physician referral, transfer).
*/
@Child(name = "admitSource", type = {CodeableConcept.class}, order=3, min=0, max=1)
@Child(name = "admitSource", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="From where patient was admitted (physician referral, transfer)", formalDefinition="From where patient was admitted (physician referral, transfer)." )
protected CodeableConcept admitSource;
/**
* The admitting Diagnosis field is used to record the diagnosis codes as reported by admitting practitioner. This could be different or in addition to the conditions reported as reason-condition(s) for the encounter.
*/
@Child(name = "admittingDiagnosis", type = {Condition.class}, order=4, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "admittingDiagnosis", type = {Condition.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="The admitting Diagnosis as reported by admitting practitioner", formalDefinition="The admitting Diagnosis field is used to record the diagnosis codes as reported by admitting practitioner. This could be different or in addition to the conditions reported as reason-condition(s) for the encounter." )
protected List<Reference> admittingDiagnosis;
/**
@ -805,35 +805,35 @@ public class Encounter extends DomainResource {
/**
* Whether this hospitalization is a readmission and why if known.
*/
@Child(name = "reAdmission", type = {CodeableConcept.class}, order=5, min=0, max=1)
@Child(name = "reAdmission", type = {CodeableConcept.class}, order=5, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="The type of hospital re-admission that has occurred (if any). If the value is absent, then this is not identified as a readmission", formalDefinition="Whether this hospitalization is a readmission and why if known." )
protected CodeableConcept reAdmission;
/**
* Diet preferences reported by the patient.
*/
@Child(name = "dietPreference", type = {CodeableConcept.class}, order=6, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "dietPreference", type = {CodeableConcept.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Diet preferences reported by the patient", formalDefinition="Diet preferences reported by the patient." )
protected List<CodeableConcept> dietPreference;
/**
* Special courtesies (VIP, board member).
*/
@Child(name = "specialCourtesy", type = {CodeableConcept.class}, order=7, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "specialCourtesy", type = {CodeableConcept.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Special courtesies (VIP, board member)", formalDefinition="Special courtesies (VIP, board member)." )
protected List<CodeableConcept> specialCourtesy;
/**
* Wheelchair, translator, stretcher, etc.
*/
@Child(name = "specialArrangement", type = {CodeableConcept.class}, order=8, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "specialArrangement", type = {CodeableConcept.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Wheelchair, translator, stretcher, etc", formalDefinition="Wheelchair, translator, stretcher, etc." )
protected List<CodeableConcept> specialArrangement;
/**
* Location to which the patient is discharged.
*/
@Child(name = "destination", type = {Location.class}, order=9, min=0, max=1)
@Child(name = "destination", type = {Location.class}, order=9, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Location to which the patient is discharged", formalDefinition="Location to which the patient is discharged." )
protected Reference destination;
@ -845,14 +845,14 @@ public class Encounter extends DomainResource {
/**
* Category or kind of location after discharge.
*/
@Child(name = "dischargeDisposition", type = {CodeableConcept.class}, order=10, min=0, max=1)
@Child(name = "dischargeDisposition", type = {CodeableConcept.class}, order=10, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Category or kind of location after discharge", formalDefinition="Category or kind of location after discharge." )
protected CodeableConcept dischargeDisposition;
/**
* The final diagnosis given a patient before release from the hospital after all testing, surgery, and workup are complete.
*/
@Child(name = "dischargeDiagnosis", type = {Condition.class}, order=11, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "dischargeDiagnosis", type = {Condition.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="The final diagnosis given a patient before release from the hospital after all testing, surgery, and workup are complete", formalDefinition="The final diagnosis given a patient before release from the hospital after all testing, surgery, and workup are complete." )
protected List<Reference> dischargeDiagnosis;
/**
@ -1390,7 +1390,7 @@ public class Encounter extends DomainResource {
/**
* The location where the encounter takes place.
*/
@Child(name = "location", type = {Location.class}, order=1, min=1, max=1)
@Child(name = "location", type = {Location.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Location the encounter takes place", formalDefinition="The location where the encounter takes place." )
protected Reference location;
@ -1402,14 +1402,14 @@ public class Encounter extends DomainResource {
/**
* The status of the participants presence at the specified location during the period specified. If the participant is is no longer at the location, then the period will have an end date/time.
*/
@Child(name = "status", type = {CodeType.class}, order=2, min=0, max=1)
@Child(name = "status", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="planned | present | reserved", formalDefinition="The status of the participants presence at the specified location during the period specified. If the participant is is no longer at the location, then the period will have an end date/time." )
protected Enumeration<EncounterLocationStatus> status;
/**
* Time period during which the patient was present at the location.
*/
@Child(name = "period", type = {Period.class}, order=3, min=0, max=1)
@Child(name = "period", type = {Period.class}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Time period during which the patient was present at the location", formalDefinition="Time period during which the patient was present at the location." )
protected Period period;
@ -1594,42 +1594,42 @@ public class Encounter extends DomainResource {
/**
* Identifier(s) by which this encounter is known.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Identifier(s) by which this encounter is known", formalDefinition="Identifier(s) by which this encounter is known." )
protected List<Identifier> identifier;
/**
* planned | arrived | in-progress | onleave | finished | cancelled.
*/
@Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="planned | arrived | in-progress | onleave | finished | cancelled", formalDefinition="planned | arrived | in-progress | onleave | finished | cancelled." )
protected Enumeration<EncounterState> status;
/**
* The current status is always found in the current version of the resource. This status history permits the encounter resource to contain the status history without the needing to read through the historical versions of the resource, or even have the server store them.
*/
@Child(name = "statusHistory", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "statusHistory", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="List of Encounter statuses", formalDefinition="The current status is always found in the current version of the resource. This status history permits the encounter resource to contain the status history without the needing to read through the historical versions of the resource, or even have the server store them." )
protected List<EncounterStatusHistoryComponent> statusHistory;
/**
* inpatient | outpatient | ambulatory | emergency +.
*/
@Child(name = "class", type = {CodeType.class}, order=3, min=0, max=1)
@Child(name = "class", type = {CodeType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="inpatient | outpatient | ambulatory | emergency +", formalDefinition="inpatient | outpatient | ambulatory | emergency +." )
protected Enumeration<EncounterClass> class_;
/**
* Specific type of encounter (e.g. e-mail consultation, surgical day-care, skilled nursing, rehabilitation).
*/
@Child(name = "type", type = {CodeableConcept.class}, order=4, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "type", type = {CodeableConcept.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Specific type of encounter", formalDefinition="Specific type of encounter (e.g. e-mail consultation, surgical day-care, skilled nursing, rehabilitation)." )
protected List<CodeableConcept> type;
/**
* The patient present at the encounter.
*/
@Child(name = "patient", type = {Patient.class}, order=5, min=0, max=1)
@Child(name = "patient", type = {Patient.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The patient present at the encounter", formalDefinition="The patient present at the encounter." )
protected Reference patient;
@ -1641,7 +1641,7 @@ public class Encounter extends DomainResource {
/**
* Where a specific encounter should be classified as a part of a specific episode(s) of care this field should be used. This association can facilitate grouping of related encounters together for a specific purpose, such as govt reporting, issue tracking, association via a common problem. The association is recorded on the encounter as these are typically created after the episode of care, and grouped on entry rather than editing the episode of care to append another encounter to it (the episode of care could span years).
*/
@Child(name = "episodeOfCare", type = {EpisodeOfCare.class}, order=6, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "episodeOfCare", type = {EpisodeOfCare.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Episode(s) of care that this encounter should be recorded against", formalDefinition="Where a specific encounter should be classified as a part of a specific episode(s) of care this field should be used. This association can facilitate grouping of related encounters together for a specific purpose, such as govt reporting, issue tracking, association via a common problem. The association is recorded on the encounter as these are typically created after the episode of care, and grouped on entry rather than editing the episode of care to append another encounter to it (the episode of care could span years)." )
protected List<Reference> episodeOfCare;
/**
@ -1653,59 +1653,59 @@ public class Encounter extends DomainResource {
/**
* The referral request that this encounter satisfies (incoming referral).
*/
@Child(name = "incomingReferralRequest", type = {ReferralRequest.class}, order=7, min=0, max=Child.MAX_UNLIMITED)
@Description(shortDefinition="Incoming Referral Request", formalDefinition="The referral request that this encounter satisfies (incoming referral)." )
protected List<Reference> incomingReferralRequest;
@Child(name = "incomingReferral", type = {ReferralRequest.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="The Referral that initiated this encounter", formalDefinition="The referral request that this encounter satisfies (incoming referral)." )
protected List<Reference> incomingReferral;
/**
* The actual objects that are the target of the reference (The referral request that this encounter satisfies (incoming referral).)
*/
protected List<ReferralRequest> incomingReferralRequestTarget;
protected List<ReferralRequest> incomingReferralTarget;
/**
* The main practitioner responsible for providing the service.
* The list of people responsible for providing the service.
*/
@Child(name = "participant", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED)
@Description(shortDefinition="List of participants involved in the encounter", formalDefinition="The main practitioner responsible for providing the service." )
@Child(name = "participant", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="List of participants involved in the encounter", formalDefinition="The list of people responsible for providing the service." )
protected List<EncounterParticipantComponent> participant;
/**
* The appointment that scheduled this encounter.
*/
@Child(name = "fulfills", type = {Appointment.class}, order=9, min=0, max=1)
@Child(name = "appointment", type = {Appointment.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The appointment that scheduled this encounter", formalDefinition="The appointment that scheduled this encounter." )
protected Reference fulfills;
protected Reference appointment;
/**
* The actual object that is the target of the reference (The appointment that scheduled this encounter.)
*/
protected Appointment fulfillsTarget;
protected Appointment appointmentTarget;
/**
* The start and end time of the encounter.
*/
@Child(name = "period", type = {Period.class}, order=10, min=0, max=1)
@Child(name = "period", type = {Period.class}, order=10, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="The start and end time of the encounter", formalDefinition="The start and end time of the encounter." )
protected Period period;
/**
* Quantity of time the encounter lasted. This excludes the time during leaves of absence.
*/
@Child(name = "length", type = {Duration.class}, order=11, min=0, max=1)
@Child(name = "length", type = {Duration.class}, order=11, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Quantity of time the encounter lasted (less time absent)", formalDefinition="Quantity of time the encounter lasted. This excludes the time during leaves of absence." )
protected Duration length;
/**
* Reason the encounter takes place, expressed as a code. For admissions, this can be used for a coded admission diagnosis.
*/
@Child(name = "reason", type = {CodeableConcept.class}, order=12, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "reason", type = {CodeableConcept.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Reason the encounter takes place (code)", formalDefinition="Reason the encounter takes place, expressed as a code. For admissions, this can be used for a coded admission diagnosis." )
protected List<CodeableConcept> reason;
/**
* Reason the encounter takes place, as specified using information from another resource. For admissions, this is the admission diagnosis. The indication will typically be a Condition (with other resources referenced in the evidence.detail), or a Procedure.
*/
@Child(name = "indication", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "indication", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Reason the encounter takes place (resource)", formalDefinition="Reason the encounter takes place, as specified using information from another resource. For admissions, this is the admission diagnosis. The indication will typically be a Condition (with other resources referenced in the evidence.detail), or a Procedure." )
protected List<Reference> indication;
/**
@ -1717,28 +1717,28 @@ public class Encounter extends DomainResource {
/**
* Indicates the urgency of the encounter.
*/
@Child(name = "priority", type = {CodeableConcept.class}, order=14, min=0, max=1)
@Child(name = "priority", type = {CodeableConcept.class}, order=14, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Indicates the urgency of the encounter", formalDefinition="Indicates the urgency of the encounter." )
protected CodeableConcept priority;
/**
* Details about an admission to a clinic.
*/
@Child(name = "hospitalization", type = {}, order=15, min=0, max=1)
@Child(name = "hospitalization", type = {}, order=15, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Details about an admission to a clinic", formalDefinition="Details about an admission to a clinic." )
protected EncounterHospitalizationComponent hospitalization;
/**
* List of locations at which the patient has been.
*/
@Child(name = "location", type = {}, order=16, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "location", type = {}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="List of locations the patient has been at", formalDefinition="List of locations at which the patient has been." )
protected List<EncounterLocationComponent> location;
/**
* An organization that is in charge of maintaining the information of this Encounter (e.g., who maintains the report or the master service catalog item, etc.). This MAY be the same as the organization on the Patient record, however it could be different. This MAY not be not the Service Delivery Location's Organization.
*/
@Child(name = "serviceProvider", type = {Organization.class}, order=17, min=0, max=1)
@Child(name = "serviceProvider", type = {Organization.class}, order=17, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="The custodian organization of this Encounter record", formalDefinition="An organization that is in charge of maintaining the information of this Encounter (e.g., who maintains the report or the master service catalog item, etc.). This MAY be the same as the organization on the Patient record, however it could be different. This MAY not be not the Service Delivery Location's Organization." )
protected Reference serviceProvider;
@ -1750,7 +1750,7 @@ public class Encounter extends DomainResource {
/**
* Another Encounter of which this encounter is a part of (administratively or in time).
*/
@Child(name = "partOf", type = {Encounter.class}, order=18, min=0, max=1)
@Child(name = "partOf", type = {Encounter.class}, order=18, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Another Encounter this encounter is part of", formalDefinition="Another Encounter of which this encounter is a part of (administratively or in time)." )
protected Reference partOf;
@ -1759,7 +1759,7 @@ public class Encounter extends DomainResource {
*/
protected Encounter partOfTarget;
private static final long serialVersionUID = 254412792L;
private static final long serialVersionUID = 117971528L;
/*
* Constructor
@ -2096,68 +2096,68 @@ public class Encounter extends DomainResource {
}
/**
* @return {@link #incomingReferralRequest} (The referral request that this encounter satisfies (incoming referral).)
* @return {@link #incomingReferral} (The referral request that this encounter satisfies (incoming referral).)
*/
public List<Reference> getIncomingReferralRequest() {
if (this.incomingReferralRequest == null)
this.incomingReferralRequest = new ArrayList<Reference>();
return this.incomingReferralRequest;
public List<Reference> getIncomingReferral() {
if (this.incomingReferral == null)
this.incomingReferral = new ArrayList<Reference>();
return this.incomingReferral;
}
public boolean hasIncomingReferralRequest() {
if (this.incomingReferralRequest == null)
public boolean hasIncomingReferral() {
if (this.incomingReferral == null)
return false;
for (Reference item : this.incomingReferralRequest)
for (Reference item : this.incomingReferral)
if (!item.isEmpty())
return true;
return false;
}
/**
* @return {@link #incomingReferralRequest} (The referral request that this encounter satisfies (incoming referral).)
* @return {@link #incomingReferral} (The referral request that this encounter satisfies (incoming referral).)
*/
// syntactic sugar
public Reference addIncomingReferralRequest() { //3
public Reference addIncomingReferral() { //3
Reference t = new Reference();
if (this.incomingReferralRequest == null)
this.incomingReferralRequest = new ArrayList<Reference>();
this.incomingReferralRequest.add(t);
if (this.incomingReferral == null)
this.incomingReferral = new ArrayList<Reference>();
this.incomingReferral.add(t);
return t;
}
// syntactic sugar
public Encounter addIncomingReferralRequest(Reference t) { //3
public Encounter addIncomingReferral(Reference t) { //3
if (t == null)
return this;
if (this.incomingReferralRequest == null)
this.incomingReferralRequest = new ArrayList<Reference>();
this.incomingReferralRequest.add(t);
if (this.incomingReferral == null)
this.incomingReferral = new ArrayList<Reference>();
this.incomingReferral.add(t);
return this;
}
/**
* @return {@link #incomingReferralRequest} (The actual objects that are the target of the reference. The reference library doesn't populate this, but you can use this to hold the resources if you resolvethemt. The referral request that this encounter satisfies (incoming referral).)
* @return {@link #incomingReferral} (The actual objects that are the target of the reference. The reference library doesn't populate this, but you can use this to hold the resources if you resolvethemt. The referral request that this encounter satisfies (incoming referral).)
*/
public List<ReferralRequest> getIncomingReferralRequestTarget() {
if (this.incomingReferralRequestTarget == null)
this.incomingReferralRequestTarget = new ArrayList<ReferralRequest>();
return this.incomingReferralRequestTarget;
public List<ReferralRequest> getIncomingReferralTarget() {
if (this.incomingReferralTarget == null)
this.incomingReferralTarget = new ArrayList<ReferralRequest>();
return this.incomingReferralTarget;
}
// syntactic sugar
/**
* @return {@link #incomingReferralRequest} (Add an actual object that is the target of the reference. The reference library doesn't use these, but you can use this to hold the resources if you resolvethemt. The referral request that this encounter satisfies (incoming referral).)
* @return {@link #incomingReferral} (Add an actual object that is the target of the reference. The reference library doesn't use these, but you can use this to hold the resources if you resolvethemt. The referral request that this encounter satisfies (incoming referral).)
*/
public ReferralRequest addIncomingReferralRequestTarget() {
public ReferralRequest addIncomingReferralTarget() {
ReferralRequest r = new ReferralRequest();
if (this.incomingReferralRequestTarget == null)
this.incomingReferralRequestTarget = new ArrayList<ReferralRequest>();
this.incomingReferralRequestTarget.add(r);
if (this.incomingReferralTarget == null)
this.incomingReferralTarget = new ArrayList<ReferralRequest>();
this.incomingReferralTarget.add(r);
return r;
}
/**
* @return {@link #participant} (The main practitioner responsible for providing the service.)
* @return {@link #participant} (The list of people responsible for providing the service.)
*/
public List<EncounterParticipantComponent> getParticipant() {
if (this.participant == null)
@ -2175,7 +2175,7 @@ public class Encounter extends DomainResource {
}
/**
* @return {@link #participant} (The main practitioner responsible for providing the service.)
* @return {@link #participant} (The list of people responsible for providing the service.)
*/
// syntactic sugar
public EncounterParticipantComponent addParticipant() { //3
@ -2197,46 +2197,46 @@ public class Encounter extends DomainResource {
}
/**
* @return {@link #fulfills} (The appointment that scheduled this encounter.)
* @return {@link #appointment} (The appointment that scheduled this encounter.)
*/
public Reference getFulfills() {
if (this.fulfills == null)
public Reference getAppointment() {
if (this.appointment == null)
if (Configuration.errorOnAutoCreate())
throw new Error("Attempt to auto-create Encounter.fulfills");
throw new Error("Attempt to auto-create Encounter.appointment");
else if (Configuration.doAutoCreate())
this.fulfills = new Reference(); // cc
return this.fulfills;
this.appointment = new Reference(); // cc
return this.appointment;
}
public boolean hasFulfills() {
return this.fulfills != null && !this.fulfills.isEmpty();
public boolean hasAppointment() {
return this.appointment != null && !this.appointment.isEmpty();
}
/**
* @param value {@link #fulfills} (The appointment that scheduled this encounter.)
* @param value {@link #appointment} (The appointment that scheduled this encounter.)
*/
public Encounter setFulfills(Reference value) {
this.fulfills = value;
public Encounter setAppointment(Reference value) {
this.appointment = value;
return this;
}
/**
* @return {@link #fulfills} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The appointment that scheduled this encounter.)
* @return {@link #appointment} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The appointment that scheduled this encounter.)
*/
public Appointment getFulfillsTarget() {
if (this.fulfillsTarget == null)
public Appointment getAppointmentTarget() {
if (this.appointmentTarget == null)
if (Configuration.errorOnAutoCreate())
throw new Error("Attempt to auto-create Encounter.fulfills");
throw new Error("Attempt to auto-create Encounter.appointment");
else if (Configuration.doAutoCreate())
this.fulfillsTarget = new Appointment(); // aa
return this.fulfillsTarget;
this.appointmentTarget = new Appointment(); // aa
return this.appointmentTarget;
}
/**
* @param value {@link #fulfills} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The appointment that scheduled this encounter.)
* @param value {@link #appointment} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The appointment that scheduled this encounter.)
*/
public Encounter setFulfillsTarget(Appointment value) {
this.fulfillsTarget = value;
public Encounter setAppointmentTarget(Appointment value) {
this.appointmentTarget = value;
return this;
}
@ -2562,9 +2562,9 @@ public class Encounter extends DomainResource {
childrenList.add(new Property("type", "CodeableConcept", "Specific type of encounter (e.g. e-mail consultation, surgical day-care, skilled nursing, rehabilitation).", 0, java.lang.Integer.MAX_VALUE, type));
childrenList.add(new Property("patient", "Reference(Patient)", "The patient present at the encounter.", 0, java.lang.Integer.MAX_VALUE, patient));
childrenList.add(new Property("episodeOfCare", "Reference(EpisodeOfCare)", "Where a specific encounter should be classified as a part of a specific episode(s) of care this field should be used. This association can facilitate grouping of related encounters together for a specific purpose, such as govt reporting, issue tracking, association via a common problem. The association is recorded on the encounter as these are typically created after the episode of care, and grouped on entry rather than editing the episode of care to append another encounter to it (the episode of care could span years).", 0, java.lang.Integer.MAX_VALUE, episodeOfCare));
childrenList.add(new Property("incomingReferralRequest", "Reference(ReferralRequest)", "The referral request that this encounter satisfies (incoming referral).", 0, java.lang.Integer.MAX_VALUE, incomingReferralRequest));
childrenList.add(new Property("participant", "", "The main practitioner responsible for providing the service.", 0, java.lang.Integer.MAX_VALUE, participant));
childrenList.add(new Property("fulfills", "Reference(Appointment)", "The appointment that scheduled this encounter.", 0, java.lang.Integer.MAX_VALUE, fulfills));
childrenList.add(new Property("incomingReferral", "Reference(ReferralRequest)", "The referral request that this encounter satisfies (incoming referral).", 0, java.lang.Integer.MAX_VALUE, incomingReferral));
childrenList.add(new Property("participant", "", "The list of people responsible for providing the service.", 0, java.lang.Integer.MAX_VALUE, participant));
childrenList.add(new Property("appointment", "Reference(Appointment)", "The appointment that scheduled this encounter.", 0, java.lang.Integer.MAX_VALUE, appointment));
childrenList.add(new Property("period", "Period", "The start and end time of the encounter.", 0, java.lang.Integer.MAX_VALUE, period));
childrenList.add(new Property("length", "Duration", "Quantity of time the encounter lasted. This excludes the time during leaves of absence.", 0, java.lang.Integer.MAX_VALUE, length));
childrenList.add(new Property("reason", "CodeableConcept", "Reason the encounter takes place, expressed as a code. For admissions, this can be used for a coded admission diagnosis.", 0, java.lang.Integer.MAX_VALUE, reason));
@ -2602,17 +2602,17 @@ public class Encounter extends DomainResource {
for (Reference i : episodeOfCare)
dst.episodeOfCare.add(i.copy());
};
if (incomingReferralRequest != null) {
dst.incomingReferralRequest = new ArrayList<Reference>();
for (Reference i : incomingReferralRequest)
dst.incomingReferralRequest.add(i.copy());
if (incomingReferral != null) {
dst.incomingReferral = new ArrayList<Reference>();
for (Reference i : incomingReferral)
dst.incomingReferral.add(i.copy());
};
if (participant != null) {
dst.participant = new ArrayList<EncounterParticipantComponent>();
for (EncounterParticipantComponent i : participant)
dst.participant.add(i.copy());
};
dst.fulfills = fulfills == null ? null : fulfills.copy();
dst.appointment = appointment == null ? null : appointment.copy();
dst.period = period == null ? null : period.copy();
dst.length = length == null ? null : length.copy();
if (reason != null) {
@ -2650,10 +2650,10 @@ public class Encounter extends DomainResource {
Encounter o = (Encounter) other;
return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(statusHistory, o.statusHistory, true)
&& compareDeep(class_, o.class_, true) && compareDeep(type, o.type, true) && compareDeep(patient, o.patient, true)
&& compareDeep(episodeOfCare, o.episodeOfCare, true) && compareDeep(incomingReferralRequest, o.incomingReferralRequest, true)
&& compareDeep(participant, o.participant, true) && compareDeep(fulfills, o.fulfills, true) && compareDeep(period, o.period, true)
&& compareDeep(length, o.length, true) && compareDeep(reason, o.reason, true) && compareDeep(indication, o.indication, true)
&& compareDeep(priority, o.priority, true) && compareDeep(hospitalization, o.hospitalization, true)
&& compareDeep(episodeOfCare, o.episodeOfCare, true) && compareDeep(incomingReferral, o.incomingReferral, true)
&& compareDeep(participant, o.participant, true) && compareDeep(appointment, o.appointment, true)
&& compareDeep(period, o.period, true) && compareDeep(length, o.length, true) && compareDeep(reason, o.reason, true)
&& compareDeep(indication, o.indication, true) && compareDeep(priority, o.priority, true) && compareDeep(hospitalization, o.hospitalization, true)
&& compareDeep(location, o.location, true) && compareDeep(serviceProvider, o.serviceProvider, true)
&& compareDeep(partOf, o.partOf, true);
}
@ -2672,12 +2672,12 @@ public class Encounter extends DomainResource {
return super.isEmpty() && (identifier == null || identifier.isEmpty()) && (status == null || status.isEmpty())
&& (statusHistory == null || statusHistory.isEmpty()) && (class_ == null || class_.isEmpty())
&& (type == null || type.isEmpty()) && (patient == null || patient.isEmpty()) && (episodeOfCare == null || episodeOfCare.isEmpty())
&& (incomingReferralRequest == null || incomingReferralRequest.isEmpty()) && (participant == null || participant.isEmpty())
&& (fulfills == null || fulfills.isEmpty()) && (period == null || period.isEmpty()) && (length == null || length.isEmpty())
&& (reason == null || reason.isEmpty()) && (indication == null || indication.isEmpty()) && (priority == null || priority.isEmpty())
&& (hospitalization == null || hospitalization.isEmpty()) && (location == null || location.isEmpty())
&& (serviceProvider == null || serviceProvider.isEmpty()) && (partOf == null || partOf.isEmpty())
;
&& (incomingReferral == null || incomingReferral.isEmpty()) && (participant == null || participant.isEmpty())
&& (appointment == null || appointment.isEmpty()) && (period == null || period.isEmpty())
&& (length == null || length.isEmpty()) && (reason == null || reason.isEmpty()) && (indication == null || indication.isEmpty())
&& (priority == null || priority.isEmpty()) && (hospitalization == null || hospitalization.isEmpty())
&& (location == null || location.isEmpty()) && (serviceProvider == null || serviceProvider.isEmpty())
&& (partOf == null || partOf.isEmpty());
}
@Override
@ -2695,12 +2695,14 @@ public class Encounter extends DomainResource {
public static final String SP_EPISODEOFCARE = "episodeofcare";
@SearchParamDefinition(name="participant-type", path="Encounter.participant.type", description="Role of participant in encounter", type="token" )
public static final String SP_PARTICIPANTTYPE = "participant-type";
@SearchParamDefinition(name="incomingreferral", path="Encounter.incomingReferralRequest", description="Incoming Referral Request", type="reference" )
@SearchParamDefinition(name="incomingreferral", path="Encounter.incomingReferral", description="The Referral that initiated this encounter", type="reference" )
public static final String SP_INCOMINGREFERRAL = "incomingreferral";
@SearchParamDefinition(name="practitioner", path="Encounter.participant.individual", description="Persons involved in the encounter other than the patient", type="reference" )
public static final String SP_PRACTITIONER = "practitioner";
@SearchParamDefinition(name="length", path="Encounter.length", description="Length of encounter in days", type="number" )
public static final String SP_LENGTH = "length";
@SearchParamDefinition(name="appointment", path="Encounter.appointment", description="The appointment that scheduled this encounter", type="reference" )
public static final String SP_APPOINTMENT = "appointment";
@SearchParamDefinition(name="part-of", path="Encounter.partOf", description="Another Encounter this encounter is part of", type="reference" )
public static final String SP_PARTOF = "part-of";
@SearchParamDefinition(name="type", path="Encounter.type", description="Specific type of encounter", type="token" )
@ -2709,8 +2711,6 @@ public class Encounter extends DomainResource {
public static final String SP_PARTICIPANT = "participant";
@SearchParamDefinition(name="patient", path="Encounter.patient", description="The patient present at the encounter", type="reference" )
public static final String SP_PATIENT = "patient";
@SearchParamDefinition(name="fulfills", path="Encounter.fulfills", description="The appointment that scheduled this encounter", type="reference" )
public static final String SP_FULFILLS = "fulfills";
@SearchParamDefinition(name="location-period", path="Encounter.location.period", description="Time period during which the patient was present at the location", type="date" )
public static final String SP_LOCATIONPERIOD = "location-period";
@SearchParamDefinition(name="location", path="Encounter.location.location", description="Location the encounter takes place", type="reference" )

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -49,35 +49,35 @@ public class EnrollmentRequest extends DomainResource {
/**
* The Response Business Identifier.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Business Identifier", formalDefinition="The Response Business Identifier." )
protected List<Identifier> identifier;
/**
* The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources.
*/
@Child(name = "ruleset", type = {Coding.class}, order=1, min=0, max=1)
@Child(name = "ruleset", type = {Coding.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Resource version", formalDefinition="The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources." )
protected Coding ruleset;
/**
* The style (standard) and version of the original material which was converted into this resource.
*/
@Child(name = "originalRuleset", type = {Coding.class}, order=2, min=0, max=1)
@Child(name = "originalRuleset", type = {Coding.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Original version", formalDefinition="The style (standard) and version of the original material which was converted into this resource." )
protected Coding originalRuleset;
/**
* The date when this resource was created.
*/
@Child(name = "created", type = {DateTimeType.class}, order=3, min=0, max=1)
@Child(name = "created", type = {DateTimeType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Creation date", formalDefinition="The date when this resource was created." )
protected DateTimeType created;
/**
* The Insurer who is target of the request.
*/
@Child(name = "target", type = {Organization.class}, order=4, min=0, max=1)
@Child(name = "target", type = {Organization.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Insurer", formalDefinition="The Insurer who is target of the request." )
protected Reference target;
@ -89,7 +89,7 @@ public class EnrollmentRequest extends DomainResource {
/**
* The practitioner who is responsible for the services rendered to the patient.
*/
@Child(name = "provider", type = {Practitioner.class}, order=5, min=0, max=1)
@Child(name = "provider", type = {Practitioner.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible practitioner", formalDefinition="The practitioner who is responsible for the services rendered to the patient." )
protected Reference provider;
@ -101,7 +101,7 @@ public class EnrollmentRequest extends DomainResource {
/**
* The organization which is responsible for the services rendered to the patient.
*/
@Child(name = "organization", type = {Organization.class}, order=6, min=0, max=1)
@Child(name = "organization", type = {Organization.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible organization", formalDefinition="The organization which is responsible for the services rendered to the patient." )
protected Reference organization;
@ -113,7 +113,7 @@ public class EnrollmentRequest extends DomainResource {
/**
* Patient Resource.
*/
@Child(name = "subject", type = {Patient.class}, order=7, min=1, max=1)
@Child(name = "subject", type = {Patient.class}, order=7, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="The subject of the Products and Services", formalDefinition="Patient Resource." )
protected Reference subject;
@ -125,7 +125,7 @@ public class EnrollmentRequest extends DomainResource {
/**
* Reference to the program or plan identification, underwriter or payor.
*/
@Child(name = "coverage", type = {Coverage.class}, order=8, min=1, max=1)
@Child(name = "coverage", type = {Coverage.class}, order=8, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Insurance information", formalDefinition="Reference to the program or plan identification, underwriter or payor." )
protected Reference coverage;
@ -137,7 +137,7 @@ public class EnrollmentRequest extends DomainResource {
/**
* The relationship of the patient to the subscriber.
*/
@Child(name = "relationship", type = {Coding.class}, order=9, min=1, max=1)
@Child(name = "relationship", type = {Coding.class}, order=9, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Patient relationship to subscriber", formalDefinition="The relationship of the patient to the subscriber." )
protected Coding relationship;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -50,14 +50,14 @@ public class EnrollmentResponse extends DomainResource {
/**
* The Response Business Identifier.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Business Identifier", formalDefinition="The Response Business Identifier." )
protected List<Identifier> identifier;
/**
* Original request resource reference.
*/
@Child(name = "request", type = {EnrollmentRequest.class}, order=1, min=0, max=1)
@Child(name = "request", type = {EnrollmentRequest.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Claim reference", formalDefinition="Original request resource reference." )
protected Reference request;
@ -69,42 +69,42 @@ public class EnrollmentResponse extends DomainResource {
/**
* Transaction status: error, complete.
*/
@Child(name = "outcome", type = {CodeType.class}, order=2, min=0, max=1)
@Child(name = "outcome", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="complete | error", formalDefinition="Transaction status: error, complete." )
protected Enumeration<RemittanceOutcome> outcome;
/**
* A description of the status of the adjudication.
*/
@Child(name = "disposition", type = {StringType.class}, order=3, min=0, max=1)
@Child(name = "disposition", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Disposition Message", formalDefinition="A description of the status of the adjudication." )
protected StringType disposition;
/**
* The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources.
*/
@Child(name = "ruleset", type = {Coding.class}, order=4, min=0, max=1)
@Child(name = "ruleset", type = {Coding.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Resource version", formalDefinition="The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources." )
protected Coding ruleset;
/**
* The style (standard) and version of the original material which was converted into this resource.
*/
@Child(name = "originalRuleset", type = {Coding.class}, order=5, min=0, max=1)
@Child(name = "originalRuleset", type = {Coding.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Original version", formalDefinition="The style (standard) and version of the original material which was converted into this resource." )
protected Coding originalRuleset;
/**
* The date when the enclosed suite of services were performed or completed.
*/
@Child(name = "created", type = {DateTimeType.class}, order=6, min=0, max=1)
@Child(name = "created", type = {DateTimeType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Creation date", formalDefinition="The date when the enclosed suite of services were performed or completed." )
protected DateTimeType created;
/**
* The Insurer who produced this adjudicated response.
*/
@Child(name = "organization", type = {Organization.class}, order=7, min=0, max=1)
@Child(name = "organization", type = {Organization.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Insurer", formalDefinition="The Insurer who produced this adjudicated response." )
protected Reference organization;
@ -116,7 +116,7 @@ public class EnrollmentResponse extends DomainResource {
/**
* The practitioner who is responsible for the services rendered to the patient.
*/
@Child(name = "requestProvider", type = {Practitioner.class}, order=8, min=0, max=1)
@Child(name = "requestProvider", type = {Practitioner.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible practitioner", formalDefinition="The practitioner who is responsible for the services rendered to the patient." )
protected Reference requestProvider;
@ -128,7 +128,7 @@ public class EnrollmentResponse extends DomainResource {
/**
* The organization which is responsible for the services rendered to the patient.
*/
@Child(name = "requestOrganization", type = {Organization.class}, order=9, min=0, max=1)
@Child(name = "requestOrganization", type = {Organization.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible organization", formalDefinition="The organization which is responsible for the services rendered to the patient." )
protected Reference requestOrganization;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import org.hl7.fhir.instance.model.api.*;
@ -1317,7 +1317,7 @@ public class Enumerations {
case NUMBER: return "Search parameter SHALL be a number (a whole number, or a decimal)";
case DATE: return "Search parameter is on a date/time. The date format is the standard XML format, though other formats may be supported";
case STRING: return "Search parameter is a simple string, like a name part. Search is case-insensitive and accent-insensitive. May match just the start of a string. String parameters may contain spaces";
case TOKEN: return "Search parameter on a coded element or identifier. May be used to search through the text, displayname, code and code/codesystem (for codes) and label, system and key (for identifier). Its value is either a string or a pair of namespace and value, separated by a '|', depending on the modifier used";
case TOKEN: return "Search parameter on a coded element or identifier. May be used to search through the text, displayname, code and code/codesystem (for codes) and label, system and key (for identifier). Its value is either a string or a pair of namespace and value, separated by a \"|\", depending on the modifier used";
case REFERENCE: return "A reference to another resource";
case COMPOSITE: return "A composite search parameter that combines a search on two values together";
case QUANTITY: return "A search parameter that searches on a quantity";

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -120,7 +120,7 @@ public class EpisodeOfCare extends DomainResource {
case WAITLIST: return "This episode has been placed on a waitlist, pending the episode being made active (or cancelled)";
case ACTIVE: return "This episode of care is current";
case ONHOLD: return "This episode of care is on hold, the organization has limited responsibility for the patient (such as while on respite)";
case FINISHED: return "This episode of care is finished at the organization is not expecting to be providing care to the patient. Can also be known as 'closed', 'completed' or other similar terms";
case FINISHED: return "This episode of care is finished at the organization is not expecting to be providing care to the patient. Can also be known as \"closed\", \"completed\" or other similar terms";
case CANCELLED: return "The episode of care was cancelled, or withdrawn from service, often selected during the planned stage as the patient may have gone elsewhere, or the circumstances have changed and the organization is unable to provide the care. It indicates that services terminated outside the planned/expected workflow";
default: return "?";
}
@ -179,14 +179,14 @@ public class EpisodeOfCare extends DomainResource {
/**
* planned | waitlist | active | onhold | finished | cancelled.
*/
@Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="planned | waitlist | active | onhold | finished | cancelled", formalDefinition="planned | waitlist | active | onhold | finished | cancelled." )
protected Enumeration<EpisodeOfCareStatus> status;
/**
* The period during this EpisodeOfCare that the specific status applied.
*/
@Child(name = "period", type = {Period.class}, order=2, min=1, max=1)
@Child(name = "period", type = {Period.class}, order=2, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="The period during this EpisodeOfCare that the specific status applied", formalDefinition="The period during this EpisodeOfCare that the specific status applied." )
protected Period period;
@ -320,10 +320,24 @@ public class EpisodeOfCare extends DomainResource {
@Block()
public static class EpisodeOfCareCareTeamComponent extends BackboneElement implements IBaseBackboneElement {
/**
* The role that this team member is taking within this episode of care.
*/
@Child(name = "role", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="The role that this team member is taking within this episode of care", formalDefinition="The role that this team member is taking within this episode of care." )
protected List<CodeableConcept> role;
/**
* The period of time that this practitioner is performing some role within the episode of care.
*/
@Child(name = "period", type = {Period.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="The period of time that this practitioner is performing some role within the episode of care", formalDefinition="The period of time that this practitioner is performing some role within the episode of care." )
protected Period period;
/**
* The practitioner (or Organization) within the team.
*/
@Child(name = "member", type = {Practitioner.class, Organization.class}, order=1, min=0, max=1)
@Child(name = "member", type = {Practitioner.class, Organization.class}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="The practitioner (or Organization) within the team", formalDefinition="The practitioner (or Organization) within the team." )
protected Reference member;
@ -332,21 +346,7 @@ public class EpisodeOfCare extends DomainResource {
*/
protected Resource memberTarget;
/**
* The role that this team member is taking within this episode of care.
*/
@Child(name = "role", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Description(shortDefinition="The role that this team member is taking within this episode of care", formalDefinition="The role that this team member is taking within this episode of care." )
protected List<CodeableConcept> role;
/**
* The period of time that this practitioner is performing some role within the episode of care.
*/
@Child(name = "period", type = {Period.class}, order=3, min=0, max=1)
@Description(shortDefinition="The period of time that this practitioner is performing some role within the episode of care", formalDefinition="The period of time that this practitioner is performing some role within the episode of care." )
protected Period period;
private static final long serialVersionUID = -2134086895L;
private static final long serialVersionUID = -437303089L;
/*
* Constructor
@ -355,45 +355,6 @@ public class EpisodeOfCare extends DomainResource {
super();
}
/**
* @return {@link #member} (The practitioner (or Organization) within the team.)
*/
public Reference getMember() {
if (this.member == null)
if (Configuration.errorOnAutoCreate())
throw new Error("Attempt to auto-create EpisodeOfCareCareTeamComponent.member");
else if (Configuration.doAutoCreate())
this.member = new Reference(); // cc
return this.member;
}
public boolean hasMember() {
return this.member != null && !this.member.isEmpty();
}
/**
* @param value {@link #member} (The practitioner (or Organization) within the team.)
*/
public EpisodeOfCareCareTeamComponent setMember(Reference value) {
this.member = value;
return this;
}
/**
* @return {@link #member} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The practitioner (or Organization) within the team.)
*/
public Resource getMemberTarget() {
return this.memberTarget;
}
/**
* @param value {@link #member} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The practitioner (or Organization) within the team.)
*/
public EpisodeOfCareCareTeamComponent setMemberTarget(Resource value) {
this.memberTarget = value;
return this;
}
/**
* @return {@link #role} (The role that this team member is taking within this episode of care.)
*/
@ -458,23 +419,62 @@ public class EpisodeOfCare extends DomainResource {
return this;
}
/**
* @return {@link #member} (The practitioner (or Organization) within the team.)
*/
public Reference getMember() {
if (this.member == null)
if (Configuration.errorOnAutoCreate())
throw new Error("Attempt to auto-create EpisodeOfCareCareTeamComponent.member");
else if (Configuration.doAutoCreate())
this.member = new Reference(); // cc
return this.member;
}
public boolean hasMember() {
return this.member != null && !this.member.isEmpty();
}
/**
* @param value {@link #member} (The practitioner (or Organization) within the team.)
*/
public EpisodeOfCareCareTeamComponent setMember(Reference value) {
this.member = value;
return this;
}
/**
* @return {@link #member} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The practitioner (or Organization) within the team.)
*/
public Resource getMemberTarget() {
return this.memberTarget;
}
/**
* @param value {@link #member} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The practitioner (or Organization) within the team.)
*/
public EpisodeOfCareCareTeamComponent setMemberTarget(Resource value) {
this.memberTarget = value;
return this;
}
protected void listChildren(List<Property> childrenList) {
super.listChildren(childrenList);
childrenList.add(new Property("member", "Reference(Practitioner|Organization)", "The practitioner (or Organization) within the team.", 0, java.lang.Integer.MAX_VALUE, member));
childrenList.add(new Property("role", "CodeableConcept", "The role that this team member is taking within this episode of care.", 0, java.lang.Integer.MAX_VALUE, role));
childrenList.add(new Property("period", "Period", "The period of time that this practitioner is performing some role within the episode of care.", 0, java.lang.Integer.MAX_VALUE, period));
childrenList.add(new Property("member", "Reference(Practitioner|Organization)", "The practitioner (or Organization) within the team.", 0, java.lang.Integer.MAX_VALUE, member));
}
public EpisodeOfCareCareTeamComponent copy() {
EpisodeOfCareCareTeamComponent dst = new EpisodeOfCareCareTeamComponent();
copyValues(dst);
dst.member = member == null ? null : member.copy();
if (role != null) {
dst.role = new ArrayList<CodeableConcept>();
for (CodeableConcept i : role)
dst.role.add(i.copy());
};
dst.period = period == null ? null : period.copy();
dst.member = member == null ? null : member.copy();
return dst;
}
@ -485,7 +485,7 @@ public class EpisodeOfCare extends DomainResource {
if (!(other instanceof EpisodeOfCareCareTeamComponent))
return false;
EpisodeOfCareCareTeamComponent o = (EpisodeOfCareCareTeamComponent) other;
return compareDeep(member, o.member, true) && compareDeep(role, o.role, true) && compareDeep(period, o.period, true)
return compareDeep(role, o.role, true) && compareDeep(period, o.period, true) && compareDeep(member, o.member, true)
;
}
@ -500,8 +500,8 @@ public class EpisodeOfCare extends DomainResource {
}
public boolean isEmpty() {
return super.isEmpty() && (member == null || member.isEmpty()) && (role == null || role.isEmpty())
&& (period == null || period.isEmpty());
return super.isEmpty() && (role == null || role.isEmpty()) && (period == null || period.isEmpty())
&& (member == null || member.isEmpty());
}
}
@ -509,35 +509,35 @@ public class EpisodeOfCare extends DomainResource {
/**
* Identifier(s) by which this EpisodeOfCare is known.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Identifier(s) by which this EpisodeOfCare is known", formalDefinition="Identifier(s) by which this EpisodeOfCare is known." )
protected List<Identifier> identifier;
/**
* planned | waitlist | active | onhold | finished | cancelled.
*/
@Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="planned | waitlist | active | onhold | finished | cancelled", formalDefinition="planned | waitlist | active | onhold | finished | cancelled." )
protected Enumeration<EpisodeOfCareStatus> status;
/**
* The status history for the EpisodeOfCare.
*/
@Child(name = "statusHistory", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "statusHistory", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="The status history for the EpisodeOfCare", formalDefinition="The status history for the EpisodeOfCare." )
protected List<EpisodeOfCareStatusHistoryComponent> statusHistory;
/**
* The type can be very important in processing as this could be used in determining if the EpisodeOfCare is relevant to specific government reporting, or other types of classifications.
*/
@Child(name = "type", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "type", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Specific type of EpisodeOfCare", formalDefinition="The type can be very important in processing as this could be used in determining if the EpisodeOfCare is relevant to specific government reporting, or other types of classifications." )
protected List<CodeableConcept> type;
/**
* The patient that this EpisodeOfCare applies to.
*/
@Child(name = "patient", type = {Patient.class}, order=4, min=1, max=1)
@Child(name = "patient", type = {Patient.class}, order=4, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="The patient that this EpisodeOfCare applies to", formalDefinition="The patient that this EpisodeOfCare applies to." )
protected Reference patient;
@ -549,7 +549,7 @@ public class EpisodeOfCare extends DomainResource {
/**
* The organization that has assumed the specific responsibilities for the specified duration.
*/
@Child(name = "managingOrganization", type = {Organization.class}, order=5, min=0, max=1)
@Child(name = "managingOrganization", type = {Organization.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The organization that has assumed the specific responsibilities for the specified duration", formalDefinition="The organization that has assumed the specific responsibilities for the specified duration." )
protected Reference managingOrganization;
@ -561,14 +561,14 @@ public class EpisodeOfCare extends DomainResource {
/**
* The interval during which the managing organization assumes the defined responsibility.
*/
@Child(name = "period", type = {Period.class}, order=6, min=0, max=1)
@Child(name = "period", type = {Period.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The interval during which the managing organization assumes the defined responsibility", formalDefinition="The interval during which the managing organization assumes the defined responsibility." )
protected Period period;
/**
* A list of conditions/problems/diagnoses that this episode of care is intended to be providing care for.
*/
@Child(name = "condition", type = {Condition.class}, order=7, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "condition", type = {Condition.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="A list of conditions/problems/diagnoses that this episode of care is intended to be providing care for", formalDefinition="A list of conditions/problems/diagnoses that this episode of care is intended to be providing care for." )
protected List<Reference> condition;
/**
@ -580,7 +580,7 @@ public class EpisodeOfCare extends DomainResource {
/**
* Referral Request(s) that are fulfilled by this EpisodeOfCare, incoming referrals.
*/
@Child(name = "referralRequest", type = {ReferralRequest.class}, order=8, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "referralRequest", type = {ReferralRequest.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Referral Request(s) that this EpisodeOfCare manages activities within", formalDefinition="Referral Request(s) that are fulfilled by this EpisodeOfCare, incoming referrals." )
protected List<Reference> referralRequest;
/**
@ -592,7 +592,7 @@ public class EpisodeOfCare extends DomainResource {
/**
* The practitioner that is the care manager/care co-ordinator for this patient.
*/
@Child(name = "careManager", type = {Practitioner.class}, order=9, min=0, max=1)
@Child(name = "careManager", type = {Practitioner.class}, order=9, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="The practitioner that is the care manager/care co-ordinator for this patient", formalDefinition="The practitioner that is the care manager/care co-ordinator for this patient." )
protected Reference careManager;
@ -604,7 +604,7 @@ public class EpisodeOfCare extends DomainResource {
/**
* The list of practitioners that may be facilitating this episode of care for specific purposes.
*/
@Child(name = "careTeam", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "careTeam", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="The list of practitioners that may be facilitating this episode of care for specific purposes", formalDefinition="The list of practitioners that may be facilitating this episode of care for specific purposes." )
protected List<EpisodeOfCareCareTeamComponent> careTeam;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -50,14 +50,14 @@ public class ExplanationOfBenefit extends DomainResource {
/**
* The Response Business Identifier.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Business Identifier", formalDefinition="The Response Business Identifier." )
protected List<Identifier> identifier;
/**
* Original request resource reference.
*/
@Child(name = "request", type = {Claim.class}, order=1, min=0, max=1)
@Child(name = "request", type = {Claim.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Claim reference", formalDefinition="Original request resource reference." )
protected Reference request;
@ -69,42 +69,42 @@ public class ExplanationOfBenefit extends DomainResource {
/**
* Transaction status: error, complete.
*/
@Child(name = "outcome", type = {CodeType.class}, order=2, min=0, max=1)
@Child(name = "outcome", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="complete | error", formalDefinition="Transaction status: error, complete." )
protected Enumeration<RemittanceOutcome> outcome;
/**
* A description of the status of the adjudication.
*/
@Child(name = "disposition", type = {StringType.class}, order=3, min=0, max=1)
@Child(name = "disposition", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Disposition Message", formalDefinition="A description of the status of the adjudication." )
protected StringType disposition;
/**
* The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources.
*/
@Child(name = "ruleset", type = {Coding.class}, order=4, min=0, max=1)
@Child(name = "ruleset", type = {Coding.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Resource version", formalDefinition="The version of the style of resource contents. This should be mapped to the allowable profiles for this and supporting resources." )
protected Coding ruleset;
/**
* The style (standard) and version of the original material which was converted into this resource.
*/
@Child(name = "originalRuleset", type = {Coding.class}, order=5, min=0, max=1)
@Child(name = "originalRuleset", type = {Coding.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Original version", formalDefinition="The style (standard) and version of the original material which was converted into this resource." )
protected Coding originalRuleset;
/**
* The date when the enclosed suite of services were performed or completed.
*/
@Child(name = "created", type = {DateTimeType.class}, order=6, min=0, max=1)
@Child(name = "created", type = {DateTimeType.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Creation date", formalDefinition="The date when the enclosed suite of services were performed or completed." )
protected DateTimeType created;
/**
* The Insurer who produced this adjudicated response.
*/
@Child(name = "organization", type = {Organization.class}, order=7, min=0, max=1)
@Child(name = "organization", type = {Organization.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Insurer", formalDefinition="The Insurer who produced this adjudicated response." )
protected Reference organization;
@ -116,7 +116,7 @@ public class ExplanationOfBenefit extends DomainResource {
/**
* The practitioner who is responsible for the services rendered to the patient.
*/
@Child(name = "requestProvider", type = {Practitioner.class}, order=8, min=0, max=1)
@Child(name = "requestProvider", type = {Practitioner.class}, order=8, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible practitioner", formalDefinition="The practitioner who is responsible for the services rendered to the patient." )
protected Reference requestProvider;
@ -128,7 +128,7 @@ public class ExplanationOfBenefit extends DomainResource {
/**
* The organization which is responsible for the services rendered to the patient.
*/
@Child(name = "requestOrganization", type = {Organization.class}, order=9, min=0, max=1)
@Child(name = "requestOrganization", type = {Organization.class}, order=9, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Responsible organization", formalDefinition="The organization which is responsible for the services rendered to the patient." )
protected Reference requestOrganization;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -48,14 +48,14 @@ public class Extension extends BaseExtension implements IBaseExtension<Extension
/**
* Source of the definition for the extension code - a logical name or a URL.
*/
@Child(name = "url", type = {UriType.class}, order=0, min=1, max=1)
@Child(name = "url", type = {UriType.class}, order=0, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="identifies the meaning of the extension", formalDefinition="Source of the definition for the extension code - a logical name or a URL." )
protected UriType url;
/**
* Value of extension - may be a resource or one of a constrained set of the data types (see Extensibility in the spec for list).
*/
@Child(name = "value", type = {}, order=1, min=0, max=1)
@Child(name = "value", type = {}, order=1, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Value of extension", formalDefinition="Value of extension - may be a resource or one of a constrained set of the data types (see Extensibility in the spec for list)." )
protected org.hl7.fhir.instance.model.Type value;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -52,28 +52,28 @@ public class FamilyMemberHistory extends DomainResource {
/**
* The actual condition specified. Could be a coded condition (like MI or Diabetes) or a less specific string like 'cancer' depending on how much is known about the condition and the capabilities of the creating system.
*/
@Child(name = "type", type = {CodeableConcept.class}, order=1, min=1, max=1)
@Child(name = "type", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Condition suffered by relation", formalDefinition="The actual condition specified. Could be a coded condition (like MI or Diabetes) or a less specific string like 'cancer' depending on how much is known about the condition and the capabilities of the creating system." )
protected CodeableConcept type;
/**
* Indicates what happened as a result of this condition. If the condition resulted in death, deceased date is captured on the relation.
*/
@Child(name = "outcome", type = {CodeableConcept.class}, order=2, min=0, max=1)
@Child(name = "outcome", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="deceased | permanent disability | etc.", formalDefinition="Indicates what happened as a result of this condition. If the condition resulted in death, deceased date is captured on the relation." )
protected CodeableConcept outcome;
/**
* Either the age of onset, range of approximate age or descriptive string can be recorded. For conditions with multiple occurrences, this describes the first known occurrence.
*/
@Child(name = "onset", type = {Age.class, Range.class, StringType.class}, order=3, min=0, max=1)
@Child(name = "onset", type = {Age.class, Range.class, StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="When condition first manifested", formalDefinition="Either the age of onset, range of approximate age or descriptive string can be recorded. For conditions with multiple occurrences, this describes the first known occurrence." )
protected Type onset;
/**
* An area where general notes can be placed about this specific condition.
*/
@Child(name = "note", type = {StringType.class}, order=4, min=0, max=1)
@Child(name = "note", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Extra information about condition", formalDefinition="An area where general notes can be placed about this specific condition." )
protected StringType note;
@ -298,14 +298,14 @@ public class FamilyMemberHistory extends DomainResource {
/**
* This records identifiers associated with this family member history record that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="External Id(s) for this record", formalDefinition="This records identifiers associated with this family member history record that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)." )
protected List<Identifier> identifier;
/**
* The person who this history concerns.
*/
@Child(name = "patient", type = {Patient.class}, order=1, min=1, max=1)
@Child(name = "patient", type = {Patient.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Patient history is about", formalDefinition="The person who this history concerns." )
protected Reference patient;
@ -317,63 +317,63 @@ public class FamilyMemberHistory extends DomainResource {
/**
* The date (and possibly time) when the family member history was taken.
*/
@Child(name = "date", type = {DateTimeType.class}, order=2, min=0, max=1)
@Child(name = "date", type = {DateTimeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When history was captured/updated", formalDefinition="The date (and possibly time) when the family member history was taken." )
protected DateTimeType date;
/**
* This will either be a name or a description. E.g. "Aunt Susan", "my cousin with the red hair".
*/
@Child(name = "name", type = {StringType.class}, order=3, min=0, max=1)
@Description(shortDefinition="The family member described", formalDefinition="This will either be a name or a description. E.g. 'Aunt Susan', 'my cousin with the red hair'." )
@Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The family member described", formalDefinition="This will either be a name or a description. E.g. \"Aunt Susan\", \"my cousin with the red hair\"." )
protected StringType name;
/**
* The type of relationship this person has to the patient (father, mother, brother etc.).
*/
@Child(name = "relationship", type = {CodeableConcept.class}, order=4, min=1, max=1)
@Child(name = "relationship", type = {CodeableConcept.class}, order=4, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Relationship to the subject", formalDefinition="The type of relationship this person has to the patient (father, mother, brother etc.)." )
protected CodeableConcept relationship;
/**
* Administrative Gender - the gender that the relative is considered to have for administration and record keeping purposes.
*/
@Child(name = "gender", type = {CodeType.class}, order=5, min=0, max=1)
@Child(name = "gender", type = {CodeType.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="male | female | other | unknown", formalDefinition="Administrative Gender - the gender that the relative is considered to have for administration and record keeping purposes." )
protected Enumeration<AdministrativeGender> gender;
/**
* The actual or approximate date of birth of the relative.
*/
@Child(name = "born", type = {Period.class, DateType.class, StringType.class}, order=6, min=0, max=1)
@Child(name = "born", type = {Period.class, DateType.class, StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="(approximate) date of birth", formalDefinition="The actual or approximate date of birth of the relative." )
protected Type born;
/**
* The actual or approximate age of the relative at the time the family member history is recorded.
*/
@Child(name = "age", type = {Age.class, Range.class, StringType.class}, order=7, min=0, max=1)
@Child(name = "age", type = {Age.class, Range.class, StringType.class}, order=7, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="(approximate) age", formalDefinition="The actual or approximate age of the relative at the time the family member history is recorded." )
protected Type age;
/**
* The actual or approximate age of the relative at the time the family member history is recorded.
*/
@Child(name = "deceased", type = {BooleanType.class, Age.class, Range.class, DateType.class, StringType.class}, order=8, min=0, max=1)
@Child(name = "deceased", type = {BooleanType.class, Age.class, Range.class, DateType.class, StringType.class}, order=8, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Dead? How old/when?", formalDefinition="The actual or approximate age of the relative at the time the family member history is recorded." )
protected Type deceased;
/**
* This property allows a non condition-specific note to the made about the related person. Ideally, the note would be in the condition property, but this is not always possible.
*/
@Child(name = "note", type = {StringType.class}, order=9, min=0, max=1)
@Child(name = "note", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="General note about related person", formalDefinition="This property allows a non condition-specific note to the made about the related person. Ideally, the note would be in the condition property, but this is not always possible." )
protected StringType note;
/**
* The significant Conditions (or condition) that the family member had. This is a repeating section to allow a system to represent more than one condition per resource, though there is nothing stopping multiple resources - one per condition.
*/
@Child(name = "condition", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "condition", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Condition that the related person had", formalDefinition="The significant Conditions (or condition) that the family member had. This is a repeating section to allow a system to represent more than one condition per resource, though there is nothing stopping multiple resources - one per condition." )
protected List<FamilyMemberHistoryConditionComponent> condition;
@ -944,7 +944,7 @@ public class FamilyMemberHistory extends DomainResource {
childrenList.add(new Property("identifier", "Identifier", "This records identifiers associated with this family member history record that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).", 0, java.lang.Integer.MAX_VALUE, identifier));
childrenList.add(new Property("patient", "Reference(Patient)", "The person who this history concerns.", 0, java.lang.Integer.MAX_VALUE, patient));
childrenList.add(new Property("date", "dateTime", "The date (and possibly time) when the family member history was taken.", 0, java.lang.Integer.MAX_VALUE, date));
childrenList.add(new Property("name", "string", "This will either be a name or a description. E.g. 'Aunt Susan', 'my cousin with the red hair'.", 0, java.lang.Integer.MAX_VALUE, name));
childrenList.add(new Property("name", "string", "This will either be a name or a description. E.g. \"Aunt Susan\", \"my cousin with the red hair\".", 0, java.lang.Integer.MAX_VALUE, name));
childrenList.add(new Property("relationship", "CodeableConcept", "The type of relationship this person has to the patient (father, mother, brother etc.).", 0, java.lang.Integer.MAX_VALUE, relationship));
childrenList.add(new Property("gender", "code", "Administrative Gender - the gender that the relative is considered to have for administration and record keeping purposes.", 0, java.lang.Integer.MAX_VALUE, gender));
childrenList.add(new Property("born[x]", "Period|date|string", "The actual or approximate date of birth of the relative.", 0, java.lang.Integer.MAX_VALUE, born));

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -135,35 +135,35 @@ public class Flag extends DomainResource {
/**
* Identifier assigned to the flag for external use (outside the FHIR environment).
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Business identifier", formalDefinition="Identifier assigned to the flag for external use (outside the FHIR environment)." )
protected List<Identifier> identifier;
/**
* Allows an flag to be divided into different categories like clinical, administrative etc.
*/
@Child(name = "category", type = {CodeableConcept.class}, order=1, min=0, max=1)
@Child(name = "category", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Clinical, administrative, etc.", formalDefinition="Allows an flag to be divided into different categories like clinical, administrative etc." )
protected CodeableConcept category;
/**
* Supports basic workflow.
*/
@Child(name = "status", type = {CodeType.class}, order=2, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=2, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="active | inactive | entered-in-error", formalDefinition="Supports basic workflow." )
protected Enumeration<FlagStatus> status;
/**
* The period of time from the activation of the flag to inactivation of the flag. If the flag is active, the end of the period should be unspecified.
*/
@Child(name = "period", type = {Period.class}, order=3, min=0, max=1)
@Child(name = "period", type = {Period.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Time period when flag is active", formalDefinition="The period of time from the activation of the flag to inactivation of the flag. If the flag is active, the end of the period should be unspecified." )
protected Period period;
/**
* The patient, location, group , organization , or practitioner this is about record this flag is associated with.
*/
@Child(name = "subject", type = {Patient.class, Location.class, Group.class, Organization.class, Practitioner.class}, order=4, min=1, max=1)
@Child(name = "subject", type = {Patient.class, Location.class, Group.class, Organization.class, Practitioner.class}, order=4, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Who/What is flag about?", formalDefinition="The patient, location, group , organization , or practitioner this is about record this flag is associated with." )
protected Reference subject;
@ -175,7 +175,7 @@ public class Flag extends DomainResource {
/**
* This alert is only relevant during the encounter.
*/
@Child(name = "encounter", type = {Encounter.class}, order=5, min=0, max=1)
@Child(name = "encounter", type = {Encounter.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Alert relevant during encounter", formalDefinition="This alert is only relevant during the encounter." )
protected Reference encounter;
@ -187,7 +187,7 @@ public class Flag extends DomainResource {
/**
* The person or device that created the flag.
*/
@Child(name = "author", type = {Practitioner.class, Patient.class, Device.class}, order=6, min=0, max=1)
@Child(name = "author", type = {Practitioner.class, Patient.class, Device.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Flag creator", formalDefinition="The person or device that created the flag." )
protected Reference author;
@ -199,7 +199,7 @@ public class Flag extends DomainResource {
/**
* The coded value or textual component of the flag to display to the user.
*/
@Child(name = "code", type = {CodeableConcept.class}, order=7, min=1, max=1)
@Child(name = "code", type = {CodeableConcept.class}, order=7, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Partially deaf, Requires easy open caps, No permanent address, etc.", formalDefinition="The coded value or textual component of the flag to display to the user." )
protected CodeableConcept code;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -207,7 +207,7 @@ public class Goal extends DomainResource {
/**
* Details of what's changed (or not changed).
*/
@Child(name = "result", type = {CodeableConcept.class, Observation.class}, order=1, min=0, max=1)
@Child(name = "result", type = {CodeableConcept.class, Observation.class}, order=1, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Code or observation that resulted from gual", formalDefinition="Details of what's changed (or not changed)." )
protected Type result;
@ -306,14 +306,14 @@ public class Goal extends DomainResource {
/**
* This records identifiers associated with this care plan that are defined by business processed and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="External Ids for this goal", formalDefinition="This records identifiers associated with this care plan that are defined by business processed and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)." )
protected List<Identifier> identifier;
/**
* Identifies the patient/subject whose intended care is described by the plan.
*/
@Child(name = "patient", type = {Patient.class}, order=1, min=0, max=1)
@Child(name = "patient", type = {Patient.class}, order=1, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="The patient for whom this goal is intended for", formalDefinition="Identifies the patient/subject whose intended care is described by the plan." )
protected Reference patient;
@ -325,35 +325,35 @@ public class Goal extends DomainResource {
/**
* Indicates when the goal is intended to be reached.
*/
@Child(name = "targetDate", type = {DateType.class}, order=2, min=0, max=1)
@Child(name = "targetDate", type = {DateType.class}, order=2, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Reach goal on or before", formalDefinition="Indicates when the goal is intended to be reached." )
protected DateType targetDate;
/**
* Human-readable description of a specific desired objective of care.
*/
@Child(name = "description", type = {StringType.class}, order=3, min=1, max=1)
@Child(name = "description", type = {StringType.class}, order=3, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="What's the desired outcome?", formalDefinition="Human-readable description of a specific desired objective of care." )
protected StringType description;
/**
* Indicates whether the goal has been reached and is still considered relevant.
*/
@Child(name = "status", type = {CodeType.class}, order=4, min=1, max=1)
@Child(name = "status", type = {CodeType.class}, order=4, min=1, max=1, modifier=true, summary=true)
@Description(shortDefinition="proposed | planned | in-progress | achieved | sustaining | cancelled | accepted | rejected", formalDefinition="Indicates whether the goal has been reached and is still considered relevant." )
protected Enumeration<GoalStatus> status;
/**
* Identifies when the current status. I.e. When initially created, when achieved, when cancelled, etc.
*/
@Child(name = "statusDate", type = {DateType.class}, order=5, min=0, max=1)
@Child(name = "statusDate", type = {DateType.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="When goal status took effect", formalDefinition="Identifies when the current status. I.e. When initially created, when achieved, when cancelled, etc." )
protected DateType statusDate;
/**
* Indicates whose goal this is - patient goal, practitioner goal, etc.
*/
@Child(name = "author", type = {Patient.class, Practitioner.class, RelatedPerson.class}, order=6, min=0, max=1)
@Child(name = "author", type = {Patient.class, Practitioner.class, RelatedPerson.class}, order=6, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Who's responsible for creating Goal?", formalDefinition="Indicates whose goal this is - patient goal, practitioner goal, etc." )
protected Reference author;
@ -365,14 +365,14 @@ public class Goal extends DomainResource {
/**
* Identifies the level of importance associated with reaching/sustaining the goal.
*/
@Child(name = "priority", type = {CodeableConcept.class}, order=7, min=0, max=1)
@Child(name = "priority", type = {CodeableConcept.class}, order=7, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="high | medium |low", formalDefinition="Identifies the level of importance associated with reaching/sustaining the goal." )
protected CodeableConcept priority;
/**
* The identified conditions and other health record elements that are intended to be addressed by the goal.
*/
@Child(name = "concern", type = {Condition.class, Observation.class, MedicationStatement.class, NutritionOrder.class, ProcedureRequest.class, RiskAssessment.class}, order=8, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "concern", type = {Condition.class, Observation.class, MedicationStatement.class, NutritionOrder.class, ProcedureRequest.class, RiskAssessment.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Health issues this goal addresses", formalDefinition="The identified conditions and other health record elements that are intended to be addressed by the goal." )
protected List<Reference> concern;
/**
@ -384,14 +384,14 @@ public class Goal extends DomainResource {
/**
* Any comments related to the goal.
*/
@Child(name = "notes", type = {StringType.class}, order=9, min=0, max=1)
@Child(name = "notes", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Comments about the goal", formalDefinition="Any comments related to the goal." )
protected StringType notes;
/**
* Identifies the change (or lack of change) at the point where the goal was deepmed to be cancelled or achieved.
*/
@Child(name = "outcome", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "outcome", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="What was end result of goal?", formalDefinition="Identifies the change (or lack of change) at the point where the goal was deepmed to be cancelled or achieved." )
protected List<GoalOutcomeComponent> outcome;

View File

@ -29,7 +29,7 @@ package org.hl7.fhir.instance.model;
*/
// Generated on Thu, Aug 13, 2015 16:43-0400 for FHIR v0.5.0
// Generated on Sat, Aug 22, 2015 23:00-0400 for FHIR v0.5.0
import java.util.*;
@ -116,8 +116,8 @@ public class Group extends DomainResource {
}
public String getDefinition() {
switch (this) {
case PERSON: return "Group contains 'person' Patient resources";
case ANIMAL: return "Group contains 'animal' Patient resources";
case PERSON: return "Group contains \"person\" Patient resources";
case ANIMAL: return "Group contains \"animal\" Patient resources";
case PRACTITIONER: return "Group contains healthcare practitioner resources";
case DEVICE: return "Group contains Device resources";
case MEDICATION: return "Group contains Medication resources";
@ -179,28 +179,28 @@ public class Group extends DomainResource {
/**
* A code that identifies the kind of trait being asserted.
*/
@Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1)
@Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Kind of characteristic", formalDefinition="A code that identifies the kind of trait being asserted." )
protected CodeableConcept code;
/**
* The value of the trait that holds (or does not hold - see 'exclude') for members of the group.
*/
@Child(name = "value", type = {CodeableConcept.class, BooleanType.class, Quantity.class, Range.class}, order=2, min=1, max=1)
@Child(name = "value", type = {CodeableConcept.class, BooleanType.class, Quantity.class, Range.class}, order=2, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Value held by characteristic", formalDefinition="The value of the trait that holds (or does not hold - see 'exclude') for members of the group." )
protected Type value;
/**
* If true, indicates the characteristic is one that is NOT held by members of the group.
*/
@Child(name = "exclude", type = {BooleanType.class}, order=3, min=1, max=1)
@Child(name = "exclude", type = {BooleanType.class}, order=3, min=1, max=1, modifier=true, summary=false)
@Description(shortDefinition="Group includes or excludes", formalDefinition="If true, indicates the characteristic is one that is NOT held by members of the group." )
protected BooleanType exclude;
/**
* The period over which the characteristic is tested. E.g. the patient had an operation during the month of June.
*/
@Child(name = "period", type = {Period.class}, order=4, min=0, max=1)
@Child(name = "period", type = {Period.class}, order=4, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Period over which characteristic is tested", formalDefinition="The period over which the characteristic is tested. E.g. the patient had an operation during the month of June." )
protected Period period;
@ -438,7 +438,7 @@ public class Group extends DomainResource {
/**
* A reference to the entity that is a member of the group. Must be consistent with Group.type.
*/
@Child(name = "entity", type = {Patient.class, Practitioner.class, Device.class, Medication.class, Substance.class}, order=1, min=1, max=1)
@Child(name = "entity", type = {Patient.class, Practitioner.class, Device.class, Medication.class, Substance.class}, order=1, min=1, max=1, modifier=false, summary=false)
@Description(shortDefinition="Reference to the group member", formalDefinition="A reference to the entity that is a member of the group. Must be consistent with Group.type." )
protected Reference entity;
@ -450,14 +450,14 @@ public class Group extends DomainResource {
/**
* The period that the member was in the group, if known.
*/
@Child(name = "period", type = {Period.class}, order=2, min=0, max=1)
@Child(name = "period", type = {Period.class}, order=2, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="Period member belonged to the group", formalDefinition="The period that the member was in the group, if known." )
protected Period period;
/**
* A flag to indicate that the member is no longer in the group, but previously may have been a member.
*/
@Child(name = "inactive", type = {BooleanType.class}, order=3, min=0, max=1)
@Child(name = "inactive", type = {BooleanType.class}, order=3, min=0, max=1, modifier=false, summary=false)
@Description(shortDefinition="If member is no longer in group", formalDefinition="A flag to indicate that the member is no longer in the group, but previously may have been a member." )
protected BooleanType inactive;
@ -633,56 +633,56 @@ public class Group extends DomainResource {
/**
* A unique business identifier for this group.
*/
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="Unique id", formalDefinition="A unique business identifier for this group." )
protected List<Identifier> identifier;
/**
* Identifies the broad classification of the kind of resources the group includes.
*/
@Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1)
@Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="person | animal | practitioner | device | medication | substance", formalDefinition="Identifies the broad classification of the kind of resources the group includes." )
protected Enumeration<GroupType> type;
/**
* If true, indicates that the resource refers to a specific group of real individuals. If false, the group defines a set of intended individuals.
*/
@Child(name = "actual", type = {BooleanType.class}, order=2, min=1, max=1)
@Child(name = "actual", type = {BooleanType.class}, order=2, min=1, max=1, modifier=false, summary=true)
@Description(shortDefinition="Descriptive or actual", formalDefinition="If true, indicates that the resource refers to a specific group of real individuals. If false, the group defines a set of intended individuals." )
protected BooleanType actual;
/**
* Provides a specific type of resource the group includes. E.g. "cow", "syringe", etc.
*/
@Child(name = "code", type = {CodeableConcept.class}, order=3, min=0, max=1)
@Description(shortDefinition="Kind of Group members", formalDefinition="Provides a specific type of resource the group includes. E.g. 'cow', 'syringe', etc." )
@Child(name = "code", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Kind of Group members", formalDefinition="Provides a specific type of resource the group includes. E.g. \"cow\", \"syringe\", etc." )
protected CodeableConcept code;
/**
* A label assigned to the group for human identification and communication.
*/
@Child(name = "name", type = {StringType.class}, order=4, min=0, max=1)
@Child(name = "name", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Label for Group", formalDefinition="A label assigned to the group for human identification and communication." )
protected StringType name;
/**
* A count of the number of resource instances that are part of the group.
*/
@Child(name = "quantity", type = {UnsignedIntType.class}, order=5, min=0, max=1)
@Child(name = "quantity", type = {UnsignedIntType.class}, order=5, min=0, max=1, modifier=false, summary=true)
@Description(shortDefinition="Number of members", formalDefinition="A count of the number of resource instances that are part of the group." )
protected UnsignedIntType quantity;
/**
* Identifies the traits shared by members of the group.
*/
@Child(name = "characteristic", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "characteristic", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Trait of group members", formalDefinition="Identifies the traits shared by members of the group." )
protected List<GroupCharacteristicComponent> characteristic;
/**
* Identifies the resource instances that are members of the group.
*/
@Child(name = "member", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED)
@Child(name = "member", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
@Description(shortDefinition="Who or what is in group", formalDefinition="Identifies the resource instances that are members of the group." )
protected List<GroupMemberComponent> member;
@ -1037,7 +1037,7 @@ public class Group extends DomainResource {
childrenList.add(new Property("identifier", "Identifier", "A unique business identifier for this group.", 0, java.lang.Integer.MAX_VALUE, identifier));
childrenList.add(new Property("type", "code", "Identifies the broad classification of the kind of resources the group includes.", 0, java.lang.Integer.MAX_VALUE, type));
childrenList.add(new Property("actual", "boolean", "If true, indicates that the resource refers to a specific group of real individuals. If false, the group defines a set of intended individuals.", 0, java.lang.Integer.MAX_VALUE, actual));
childrenList.add(new Property("code", "CodeableConcept", "Provides a specific type of resource the group includes. E.g. 'cow', 'syringe', etc.", 0, java.lang.Integer.MAX_VALUE, code));
childrenList.add(new Property("code", "CodeableConcept", "Provides a specific type of resource the group includes. E.g. \"cow\", \"syringe\", etc.", 0, java.lang.Integer.MAX_VALUE, code));
childrenList.add(new Property("name", "string", "A label assigned to the group for human identification and communication.", 0, java.lang.Integer.MAX_VALUE, name));
childrenList.add(new Property("quantity", "unsignedInt", "A count of the number of resource instances that are part of the group.", 0, java.lang.Integer.MAX_VALUE, quantity));
childrenList.add(new Property("characteristic", "", "Identifies the traits shared by members of the group.", 0, java.lang.Integer.MAX_VALUE, characteristic));

Some files were not shown because too many files have changed in this diff Show More