Fix uploading CLI DSTU2 examples

This commit is contained in:
James Agnew 2016-09-28 16:25:01 -04:00
parent eba136d706
commit 8a9a031a8d
217 changed files with 3495 additions and 2757 deletions

View File

@ -13,15 +13,7 @@ import java.io.FileReader;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.util.ArrayList; import java.util.*;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;
@ -241,8 +233,8 @@ public class ExampleDataUploader extends BaseCommand {
private void sendBundleToTarget(String targetServer, FhirContext ctx, IBaseBundle bundle) throws Exception, IOException { private void sendBundleToTarget(String targetServer, FhirContext ctx, IBaseBundle bundle) throws Exception, IOException {
List<IBaseResource> resources = BundleUtil.toListOfResources(ctx, bundle); List<IBaseResource> resources = BundleUtil.toListOfResources(ctx, bundle);
for (Iterator<IBaseResource> iter = resources.iterator(); iter.hasNext(); ) { for (Iterator<IBaseResource> iter = resources.iterator(); iter.hasNext();) {
IBaseResource next = iter.next(); IBaseResource next = iter.next();
String nextType = ctx.getResourceDefinition(next).getName(); String nextType = ctx.getResourceDefinition(next).getName();
if (nextType.endsWith("Definition")) { if (nextType.endsWith("Definition")) {
@ -254,53 +246,55 @@ public class ExampleDataUploader extends BaseCommand {
} }
} }
List<IBaseResource> subResourceList = new ArrayList<IBaseResource>(); List<IBaseResource> subResourceList = new ArrayList<IBaseResource>();
while (resources.size() > 0) { while (resources.size() > 0) {
subResourceList.add(resources.remove(0)); IBaseResource nextAddedResource = resources.remove(0);
subResourceList.add(nextAddedResource);
boolean found = false; Set<String> checkedTargets = new HashSet<String>();
do {
for (int i = 0; i < subResourceList.size(); i++) {
IBaseResource nextCandidateSource = subResourceList.get(i);
for (ResourceReferenceInfo nextRef : ctx.newTerser().getAllResourceReferences(nextCandidateSource)) {
String nextRefResourceType = nextRef.getResourceReference().getReferenceElement().getResourceType();
if (isBlank(nextRefResourceType)) {
nextRef.getResourceReference().setResource(null);
nextRef.getResourceReference().setReference(null);
continue;
}
String nextRefIdPart = nextRef.getResourceReference().getReferenceElement().getIdPart();
if (nextRefIdPart.startsWith("EX")) {
nextRefIdPart = nextRefIdPart.substring(2);
}
String nextTarget = nextRefResourceType + "/EX" + nextRefIdPart;
nextRef.getResourceReference().setResource(null);
nextRef.getResourceReference().setReference(nextTarget);
if (checkedTargets.add(nextTarget) == false) {
continue;
}
for (IBaseResource nextTarget : subResourceList) { boolean found = false;
for (int i = 0; i < resources.size(); i++) { for (int j = 0; j < resources.size(); j++) {
IBaseResource nextCandidateSource = resources.get(i); String candidateTarget = resources.get(j).getIdElement().getValue();
for (ResourceReferenceInfo nextRef : ctx.newTerser().getAllResourceReferences(nextCandidateSource)) { if (isNotBlank(nextTarget) && nextTarget.equals(candidateTarget)) {
ourLog.info("Reflexively adding resource {} to bundle as it is a reference target", nextTarget);
/* subResourceList.add(resources.remove(j));
* If we have a reference URL but not a resource, it's a reference found = true;
* to another server and we can't upload it break;
*/
if (isNotBlank(nextRef.getResourceReference().getReferenceElement().getValue())) {
if (nextRef.getResourceReference().getReferenceElement().getValue().contains("gsk.com")) {
nextRef.getResourceReference().setReference("");
}
}
String nextRes = nextRef.getResourceReference().getReferenceElement().toUnqualifiedVersionless().getValue();
if (isNotBlank(nextRes) && nextRes.equals(nextTarget.getIdElement().toUnqualifiedVersionless().getValue())) {
subResourceList.add(resources.remove(i));
i--;
found = true;
}
} }
} }
} }
}
} while (found == true);
if (subResourceList.size() < 10 && resources.size() > 0) { if (subResourceList.size() < 10 && resources.size() > 0) {
subResourceList.add(resources.remove(0)); subResourceList.add(resources.remove(0));
continue; continue;
} }
ourLog.info("About to upload {} examples in a transaction, {} remaining", subResourceList.size(), resources.size()); ourLog.info("About to upload {} examples in a transaction, {} remaining", subResourceList.size(), resources.size());
if (true) {
subResourceList.clear();
continue;
}
IVersionSpecificBundleFactory bundleFactory = ctx.newBundleFactory(); IVersionSpecificBundleFactory bundleFactory = ctx.newBundleFactory();
bundleFactory.initializeBundleFromResourceList(null, subResourceList, null, null, 0, BundleTypeEnum.TRANSACTION); bundleFactory.initializeBundleFromResourceList(null, subResourceList, null, null, 0, BundleTypeEnum.TRANSACTION);
IBaseResource subBundle = bundleFactory.getResourceBundle(); IBaseResource subBundle = bundleFactory.getResourceBundle();
@ -328,7 +322,7 @@ public class ExampleDataUploader extends BaseCommand {
try { try {
fhirClient.transaction().withBundle(encoded).execute(); fhirClient.transaction().withBundle(encoded).execute();
} catch (BaseServerResponseException e) { } catch (BaseServerResponseException e) {
ourLog.error("Failed to upload", e); ourLog.error("Failed to upload bundle:HTTP " + e.getStatusCode() + ": " + e.getMessage());
ourLog.error("Failing bundle: {}", encoded); ourLog.error("Failing bundle: {}", encoded);
} }
long delay = System.currentTimeMillis() - start; long delay = System.currentTimeMillis() - start;
@ -363,12 +357,12 @@ public class ExampleDataUploader extends BaseCommand {
Entry next = iterator.next(); Entry next = iterator.next();
// DataElement have giant IDs that seem invalid, need to investigate this.. // DataElement have giant IDs that seem invalid, need to investigate this..
if ("DataElement".equals(next.getResource().getResourceName()) || "OperationOutcome".equals(next.getResource().getResourceName()) if ("Subscription".equals(next.getResource().getResourceName()) || "DataElement".equals(next.getResource().getResourceName()) || "OperationOutcome".equals(next.getResource().getResourceName())
|| "OperationDefinition".equals(next.getResource().getResourceName())) { || "OperationDefinition".equals(next.getResource().getResourceName())) {
ourLog.info("Skipping " + next.getResource().getResourceName() + " example"); ourLog.info("Skipping " + next.getResource().getResourceName() + " example");
iterator.remove(); iterator.remove();
} else { } else {
IdDt resourceId = next.getResource().getId(); IdDt resourceId = new IdDt(next.getResource().getResourceName() + "/EX" + next.getResource().getId().getIdPart());
if (!fullIds.add(resourceId.toUnqualifiedVersionless().getValue())) { if (!fullIds.add(resourceId.toUnqualifiedVersionless().getValue())) {
ourLog.info("Discarding duplicate resource: " + resourceId.getValue()); ourLog.info("Discarding duplicate resource: " + resourceId.getValue());
iterator.remove(); iterator.remove();
@ -377,36 +371,20 @@ public class ExampleDataUploader extends BaseCommand {
String idPart = resourceId.getIdPart(); String idPart = resourceId.getIdPart();
if (idPart != null) { if (idPart != null) {
if (!ids.containsKey(idPart)) { next.getResource().setId(resourceId);
ids.put(idPart, 1);
} else {
ids.put(idPart, ids.get(idPart) + 1);
}
} else { } else {
ourLog.info("Discarding resource with not explicit ID"); ourLog.info("Discarding resource with not explicit ID");
iterator.remove(); iterator.remove();
} }
} }
} }
Set<String> qualIds = new HashSet<String>(); Set<String> qualIds = new TreeSet<String>();
Map<String, String> renames = new HashMap<String, String>();
for (Iterator<Entry> iterator = bundle.getEntry().iterator(); iterator.hasNext();) { for (Iterator<Entry> iterator = bundle.getEntry().iterator(); iterator.hasNext();) {
Entry next = iterator.next(); Entry next = iterator.next();
if (next.getResource().getId().getIdPart() != null) { if (next.getResource().getId().getIdPart() != null) {
String idPart = next.getResource().getId().getIdPart(); String nextId = next.getResource().getId().getValue();
String originalId = next.getResource().getResourceName() + '/' + idPart;
if (ids.get(idPart) > 1 || next.getResource().getId().isIdPartValidLong()) {
idPart = next.getResource().getResourceName() + idPart;
}
String nextId = next.getResource().getResourceName() + '/' + idPart;
if (!qualIds.add(nextId)) {
ourLog.info("Discarding duplicate resource with ID: " + nextId);
iterator.remove();
}
next.getRequest().setMethod(HTTPVerbEnum.PUT); next.getRequest().setMethod(HTTPVerbEnum.PUT);
next.getRequest().setUrl(nextId); next.getRequest().setUrl(nextId);
next.getResource().setId("");
renames.put(originalId, nextId);
} }
} }
@ -421,17 +399,16 @@ public class ExampleDataUploader extends BaseCommand {
// } // }
nextRef.getResourceReference().setResource(null); nextRef.getResourceReference().setResource(null);
String value = nextRef.getResourceReference().getReferenceElement().toUnqualifiedVersionless().getValue(); String value = nextRef.getResourceReference().getReferenceElement().toUnqualifiedVersionless().getValue();
if (!qualIds.contains(value) && !nextRef.getResourceReference().getReferenceElement().isLocal()) {
if (renames.containsKey(value)) { if (isNotBlank(value)) {
nextRef.getResourceReference().setReference(renames.get(value)); if (!qualIds.contains(value) && !nextRef.getResourceReference().getReferenceElement().isLocal()) {
goodRefs++;
} else {
ourLog.info("Discarding unknown reference: {}", value); ourLog.info("Discarding unknown reference: {}", value);
nextRef.getResourceReference().getReferenceElement().setValue(null); nextRef.getResourceReference().getReferenceElement().setValue(null);
} else {
goodRefs++;
} }
} else {
goodRefs++;
} }
ourLog.info("Found ref: {}", value);
} }
} }
@ -460,12 +437,12 @@ public class ExampleDataUploader extends BaseCommand {
BundleEntryComponent next = iterator.next(); BundleEntryComponent next = iterator.next();
// DataElement have giant IDs that seem invalid, need to investigate this.. // DataElement have giant IDs that seem invalid, need to investigate this..
if ("DataElement".equals(next.getResource().getResourceType().name()) || "OperationOutcome".equals(next.getResource().getResourceType().name()) if ("Subscription".equals(next.getResource().getResourceType()) || "DataElement".equals(next.getResource().getResourceType()) || "OperationOutcome".equals(next.getResource().getResourceType())
|| "OperationDefinition".equals(next.getResource().getResourceType().name())) { || "OperationDefinition".equals(next.getResource().getResourceType())) {
ourLog.info("Skipping " + next.getResource().getResourceType().name() + " example"); ourLog.info("Skipping " + next.getResource().getResourceType() + " example");
iterator.remove(); iterator.remove();
} else { } else {
IdType resourceId = next.getResource().getIdElement(); IdDt resourceId = new IdDt(next.getResource().getResourceType() + "/EX" + next.getResource().getIdElement().getIdPart());
if (!fullIds.add(resourceId.toUnqualifiedVersionless().getValue())) { if (!fullIds.add(resourceId.toUnqualifiedVersionless().getValue())) {
ourLog.info("Discarding duplicate resource: " + resourceId.getValue()); ourLog.info("Discarding duplicate resource: " + resourceId.getValue());
iterator.remove(); iterator.remove();
@ -474,36 +451,20 @@ public class ExampleDataUploader extends BaseCommand {
String idPart = resourceId.getIdPart(); String idPart = resourceId.getIdPart();
if (idPart != null) { if (idPart != null) {
if (!ids.containsKey(idPart)) { next.getResource().setId(resourceId);
ids.put(idPart, 1);
} else {
ids.put(idPart, ids.get(idPart) + 1);
}
} else { } else {
ourLog.info("Discarding resource with not explicit ID"); ourLog.info("Discarding resource with not explicit ID");
iterator.remove(); iterator.remove();
} }
} }
} }
Set<String> qualIds = new HashSet<String>(); Set<String> qualIds = new TreeSet<String>();
Map<String, String> renames = new HashMap<String, String>();
for (Iterator<BundleEntryComponent> iterator = bundle.getEntry().iterator(); iterator.hasNext();) { for (Iterator<BundleEntryComponent> iterator = bundle.getEntry().iterator(); iterator.hasNext();) {
BundleEntryComponent next = iterator.next(); BundleEntryComponent next = iterator.next();
if (next.getResource().getIdElement().getIdPart() != null) { if (next.getResource().getIdElement().getIdPart() != null) {
String idPart = next.getResource().getIdElement().getIdPart(); String nextId = next.getResource().getIdElement().getValue();
String originalId = next.getResource().getResourceType().name() + '/' + idPart;
if (ids.get(idPart) > 1 || next.getResource().getIdElement().isIdPartValidLong()) {
idPart = next.getResource().getResourceType().name() + idPart;
}
String nextId = next.getResource().getResourceType().name() + '/' + idPart;
if (!qualIds.add(nextId)) {
ourLog.info("Discarding duplicate resource with ID: " + nextId);
iterator.remove();
}
next.getRequest().setMethod(HTTPVerb.PUT); next.getRequest().setMethod(HTTPVerb.PUT);
next.getRequest().setUrl(nextId); next.getRequest().setUrl(nextId);
next.getResource().setId("");
renames.put(originalId, nextId);
} }
} }
@ -518,17 +479,16 @@ public class ExampleDataUploader extends BaseCommand {
// } // }
nextRef.getResourceReference().setResource(null); nextRef.getResourceReference().setResource(null);
String value = nextRef.getResourceReference().getReferenceElement().toUnqualifiedVersionless().getValue(); String value = nextRef.getResourceReference().getReferenceElement().toUnqualifiedVersionless().getValue();
if (!qualIds.contains(value) && !nextRef.getResourceReference().getReferenceElement().isLocal()) {
if (renames.containsKey(value)) { if (isNotBlank(value)) {
nextRef.getResourceReference().setReference(renames.get(value)); if (!qualIds.contains(value) && !nextRef.getResourceReference().getReferenceElement().isLocal()) {
goodRefs++;
} else {
ourLog.info("Discarding unknown reference: {}", value); ourLog.info("Discarding unknown reference: {}", value);
nextRef.getResourceReference().getReferenceElement().setValue(null); nextRef.getResourceReference().getReferenceElement().setValue(null);
} else {
goodRefs++;
} }
} else {
goodRefs++;
} }
ourLog.info("Found ref: {}", value);
} }
} }
@ -613,6 +573,7 @@ public class ExampleDataUploader extends BaseCommand {
return bundle; return bundle;
} }
@SuppressWarnings("unchecked")
private org.hl7.fhir.dstu3.model.Bundle getBundleFromFileDstu3(Integer limit, File inputFile, FhirContext ctx) throws IOException, UnsupportedEncodingException { private org.hl7.fhir.dstu3.model.Bundle getBundleFromFileDstu3(Integer limit, File inputFile, FhirContext ctx) throws IOException, UnsupportedEncodingException {
org.hl7.fhir.dstu3.model.Bundle bundle = new org.hl7.fhir.dstu3.model.Bundle(); org.hl7.fhir.dstu3.model.Bundle bundle = new org.hl7.fhir.dstu3.model.Bundle();
@ -659,7 +620,7 @@ public class ExampleDataUploader extends BaseCommand {
ValidationResult result = val.validateWithResult(parsed); ValidationResult result = val.validateWithResult(parsed);
if (result.isSuccessful() == false) { if (result.isSuccessful() == false) {
ourLog.info("FAILED to validate example {}", nextEntry.getName()); ourLog.info("FAILED to validate example {} - {}", nextEntry.getName(), result.toString());
continue; continue;
} }
@ -731,40 +692,4 @@ public class ExampleDataUploader extends BaseCommand {
System.err.flush(); System.err.flush();
} }
private byte[] readStreamFromInternet(CloseableHttpResponse result) throws IOException {
byte[] inputBytes;
{
long maxLength = result.getEntity().getContentLength();
int nextLog = -1;
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[16384];
while ((nRead = result.getEntity().getContent().read(data, 0, data.length)) != -1) {
buffer.write(data, 0, nRead);
if (buffer.size() > nextLog) {
System.err.print("\r" + Ansi.ansi().eraseLine());
System.err.print(FileUtils.byteCountToDisplaySize(buffer.size()));
if (maxLength > 0) {
System.err.print(" [");
int stars = (int) (50.0f * ((float) buffer.size() / (float) maxLength));
for (int i = 0; i < stars; i++) {
System.err.print("*");
}
for (int i = stars; i < 50; i++) {
System.err.print(" ");
}
System.err.print("]");
}
System.err.flush();
nextLog += 100000;
}
}
buffer.flush();
inputBytes = buffer.toByteArray();
}
System.err.println();
System.err.flush();
return inputBytes;
}
} }

View File

@ -26,11 +26,11 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
import org.hl7.fhir.dstu3.model.IdType; import org.hl7.fhir.dstu3.model.IdType;
import org.hl7.fhir.dstu3.model.OperationOutcome; import org.hl7.fhir.dstu3.model.OperationOutcome;
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity; import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity;
import org.hl7.fhir.dstu3.model.OperationOutcome.OperationOutcomeIssueComponent; import org.hl7.fhir.dstu3.model.OperationOutcome.OperationOutcomeIssueComponent;
import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IAnyResource; import org.hl7.fhir.instance.model.api.IAnyResource;
import org.hl7.fhir.instance.model.api.IBaseOperationOutcome; import org.hl7.fhir.instance.model.api.IBaseOperationOutcome;
import org.hl7.fhir.instance.model.api.IBaseResource; import org.hl7.fhir.instance.model.api.IBaseResource;

View File

@ -30,7 +30,7 @@ import javax.measure.unit.Unit;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import org.hl7.fhir.dstu3.exceptions.FHIRException; import org.hl7.fhir.dstu3.context.IWorkerContext;
import org.hl7.fhir.dstu3.hapi.validation.IValidationSupport; import org.hl7.fhir.dstu3.hapi.validation.IValidationSupport;
import org.hl7.fhir.dstu3.model.*; import org.hl7.fhir.dstu3.model.*;
import org.hl7.fhir.dstu3.model.Conformance.ConformanceRestSecurityComponent; import org.hl7.fhir.dstu3.model.Conformance.ConformanceRestSecurityComponent;
@ -38,7 +38,7 @@ import org.hl7.fhir.dstu3.model.Enumeration;
import org.hl7.fhir.dstu3.model.Location.LocationPositionComponent; import org.hl7.fhir.dstu3.model.Location.LocationPositionComponent;
import org.hl7.fhir.dstu3.model.Patient.PatientCommunicationComponent; import org.hl7.fhir.dstu3.model.Patient.PatientCommunicationComponent;
import org.hl7.fhir.dstu3.utils.FluentPathEngine; import org.hl7.fhir.dstu3.utils.FluentPathEngine;
import org.hl7.fhir.dstu3.utils.IWorkerContext; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBase; import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseResource; import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.IPrimitiveType; import org.hl7.fhir.instance.model.api.IPrimitiveType;

View File

@ -59,6 +59,22 @@ public class FhirResourceDaoDstu3ValidateTest extends BaseJpaDstu3Test {
} }
@Test
public void testValidateDocument() throws Exception {
String input = IOUtils.toString(getClass().getResourceAsStream("/document-bundle-dstu3.json"), StandardCharsets.UTF_8);
Bundle document = myFhirCtx.newJsonParser().parseResource(Bundle.class, input);
ourLog.info("Starting validation");
try {
MethodOutcome outcome = myBundleDao.validate(document, null, null, null, ValidationModeEnum.CREATE, null, mySrd);
} catch (PreconditionFailedException e) {
ourLog.info(myFhirCtx.newJsonParser().setPrettyPrint(true).encodeResourceToString(e.getOperationOutcome()));
}
ourLog.info("Done validation");
// ourLog.info(myFhirCtx.newJsonParser().setPrettyPrint(true).encodeResourceToString(outcome.getOperationOutcome()));
}
@Test @Test
@Ignore @Ignore

View File

@ -0,0 +1,31 @@
{
"resourceType": "Bundle",
"type": "document",
"entry": [
{
"resource": {
"resourceType": "Composition",
"author": [
{
"display": "Jane C. Jackson"
}
],
"date": "2016-09-02T20:59:41Z",
"status": "final",
"subject": {
"reference": "Patient/1000"
},
"title": "Test evaluation",
"type": {
"coding": [
{
"code": "intake-exam",
"display": "Intake Exam",
"system": "http://test.org"
}
]
}
}
}
]
}

View File

@ -1,61 +1,29 @@
package org.hl7.fhir.dstu3.utils; package org.hl7.fhir.dstu3.conformance;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.ArrayList; import java.util.*;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.hl7.fhir.dstu3.conformance.ProfileUtilities.ProfileKnowledgeProvider.BindingResolution;
import org.hl7.fhir.dstu3.context.IWorkerContext;
import org.hl7.fhir.dstu3.elementmodel.ObjectConverter; import org.hl7.fhir.dstu3.elementmodel.ObjectConverter;
import org.hl7.fhir.dstu3.elementmodel.Property; import org.hl7.fhir.dstu3.elementmodel.Property;
import org.hl7.fhir.dstu3.exceptions.DefinitionException;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
import org.hl7.fhir.dstu3.formats.IParser; import org.hl7.fhir.dstu3.formats.IParser;
import org.hl7.fhir.dstu3.model.Base; import org.hl7.fhir.dstu3.model.*;
import org.hl7.fhir.dstu3.model.BooleanType; import org.hl7.fhir.dstu3.model.ElementDefinition.*;
import org.hl7.fhir.dstu3.model.CodeSystem;
import org.hl7.fhir.dstu3.model.Coding;
import org.hl7.fhir.dstu3.model.Element;
import org.hl7.fhir.dstu3.model.ElementDefinition;
import org.hl7.fhir.dstu3.model.Extension;
import org.hl7.fhir.dstu3.model.Factory;
import org.hl7.fhir.dstu3.model.ElementDefinition.AggregationMode;
import org.hl7.fhir.dstu3.model.ElementDefinition.ElementDefinitionBindingComponent;
import org.hl7.fhir.dstu3.model.ElementDefinition.ElementDefinitionConstraintComponent;
import org.hl7.fhir.dstu3.model.ElementDefinition.ElementDefinitionMappingComponent;
import org.hl7.fhir.dstu3.model.ElementDefinition.ElementDefinitionSlicingComponent;
import org.hl7.fhir.dstu3.model.ElementDefinition.SlicingRules;
import org.hl7.fhir.dstu3.model.ElementDefinition.TypeRefComponent;
import org.hl7.fhir.dstu3.model.Enumeration; import org.hl7.fhir.dstu3.model.Enumeration;
import org.hl7.fhir.dstu3.model.Enumerations.BindingStrength; import org.hl7.fhir.dstu3.model.Enumerations.BindingStrength;
import org.hl7.fhir.dstu3.model.IntegerType;
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity; import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity;
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueType; import org.hl7.fhir.dstu3.model.OperationOutcome.IssueType;
import org.hl7.fhir.dstu3.model.PrimitiveType; import org.hl7.fhir.dstu3.model.StructureDefinition.*;
import org.hl7.fhir.dstu3.model.Reference;
import org.hl7.fhir.dstu3.model.Resource;
import org.hl7.fhir.dstu3.model.ResourceFactory;
import org.hl7.fhir.dstu3.model.StringType;
import org.hl7.fhir.dstu3.model.StructureDefinition;
import org.hl7.fhir.dstu3.model.StructureDefinition.StructureDefinitionDifferentialComponent;
import org.hl7.fhir.dstu3.model.StructureDefinition.StructureDefinitionKind;
import org.hl7.fhir.dstu3.model.StructureDefinition.StructureDefinitionMappingComponent;
import org.hl7.fhir.dstu3.model.StructureDefinition.StructureDefinitionSnapshotComponent;
import org.hl7.fhir.dstu3.model.Type;
import org.hl7.fhir.dstu3.model.UriType;
import org.hl7.fhir.dstu3.model.ValueSet;
import org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionComponent; import org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionComponent;
import org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionContainsComponent; import org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionContainsComponent;
import org.hl7.fhir.dstu3.model.StructureDefinition.TypeDerivationRule;
import org.hl7.fhir.dstu3.terminologies.ValueSetExpander.ValueSetExpansionOutcome; import org.hl7.fhir.dstu3.terminologies.ValueSetExpander.ValueSetExpansionOutcome;
import org.hl7.fhir.dstu3.utils.ProfileUtilities.ProfileKnowledgeProvider.BindingResolution; import org.hl7.fhir.dstu3.utils.ToolingExtensions;
import org.hl7.fhir.dstu3.validation.ValidationMessage; import org.hl7.fhir.dstu3.validation.ValidationMessage;
import org.hl7.fhir.dstu3.validation.ValidationMessage.Source; import org.hl7.fhir.dstu3.validation.ValidationMessage.Source;
import org.hl7.fhir.exceptions.DefinitionException;
import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.CommaSeparatedStringBuilder; import org.hl7.fhir.utilities.CommaSeparatedStringBuilder;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.xhtml.HierarchicalTableGenerator; import org.hl7.fhir.utilities.xhtml.HierarchicalTableGenerator;
@ -75,8 +43,10 @@ import org.hl7.fhir.utilities.xml.SchematronWriter.Section;
* * getChildMap --? * * getChildMap --?
* * getChildList * * getChildList
* * generateSnapshot: Given a base (snapshot) profile structure, and a differential profile, generate a new snapshot profile * * generateSnapshot: Given a base (snapshot) profile structure, and a differential profile, generate a new snapshot profile
* * closeDifferential: fill out a differential by excluding anything not mentioned
* * generateExtensionsTable: generate the HTML for a hierarchical table presentation of the extensions * * generateExtensionsTable: generate the HTML for a hierarchical table presentation of the extensions
* * generateTable: generate the HTML for a hierarchical table presentation of a structure * * generateTable: generate the HTML for a hierarchical table presentation of a structure
* * generateSpanningTable: generate the HTML for a table presentation of a network of structures, starting at a nominated point
* * summarise: describe the contents of a profile * * summarise: describe the contents of a profile
* @author Grahame * @author Grahame
* *
@ -178,7 +148,7 @@ public class ProfileUtilities {
boolean isResource(String typeSimple); boolean isResource(String typeSimple);
boolean hasLinkFor(String typeSimple); boolean hasLinkFor(String typeSimple);
String getLinkFor(String corePath, String typeSimple); String getLinkFor(String corePath, String typeSimple);
BindingResolution resolveBinding(StructureDefinition def, ElementDefinitionBindingComponent binding); BindingResolution resolveBinding(StructureDefinition def, ElementDefinitionBindingComponent binding, String path);
String getLinkForProfile(StructureDefinition profile, String url); String getLinkForProfile(StructureDefinition profile, String url);
boolean prependLinks(); boolean prependLinks();
} }
@ -205,9 +175,9 @@ public class ProfileUtilities {
res.add(e); res.add(e);
} else } else
break; break;
} }
return res; return res;
} }
} }
@ -307,11 +277,12 @@ public class ProfileUtilities {
throw new Error("type on first differential element!"); throw new Error("type on first differential element!");
// we actually delegate the work to a subroutine so we can re-enter it with a different cursors // we actually delegate the work to a subroutine so we can re-enter it with a different cursors
processPaths(derived.getSnapshot(), base.getSnapshot(), derived.getDifferential(), baseCursor, diffCursor, base.getSnapshot().getElement().size()-1, derived.getDifferential().getElement().size()-1, url, derived.getId(), null, false, base.getUrl(), null, false); processPaths(derived.getSnapshot(), base.getSnapshot(), derived.getDifferential(), baseCursor, diffCursor, base.getSnapshot().getElement().size()-1,
derived.getDifferential().getElement().size()-1, url, derived.getId(), null, null, false, base.getUrl(), null, false);
if (!derived.getSnapshot().getElementFirstRep().getType().isEmpty()) if (!derived.getSnapshot().getElementFirstRep().getType().isEmpty())
throw new Error("type on first snapshot element!"); throw new Error("type on first snapshot element for "+derived.getSnapshot().getElementFirstRep().getPath()+" in "+derived.getUrl()+" from "+base.getUrl());
updateMaps(base, derived); updateMaps(base, derived);
setIds(derived, derived.getName()); setIds(derived, false);
} }
/** /**
@ -320,13 +291,13 @@ public class ProfileUtilities {
* @throws Exception * @throws Exception
*/ */
private void processPaths(StructureDefinitionSnapshotComponent result, StructureDefinitionSnapshotComponent base, StructureDefinitionDifferentialComponent differential, int baseCursor, int diffCursor, int baseLimit, private void processPaths(StructureDefinitionSnapshotComponent result, StructureDefinitionSnapshotComponent base, StructureDefinitionDifferentialComponent differential, int baseCursor, int diffCursor, int baseLimit,
int diffLimit, String url, String profileName, String contextPath, boolean trimDifferential, String contextName, String resultPathBase, boolean slicingDone) throws DefinitionException, FHIRException { int diffLimit, String url, String profileName, String contextPathSrc, String contextPathDst, boolean trimDifferential, String contextName, String resultPathBase, boolean slicingDone) throws DefinitionException, FHIRException {
// just repeat processing entries until we run out of our allowed scope (1st entry, the allowed scope is all the entries) // just repeat processing entries until we run out of our allowed scope (1st entry, the allowed scope is all the entries)
while (baseCursor <= baseLimit) { while (baseCursor <= baseLimit) {
// get the current focus of the base, and decide what to do // get the current focus of the base, and decide what to do
ElementDefinition currentBase = base.getElement().get(baseCursor); ElementDefinition currentBase = base.getElement().get(baseCursor);
String cpath = fixedPath(contextPath, currentBase.getPath()); String cpath = fixedPath(contextPathSrc, currentBase.getPath());
List<ElementDefinition> diffMatches = getDiffMatches(differential, cpath, diffCursor, diffLimit, profileName, url); // get a list of matching elements in scope List<ElementDefinition> diffMatches = getDiffMatches(differential, cpath, diffCursor, diffLimit, profileName, url); // get a list of matching elements in scope
// in the simple case, source is not sliced. // in the simple case, source is not sliced.
@ -334,7 +305,7 @@ public class ProfileUtilities {
if (diffMatches.isEmpty()) { // the differential doesn't say anything about this item if (diffMatches.isEmpty()) { // the differential doesn't say anything about this item
// so we just copy it in // so we just copy it in
ElementDefinition outcome = updateURLs(url, currentBase.copy()); ElementDefinition outcome = updateURLs(url, currentBase.copy());
outcome.setPath(fixedPath(contextPath, outcome.getPath())); outcome.setPath(fixedPath(contextPathDst, outcome.getPath()));
updateFromBase(outcome, currentBase); updateFromBase(outcome, currentBase);
markDerived(outcome); markDerived(outcome);
if (resultPathBase == null) if (resultPathBase == null)
@ -370,7 +341,7 @@ public class ProfileUtilities {
// some of what's in currentBase overrides template // some of what's in currentBase overrides template
template = overWriteWithCurrent(template, currentBase); template = overWriteWithCurrent(template, currentBase);
ElementDefinition outcome = updateURLs(url, template); ElementDefinition outcome = updateURLs(url, template);
outcome.setPath(fixedPath(contextPath, outcome.getPath())); outcome.setPath(fixedPath(contextPathDst, outcome.getPath()));
updateFromBase(outcome, currentBase); updateFromBase(outcome, currentBase);
if (diffMatches.get(0).hasName()) if (diffMatches.get(0).hasName())
outcome.setName(diffMatches.get(0).getName()); outcome.setName(diffMatches.get(0).getName());
@ -397,7 +368,7 @@ public class ProfileUtilities {
while (differential.getElement().size() > diffCursor && pathStartsWith(differential.getElement().get(diffCursor).getPath(), diffMatches.get(0).getPath()+".")) while (differential.getElement().size() > diffCursor && pathStartsWith(differential.getElement().get(diffCursor).getPath(), diffMatches.get(0).getPath()+"."))
diffCursor++; diffCursor++;
processPaths(result, dt.getSnapshot(), differential, 1 /* starting again on the data type, but skip the root */, start-1, dt.getSnapshot().getElement().size()-1, processPaths(result, dt.getSnapshot(), differential, 1 /* starting again on the data type, but skip the root */, start-1, dt.getSnapshot().getElement().size()-1,
diffCursor - 1, url, profileName+pathTail(diffMatches, 0), diffMatches.get(0).getPath(), trimDifferential, contextName, resultPathBase, false); diffCursor - 1, url, profileName+pathTail(diffMatches, 0), diffMatches.get(0).getPath(), outcome.getPath(), trimDifferential, contextName, resultPathBase, false);
} }
} }
} else { } else {
@ -405,14 +376,14 @@ public class ProfileUtilities {
if (!unbounded(currentBase) && !isSlicedToOneOnly(diffMatches.get(0))) if (!unbounded(currentBase) && !isSlicedToOneOnly(diffMatches.get(0)))
// you can only slice an element that doesn't repeat if the sum total of your slices is limited to 1 // you can only slice an element that doesn't repeat if the sum total of your slices is limited to 1
// (but you might do that in order to split up constraints by type) // (but you might do that in order to split up constraints by type)
throw new DefinitionException("Attempt to a slice an element that does not repeat: "+currentBase.getPath()+"/"+currentBase.getName()+" from "+contextName); throw new DefinitionException("Attempt to a slice an element that does not repeat: "+currentBase.getPath()+"/"+currentBase.getName()+" from "+contextName+" in "+url);
if (!diffMatches.get(0).hasSlicing() && !isExtension(currentBase)) // well, the diff has set up a slice, but hasn't defined it. this is an error if (!diffMatches.get(0).hasSlicing() && !isExtension(currentBase)) // well, the diff has set up a slice, but hasn't defined it. this is an error
throw new DefinitionException("differential does not have a slice: "+currentBase.getPath()); throw new DefinitionException("differential does not have a slice: "+currentBase.getPath()+" in profile "+url);
// well, if it passed those preconditions then we slice the dest. // well, if it passed those preconditions then we slice the dest.
// we're just going to accept the differential slicing at face value // we're just going to accept the differential slicing at face value
ElementDefinition outcome = updateURLs(url, currentBase.copy()); ElementDefinition outcome = updateURLs(url, currentBase.copy());
outcome.setPath(fixedPath(contextPath, outcome.getPath())); outcome.setPath(fixedPath(contextPathDst, outcome.getPath()));
updateFromBase(outcome, currentBase); updateFromBase(outcome, currentBase);
if (!diffMatches.get(0).hasSlicing()) if (!diffMatches.get(0).hasSlicing())
@ -444,7 +415,7 @@ public class ProfileUtilities {
ndc = differential.getElement().indexOf(diffMatches.get(i)); ndc = differential.getElement().indexOf(diffMatches.get(i));
ndl = findEndOfElement(differential, ndc); ndl = findEndOfElement(differential, ndc);
// now we process the base scope repeatedly for each instance of the item in the differential list // now we process the base scope repeatedly for each instance of the item in the differential list
processPaths(result, base, differential, baseCursor, ndc, nbl, ndl, url, profileName+pathTail(diffMatches, i), contextPath, trimDifferential, contextName, resultPathBase, true); processPaths(result, base, differential, baseCursor, ndc, nbl, ndl, url, profileName+pathTail(diffMatches, i), contextPathSrc, contextPathDst, trimDifferential, contextName, resultPathBase, true);
} }
// ok, done with that - next in the base list // ok, done with that - next in the base list
baseCursor = nbl+1; baseCursor = nbl+1;
@ -466,7 +437,7 @@ public class ProfileUtilities {
// copy across the currentbase, and all of its children and siblings // copy across the currentbase, and all of its children and siblings
while (baseCursor < base.getElement().size() && base.getElement().get(baseCursor).getPath().startsWith(path)) { while (baseCursor < base.getElement().size() && base.getElement().get(baseCursor).getPath().startsWith(path)) {
ElementDefinition outcome = updateURLs(url, base.getElement().get(baseCursor).copy()); ElementDefinition outcome = updateURLs(url, base.getElement().get(baseCursor).copy());
outcome.setPath(fixedPath(contextPath, outcome.getPath())); outcome.setPath(fixedPath(contextPathDst, outcome.getPath()));
if (!outcome.getPath().startsWith(resultPathBase)) if (!outcome.getPath().startsWith(resultPathBase))
throw new DefinitionException("Adding wrong path in profile " + profileName + ": "+outcome.getPath()+" vs " + resultPathBase); throw new DefinitionException("Adding wrong path in profile " + profileName + ": "+outcome.getPath()+" vs " + resultPathBase);
result.getElement().add(outcome); // so we just copy it in result.getElement().add(outcome); // so we just copy it in
@ -490,7 +461,7 @@ public class ProfileUtilities {
throw new DefinitionException("Slicing rules on differential ("+summariseSlicing(dSlice)+") do not match those on base ("+summariseSlicing(bSlice)+") - rule @ "+path+" ("+contextName+")"); throw new DefinitionException("Slicing rules on differential ("+summariseSlicing(dSlice)+") do not match those on base ("+summariseSlicing(bSlice)+") - rule @ "+path+" ("+contextName+")");
} }
ElementDefinition outcome = updateURLs(url, currentBase.copy()); ElementDefinition outcome = updateURLs(url, currentBase.copy());
outcome.setPath(fixedPath(contextPath, outcome.getPath())); outcome.setPath(fixedPath(contextPathDst, outcome.getPath()));
updateFromBase(outcome, currentBase); updateFromBase(outcome, currentBase);
if (diffMatches.get(0).hasSlicing() && !isExtension) { if (diffMatches.get(0).hasSlicing() && !isExtension) {
updateFromSlicing(outcome.getSlicing(), diffMatches.get(0).getSlicing()); updateFromSlicing(outcome.getSlicing(), diffMatches.get(0).getSlicing());
@ -507,7 +478,7 @@ public class ProfileUtilities {
baseCursor = base.getElement().indexOf(baseItem); baseCursor = base.getElement().indexOf(baseItem);
outcome = updateURLs(url, baseItem.copy()); outcome = updateURLs(url, baseItem.copy());
updateFromBase(outcome, currentBase); updateFromBase(outcome, currentBase);
outcome.setPath(fixedPath(contextPath, outcome.getPath())); outcome.setPath(fixedPath(contextPathDst, outcome.getPath()));
outcome.setSlicing(null); outcome.setSlicing(null);
if (!outcome.getPath().startsWith(resultPathBase)) if (!outcome.getPath().startsWith(resultPathBase))
throw new DefinitionException("Adding wrong path"); throw new DefinitionException("Adding wrong path");
@ -519,7 +490,7 @@ public class ProfileUtilities {
int ndc = differential.getElement().indexOf(diffMatches.get(diffpos)); int ndc = differential.getElement().indexOf(diffMatches.get(diffpos));
int ndl = findEndOfElement(differential, ndc); int ndl = findEndOfElement(differential, ndc);
// now we process the base scope repeatedly for each instance of the item in the differential list // now we process the base scope repeatedly for each instance of the item in the differential list
processPaths(result, base, differential, baseCursor, ndc, nbl, ndl, url, profileName+pathTail(diffMatches, diffpos), contextPath, closed, contextName, resultPathBase, true); processPaths(result, base, differential, baseCursor, ndc, nbl, ndl, url, profileName+pathTail(diffMatches, diffpos), contextPathSrc, contextPathDst, closed, contextName, resultPathBase, true);
// ok, done with that - now set the cursors for if this is the end // ok, done with that - now set the cursors for if this is the end
baseCursor = nbl+1; baseCursor = nbl+1;
diffCursor = ndl+1; diffCursor = ndl+1;
@ -530,7 +501,7 @@ public class ProfileUtilities {
// just copy any children on the base // just copy any children on the base
while (baseCursor < base.getElement().size() && base.getElement().get(baseCursor).getPath().startsWith(path) && !base.getElement().get(baseCursor).getPath().equals(path)) { while (baseCursor < base.getElement().size() && base.getElement().get(baseCursor).getPath().startsWith(path) && !base.getElement().get(baseCursor).getPath().equals(path)) {
outcome = updateURLs(url, base.getElement().get(baseCursor).copy()); outcome = updateURLs(url, base.getElement().get(baseCursor).copy());
outcome.setPath(fixedPath(contextPath, outcome.getPath())); outcome.setPath(fixedPath(contextPathDst, outcome.getPath()));
if (!outcome.getPath().startsWith(resultPathBase)) if (!outcome.getPath().startsWith(resultPathBase))
throw new DefinitionException("Adding wrong path"); throw new DefinitionException("Adding wrong path");
result.getElement().add(outcome); result.getElement().add(outcome);
@ -547,7 +518,7 @@ public class ProfileUtilities {
if (baseItem.getName().equals(diffItem.getName())) if (baseItem.getName().equals(diffItem.getName()))
throw new DefinitionException("Named items are out of order in the slice"); throw new DefinitionException("Named items are out of order in the slice");
outcome = updateURLs(url, original.copy()); outcome = updateURLs(url, original.copy());
outcome.setPath(fixedPath(contextPath, outcome.getPath())); outcome.setPath(fixedPath(contextPathDst, outcome.getPath()));
updateFromBase(outcome, currentBase); updateFromBase(outcome, currentBase);
outcome.setSlicing(null); outcome.setSlicing(null);
if (!outcome.getPath().startsWith(resultPathBase)) if (!outcome.getPath().startsWith(resultPathBase))
@ -556,8 +527,9 @@ public class ProfileUtilities {
updateFromDefinition(outcome, diffItem, profileName, trimDifferential, url); updateFromDefinition(outcome, diffItem, profileName, trimDifferential, url);
// --- LM Added this // --- LM Added this
diffCursor = differential.getElement().indexOf(diffItem)+1; diffCursor = differential.getElement().indexOf(diffItem)+1;
if (differential.getElement().size() > diffCursor && outcome.getPath().contains(".") && isDataType(outcome.getType())) { // don't want to do this for the root, since that's base, and we're already processing it if ((outcome.getType().get(0).getCode().equals("Extension") || differential.getElement().size() > diffCursor) && outcome.getPath().contains(".") && isDataType(outcome.getType())) { // don't want to do this for the root, since that's base, and we're already processing it
if (pathStartsWith(differential.getElement().get(diffCursor).getPath(), diffMatches.get(0).getPath()+".") && !baseWalksInto(base.getElement(), baseCursor)) { if (!baseWalksInto(base.getElement(), baseCursor)) {
if (differential.getElement().size() > diffCursor && pathStartsWith(differential.getElement().get(diffCursor).getPath(), diffMatches.get(0).getPath()+".")) {
if (outcome.getType().size() > 1) if (outcome.getType().size() > 1)
throw new DefinitionException(diffMatches.get(0).getPath()+" has children ("+differential.getElement().get(diffCursor).getPath()+") and multiple types ("+typeCode(outcome.getType())+") in profile "+profileName); throw new DefinitionException(diffMatches.get(0).getPath()+" has children ("+differential.getElement().get(diffCursor).getPath()+") and multiple types ("+typeCode(outcome.getType())+") in profile "+profileName);
StructureDefinition dt = getProfileForDataType(outcome.getType().get(0)); StructureDefinition dt = getProfileForDataType(outcome.getType().get(0));
@ -568,7 +540,19 @@ public class ProfileUtilities {
while (differential.getElement().size() > diffCursor && pathStartsWith(differential.getElement().get(diffCursor).getPath(), diffMatches.get(0).getPath()+".")) while (differential.getElement().size() > diffCursor && pathStartsWith(differential.getElement().get(diffCursor).getPath(), diffMatches.get(0).getPath()+"."))
diffCursor++; diffCursor++;
processPaths(result, dt.getSnapshot(), differential, 1 /* starting again on the data type, but skip the root */, start-1, dt.getSnapshot().getElement().size()-1, processPaths(result, dt.getSnapshot(), differential, 1 /* starting again on the data type, but skip the root */, start-1, dt.getSnapshot().getElement().size()-1,
diffCursor - 1, url, profileName+pathTail(diffMatches, 0), diffMatches.get(0).getPath(), trimDifferential, contextName, resultPathBase, false); diffCursor - 1, url, profileName+pathTail(diffMatches, 0), diffMatches.get(0).getPath(), outcome.getPath(), trimDifferential, contextName, resultPathBase, false);
} else if (outcome.getType().get(0).getCode().equals("Extension")) {
// Force URL to appear if we're dealing with an extension. (This is a kludge - may need to drill down in other cases where we're slicing and the type has a profile declaration that could be setting the fixed value)
StructureDefinition dt = getProfileForDataType(outcome.getType().get(0));
for (ElementDefinition extEd : dt.getSnapshot().getElement()) {
ElementDefinition extUrlEd = updateURLs(url, extEd.copy());
extUrlEd.setPath(fixedPath(contextPathDst, extUrlEd.getPath()));
updateFromBase(extUrlEd, currentBase);
markDerived(extUrlEd);
result.getElement().add(extUrlEd);
}
}
} }
} }
// --- // ---
@ -854,8 +838,15 @@ public class ProfileUtilities {
for (int i = start; i <= end; i++) { for (int i = start; i <= end; i++) {
String statedPath = context.getElement().get(i).getPath(); String statedPath = context.getElement().get(i).getPath();
if (statedPath.equals(path) || (path.endsWith("[x]") && statedPath.length() > path.length() - 2 && statedPath.substring(0, path.length()-3).equals(path.substring(0, path.length()-3)) && !statedPath.substring(path.length()).contains("."))) { if (statedPath.equals(path) || (path.endsWith("[x]") && statedPath.length() > path.length() - 2 && statedPath.substring(0, path.length()-3).equals(path.substring(0, path.length()-3)) && !statedPath.substring(path.length()).contains("."))) {
/*
* Commenting this out because it raises warnings when profiling inherited elements. For example,
* Error: unknown element 'Bundle.meta.profile' (or it is out of order) in profile ... (looking for 'Bundle.entry')
* Not sure we have enough information here to do the check properly. Might be better done when we're sorting the profile?
if (i != start && result.isEmpty() && !path.startsWith(context.getElement().get(start).getPath())) if (i != start && result.isEmpty() && !path.startsWith(context.getElement().get(start).getPath()))
messages.add(new ValidationMessage(Source.ProfileValidator, IssueType.VALUE, "StructureDefinition.differential.element["+Integer.toString(start)+"]", "Error: unknown element '"+context.getElement().get(start).getPath()+"' (or it is out of order) in profile '"+url+"' (looking for '"+path+"')", IssueSeverity.WARNING)); messages.add(new ValidationMessage(Source.ProfileValidator, IssueType.VALUE, "StructureDefinition.differential.element["+Integer.toString(start)+"]", "Error: unknown element '"+context.getElement().get(start).getPath()+"' (or it is out of order) in profile '"+url+"' (looking for '"+path+"')", IssueSeverity.WARNING));
*/
result.add(context.getElement().get(i)); result.add(context.getElement().get(i));
} }
} }
@ -1207,6 +1198,89 @@ public class ProfileUtilities {
return false; return false;
} }
public void closeDifferential(StructureDefinition base, StructureDefinition derived) throws FHIRException {
for (ElementDefinition edb : base.getSnapshot().getElement()) {
if (isImmediateChild(edb) && !edb.getPath().endsWith(".id")) {
ElementDefinition edm = getMatchInDerived(edb, derived.getDifferential().getElement());
if (edm == null) {
ElementDefinition edd = derived.getDifferential().addElement();
edd.setPath(edb.getPath());
edd.setMax("0");
} else if (edb.hasSlicing()) {
closeChildren(base, edb, derived, edm);
}
}
}
sortDifferential(base, derived, derived.getName(), new ArrayList<String>());
}
private void closeChildren(StructureDefinition base, ElementDefinition edb, StructureDefinition derived, ElementDefinition edm) {
String path = edb.getPath()+".";
int baseStart = base.getSnapshot().getElement().indexOf(edb);
int baseEnd = findEnd(base.getSnapshot().getElement(), edb, baseStart+1);
int diffStart = derived.getDifferential().getElement().indexOf(edm);
int diffEnd = findEnd(derived.getDifferential().getElement(), edm, diffStart+1);
for (int cBase = baseStart; cBase < baseEnd; cBase++) {
ElementDefinition edBase = base.getSnapshot().getElement().get(cBase);
if (isImmediateChild(edBase, edb)) {
ElementDefinition edMatch = getMatchInDerived(edBase, derived.getDifferential().getElement(), diffStart, diffEnd);
if (edMatch == null) {
ElementDefinition edd = derived.getDifferential().addElement();
edd.setPath(edBase.getPath());
edd.setMax("0");
} else {
closeChildren(base, edBase, derived, edMatch);
}
}
}
}
private int findEnd(List<ElementDefinition> list, ElementDefinition ed, int cursor) {
String path = ed.getPath()+".";
while (cursor < list.size() && list.get(cursor).getPath().startsWith(path))
cursor++;
return cursor;
}
private ElementDefinition getMatchInDerived(ElementDefinition ed, List<ElementDefinition> list) {
for (ElementDefinition t : list)
if (t.getPath().equals(ed.getPath()))
return t;
return null;
}
private ElementDefinition getMatchInDerived(ElementDefinition ed, List<ElementDefinition> list, int start, int end) {
for (int i = start; i < end; i++) {
ElementDefinition t = list.get(i);
if (t.getPath().equals(ed.getPath()))
return t;
}
return null;
}
private boolean isImmediateChild(ElementDefinition ed) {
String p = ed.getPath();
if (!p.contains("."))
return false;
p = p.substring(p.indexOf(".")+1);
return !p.contains(".");
}
private boolean isImmediateChild(ElementDefinition candidate, ElementDefinition base) {
String p = candidate.getPath();
if (!p.contains("."))
return false;
if (!p.startsWith(base.getPath()+"."))
return false;
p = p.substring(base.getPath().length()+1);
return !p.contains(".");
}
public XhtmlNode generateExtensionTable(String defFile, StructureDefinition ed, String imageFolder, boolean inlineGraphics, boolean full, String corePath, String imagePath) throws IOException, FHIRException { public XhtmlNode generateExtensionTable(String defFile, StructureDefinition ed, String imageFolder, boolean inlineGraphics, boolean full, String corePath, String imagePath) throws IOException, FHIRException {
HierarchicalTableGenerator gen = new HierarchicalTableGenerator(imageFolder, inlineGraphics); HierarchicalTableGenerator gen = new HierarchicalTableGenerator(imageFolder, inlineGraphics);
@ -1426,9 +1500,9 @@ public class ProfileUtilities {
if (parts[0].startsWith("http:") || parts[0].startsWith("https:")) if (parts[0].startsWith("http:") || parts[0].startsWith("https:"))
c.addPiece(checkForNoChange(t, gen.new Piece(parts[0], parts[1], t.getCode()))); c.addPiece(checkForNoChange(t, gen.new Piece(parts[0], parts[1], t.getCode())));
else else
c.addPiece(checkForNoChange(t, gen.new Piece(corePath+parts[0], parts[1], t.getCode()))); c.addPiece(checkForNoChange(t, gen.new Piece((t.getProfile().startsWith(corePath)? corePath: "")+parts[0], parts[1], t.getCode())));
} else } else
c.addPiece(checkForNoChange(t, gen.new Piece(corePath+ref, t.getCode(), null))); c.addPiece(checkForNoChange(t, gen.new Piece((t.getProfile().startsWith(corePath)? corePath: "")+ref, t.getCode(), null)));
} else if (pkp.hasLinkFor(t.getCode())) { } else if (pkp.hasLinkFor(t.getCode())) {
c.addPiece(checkForNoChange(t, gen.new Piece(pkp.getLinkFor(corePath, t.getCode()), t.getCode(), null))); c.addPiece(checkForNoChange(t, gen.new Piece(pkp.getLinkFor(corePath, t.getCode()), t.getCode(), null)));
} else } else
@ -1561,7 +1635,7 @@ public class ProfileUtilities {
List<ElementDefinition> list = diff ? profile.getDifferential().getElement() : profile.getSnapshot().getElement(); List<ElementDefinition> list = diff ? profile.getDifferential().getElement() : profile.getSnapshot().getElement();
List<StructureDefinition> profiles = new ArrayList<StructureDefinition>(); List<StructureDefinition> profiles = new ArrayList<StructureDefinition>();
profiles.add(profile); profiles.add(profile);
genElement(defFile == null ? null : defFile+"#"+profile.getId()+".", gen, model.getRows(), list.get(0), list, profiles, diff, profileBaseFileName, null, snapshot, corePath, imagePath, true, logicalModel, profile.getDerivation() == TypeDerivationRule.CONSTRAINT && usesMustSupport(list)); genElement(defFile == null ? null : defFile+"#", gen, model.getRows(), list.get(0), list, profiles, diff, profileBaseFileName, null, snapshot, corePath, imagePath, true, logicalModel, profile.getDerivation() == TypeDerivationRule.CONSTRAINT && usesMustSupport(list));
try { try {
return gen.generate(model, imagePath); return gen.generate(model, imagePath);
} catch (org.hl7.fhir.exceptions.FHIRException e) { } catch (org.hl7.fhir.exceptions.FHIRException e) {
@ -1619,7 +1693,7 @@ public class ProfileUtilities {
row.setIcon("icon_datatype.gif", HierarchicalTableGenerator.TEXT_ICON_DATATYPE); row.setIcon("icon_datatype.gif", HierarchicalTableGenerator.TEXT_ICON_DATATYPE);
else else
row.setIcon("icon_resource.png", HierarchicalTableGenerator.TEXT_ICON_RESOURCE); row.setIcon("icon_resource.png", HierarchicalTableGenerator.TEXT_ICON_RESOURCE);
String ref = defPath == null ? null : defPath + makePathLink(element); String ref = defPath == null ? null : defPath + element.getId();
UnusedTracker used = new UnusedTracker(); UnusedTracker used = new UnusedTracker();
used.used = true; used.used = true;
Cell left = gen.new Cell(null, ref, s, !hasDef ? null : element.getDefinition(), null); Cell left = gen.new Cell(null, ref, s, !hasDef ? null : element.getDefinition(), null);
@ -1788,16 +1862,6 @@ public class ProfileUtilities {
&& element.getSlicing().getRules() != SlicingRules.CLOSED && element.getSlicing().getDiscriminator().size() == 1 && element.getSlicing().getDiscriminator().get(0).getValue().equals("url"); && element.getSlicing().getRules() != SlicingRules.CLOSED && element.getSlicing().getDiscriminator().size() == 1 && element.getSlicing().getDiscriminator().get(0).getValue().equals("url");
} }
private String makePathLink(ElementDefinition element) {
if (!element.hasName())
return element.getPath();
if (!element.getPath().contains("."))
return element.getName();
return element.getPath().substring(0, element.getPath().lastIndexOf("."))+"."+element.getName();
}
private Cell generateDescription(HierarchicalTableGenerator gen, Row row, ElementDefinition definition, ElementDefinition fallback, boolean used, String baseURL, String url, StructureDefinition profile, String corePath, String imagePath, boolean root, boolean logicalModel) throws IOException { private Cell generateDescription(HierarchicalTableGenerator gen, Row row, ElementDefinition definition, ElementDefinition fallback, boolean used, String baseURL, String url, StructureDefinition profile, String corePath, String imagePath, boolean root, boolean logicalModel) throws IOException {
return generateDescription(gen, row, definition, fallback, used, baseURL, url, profile, corePath, imagePath, root, logicalModel, null); return generateDescription(gen, row, definition, fallback, used, baseURL, url, profile, corePath, imagePath, root, logicalModel, null);
} }
@ -1864,7 +1928,7 @@ public class ProfileUtilities {
if (binding!=null && !binding.isEmpty()) { if (binding!=null && !binding.isEmpty()) {
if (!c.getPieces().isEmpty()) if (!c.getPieces().isEmpty())
c.addPiece(gen.new Piece("br")); c.addPiece(gen.new Piece("br"));
BindingResolution br = pkp.resolveBinding(profile, binding); BindingResolution br = pkp.resolveBinding(profile, binding, definition.getPath());
c.getPieces().add(checkForNoChange(binding, gen.new Piece(null, "Binding: ", null).addStyle("font-weight:bold"))); c.getPieces().add(checkForNoChange(binding, gen.new Piece(null, "Binding: ", null).addStyle("font-weight:bold")));
c.getPieces().add(checkForNoChange(binding, gen.new Piece(br.url == null ? null : Utilities.isAbsoluteUrl(br.url) || !pkp.prependLinks() ? br.url : corePath+br.url, br.display, null))); c.getPieces().add(checkForNoChange(binding, gen.new Piece(br.url == null ? null : Utilities.isAbsoluteUrl(br.url) || !pkp.prependLinks() ? br.url : corePath+br.url, br.display, null)));
if (binding.hasStrength()) { if (binding.hasStrength()) {
@ -2212,7 +2276,9 @@ public class ProfileUtilities {
throw new FHIRException("Unable to resolve profile " + "http://hl7.org/fhir/StructureDefinition/"+ed.getType().get(0).getCode() + " in element " + ed.getPath()); throw new FHIRException("Unable to resolve profile " + "http://hl7.org/fhir/StructureDefinition/"+ed.getType().get(0).getCode() + " in element " + ed.getPath());
ccmp = new ElementDefinitionComparer(false, profile.getSnapshot().getElement(), child.getSelf().getType().get(0).getCode(), child.getSelf().getPath().length(), cmp.name); ccmp = new ElementDefinitionComparer(false, profile.getSnapshot().getElement(), child.getSelf().getType().get(0).getCode(), child.getSelf().getPath().length(), cmp.name);
} else if (ed.getPath().endsWith("[x]") && !child.getSelf().getPath().endsWith("[x]")) { } else if (ed.getPath().endsWith("[x]") && !child.getSelf().getPath().endsWith("[x]")) {
String p = child.getSelf().getPath().substring(ed.getPath().length()-3); String edLastNode = ed.getPath().replaceAll("(.*\\.)*(.*)", "$2");
String childLastNode = child.getSelf().getPath().replaceAll("(.*\\.)*(.*)", "$2");
String p = childLastNode.substring(edLastNode.length()-3);
StructureDefinition sd = context.fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/"+p); StructureDefinition sd = context.fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/"+p);
if (sd == null) if (sd == null)
throw new Error("Unable to find profile "+p); throw new Error("Unable to find profile "+p);
@ -2286,6 +2352,7 @@ public class ProfileUtilities {
sch.dump(); sch.dump();
} }
private class Slicer extends ElementDefinitionSlicingComponent { private class Slicer extends ElementDefinitionSlicingComponent {
String criteria = ""; String criteria = "";
String name = ""; String name = "";
@ -2368,13 +2435,24 @@ public class ProfileUtilities {
} }
public void setIds(StructureDefinition sd, String name) { public void setIds(StructureDefinition sd, boolean checkFirst) throws DefinitionException {
generateIds(sd.getDifferential().getElement(), name); if (!checkFirst || hasMissingIds(sd.getDifferential().getElement()))
generateIds(sd.getSnapshot().getElement(), name); generateIds(sd.getDifferential().getElement(), sd.getName());
if (!checkFirst || hasMissingIds(sd.getSnapshot().getElement()))
generateIds(sd.getSnapshot().getElement(), sd.getName());
} }
private void generateIds(List<ElementDefinition> list, String name) { private boolean hasMissingIds(List<ElementDefinition> list) {
for (ElementDefinition ed : list) {
if (!ed.hasId())
return true;
}
return false;
}
private void generateIds(List<ElementDefinition> list, String name) throws DefinitionException {
if (list.isEmpty()) if (list.isEmpty())
return; return;
@ -2383,6 +2461,8 @@ public class ProfileUtilities {
List<String> paths = new ArrayList<String>(); List<String> paths = new ArrayList<String>();
// first pass, update the element ids // first pass, update the element ids
for (ElementDefinition ed : list) { for (ElementDefinition ed : list) {
if (!ed.hasPath())
throw new DefinitionException("No path on element Definition "+Integer.toString(list.indexOf(ed))+" in "+name);
int depth = charCount(ed.getPath(), '.'); int depth = charCount(ed.getPath(), '.');
String tail = tail(ed.getPath()); String tail = tail(ed.getPath());
@ -2399,8 +2479,9 @@ public class ProfileUtilities {
b.append("."); b.append(".");
} }
b.append(t); b.append(t);
idMap.put(ed.hasId() ? ed.getId() : ed.getPath(), b.toString()); String bs = b.toString();
ed.setId(b.toString()); idMap.put(ed.hasId() ? ed.getId() : ed.getPath(), bs);
ed.setId(bs);
paths.add(t); paths.add(t);
if (ed.hasContentReference()) { if (ed.hasContentReference()) {
String s = ed.getContentReference().substring(1); String s = ed.getContentReference().substring(1);
@ -2431,7 +2512,12 @@ public class ProfileUtilities {
//// throw new Exception("Illegal name "+name+": no '.'"); //// throw new Exception("Illegal name "+name+": no '.'");
// if (name.contains(" ")) // if (name.contains(" "))
// throw new Exception("Illegal name "+name+": no spaces"); // throw new Exception("Illegal name "+name+": no spaces");
return name.replace(".", "").replace(" ", "").replace(":", "").toLowerCase(); StringBuilder b = new StringBuilder();
for (char c : name.toCharArray()) {
if (!Utilities.existsInList(c, '.', ' ', ':', '"', '\'', '(', ')', '&', '[', ']'))
b.append(c);
}
return b.toString().toLowerCase();
} }
@ -2514,7 +2600,7 @@ public class ProfileUtilities {
List<ElementDefinition> children = getChildMap(profile, ed); List<ElementDefinition> children = getChildMap(profile, ed);
for (ElementDefinition child : children) { for (ElementDefinition child : children) {
if (child.getPath().endsWith(".id")) { if (child.getPath().endsWith(".id")) {
org.hl7.fhir.dstu3.elementmodel.Element id = new org.hl7.fhir.dstu3.elementmodel.Element("id", new Property(context, ed, profile)); org.hl7.fhir.dstu3.elementmodel.Element id = new org.hl7.fhir.dstu3.elementmodel.Element("id", new Property(context, child, profile));
id.setValue(profile.getId()+accessor.getId()); id.setValue(profile.getId()+accessor.getId());
r.getChildren().add(id); r.getChildren().add(id);
} else { } else {
@ -2575,10 +2661,13 @@ public class ProfileUtilities {
public void populateLogicalSnapshot(StructureDefinition sd) throws FHIRException { public void populateLogicalSnapshot(StructureDefinition sd) throws FHIRException {
sd.getSnapshot().getElement().add(sd.getDifferential().getElementFirstRep().copy()); sd.getSnapshot().getElement().add(sd.getDifferential().getElementFirstRep().copy());
if (sd.hasBaseDefinition()) {
StructureDefinition base = context.fetchResource(StructureDefinition.class, sd.getBaseDefinition()); StructureDefinition base = context.fetchResource(StructureDefinition.class, sd.getBaseDefinition());
if (base == null) if (base == null)
throw new FHIRException("Unable to find base definition for logical model: "+sd.getBaseDefinition()); throw new FHIRException("Unable to find base definition for logical model: "+sd.getBaseDefinition()+" from "+sd.getUrl());
copyElements(sd, base.getSnapshot().getElement()); copyElements(sd, base.getSnapshot().getElement());
}
copyElements(sd, sd.getDifferential().getElement()); copyElements(sd, sd.getDifferential().getElement());
} }
@ -2591,7 +2680,340 @@ public class ProfileUtilities {
sd.getSnapshot().addElement(n); sd.getSnapshot().addElement(n);
} }
} }
}
public void cleanUpDifferential(StructureDefinition sd) {
if (sd.getDifferential().getElement().size() > 1)
cleanUpDifferential(sd, 1);
}
private void cleanUpDifferential(StructureDefinition sd, int start) {
int level = Utilities.charCount(sd.getDifferential().getElement().get(start).getPath(), '.');
int c = start;
int len = sd.getDifferential().getElement().size();
HashSet<String> paths = new HashSet<String>();
while (c < len && Utilities.charCount(sd.getDifferential().getElement().get(c).getPath(), '.') == level) {
ElementDefinition ed = sd.getDifferential().getElement().get(c);
if (!paths.contains(ed.getPath())) {
paths.add(ed.getPath());
int ic = c+1;
while (ic < len && Utilities.charCount(sd.getDifferential().getElement().get(ic).getPath(), '.') > level)
ic++;
ElementDefinition slicer = null;
List<ElementDefinition> slices = new ArrayList<ElementDefinition>();
slices.add(ed);
while (ic < len && Utilities.charCount(sd.getDifferential().getElement().get(ic).getPath(), '.') == level) {
ElementDefinition edi = sd.getDifferential().getElement().get(ic);
if (ed.getPath().equals(edi.getPath())) {
if (slicer == null) {
slicer = new ElementDefinition();
slicer.setPath(edi.getPath());
slicer.getSlicing().setRules(SlicingRules.OPEN);
sd.getDifferential().getElement().add(c, slicer);
c++;
ic++;
}
slices.add(edi);
}
ic++;
while (ic < len && Utilities.charCount(sd.getDifferential().getElement().get(ic).getPath(), '.') > level)
ic++;
}
// now we're at the end, we're going to figure out the slicing discriminator
if (slicer != null)
determineSlicing(slicer, slices);
}
c++;
if (c < len && Utilities.charCount(sd.getDifferential().getElement().get(c).getPath(), '.') > level) {
cleanUpDifferential(sd, c);
c++;
while (c < len && Utilities.charCount(sd.getDifferential().getElement().get(c).getPath(), '.') > level)
c++;
}
}
}
private void determineSlicing(ElementDefinition slicer, List<ElementDefinition> slices) {
// first, name them
int i = 0;
for (ElementDefinition ed : slices) {
if (ed.hasUserData("slice-name")) {
ed.setName(ed.getUserString("slice-name"));
} else {
i++;
ed.setName("slice-"+Integer.toString(i));
}
}
// now, the hard bit, how are they differentiated?
// right now, we hard code this...
if (slicer.getPath().endsWith(".extension") || slicer.getPath().endsWith(".modifierExtension"))
slicer.getSlicing().addDiscriminator("url");
else if (slicer.getPath().equals("DiagnosticReport.result"))
slicer.getSlicing().addDiscriminator("reference.code");
else if (slicer.getPath().equals("Observation.related"))
slicer.getSlicing().addDiscriminator("target.reference.code");
else if (slicer.getPath().equals("Bundle.entry"))
slicer.getSlicing().addDiscriminator("resource.@profile");
else
throw new Error("No slicing for "+slicer.getPath());
}
public class SpanEntry {
private List<SpanEntry> children = new ArrayList<SpanEntry>();
private boolean profile;
private String id;
private String name;
private String resType;
private String cardinality;
private String description;
private String profileLink;
private String resLink;
private String type;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getResType() {
return resType;
}
public void setResType(String resType) {
this.resType = resType;
}
public String getCardinality() {
return cardinality;
}
public void setCardinality(String cardinality) {
this.cardinality = cardinality;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getProfileLink() {
return profileLink;
}
public void setProfileLink(String profileLink) {
this.profileLink = profileLink;
}
public String getResLink() {
return resLink;
}
public void setResLink(String resLink) {
this.resLink = resLink;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public boolean isProfile() {
return profile;
}
public void setProfile(boolean profile) {
this.profile = profile;
}
public List<SpanEntry> getChildren() {
return children;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
} }
public XhtmlNode generateSpanningTable(StructureDefinition profile, String imageFolder, boolean onlyConstraints) throws IOException, FHIRException {
HierarchicalTableGenerator gen = new HierarchicalTableGenerator(imageFolder, false);
TableModel model = initSpanningTable(gen, "", false);
Set<String> processed = new HashSet<String>();
SpanEntry span = buildSpanningTable("(focus)", "", profile, processed, onlyConstraints);
genSpanEntry(gen, model.getRows(), span);
return gen.generate(model, "");
}
private SpanEntry buildSpanningTable(String name, String cardinality, StructureDefinition profile, Set<String> processed, boolean onlyConstraints) throws IOException {
SpanEntry res = buildSpanEntryFromProfile(name, cardinality, profile);
boolean wantProcess = !processed.contains(profile.getUrl());
processed.add(profile.getUrl());
if (wantProcess && profile.getDerivation() == TypeDerivationRule.CONSTRAINT) {
for (ElementDefinition ed : profile.getSnapshot().getElement()) {
if (!"0".equals(ed.getMax()) && ed.getType().size() > 0) {
String card = getCardinality(ed, profile.getSnapshot().getElement());
if (!card.endsWith(".0")) {
List<String> refProfiles = listReferenceProfiles(ed);
if (refProfiles.size() > 0) {
StructureDefinition sd = context.fetchResource(StructureDefinition.class, refProfiles.get(0));
if (sd != null && (!onlyConstraints || sd.getDerivation() == TypeDerivationRule.CONSTRAINT)) {
res.getChildren().add(buildSpanningTable(nameForElement(ed), card, sd, processed, onlyConstraints));
}
}
}
}
}
}
return res;
}
private String getCardinality(ElementDefinition ed, List<ElementDefinition> list) {
int min = ed.getMin();
int max = ed.getMax().equals("*") ? Integer.MAX_VALUE : Integer.parseInt(ed.getMax());
while (ed != null && ed.getPath().contains(".")) {
ed = findParent(ed, list);
if (ed.getMax().equals("0"))
max = 0;
else if (!ed.getMax().equals("1") && !ed.hasSlicing())
max = Integer.MAX_VALUE;
if (ed.getMin() == 0)
min = 0;
}
return Integer.toString(min)+".."+(max == Integer.MAX_VALUE ? "*" : Integer.toString(max));
}
private ElementDefinition findParent(ElementDefinition ed, List<ElementDefinition> list) {
int i = list.indexOf(ed)-1;
while (i >= 0 && !ed.getPath().startsWith(list.get(i).getPath()+"."))
i--;
if (i == -1)
return null;
else
return list.get(i);
}
private List<String> listReferenceProfiles(ElementDefinition ed) {
List<String> res = new ArrayList<String>();
for (TypeRefComponent tr : ed.getType()) {
if (tr.getCode().equals("Reference"))
res.add(tr.getProfile());
}
return res ;
}
private String nameForElement(ElementDefinition ed) {
return ed.getPath().substring(ed.getPath().indexOf(".")+1);
}
private SpanEntry buildSpanEntryFromProfile(String name, String cardinality, StructureDefinition profile) throws IOException {
SpanEntry res = new SpanEntry();
res.setName(name);
res.setCardinality(cardinality);
res.setProfileLink(profile.getUserString("path"));
res.setResType(profile.getType());
StructureDefinition base = context.fetchResource(StructureDefinition.class, res.getResType());
if (base != null)
res.setResLink(base.getUserString("path"));
res.setId(profile.getId());
res.setProfile(profile.getDerivation() == TypeDerivationRule.CONSTRAINT);
StringBuilder b = new StringBuilder();
b.append(res.getResType());
boolean first = true;
boolean open = false;
if (profile.getDerivation() == TypeDerivationRule.CONSTRAINT) {
res.setDescription(profile.getName());
for (ElementDefinition ed : profile.getSnapshot().getElement()) {
if (isKeyProperty(ed.getBase().getPath()) && ed.hasFixed()) {
if (first) {
open = true;
first = false;
b.append("[");
} else {
b.append(", ");
}
b.append(tail(ed.getBase().getPath()));
b.append("=");
b.append(summarise(ed.getFixed()));
}
}
if (open)
b.append("]");
} else
res.setDescription("Base FHIR "+profile.getName());
res.setType(b.toString());
return res ;
}
private String summarise(Type value) throws IOException {
if (value instanceof Coding)
return summariseCoding((Coding) value);
else if (value instanceof CodeableConcept)
return summariseCodeableConcept((CodeableConcept) value);
else
return buildJson(value);
}
private String summariseCoding(Coding value) {
String uri = value.getSystem();
String system = ""; //NarrativeGenerator.describeSystem(uri);
if (Utilities.isURL(system)) {
if (system.equals("http://cap.org/protocols"))
system = "CAP Code";
}
return system+" "+value.getCode();
}
private String summariseCodeableConcept(CodeableConcept value) {
if (value.hasCoding())
return summariseCoding(value.getCodingFirstRep());
else
return value.getText();
}
private boolean isKeyProperty(String path) {
return Utilities.existsInList(path, "Observation.code");
}
public TableModel initSpanningTable(HierarchicalTableGenerator gen, String prefix, boolean isLogical) {
TableModel model = gen.new TableModel();
model.setDocoImg(prefix+"help16.png");
model.setDocoRef(prefix+"igs.html#table");
model.getTitles().add(gen.new Title(null, model.getDocoRef(), "Property", "A profiled resource", null, 0));
model.getTitles().add(gen.new Title(null, model.getDocoRef(), "Card.", "Minimum and Maximum # of times the the element can appear in the instance", null, 0));
model.getTitles().add(gen.new Title(null, model.getDocoRef(), "Content", "What goes here", null, 0));
model.getTitles().add(gen.new Title(null, model.getDocoRef(), "Description", "Description of the profile", null, 0));
return model;
}
private void genSpanEntry(HierarchicalTableGenerator gen, List<Row> rows, SpanEntry span) throws IOException {
Row row = gen.new Row();
rows.add(row);
row.setAnchor(span.getId());
//row.setColor(..?);
if (span.isProfile())
row.setIcon("icon_profile.png", HierarchicalTableGenerator.TEXT_ICON_PROFILE);
else
row.setIcon("icon_resource.png", HierarchicalTableGenerator.TEXT_ICON_RESOURCE);
row.getCells().add(gen.new Cell(null, null, span.getName(), null, null));
row.getCells().add(gen.new Cell(null, null, span.getCardinality(), null, null));
row.getCells().add(gen.new Cell(null, span.getProfileLink(), span.getType(), null, null));
row.getCells().add(gen.new Cell(null, null, span.getDescription(), null, null));
for (SpanEntry child : span.getChildren())
genSpanEntry(gen, row.getSubRows(), child);
}
} }

View File

@ -1,9 +1,10 @@
package org.hl7.fhir.dstu3.utils; package org.hl7.fhir.dstu3.context;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import org.hl7.fhir.dstu3.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.dstu3.context.IWorkerContext.ILoggingService;
import org.hl7.fhir.dstu3.formats.IParser; import org.hl7.fhir.dstu3.formats.IParser;
import org.hl7.fhir.dstu3.formats.ParserType; import org.hl7.fhir.dstu3.formats.ParserType;
import org.hl7.fhir.dstu3.model.CodeableConcept; import org.hl7.fhir.dstu3.model.CodeableConcept;
@ -19,8 +20,9 @@ import org.hl7.fhir.dstu3.model.CodeSystem;
import org.hl7.fhir.dstu3.model.CodeSystem.ConceptDefinitionComponent; import org.hl7.fhir.dstu3.model.CodeSystem.ConceptDefinitionComponent;
import org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent; import org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent;
import org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionComponent; import org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionComponent;
import org.hl7.fhir.dstu3.terminologies.ValueSetExpander.TerminologyServiceErrorClass;
import org.hl7.fhir.dstu3.terminologies.ValueSetExpander.ValueSetExpansionOutcome; import org.hl7.fhir.dstu3.terminologies.ValueSetExpander.ValueSetExpansionOutcome;
import org.hl7.fhir.dstu3.utils.IWorkerContext.ILoggingService; import org.hl7.fhir.dstu3.utils.INarrativeGenerator;
import org.hl7.fhir.dstu3.validation.IResourceValidator; import org.hl7.fhir.dstu3.validation.IResourceValidator;
import org.hl7.fhir.exceptions.TerminologyServiceException; import org.hl7.fhir.exceptions.TerminologyServiceException;
@ -46,8 +48,15 @@ import org.hl7.fhir.exceptions.TerminologyServiceException;
*/ */
public interface IWorkerContext { public interface IWorkerContext {
/**
* Get the versions of the definitions loaded in context
* @return
*/
public String getVersion();
// -- Parsers (read and write instances) ---------------------------------------- // -- Parsers (read and write instances) ----------------------------------------
/** /**
* Get a parser to read/write instances. Use the defined type (will be extended * Get a parser to read/write instances. Use the defined type (will be extended
* as further types are added, though the only currently anticipate type is RDF) * as further types are added, though the only currently anticipate type is RDF)
@ -207,6 +216,7 @@ public interface IWorkerContext {
private ConceptDefinitionComponent definition; private ConceptDefinitionComponent definition;
private IssueSeverity severity; private IssueSeverity severity;
private String message; private String message;
private TerminologyServiceErrorClass errorClass;
public ValidationResult(IssueSeverity severity, String message) { public ValidationResult(IssueSeverity severity, String message) {
this.severity = severity; this.severity = severity;
@ -223,12 +233,20 @@ public interface IWorkerContext {
this.definition = definition; this.definition = definition;
} }
public ValidationResult(IssueSeverity severity, String message, TerminologyServiceErrorClass errorClass) {
this.severity = severity;
this.message = message;
this.errorClass = errorClass;
}
public boolean isOk() { public boolean isOk() {
return definition != null; return definition != null;
} }
public String getDisplay() { public String getDisplay() {
return definition == null ? "??" : definition.getDisplay(); // We don't want to return question-marks because that prevents something more useful from being displayed (e.g. the code) if there's no display value
// return definition == null ? "??" : definition.getDisplay();
return definition == null ? null : definition.getDisplay();
} }
public ConceptDefinitionComponent asConceptDefinition() { public ConceptDefinitionComponent asConceptDefinition() {
@ -242,6 +260,16 @@ public interface IWorkerContext {
public String getMessage() { public String getMessage() {
return message; return message;
} }
public boolean IsNoService() {
return errorClass == TerminologyServiceErrorClass.NOSERVICE;
}
public TerminologyServiceErrorClass getErrorClass() {
return errorClass;
}
} }
/** /**
@ -314,4 +342,6 @@ public interface IWorkerContext {
} }
public void setLogger(ILoggingService logger); public void setLogger(ILoggingService logger);
public boolean isNoTerminologyServer();
} }

View File

@ -6,12 +6,10 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.Validate;
import org.hl7.fhir.dstu3.elementmodel.Element.SpecialElement;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
import org.hl7.fhir.dstu3.model.Base; import org.hl7.fhir.dstu3.model.Base;
import org.hl7.fhir.dstu3.model.ElementDefinition; import org.hl7.fhir.dstu3.model.ElementDefinition;
import org.hl7.fhir.dstu3.model.StructureDefinition; import org.hl7.fhir.dstu3.model.StructureDefinition;
import org.hl7.fhir.dstu3.model.StructureDefinition.StructureDefinitionKind; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.xhtml.XhtmlNode; import org.hl7.fhir.utilities.xhtml.XhtmlNode;

View File

@ -14,7 +14,7 @@ import org.hl7.fhir.dstu3.formats.IParser.OutputStyle;
import org.hl7.fhir.dstu3.formats.JsonCreator; import org.hl7.fhir.dstu3.formats.JsonCreator;
import org.hl7.fhir.dstu3.formats.JsonCreatorCanonical; import org.hl7.fhir.dstu3.formats.JsonCreatorCanonical;
import org.hl7.fhir.dstu3.formats.JsonCreatorGson; import org.hl7.fhir.dstu3.formats.JsonCreatorGson;
import org.hl7.fhir.dstu3.utils.IWorkerContext; import org.hl7.fhir.dstu3.context.IWorkerContext;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
public class JsonLDParser extends ParserBase { public class JsonLDParser extends ParserBase {

View File

@ -5,43 +5,28 @@ import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.OutputStreamWriter; import java.io.OutputStreamWriter;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.HashMap; import java.util.*;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set;
import org.apache.commons.lang3.NotImplementedException;
import org.hl7.fhir.dstu3.formats.IParser.OutputStyle;
import org.hl7.fhir.dstu3.model.StructureDefinition;
import org.hl7.fhir.dstu3.model.ElementDefinition.TypeRefComponent;
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity;
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueType;
import org.hl7.fhir.dstu3.elementmodel.Element.SpecialElement; import org.hl7.fhir.dstu3.elementmodel.Element.SpecialElement;
import org.hl7.fhir.dstu3.elementmodel.ParserBase.ValidationPolicy; import org.hl7.fhir.exceptions.DefinitionException;
import org.hl7.fhir.dstu3.exceptions.DefinitionException; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.dstu3.exceptions.FHIRFormatError; import org.hl7.fhir.dstu3.formats.IParser.OutputStyle;
import org.hl7.fhir.dstu3.formats.FormatUtilities;
import org.hl7.fhir.dstu3.formats.JsonCreator; import org.hl7.fhir.dstu3.formats.JsonCreator;
import org.hl7.fhir.dstu3.formats.JsonCreatorCanonical; import org.hl7.fhir.dstu3.formats.JsonCreatorCanonical;
import org.hl7.fhir.dstu3.formats.JsonCreatorGson; import org.hl7.fhir.dstu3.formats.JsonCreatorGson;
import org.hl7.fhir.dstu3.utils.IWorkerContext; import org.hl7.fhir.dstu3.model.ElementDefinition.TypeRefComponent;
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity;
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueType;
import org.hl7.fhir.dstu3.model.StructureDefinition;
import org.hl7.fhir.dstu3.context.IWorkerContext;
import org.hl7.fhir.dstu3.utils.JsonTrackingParser; import org.hl7.fhir.dstu3.utils.JsonTrackingParser;
import org.hl7.fhir.dstu3.utils.ToolingExtensions;
import org.hl7.fhir.dstu3.utils.JsonTrackingParser.LocationData; import org.hl7.fhir.dstu3.utils.JsonTrackingParser.LocationData;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.xhtml.XhtmlComposer;
import org.hl7.fhir.utilities.xhtml.XhtmlNode;
import org.hl7.fhir.utilities.xhtml.XhtmlParser; import org.hl7.fhir.utilities.xhtml.XhtmlParser;
import org.hl7.fhir.utilities.xml.XMLUtil;
import com.google.gson.JsonArray; import com.google.gson.*;
import com.google.gson.JsonElement;
import com.google.gson.JsonNull;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
public class JsonParser extends ParserBase { public class JsonParser extends ParserBase {

View File

@ -4,7 +4,7 @@ import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import org.hl7.fhir.dstu3.formats.IParser.OutputStyle; import org.hl7.fhir.dstu3.formats.IParser.OutputStyle;
import org.hl7.fhir.dstu3.utils.IWorkerContext; import org.hl7.fhir.dstu3.context.IWorkerContext;
public class Manager { public class Manager {

View File

@ -4,16 +4,11 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.util.List; import java.util.List;
import org.hl7.fhir.dstu3.exceptions.FHIRException; import org.hl7.fhir.dstu3.conformance.ProfileUtilities;
import org.hl7.fhir.dstu3.model.Base; import org.hl7.fhir.dstu3.context.IWorkerContext;
import org.hl7.fhir.dstu3.model.ElementDefinition; import org.hl7.fhir.dstu3.model.*;
import org.hl7.fhir.dstu3.model.PrimitiveType;
import org.hl7.fhir.dstu3.model.Resource;
import org.hl7.fhir.dstu3.model.StructureDefinition;
import org.hl7.fhir.dstu3.model.StructureDefinition.StructureDefinitionKind; import org.hl7.fhir.dstu3.model.StructureDefinition.StructureDefinitionKind;
import org.hl7.fhir.dstu3.model.Type; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.dstu3.utils.IWorkerContext;
import org.hl7.fhir.dstu3.utils.ProfileUtilities;
public class ObjectConverter { public class ObjectConverter {

View File

@ -2,27 +2,19 @@ package org.hl7.fhir.dstu3.elementmodel;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.hl7.fhir.dstu3.exceptions.DefinitionException; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.dstu3.exceptions.FHIRFormatError;
import org.hl7.fhir.dstu3.formats.FormatUtilities; import org.hl7.fhir.dstu3.formats.FormatUtilities;
import org.hl7.fhir.dstu3.formats.IParser.OutputStyle; import org.hl7.fhir.dstu3.formats.IParser.OutputStyle;
import org.hl7.fhir.dstu3.model.ElementDefinition;
import org.hl7.fhir.dstu3.model.OperationOutcome;
import org.hl7.fhir.dstu3.model.ElementDefinition.PropertyRepresentation;
import org.hl7.fhir.dstu3.model.ElementDefinition.TypeRefComponent;
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity; import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity;
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueType; import org.hl7.fhir.dstu3.model.OperationOutcome.IssueType;
import org.hl7.fhir.dstu3.model.StructureDefinition; import org.hl7.fhir.dstu3.model.StructureDefinition;
import org.hl7.fhir.dstu3.model.StructureDefinition.StructureDefinitionKind; import org.hl7.fhir.dstu3.model.StructureDefinition.StructureDefinitionKind;
import org.hl7.fhir.dstu3.utils.IWorkerContext; import org.hl7.fhir.dstu3.context.IWorkerContext;
import org.hl7.fhir.dstu3.utils.ProfileUtilities;
import org.hl7.fhir.dstu3.utils.ToolingExtensions; import org.hl7.fhir.dstu3.utils.ToolingExtensions;
import org.hl7.fhir.dstu3.validation.ValidationMessage; import org.hl7.fhir.dstu3.validation.ValidationMessage;
import org.hl7.fhir.dstu3.validation.ValidationMessage.Source; import org.hl7.fhir.dstu3.validation.ValidationMessage.Source;
import org.hl7.fhir.utilities.Utilities;
public abstract class ParserBase { public abstract class ParserBase {

View File

@ -3,15 +3,15 @@ package org.hl7.fhir.dstu3.elementmodel;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.hl7.fhir.dstu3.exceptions.DefinitionException; import org.hl7.fhir.exceptions.DefinitionException;
import org.hl7.fhir.dstu3.formats.FormatUtilities; import org.hl7.fhir.dstu3.formats.FormatUtilities;
import org.hl7.fhir.dstu3.model.ElementDefinition; import org.hl7.fhir.dstu3.model.ElementDefinition;
import org.hl7.fhir.dstu3.model.ElementDefinition.PropertyRepresentation; import org.hl7.fhir.dstu3.model.ElementDefinition.PropertyRepresentation;
import org.hl7.fhir.dstu3.model.ElementDefinition.TypeRefComponent; import org.hl7.fhir.dstu3.model.ElementDefinition.TypeRefComponent;
import org.hl7.fhir.dstu3.model.StructureDefinition.StructureDefinitionKind;
import org.hl7.fhir.dstu3.model.StructureDefinition; import org.hl7.fhir.dstu3.model.StructureDefinition;
import org.hl7.fhir.dstu3.utils.IWorkerContext; import org.hl7.fhir.dstu3.model.StructureDefinition.StructureDefinitionKind;
import org.hl7.fhir.dstu3.utils.ProfileUtilities; import org.hl7.fhir.dstu3.conformance.ProfileUtilities;
import org.hl7.fhir.dstu3.context.IWorkerContext;
import org.hl7.fhir.dstu3.utils.ToolingExtensions; import org.hl7.fhir.dstu3.utils.ToolingExtensions;
public class Property { public class Property {

View File

@ -4,7 +4,7 @@ import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import org.hl7.fhir.dstu3.formats.IParser.OutputStyle; import org.hl7.fhir.dstu3.formats.IParser.OutputStyle;
import org.hl7.fhir.dstu3.utils.IWorkerContext; import org.hl7.fhir.dstu3.context.IWorkerContext;
public class TurtleParser extends ParserBase { public class TurtleParser extends ParserBase {

View File

@ -1,10 +1,8 @@
package org.hl7.fhir.dstu3.elementmodel; package org.hl7.fhir.dstu3.elementmodel;
import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
@ -16,19 +14,17 @@ import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMResult; import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.sax.SAXSource; import javax.xml.transform.sax.SAXSource;
import org.apache.commons.lang3.NotImplementedException;
import org.hl7.fhir.dstu3.elementmodel.Element.SpecialElement; import org.hl7.fhir.dstu3.elementmodel.Element.SpecialElement;
import org.hl7.fhir.dstu3.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.dstu3.formats.FormatUtilities; import org.hl7.fhir.dstu3.formats.FormatUtilities;
import org.hl7.fhir.dstu3.formats.IParser.OutputStyle; import org.hl7.fhir.dstu3.formats.IParser.OutputStyle;
import org.hl7.fhir.dstu3.model.DateTimeType; import org.hl7.fhir.dstu3.model.DateTimeType;
import org.hl7.fhir.dstu3.model.ElementDefinition;
import org.hl7.fhir.dstu3.model.ElementDefinition.PropertyRepresentation; import org.hl7.fhir.dstu3.model.ElementDefinition.PropertyRepresentation;
import org.hl7.fhir.dstu3.model.Enumeration;
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity; import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity;
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueType; import org.hl7.fhir.dstu3.model.OperationOutcome.IssueType;
import org.hl7.fhir.dstu3.model.Enumeration;
import org.hl7.fhir.dstu3.model.StructureDefinition; import org.hl7.fhir.dstu3.model.StructureDefinition;
import org.hl7.fhir.dstu3.utils.IWorkerContext; import org.hl7.fhir.dstu3.context.IWorkerContext;
import org.hl7.fhir.dstu3.utils.ToolingExtensions; import org.hl7.fhir.dstu3.utils.ToolingExtensions;
import org.hl7.fhir.dstu3.utils.XmlLocationAnnotator; import org.hl7.fhir.dstu3.utils.XmlLocationAnnotator;
import org.hl7.fhir.dstu3.utils.XmlLocationData; import org.hl7.fhir.dstu3.utils.XmlLocationData;
@ -40,9 +36,7 @@ import org.hl7.fhir.utilities.xhtml.XhtmlParser;
import org.hl7.fhir.utilities.xml.IXMLWriter; import org.hl7.fhir.utilities.xml.IXMLWriter;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.hl7.fhir.utilities.xml.XMLWriter; import org.hl7.fhir.utilities.xml.XMLWriter;
import org.w3c.dom.Attr;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.xml.sax.InputSource; import org.xml.sax.InputSource;
import org.xml.sax.XMLReader; import org.xml.sax.XMLReader;

View File

@ -1,23 +0,0 @@
package org.hl7.fhir.dstu3.exceptions;
public class FHIRException extends Exception {
// Note that the 4-argument constructor has been removed as it is not JDK6 compatible
public FHIRException() {
super();
}
public FHIRException(String message, Throwable cause) {
super(message, cause);
}
public FHIRException(String message) {
super(message);
}
public FHIRException(Throwable cause) {
super(cause);
}
}

View File

@ -1,23 +0,0 @@
package org.hl7.fhir.dstu3.exceptions;
public class FHIRFormatError extends FHIRException {
private static final long serialVersionUID = 1L;
public FHIRFormatError() {
super();
}
public FHIRFormatError(String message, Throwable cause) {
super(message, cause);
}
public FHIRFormatError(String message) {
super(message);
}
public FHIRFormatError(Throwable cause) {
super(cause);
}
}

View File

@ -1,21 +0,0 @@
package org.hl7.fhir.dstu3.exceptions;
public class TerminologyServiceException extends FHIRException {
public TerminologyServiceException() {
super();
}
public TerminologyServiceException(String message, Throwable cause) {
super(message, cause);
}
public TerminologyServiceException(String message) {
super(message);
}
public TerminologyServiceException(Throwable cause) {
super(cause);
}
}

View File

@ -1,21 +0,0 @@
package org.hl7.fhir.dstu3.exceptions;
public class UcumException extends FHIRException {
public UcumException() {
super();
}
public UcumException(String message, Throwable cause) {
super(message, cause);
}
public UcumException(String message) {
super(message);
}
public UcumException(Throwable cause) {
super(cause);
}
}

View File

@ -37,7 +37,7 @@ import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import org.hl7.fhir.dstu3.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.dstu3.model.Resource; import org.hl7.fhir.dstu3.model.Resource;
import org.hl7.fhir.dstu3.model.Type; import org.hl7.fhir.dstu3.model.Type;
import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserException;

View File

@ -40,7 +40,7 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.hl7.fhir.dstu3.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.dstu3.model.Resource; import org.hl7.fhir.dstu3.model.Resource;
import org.hl7.fhir.dstu3.model.Type; import org.hl7.fhir.dstu3.model.Type;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;

View File

@ -28,22 +28,12 @@ POSSIBILITY OF SUCH DAMAGE.
*/ */
import java.io.BufferedInputStream; import java.io.*;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.hl7.fhir.dstu3.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.dstu3.model.Base; import org.hl7.fhir.dstu3.model.*;
import org.hl7.fhir.dstu3.model.DomainResource;
import org.hl7.fhir.dstu3.model.Element;
import org.hl7.fhir.dstu3.model.Resource;
import org.hl7.fhir.dstu3.model.StringType;
import org.hl7.fhir.dstu3.model.Type;
import org.hl7.fhir.instance.model.api.IIdType; import org.hl7.fhir.instance.model.api.IIdType;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.xhtml.NodeType; import org.hl7.fhir.utilities.xhtml.NodeType;

View File

@ -28,16 +28,8 @@ import org.apache.commons.lang3.StringUtils;
import org.hl7.fhir.dstu3.hapi.rest.server.Dstu3BundleFactory; import org.hl7.fhir.dstu3.hapi.rest.server.Dstu3BundleFactory;
import org.hl7.fhir.dstu3.hapi.rest.server.ServerConformanceProvider; import org.hl7.fhir.dstu3.hapi.rest.server.ServerConformanceProvider;
import org.hl7.fhir.dstu3.hapi.rest.server.ServerProfileProvider; import org.hl7.fhir.dstu3.hapi.rest.server.ServerProfileProvider;
import org.hl7.fhir.dstu3.model.Coding; import org.hl7.fhir.dstu3.model.*;
import org.hl7.fhir.dstu3.model.IdType; import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.model.Reference;
import org.hl7.fhir.dstu3.model.Resource;
import org.hl7.fhir.dstu3.model.StructureDefinition;
import org.hl7.fhir.instance.model.api.IBaseCoding;
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.ConfigurationException; import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.FhirContext;

View File

@ -22,44 +22,20 @@ import static org.apache.commons.lang3.StringUtils.isBlank;
*/ */
import static org.apache.commons.lang3.StringUtils.isNotBlank; import static org.apache.commons.lang3.StringUtils.isNotBlank;
import java.util.ArrayList; import java.util.*;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import javax.servlet.ServletContext; import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.hl7.fhir.dstu3.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.dstu3.model.Conformance; import org.hl7.fhir.dstu3.model.*;
import org.hl7.fhir.dstu3.model.Conformance.ConditionalDeleteStatus; import org.hl7.fhir.dstu3.model.Conformance.*;
import org.hl7.fhir.dstu3.model.Conformance.ConformanceRestComponent;
import org.hl7.fhir.dstu3.model.Conformance.ConformanceRestResourceComponent;
import org.hl7.fhir.dstu3.model.Conformance.ConformanceRestResourceSearchParamComponent;
import org.hl7.fhir.dstu3.model.Conformance.ConformanceStatementKind;
import org.hl7.fhir.dstu3.model.Conformance.ResourceInteractionComponent;
import org.hl7.fhir.dstu3.model.Conformance.RestfulConformanceMode;
import org.hl7.fhir.dstu3.model.Conformance.SystemRestfulInteraction;
import org.hl7.fhir.dstu3.model.Conformance.TypeRestfulInteraction;
import org.hl7.fhir.dstu3.model.Conformance.UnknownContentCode;
import org.hl7.fhir.dstu3.model.DateTimeType;
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatus; import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatus;
import org.hl7.fhir.dstu3.model.IdType;
import org.hl7.fhir.dstu3.model.OperationDefinition;
import org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent; import org.hl7.fhir.dstu3.model.OperationDefinition.OperationDefinitionParameterComponent;
import org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind; import org.hl7.fhir.dstu3.model.OperationDefinition.OperationKind;
import org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse; import org.hl7.fhir.dstu3.model.OperationDefinition.OperationParameterUse;
import org.hl7.fhir.dstu3.model.Reference;
import org.hl7.fhir.dstu3.model.ResourceType;
import org.hl7.fhir.instance.model.api.IBaseResource; import org.hl7.fhir.instance.model.api.IBaseResource;
import ca.uhn.fhir.context.FhirVersionEnum; import ca.uhn.fhir.context.FhirVersionEnum;
@ -70,14 +46,8 @@ import ca.uhn.fhir.rest.annotation.IdParam;
import ca.uhn.fhir.rest.annotation.Initialize; import ca.uhn.fhir.rest.annotation.Initialize;
import ca.uhn.fhir.rest.annotation.Metadata; import ca.uhn.fhir.rest.annotation.Metadata;
import ca.uhn.fhir.rest.annotation.Read; import ca.uhn.fhir.rest.annotation.Read;
import ca.uhn.fhir.rest.method.BaseMethodBinding; import ca.uhn.fhir.rest.method.*;
import ca.uhn.fhir.rest.method.DynamicSearchMethodBinding;
import ca.uhn.fhir.rest.method.IParameter;
import ca.uhn.fhir.rest.method.OperationMethodBinding;
import ca.uhn.fhir.rest.method.OperationMethodBinding.ReturnType; import ca.uhn.fhir.rest.method.OperationMethodBinding.ReturnType;
import ca.uhn.fhir.rest.method.OperationParameter;
import ca.uhn.fhir.rest.method.RestSearchParameterTypeEnum;
import ca.uhn.fhir.rest.method.SearchMethodBinding;
import ca.uhn.fhir.rest.method.SearchParameter; import ca.uhn.fhir.rest.method.SearchParameter;
import ca.uhn.fhir.rest.server.Constants; import ca.uhn.fhir.rest.server.Constants;
import ca.uhn.fhir.rest.server.IServerConformanceProvider; import ca.uhn.fhir.rest.server.IServerConformanceProvider;

View File

@ -4,23 +4,14 @@ import static org.apache.commons.lang3.StringUtils.isNotBlank;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.io.Charsets; import org.apache.commons.io.Charsets;
import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.Validate;
import org.hl7.fhir.dstu3.model.Bundle; import org.hl7.fhir.dstu3.model.*;
import org.hl7.fhir.dstu3.model.Bundle.BundleEntryComponent; import org.hl7.fhir.dstu3.model.Bundle.BundleEntryComponent;
import org.hl7.fhir.dstu3.model.CodeSystem;
import org.hl7.fhir.dstu3.model.DomainResource;
import org.hl7.fhir.dstu3.model.CodeSystem.ConceptDefinitionComponent; import org.hl7.fhir.dstu3.model.CodeSystem.ConceptDefinitionComponent;
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity; import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity;
import org.hl7.fhir.dstu3.model.StructureDefinition;
import org.hl7.fhir.dstu3.model.ValueSet;
import org.hl7.fhir.dstu3.model.ValueSet.ConceptReferenceComponent; import org.hl7.fhir.dstu3.model.ValueSet.ConceptReferenceComponent;
import org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent; import org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent;
import org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionComponent; import org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionComponent;

View File

@ -161,7 +161,7 @@ public class FhirInstanceValidator extends BaseValidatorBridge implements IValid
StructureDefinition profile = findStructureDefinitionForResourceName(theCtx, resourceName); StructureDefinition profile = findStructureDefinitionForResourceName(theCtx, resourceName);
if (profile != null) { if (profile != null) {
try { try {
v.validate(messages, document, profile); v.validate(null, messages, document, profile);
} catch (Exception e) { } catch (Exception e) {
throw new InternalErrorException("Unexpected failure while validating resource", e); throw new InternalErrorException("Unexpected failure while validating resource", e);
} }
@ -174,7 +174,7 @@ public class FhirInstanceValidator extends BaseValidatorBridge implements IValid
StructureDefinition profile = findStructureDefinitionForResourceName(theCtx, resourceName); StructureDefinition profile = findStructureDefinitionForResourceName(theCtx, resourceName);
if (profile != null) { if (profile != null) {
try { try {
v.validate(messages, json, profile); v.validate(null, messages, json, profile);
} catch (Exception e) { } catch (Exception e) {
throw new InternalErrorException("Unexpected failure while validating resource", e); throw new InternalErrorException("Unexpected failure while validating resource", e);
} }

View File

@ -1,32 +1,18 @@
package org.hl7.fhir.dstu3.hapi.validation; package org.hl7.fhir.dstu3.hapi.validation;
import java.io.FileNotFoundException; import static org.apache.commons.lang3.StringUtils.isBlank;
import java.io.IOException; import static org.apache.commons.lang3.StringUtils.isNotBlank;
import java.util.ArrayList;
import java.util.Arrays; import java.util.*;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.Validate;
import org.hl7.fhir.dstu3.context.IWorkerContext.ILoggingService;
import org.hl7.fhir.dstu3.formats.IParser; import org.hl7.fhir.dstu3.formats.IParser;
import org.hl7.fhir.dstu3.formats.ParserType; import org.hl7.fhir.dstu3.formats.ParserType;
import org.hl7.fhir.dstu3.hapi.validation.IValidationSupport.CodeValidationResult; import org.hl7.fhir.dstu3.hapi.validation.IValidationSupport.CodeValidationResult;
import org.hl7.fhir.dstu3.model.BaseConformance; import org.hl7.fhir.dstu3.model.*;
import org.hl7.fhir.dstu3.model.CodeSystem;
import org.hl7.fhir.dstu3.model.CodeSystem.ConceptDefinitionComponent; import org.hl7.fhir.dstu3.model.CodeSystem.ConceptDefinitionComponent;
import org.hl7.fhir.dstu3.model.CodeableConcept;
import org.hl7.fhir.dstu3.model.Coding;
import org.hl7.fhir.dstu3.model.ConceptMap;
import org.hl7.fhir.dstu3.model.ExpansionProfile;
import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity; import org.hl7.fhir.dstu3.model.OperationOutcome.IssueSeverity;
import org.hl7.fhir.dstu3.model.Resource;
import org.hl7.fhir.dstu3.model.ResourceType;
import org.hl7.fhir.dstu3.model.StructureDefinition;
import org.hl7.fhir.dstu3.model.ValueSet;
import org.hl7.fhir.dstu3.model.ValueSet.ConceptReferenceComponent; import org.hl7.fhir.dstu3.model.ValueSet.ConceptReferenceComponent;
import org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent; import org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent;
import org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionComponent; import org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionComponent;
@ -35,7 +21,7 @@ import org.hl7.fhir.dstu3.terminologies.ValueSetExpander;
import org.hl7.fhir.dstu3.terminologies.ValueSetExpanderFactory; import org.hl7.fhir.dstu3.terminologies.ValueSetExpanderFactory;
import org.hl7.fhir.dstu3.terminologies.ValueSetExpanderSimple; import org.hl7.fhir.dstu3.terminologies.ValueSetExpanderSimple;
import org.hl7.fhir.dstu3.utils.INarrativeGenerator; import org.hl7.fhir.dstu3.utils.INarrativeGenerator;
import org.hl7.fhir.dstu3.utils.IWorkerContext; import org.hl7.fhir.dstu3.context.IWorkerContext;
import org.hl7.fhir.dstu3.validation.IResourceValidator; import org.hl7.fhir.dstu3.validation.IResourceValidator;
import org.hl7.fhir.exceptions.TerminologyServiceException; import org.hl7.fhir.exceptions.TerminologyServiceException;
@ -208,9 +194,27 @@ public final class HapiWorkerContext implements IWorkerContext, ValueSetExpander
@Override @Override
public ValidationResult validateCode(String theSystem, String theCode, String theDisplay, ValueSet theVs) { public ValidationResult validateCode(String theSystem, String theCode, String theDisplay, ValueSet theVs) {
if (theVs != null && isNotBlank(theCode)) {
for (ConceptSetComponent next : theVs.getCompose().getInclude()) {
if (isBlank(theSystem) || theSystem.equals(next.getSystem())) {
for (ConceptReferenceComponent nextCode : next.getConcept()) {
if (theCode.equals(nextCode.getCode())) {
CodeType code = new CodeType(theCode);
return new ValidationResult(new ConceptDefinitionComponent(code));
}
}
}
}
}
boolean caseSensitive = true; boolean caseSensitive = true;
CodeSystem system = fetchCodeSystem(theSystem); if (isNotBlank(theSystem)) {
if (system != null) { CodeSystem system = fetchCodeSystem(theSystem);
if (system == null) {
return new ValidationResult(IssueSeverity.INFORMATION, "Code " + theSystem + "/" + theCode + " was not validated because the code system is not present");
}
if (system.hasCaseSensitive()) { if (system.hasCaseSensitive()) {
caseSensitive = system.getCaseSensitive(); caseSensitive = system.getCaseSensitive();
} }
@ -233,29 +237,13 @@ public final class HapiWorkerContext implements IWorkerContext, ValueSetExpander
expansion.getExpansion().addContains().setCode(nextConcept.getCode()).setDisplay(nextConcept.getDisplay()); expansion.getExpansion().addContains().setCode(nextConcept.getCode()).setDisplay(nextConcept.getDisplay());
} }
} }
expandedValueSet= new ValueSetExpansionOutcome(expansion); expandedValueSet = new ValueSetExpansionOutcome(expansion);
} }
// if (theVs.getCompose().hasExclude() == false) {
// if (theVs.getCompose().hasImport() == false) {
// if (theVs.getCompose().hasInclude()) {
// for (ConceptSetComponent nextInclude : theVs.getCompose().getInclude()) {
// if (nextInclude.hasFilter() == false) {
// if (nextInclude.hasConcept() == false) {
// if (nextInclude.hasSystem()) {
//
// }
// }
// }
// }
// }
// }
// }
if (expandedValueSet == null) { if (expandedValueSet == null) {
expandedValueSet = expand(theVs, null); expandedValueSet = expand(theVs, null);
} }
for (ValueSetExpansionContainsComponent next : expandedValueSet.getValueset().getExpansion().getContains()) { for (ValueSetExpansionContainsComponent next : expandedValueSet.getValueset().getExpansion().getContains()) {
String nextCode = next.getCode(); String nextCode = next.getCode();
if (!caseSensitive) { if (!caseSensitive) {
@ -273,31 +261,6 @@ public final class HapiWorkerContext implements IWorkerContext, ValueSetExpander
} }
} }
// for (UriType nextComposeImport : theVs.getCompose().getImport()) {
// if (isNotBlank(nextComposeImport.getValue())) {
// aaa
// }
// }
// for (ConceptSetComponent nextComposeConceptSet : theVs.getCompose().getInclude()) {
// if (theSystem == null || StringUtils.equals(theSystem, nextComposeConceptSet.getSystem())) {
// if (nextComposeConceptSet.getConcept().isEmpty()) {
// ValidationResult retVal = validateCode(nextComposeConceptSet.getSystem(), theCode, theDisplay);
// if (retVal != null && retVal.isOk()) {
// return retVal;
// }
// } else {
// for (ConceptReferenceComponent nextComposeCode : nextComposeConceptSet.getConcept()) {
// ConceptDefinitionComponent conceptDef = new ConceptDefinitionComponent();
// conceptDef.setCode(nextComposeCode.getCode());
// conceptDef.setDisplay(nextComposeCode.getDisplay());
// ValidationResult retVal = validateCodeSystem(theCode, conceptDef);
// if (retVal != null && retVal.isOk()) {
// return retVal;
// }
// }
// }
// }
// }
return new ValidationResult(IssueSeverity.ERROR, "Unknown code[" + theCode + "] in system[" + theSystem + "]"); return new ValidationResult(IssueSeverity.ERROR, "Unknown code[" + theCode + "] in system[" + theSystem + "]");
} }
@ -355,4 +318,14 @@ public final class HapiWorkerContext implements IWorkerContext, ValueSetExpander
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@Override
public String getVersion() {
return myCtx.getVersion().getVersion().getFhirVersionString();
}
@Override
public boolean isNoTerminologyServer() {
return false;
}
} }

View File

@ -9,7 +9,6 @@ import java.util.Set;
import org.hl7.fhir.dstu3.model.CodeSystem; import org.hl7.fhir.dstu3.model.CodeSystem;
import org.hl7.fhir.dstu3.model.StructureDefinition; import org.hl7.fhir.dstu3.model.StructureDefinition;
import org.hl7.fhir.dstu3.model.ValueSet;
import org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent; import org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent;
import org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionComponent; import org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionComponent;
import org.hl7.fhir.instance.model.api.IBaseResource; import org.hl7.fhir.instance.model.api.IBaseResource;

View File

@ -30,18 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A financial tool for tracking value accrued for a particular purpose. In the healthcare field, used to track charges for a patient, cost centres, etc. * A financial tool for tracking value accrued for a particular purpose. In the healthcare field, used to track charges for a patient, cost centres, etc.
*/ */

View File

@ -30,18 +30,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* This resource allows for the definition of some activity to be performed, independent of a particular patient, practitioner, or other performance context. * This resource allows for the definition of some activity to be performed, independent of a particular patient, practitioner, or other performance context.
*/ */

View File

@ -30,17 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.ICompositeType;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block; import ca.uhn.fhir.model.api.annotation.Description;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* An address expressed using postal conventions (as opposed to GPS or other location definition formats). This data type may be used to convey addresses for use in delivering mail as well as for visiting locations and which might not be valid for mail delivery. There are a variety of postal address formats defined around the world. * An address expressed using postal conventions (as opposed to GPS or other location definition formats). This data type may be used to convey addresses for use in delivering mail as well as for visiting locations and which might not be valid for mail delivery. There are a variety of postal address formats defined around the world.
*/ */

View File

@ -30,16 +30,12 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.ICompositeType;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A duration of time during which an organism (or a process) has existed. * A duration of time during which an organism (or a process) has existed.
*/ */

View File

@ -30,18 +30,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Risk of harmful or undesirable, physiological response which is unique to an individual and associated with exposure to a substance. * Risk of harmful or undesirable, physiological response which is unique to an individual and associated with exposure to a substance.
*/ */

View File

@ -30,17 +30,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.ICompositeType;
import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block; import ca.uhn.fhir.model.api.annotation.Description;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A text note which also contains information about who made the statement and when. * A text note which also contains information about who made the statement and when.
*/ */

View File

@ -30,18 +30,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s). * A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s).
*/ */

View File

@ -30,18 +30,17 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection. * A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection.
*/ */

View File

@ -30,18 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.ICompositeType;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block; import ca.uhn.fhir.model.api.annotation.Description;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* For referring to data content defined in other formats. * For referring to data content defined in other formats.
*/ */

View File

@ -30,19 +30,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A record of an event made for purposes of maintaining a security log. Typical uses include detection of intrusion attempts and monitoring for inappropriate usage. * A record of an event made for purposes of maintaining a security log. Typical uses include detection of intrusion attempts and monitoring for inappropriate usage.
*/ */

View File

@ -30,16 +30,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block; import ca.uhn.fhir.model.api.annotation.Description;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Base definition for all elements that are defined inside a resource - but not those in a data type. * Base definition for all elements that are defined inside a resource - but not those in a data type.
*/ */

View File

@ -3,11 +3,10 @@ package org.hl7.fhir.dstu3.model;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.hl7.fhir.dstu3.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBase; import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.utilities.xhtml.XhtmlNode; import org.hl7.fhir.utilities.xhtml.XhtmlNode;

View File

@ -30,19 +30,17 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatus;
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatusEnumFactory;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description; import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* null * null
*/ */

View File

@ -1,10 +1,6 @@
package org.hl7.fhir.dstu3.model; package org.hl7.fhir.dstu3.model;
import org.hl7.fhir.instance.model.api.IAnyResource; import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.instance.model.api.IBaseReference;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.ICompositeType;
import org.hl7.fhir.instance.model.api.IIdType;
public abstract class BaseReference extends Type implements IBaseReference, ICompositeType { public abstract class BaseReference extends Type implements IBaseReference, ICompositeType {

View File

@ -30,17 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Basic is used for handling concepts not yet defined in FHIR, narrative-only resources that don't map to an existing resource, and custom resources not appropriate for inclusion in the FHIR specification. * Basic is used for handling concepts not yet defined in FHIR, narrative-only resources that don't map to an existing resource, and custom resources not appropriate for inclusion in the FHIR specification.
*/ */

View File

@ -30,19 +30,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBinary;
import org.hl7.fhir.utilities.Utilities; import ca.uhn.fhir.model.api.annotation.Child;
import org.hl7.fhir.dstu3.model.Enumerations.*; import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A binary resource can contain any content, whether text, image, pdf, zip archive, etc. * A binary resource can contain any content, whether text, image, pdf, zip archive, etc.
*/ */

View File

@ -30,18 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Record details about the anatomical location of a specimen or body part. This resource may be used when a coded concept does not provide the necessary detail needed for the use case. * Record details about the anatomical location of a specimen or body part. This resource may be used when a coded concept does not provide the necessary detail needed for the use case.
*/ */

View File

@ -1,5 +1,7 @@
package org.hl7.fhir.dstu3.model; package org.hl7.fhir.dstu3.model;
import java.math.BigDecimal;
/* /*
Copyright (c) 2011+, HL7, Inc. Copyright (c) 2011+, HL7, Inc.
All rights reserved. All rights reserved.
@ -30,19 +32,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import java.math.*; import org.hl7.fhir.instance.model.api.IBaseBundle;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A container for a collection of resources. * A container for a collection of resources.
*/ */

View File

@ -30,18 +30,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Describes the intention of how one or more practitioners intend to deliver care for a particular patient, group or community for a period of time, possibly limited to care for a specific condition or set of conditions. * Describes the intention of how one or more practitioners intend to deliver care for a particular patient, group or community for a period of time, possibly limited to care for a specific condition or set of conditions.
*/ */

View File

@ -30,18 +30,14 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* The Care Team includes all the people and organizations who plan to participate in the coordination and delivery of care for a patient. * The Care Team includes all the people and organizations who plan to participate in the coordination and delivery of care for a patient.
*/ */

View File

@ -1,5 +1,7 @@
package org.hl7.fhir.dstu3.model; package org.hl7.fhir.dstu3.model;
import java.math.BigDecimal;
/* /*
Copyright (c) 2011+, HL7, Inc. Copyright (c) 2011+, HL7, Inc.
All rights reserved. All rights reserved.
@ -30,20 +32,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import java.math.*;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A provider issued list of services and products provided, or to be provided, to a patient which is provided to an insurer for payment recovery. * A provider issued list of services and products provided, or to be provided, to a patient which is provided to an insurer for payment recovery.
*/ */

View File

@ -1,5 +1,7 @@
package org.hl7.fhir.dstu3.model; package org.hl7.fhir.dstu3.model;
import java.math.BigDecimal;
/* /*
Copyright (c) 2011+, HL7, Inc. Copyright (c) 2011+, HL7, Inc.
All rights reserved. All rights reserved.
@ -30,20 +32,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import java.math.*;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* This resource provides the adjudication details from the processing of a Claim resource. * This resource provides the adjudication details from the processing of a Claim resource.
*/ */

View File

@ -30,18 +30,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A record of a clinical assessment performed to determine what problem(s) may affect the patient and before planning the treatments or management strategies that are best to manage a patient's condition. Assessments are often 1:1 with a clinical consultation / encounter, but this varies greatly depending on the clinical workflow. This resource is called "ClinicalImpression" rather than "ClinicalAssessment" to avoid confusion with the recording of assessment tools such as Apgar score. * A record of a clinical assessment performed to determine what problem(s) may affect the patient and before planning the treatments or management strategies that are best to manage a patient's condition. Assessments are often 1:1 with a clinical consultation / encounter, but this varies greatly depending on the clinical workflow. This resource is called "ClinicalImpression" rather than "ClinicalAssessment" to avoid confusion with the recording of assessment tools such as Apgar score.
*/ */

View File

@ -30,19 +30,17 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatus;
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatusEnumFactory;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A code system resource specifies a set of codes drawn from one or more code systems. * A code system resource specifies a set of codes drawn from one or more code systems.
*/ */

View File

@ -30,17 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.ICompositeType;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block; import ca.uhn.fhir.model.api.annotation.Description;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A concept that may be defined by a formal reference to a terminology or ontology or may be provided by text. * A concept that may be defined by a formal reference to a terminology or ontology or may be provided by text.
*/ */

View File

@ -30,17 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseCoding;
import org.hl7.fhir.instance.model.api.ICompositeType;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block; import ca.uhn.fhir.model.api.annotation.Description;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A reference to a code defined by a terminology system. * A reference to a code defined by a terminology system.
*/ */

View File

@ -30,18 +30,14 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* An occurrence of information being transmitted; e.g. an alert that was sent to a responsible provider, a public health agency was notified about a reportable condition. * An occurrence of information being transmitted; e.g. an alert that was sent to a responsible provider, a public health agency was notified about a reportable condition.
*/ */

View File

@ -30,18 +30,14 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A request to convey information; e.g. the CDS system proposes that an alert be sent to a responsible provider, the CDS system proposes that the public health agency be notified about a reportable condition. * A request to convey information; e.g. the CDS system proposes that an alert be sent to a responsible provider, the CDS system proposes that the public health agency be notified about a reportable condition.
*/ */

View File

@ -3,7 +3,7 @@ package org.hl7.fhir.dstu3.model;
import java.util.List; import java.util.List;
import org.apache.commons.lang3.NotImplementedException; import org.apache.commons.lang3.NotImplementedException;
import org.hl7.fhir.dstu3.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
/** /**

View File

@ -30,19 +30,17 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatus;
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatusEnumFactory;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A compartment definition that defines how resources are accessed on a server. * A compartment definition that defines how resources are accessed on a server.
*/ */

View File

@ -30,18 +30,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A set of healthcare-related information that is assembled together into a single logical document that provides a single coherent statement of meaning, establishes its own context and that has clinical attestation with regard to who is making the statement. While a Composition defines the structure, it does not actually contain the content: rather the full content of a document is contained in a Bundle, of which the Composition is the first resource contained. * A set of healthcare-related information that is assembled together into a single logical document that provides a single coherent statement of meaning, establishes its own context and that has clinical attestation with regard to who is making the statement. While a Composition defines the structure, it does not actually contain the content: rather the full content of a document is contained in a Bundle, of which the Composition is the first resource contained.
*/ */

View File

@ -30,19 +30,19 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.dstu3.model.Enumerations.ConceptMapEquivalence;
import org.hl7.fhir.dstu3.model.Enumerations.ConceptMapEquivalenceEnumFactory;
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatus;
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatusEnumFactory;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A statement of relationships from one set of concepts to one or more other concepts - either code systems or data elements, or classes in class models. * A statement of relationships from one set of concepts to one or more other concepts - either code systems or data elements, or classes in class models.
*/ */

View File

@ -30,18 +30,14 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Use to record detailed information about conditions, problems or diagnoses recognized by a clinician. There are many uses including: recording a diagnosis during an encounter; populating a problem list or a summary statement, such as a discharge summary. * Use to record detailed information about conditions, problems or diagnoses recognized by a clinician. There are many uses including: recording a diagnosis during an encounter; populating a problem list or a summary statement, such as a discharge summary.
*/ */

View File

@ -30,19 +30,20 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatus;
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatusEnumFactory;
import org.hl7.fhir.dstu3.model.Enumerations.SearchParamType;
import org.hl7.fhir.dstu3.model.Enumerations.SearchParamTypeEnumFactory;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.instance.model.api.IBaseConformance;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* 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. * 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.
*/ */

View File

@ -30,19 +30,14 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import ca.uhn.fhir.model.api.annotation.*;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A record of a healthcare consumers policy choices, which permits or denies identified recipient(s) or recipient role(s) to perform one or more actions within a given policy context, for specific purposes and periods of time. * A record of a healthcare consumers policy choices, which permits or denies identified recipient(s) or recipient role(s) to perform one or more actions within a given policy context, for specific purposes and periods of time.
*/ */

View File

@ -30,17 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.ICompositeType;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block; import ca.uhn.fhir.model.api.annotation.Description;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Specifies contact information for a person or organization. * Specifies contact information for a person or organization.
*/ */

View File

@ -30,17 +30,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.ICompositeType;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block; import ca.uhn.fhir.model.api.annotation.Description;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Details for all kinds of technology mediated contact points for a person or organization, including telephone, email, etc. * Details for all kinds of technology mediated contact points for a person or organization, including telephone, email, etc.
*/ */

View File

@ -1,5 +1,7 @@
package org.hl7.fhir.dstu3.model; package org.hl7.fhir.dstu3.model;
import java.math.BigDecimal;
/* /*
Copyright (c) 2011+, HL7, Inc. Copyright (c) 2011+, HL7, Inc.
All rights reserved. All rights reserved.
@ -30,19 +32,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import java.math.*;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A formal agreement between parties regarding the conduct of business, exchange of information or other matters. * A formal agreement between parties regarding the conduct of business, exchange of information or other matters.
*/ */

View File

@ -30,17 +30,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.ICompositeType;
import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block; import ca.uhn.fhir.model.api.annotation.Description;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A contributor to the content of a knowledge asset, including authors, editors, reviewers, and endorsers. * A contributor to the content of a knowledge asset, including authors, editors, reviewers, and endorsers.
*/ */

View File

@ -30,16 +30,12 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.ICompositeType;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies. * A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies.
*/ */

View File

@ -30,18 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Financial instrument which may be used to pay for or reimburse health care products and services. * Financial instrument which may be used to pay for or reimburse health care products and services.
*/ */

View File

@ -30,19 +30,17 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatus;
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatusEnumFactory;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* The formal description of a single piece of information that can be gathered and reported. * The formal description of a single piece of information that can be gathered and reported.
*/ */

View File

@ -30,18 +30,17 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseDatatypeElement;
import org.hl7.fhir.instance.model.api.ICompositeType;
import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block; import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*; import ca.uhn.fhir.model.api.annotation.Child;
import org.hl7.fhir.dstu3.exceptions.FHIRException; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Description;
/** /**
* Describes a required data item for evaluation in terms of the type of data, and optional code- or date-based filters of the data. * Describes a required data item for evaluation in terms of the type of data, and optional code- or date-based filters of the data.
*/ */

View File

@ -30,18 +30,17 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* The DecisionSupportServiceModule describes a unit of decision support functionality that is made available as a service, such as immunization modules or drug-drug interaction checking. * The DecisionSupportServiceModule describes a unit of decision support functionality that is made available as a service, such as immunization modules or drug-drug interaction checking.
*/ */

View File

@ -30,18 +30,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Indicates an actual or potential clinical issue with or between one or more active or proposed clinical actions for a patient; e.g. Drug-drug interaction, Ineffective treatment frequency, Procedure-condition conflict, etc. * Indicates an actual or potential clinical issue with or between one or more active or proposed clinical actions for a patient; e.g. Drug-drug interaction, Ineffective treatment frequency, Procedure-condition conflict, etc.
*/ */

View File

@ -30,18 +30,17 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* This resource identifies an instance or a type of a manufactured item that is used in the provision of healthcare without being substantially changed through that activity. The device may be a medical or non-medical device. Medical devices includes durable (reusable) medical equipment, implantable devices, as well as disposable equipment used for diagnostic, treatment, and research for healthcare and public health. Non-medical devices may include items such as a machine, cellphone, computer, application, etc. * This resource identifies an instance or a type of a manufactured item that is used in the provision of healthcare without being substantially changed through that activity. The device may be a medical or non-medical device. Medical devices includes durable (reusable) medical equipment, implantable devices, as well as disposable equipment used for diagnostic, treatment, and research for healthcare and public health. Non-medical devices may include items such as a machine, cellphone, computer, application, etc.
*/ */

View File

@ -30,19 +30,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Describes the characteristics, operational status and capabilities of a medical-related component of a medical device. * Describes the characteristics, operational status and capabilities of a medical-related component of a medical device.
*/ */

View File

@ -30,18 +30,14 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Describes a measurement, calculation or setting capability of a medical device. * Describes a measurement, calculation or setting capability of a medical device.
*/ */

View File

@ -30,18 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Represents a request for a patient to employ a medical device. The device may be an implantable device, or an external assistive device, such as a walker. * Represents a request for a patient to employ a medical device. The device may be an implantable device, or an external assistive device, such as a walker.
*/ */

View File

@ -30,18 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A record of a device being used by a patient where the record is the result of a report from the patient or another clinician. * A record of a device being used by a patient where the record is the result of a report from the patient or another clinician.
*/ */

View File

@ -30,18 +30,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* The findings and interpretation of diagnostic tests performed on patients, groups of patients, devices, and locations, and/or specimens derived from these. The report includes clinical context such as requesting and provider information, and some mix of atomic results, images, textual and coded interpretations, and formatted representation of diagnostic reports. * The findings and interpretation of diagnostic tests performed on patients, groups of patients, devices, and locations, and/or specimens derived from these. The report includes clinical context such as requesting and provider information, and some mix of atomic results, images, textual and coded interpretations, and formatted representation of diagnostic reports.
*/ */

View File

@ -30,18 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A record of a request for a diagnostic investigation service to be performed. * A record of a request for a diagnostic investigation service to be performed.
*/ */

View File

@ -30,16 +30,12 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.ICompositeType;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A length - a value with a unit that is a physical distance. * A length - a value with a unit that is a physical distance.
*/ */

View File

@ -30,19 +30,17 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.dstu3.model.Enumerations.DocumentReferenceStatus;
import org.hl7.fhir.dstu3.model.Enumerations.DocumentReferenceStatusEnumFactory;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A manifest that defines a set of documents. * A manifest that defines a set of documents.
*/ */

View File

@ -30,19 +30,17 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.dstu3.model.Enumerations.DocumentReferenceStatus;
import org.hl7.fhir.dstu3.model.Enumerations.DocumentReferenceStatusEnumFactory;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A reference to a document . * A reference to a document .
*/ */

View File

@ -30,17 +30,17 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseHasExtensions;
import org.hl7.fhir.instance.model.api.IBaseHasModifierExtensions;
import org.hl7.fhir.instance.model.api.IDomainResource;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description; import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A resource that includes narrative, extensions, and contained resources. * A resource that includes narrative, extensions, and contained resources.
*/ */

View File

@ -30,16 +30,12 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.ICompositeType;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* A length of time. * A length of time.
*/ */

View File

@ -30,17 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseElement;
import org.hl7.fhir.instance.model.api.IBaseHasExtensions;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description; import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Base definition for all elements in a resource. * Base definition for all elements in a resource.
*/ */

View File

@ -30,18 +30,20 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.dstu3.model.Enumerations.BindingStrength;
import org.hl7.fhir.dstu3.model.Enumerations.BindingStrengthEnumFactory;
import org.hl7.fhir.instance.model.api.IBaseDatatypeElement;
import org.hl7.fhir.instance.model.api.ICompositeType;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block; import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*; import ca.uhn.fhir.model.api.annotation.Child;
import org.hl7.fhir.dstu3.exceptions.FHIRException; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Description;
/** /**
* Captures constraints on each element within the resource, profile, or extension. * Captures constraints on each element within the resource, profile, or extension.
*/ */

View File

@ -30,19 +30,17 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* This resource provides the insurance eligibility details from the insurer regarding a specified coverage and optionally some class of service. * This resource provides the insurance eligibility details from the insurer regarding a specified coverage and optionally some class of service.
*/ */

View File

@ -30,19 +30,17 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.dstu3.model.Enumerations.RemittanceOutcome;
import org.hl7.fhir.dstu3.model.Enumerations.RemittanceOutcomeEnumFactory;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* This resource provides eligibility and plan details from the processing of an Eligibility resource. * This resource provides eligibility and plan details from the processing of an Eligibility resource.
*/ */

View File

@ -30,18 +30,13 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* An interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient. * An interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient.
*/ */

View File

@ -30,18 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* The technical details of an endpoint that can be used for electronic services, such as for web services providing XDS.b or a REST endpoint for another FHIR server. This may include any security context information. * The technical details of an endpoint that can be used for electronic services, such as for web services providing XDS.b or a REST endpoint for another FHIR server. This may include any security context information.
*/ */

View File

@ -30,19 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import ca.uhn.fhir.model.api.annotation.Child;
import org.hl7.fhir.dstu3.model.Enumerations.*; import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* This resource provides the insurance enrollment details to the insurer regarding a specified coverage. * This resource provides the insurance enrollment details to the insurer regarding a specified coverage.
*/ */

View File

@ -30,19 +30,19 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.dstu3.model.Enumerations.RemittanceOutcome;
import org.hl7.fhir.dstu3.model.Enumerations.RemittanceOutcomeEnumFactory;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* This resource provides enrollment and plan details from the processing of an Enrollment resource. * This resource provides enrollment and plan details from the processing of an Enrollment resource.
*/ */

View File

@ -1,39 +1,6 @@
package org.hl7.fhir.dstu3.model; package org.hl7.fhir.dstu3.model;
/* import org.hl7.fhir.exceptions.FHIRException;
Copyright (c) 2011+, HL7, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of HL7 nor the names of its contributors may be used to
endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
public class Enumerations { public class Enumerations {

View File

@ -30,18 +30,13 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* An association between a patient and an organization / healthcare provider(s) during which time encounters may occur. The managing organization assumes a level of responsibility for the patient during this time. * An association between a patient and an organization / healthcare provider(s) during which time encounters may occur. The managing organization assumes a level of responsibility for the patient during this time.
*/ */

View File

@ -30,19 +30,17 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatus;
import org.hl7.fhir.dstu3.model.Enumerations.ConformanceResourceStatusEnumFactory;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Resource to define constraints on the Expansion of a FHIR ValueSet. * Resource to define constraints on the Expansion of a FHIR ValueSet.
*/ */

View File

@ -1,5 +1,7 @@
package org.hl7.fhir.dstu3.model; package org.hl7.fhir.dstu3.model;
import java.math.BigDecimal;
/* /*
Copyright (c) 2011+, HL7, Inc. Copyright (c) 2011+, HL7, Inc.
All rights reserved. All rights reserved.
@ -30,20 +32,15 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import java.math.*;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.dstu3.model.Enumerations.*;
import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Block;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* This resource provides: the claim details; adjudication details from the processing of a Claim; and optionally account balance information, for informing the subscriber of the benefits provided. * This resource provides: the claim details; adjudication details from the processing of a Claim; and optionally account balance information, for informing the subscriber of the benefits provided.
*/ */

View File

@ -1,14 +1,8 @@
package org.hl7.fhir.dstu3.model; package org.hl7.fhir.dstu3.model;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import org.hl7.fhir.dstu3.model.ExpressionNode.CollectionStatus;
import org.hl7.fhir.dstu3.model.ExpressionNode.TypeDetails;
import org.hl7.fhir.dstu3.utils.IWorkerContext;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
public class ExpressionNode { public class ExpressionNode {
@ -230,100 +224,10 @@ public class ExpressionNode {
} }
public enum CollectionStatus { public enum CollectionStatus {
SINGLETON, ORDERED, UNORDERED SINGLETON, ORDERED, UNORDERED;
} }
public static class TypeDetails { //the expression will have one of either name or constant
private Set<String> types = new HashSet<String>();
private CollectionStatus collectionStatus;
public TypeDetails(CollectionStatus collectionStatus, String... names) {
super();
this.collectionStatus = collectionStatus;
for (String n : names)
this.types.add(n);
}
public TypeDetails(CollectionStatus collectionStatus, Set<String> names) {
super();
this.collectionStatus = collectionStatus;
for (String n : names)
this.types.add(n);
}
public void addType(String n) {
this.types.add(n);
}
public void addTypes(Collection<String> n) {
this.types.addAll(n);
}
public boolean hasType(IWorkerContext context, String... tn) {
for (String t: tn)
if (types.contains(t))
return true;
for (String t: tn) {
StructureDefinition sd = context.fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/"+t);
while (sd != null) {
if (types.contains(sd.getId()))
return true;
if (sd.hasBaseDefinition())
sd = context.fetchResource(StructureDefinition.class, sd.getBaseDefinition());
else
sd = null;
}
}
return false;
}
public void update(TypeDetails source) {
types.addAll(source.types);
if (collectionStatus == null)
collectionStatus = source.collectionStatus;
else if (source.collectionStatus == CollectionStatus.UNORDERED)
collectionStatus = source.collectionStatus;
else
collectionStatus = CollectionStatus.ORDERED;
}
public TypeDetails union(TypeDetails right) {
TypeDetails result = new TypeDetails(null);
if (right.collectionStatus == CollectionStatus.UNORDERED || collectionStatus == CollectionStatus.UNORDERED)
result.collectionStatus = CollectionStatus.UNORDERED;
else
result.collectionStatus = CollectionStatus.ORDERED;
result.types.addAll(types);
result.types.addAll(right.types);
return result;
}
public boolean hasNoTypes() {
return types.isEmpty();
}
public Set<String> getTypes() {
return types;
}
public TypeDetails toSingleton() {
TypeDetails result = new TypeDetails(CollectionStatus.SINGLETON);
result.types.addAll(types);
return result;
}
public CollectionStatus getCollectionStatus() {
return collectionStatus;
}
public boolean hasType(Set<String> tn) {
for (String t: tn)
if (types.contains(t))
return true;
return false;
}
public String describe() {
return types.toString();
}
public String getType() {
for (String t : types)
return t;
return null;
}
}
//the expression will have one of either name or constant
private String uniqueId; private String uniqueId;
private Kind kind; private Kind kind;
private String name; private String name;

View File

@ -30,17 +30,16 @@ package org.hl7.fhir.dstu3.model;
*/ */
// Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0 // Generated on Thu, Aug 25, 2016 23:04-0400 for FHIR v1.6.0
import java.util.List;
import java.util.*; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.instance.model.api.IBaseDatatype;
import org.hl7.fhir.instance.model.api.IBaseExtension;
import org.hl7.fhir.instance.model.api.IBaseHasExtensions;
import org.hl7.fhir.utilities.Utilities;
import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.ChildOrder;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.Block; import ca.uhn.fhir.model.api.annotation.Description;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.dstu3.exceptions.FHIRException;
/** /**
* Optional Extensions Element - found in all resources. * Optional Extensions Element - found in all resources.
*/ */

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