From 5088850e6b252e74b312ec417ba1de650868103c Mon Sep 17 00:00:00 2001 From: jamesagnew Date: Sun, 16 Mar 2014 15:09:30 -0400 Subject: [PATCH] More work on JSON parser, and contained resources --- hapi-fhir-base/.classpath | 112 +- hapi-fhir-base/.project | 1 - .../org.eclipse.core.resources.prefs | 2 + hapi-fhir-base/TODO.txt | 4 +- hapi-fhir-base/pom.xml | 34 +- .../BaseRuntimeDeclaredChildDefinition.java | 4 +- .../java/ca/uhn/fhir/context/FhirContext.java | 4 +- .../context/IRuntimeDatatypeDefinition.java | 7 + .../ca/uhn/fhir/context/ModelScanner.java | 37 +- .../RuntimeChildResourceDefinition.java | 27 +- ...imeChildUndeclaredExtensionDefinition.java | 12 +- .../RuntimeCompositeDatatypeDefinition.java | 24 +- .../RuntimePrimitiveDatatypeDefinition.java | 24 +- .../RuntimeResourceBlockDefinition.java | 1 - .../RuntimeResourceReferenceDefinition.java | 2 +- .../ca/uhn/fhir/model/api/BaseBundle.java | 2 +- .../ca/uhn/fhir/model/api/BaseElement.java | 16 +- .../fhir/model/api/BaseResourceReference.java | 23 +- .../java/ca/uhn/fhir/model/api/Bundle.java | 12 +- .../ca/uhn/fhir/model/api/BundleCategory.java | 2 +- .../ca/uhn/fhir/model/api/BundleEntry.java | 13 +- .../uhn/fhir/model/api/ICompositeElement.java | 5 + .../java/ca/uhn/fhir/model/api/IElement.java | 7 +- .../uhn/fhir/model/api/IQueryParameterOr.java | 28 + .../uhn/fhir/model/api/ValueSetRegistry.java | 2 - .../model/api/annotation/DatatypeDef.java | 15 + .../fhir/model/dstu/composite/AddressDt.java | 31 +- .../model/dstu/composite/AttachmentDt.java | 22 +- .../dstu/composite/CodeableConceptDt.java | 26 +- .../fhir/model/dstu/composite/CodingDt.java | 77 +- .../fhir/model/dstu/composite/ContactDt.java | 22 +- .../fhir/model/dstu/composite/DurationDt.java | 3 + .../model/dstu/composite/HumanNameDt.java | 61 +- .../model/dstu/composite/IdentifierDt.java | 25 +- .../model/dstu/composite/NarrativeDt.java | 20 +- .../fhir/model/dstu/composite/PeriodDt.java | 37 +- .../fhir/model/dstu/composite/QuantityDt.java | 27 +- .../fhir/model/dstu/composite/RangeDt.java | 17 +- .../fhir/model/dstu/composite/RatioDt.java | 17 +- .../dstu/composite/ResourceReferenceDt.java | 18 +- .../model/dstu/composite/SampledDataDt.java | 36 +- .../fhir/model/dstu/composite/ScheduleDt.java | 54 +- .../uhn/fhir/model/dstu/resource/Binary.java | 12 +- .../fhir/model/dstu/resource/Conformance.java | 308 ++- .../uhn/fhir/model/dstu/resource/Device.java | 59 +- .../model/dstu/resource/DiagnosticOrder.java | 1154 ++++++++++ .../model/dstu/resource/DiagnosticReport.java | 1027 +++++++++ .../fhir/model/dstu/resource/Encounter.java | 1731 +++++++++++++++ .../uhn/fhir/model/dstu/resource/Group.java | 63 +- .../model/dstu/resource/ImagingStudy.java | 1849 ++++++++++++++++ .../fhir/model/dstu/resource/Location.java | 64 +- .../uhn/fhir/model/dstu/resource/Media.java | 750 +++++++ .../fhir/model/dstu/resource/Medication.java | 54 +- .../fhir/model/dstu/resource/Observation.java | 103 +- .../model/dstu/resource/Organization.java | 90 +- .../uhn/fhir/model/dstu/resource/Patient.java | 162 +- .../model/dstu/resource/Practitioner.java | 121 +- .../uhn/fhir/model/dstu/resource/Profile.java | 265 ++- .../model/dstu/resource/RelatedPerson.java | 508 +++++ .../fhir/model/dstu/resource/Specimen.java | 149 +- .../fhir/model/dstu/resource/Substance.java | 62 +- .../fhir/model/dstu/resource/ValueSet.java | 171 +- .../model/dstu/valueset/AddressUseEnum.java | 3 +- .../AdministrativeGenderCodesEnum.java | 3 +- .../model/dstu/valueset/AdmitSourceEnum.java | 163 ++ .../dstu/valueset/AggregationModeEnum.java | 3 +- .../dstu/valueset/AnimalSpeciesEnum.java | 3 +- .../dstu/valueset/BindingConformanceEnum.java | 3 +- .../valueset/ConformanceEventModeEnum.java | 3 +- .../ConformanceStatementStatusEnum.java | 3 +- .../dstu/valueset/ConstraintSeverityEnum.java | 3 +- .../dstu/valueset/ContactSystemEnum.java | 3 +- .../model/dstu/valueset/ContactUseEnum.java | 3 +- .../model/dstu/valueset/DataTypeEnum.java | 3 +- .../valueset/DiagnosticOrderPriorityEnum.java | 135 ++ .../valueset/DiagnosticOrderStatusEnum.java | 166 ++ .../valueset/DiagnosticReportStatusEnum.java | 159 ++ .../model/dstu/valueset/DocumentModeEnum.java | 3 +- .../dstu/valueset/EncounterClassEnum.java | 159 ++ .../valueset/EncounterReasonCodesEnum.java | 103 + .../dstu/valueset/EncounterStateEnum.java | 138 ++ .../dstu/valueset/EncounterTypeEnum.java | 127 ++ .../model/dstu/valueset/EventTimingEnum.java | 3 +- .../dstu/valueset/ExtensionContextEnum.java | 3 +- .../dstu/valueset/FHIRDefinedTypeEnum.java | 3 +- .../dstu/valueset/FilterOperatorEnum.java | 3 +- .../model/dstu/valueset/GroupTypeEnum.java | 3 +- .../HierarchicalRelationshipTypeEnum.java | 3 +- .../dstu/valueset/IdentifierUseEnum.java | 3 +- .../dstu/valueset/ImagingModalityEnum.java | 283 +++ .../valueset/InstanceAvailabilityEnum.java | 123 ++ .../model/dstu/valueset/LinkTypeEnum.java | 3 +- .../model/dstu/valueset/LocationModeEnum.java | 3 +- .../dstu/valueset/LocationStatusEnum.java | 3 +- .../model/dstu/valueset/LocationTypeEnum.java | 3 +- .../dstu/valueset/MaritalStatusCodesEnum.java | 3 +- .../model/dstu/valueset/MediaTypeEnum.java | 124 ++ .../dstu/valueset/MedicationKindEnum.java | 3 +- .../model/dstu/valueset/MessageEventEnum.java | 180 ++ .../MessageSignificanceCategoryEnum.java | 3 +- .../dstu/valueset/MessageTransportEnum.java | 124 ++ .../model/dstu/valueset/ModalityEnum.java | 368 ++++ .../fhir/model/dstu/valueset/NameUseEnum.java | 3 +- .../dstu/valueset/NarrativeStatusEnum.java | 4 +- .../ObservationInterpretationCodesEnum.java | 3 +- .../ObservationRelationshipTypeEnum.java | 3 +- .../valueset/ObservationReliabilityEnum.java | 3 +- .../dstu/valueset/ObservationStatusEnum.java | 3 +- .../dstu/valueset/OrganizationTypeEnum.java | 3 +- .../dstu/valueset/ParticipantTypeEnum.java | 119 + .../valueset/PatientRelationshipTypeEnum.java | 103 + .../dstu/valueset/PractitionerRoleEnum.java | 3 +- .../valueset/PractitionerSpecialtyEnum.java | 3 +- .../valueset/PropertyRepresentationEnum.java | 3 +- .../valueset/QuantityCompararatorEnum.java | 3 +- .../valueset/ResourceProfileStatusEnum.java | 3 +- .../model/dstu/valueset/ResourceTypeEnum.java | 3 +- .../valueset/RestfulConformanceModeEnum.java | 3 +- .../valueset/RestfulOperationSystemEnum.java | 3 +- .../valueset/RestfulOperationTypeEnum.java | 3 +- .../valueset/RestfulSecurityServiceEnum.java | 3 +- .../dstu/valueset/SearchParamTypeEnum.java | 3 +- .../model/dstu/valueset/SlicingRulesEnum.java | 3 +- .../SpecimenCollectionMethodEnum.java | 3 +- .../SpecimenTreatmentProcedureEnum.java | 3 +- .../dstu/valueset/SubstanceTypeEnum.java | 3 +- .../model/dstu/valueset/UnitsOfTimeEnum.java | 3 +- .../dstu/valueset/ValueSetStatusEnum.java | 3 +- .../fhir/model/primitive/BaseDateTimeDt.java | 2 - .../uhn/fhir/model/primitive/BoundCodeDt.java | 2 +- .../uhn/fhir/model/primitive/DecimalDt.java | 2 - .../ca/uhn/fhir/model/primitive/IdDt.java | 2 - .../uhn/fhir/model/primitive/IntegerDt.java | 2 - .../ca/uhn/fhir/model/primitive/OidDt.java | 3 + .../ca/uhn/fhir/model/primitive/StringDt.java | 2 - .../ca/uhn/fhir/model/primitive/UriDt.java | 2 - .../main/java/ca/uhn/fhir/parser/IParser.java | 6 +- .../java/ca/uhn/fhir/parser/JsonParser.java | 610 ++--- .../java/ca/uhn/fhir/parser/ParserState.java | 216 +- .../java/ca/uhn/fhir/parser/XmlParser.java | 41 +- .../rest/client/ClientInvocationHandler.java | 2 +- .../fhir/rest/client/GetClientInvocation.java | 38 +- .../rest/client/RestfulClientFactory.java | 9 +- .../{common => method}/BaseMethodBinding.java | 6 +- .../ConformanceMethodBinding.java | 4 +- .../{common => method}/ReadMethodBinding.java | 4 +- .../fhir/rest/{common => method}/Request.java | 5 +- .../SearchMethodBinding.java | 62 +- .../uhn/fhir/rest/param/CodingListParam.java | 49 + .../uhn/fhir/rest/param/CollectionBinder.java | 57 + .../ca/uhn/fhir/rest/param/IParamBinder.java | 14 + .../fhir/rest/param/IdentifierListParam.java | 45 + .../ca/uhn/fhir/rest/param/Parameter.java | 79 + .../fhir/rest/param/QualifiedDateParam.java | 85 + .../rest/param/QueryParameterOrBinder.java | 45 + .../rest/param/QueryParameterTypeBinder.java | 45 + .../ca/uhn/fhir/rest/server/Constants.java | 34 + .../ca/uhn/fhir/rest/server/EncodingUtil.java | 22 +- .../fhir/rest/server/ISecurityManager.java | 4 +- .../ca/uhn/fhir/rest/server/Parameter.java | 104 - .../ca/uhn/fhir/rest/server/Resource.java | 6 +- .../uhn/fhir/rest/server/RestfulServer.java | 288 +-- .../java/ca/uhn/fhir/rest/server/Util.java | 24 +- .../exceptions/AuthenticationException.java | 1 - .../java/ca/uhn/fhir/util/ElementUtil.java | 23 + .../fhir/util/PrettyPrintWriterWrapper.java | 1 - .../main/java/ca/uhn/fhir/util/QueryUtil.java | 30 + .../java/ca/uhn/fhir/util/ReflectionUtil.java | 49 + .../java/example/FhirContextIntro.java | 2 +- .../RestfulPatientResourceProviderMore.java | 95 +- hapi-fhir-base/src/site/resources/hapi.css | 3 +- .../src/site/xdoc/doc_rest_operations.xml | 95 +- .../ca/uhn/fhir/context/ModelScannerTest.java | 4 - .../fhir/context/ResourceWithExtensionsA.java | 56 + .../RuntimeResourceDefinitionTest.java | 3 - .../model/primitive/Base64BinaryDtTest.java | 2 - .../model/primitive/BaseDateTimeDtTest.java | 2 - .../ca/uhn/fhir/parser/JsonParserTest.java | 50 +- .../ca/uhn/fhir/parser/XmlParserTest.java | 21 +- .../ca/uhn/fhir/rest/client/ClientTest.java | 50 +- .../ca/uhn/fhir/rest/client/ITestClient.java | 9 + .../java/ca/uhn/fhir/rest/client/Tester.java | 2 - .../server/DummyPatientResourceProvider.java | 36 +- .../fhir/rest/server/DummyRestfulServer.java | 3 - .../fhir/rest/server/ResfulServerTest.java | 122 +- .../fhir/rest/server/ResourceMethodTest.java | 10 +- .../ca/uhn/fhir/testmodel/IdentifierDt.java | 9 + .../java/ca/uhn/fhir/testmodel/Patient.java | 17 +- .../ca/uhn/fhir/testutil/QueryUtilTest.java | 37 + .../resources/contained-diagnosticreport.json | 778 +++++++ .../resources/contained-diagnosticreport.xml | 718 ++++++ .../resources/example-patient-general.json | 448 ++++ .../resources/example-patient-general.xml | 27 +- .../resources/observation-example-eeg.xml | 3 +- hapi-fhir-structures-dstu/pom.xml | 6 + .../ResourceGeneratorUsingSpreadsheet.java | 2 +- .../java/ca/uhn/fhir/tinder/model/Child.java | 2 +- .../res/diagnosticorder-spreadsheet.xml | 1032 +++++++++ .../res/diagnosticreport-spreadsheet.xml | 1197 ++++++++++ .../resources/res/encounter-spreadsheet.xml | 1330 +++++++++++ .../res/imagingstudy-spreadsheet.xml | 1956 +++++++++++++++++ .../main/resources/res/media-spreadsheet.xml | 1086 +++++++++ .../res/relatedperson-spreadsheet.xml | 650 ++++++ .../src/main/resources/vm/dt_composite.vm | 57 +- .../src/main/resources/vm/templates.vm | 9 + pom.xml | 3 +- 206 files changed, 22716 insertions(+), 1581 deletions(-) create mode 100644 hapi-fhir-base/.settings/org.eclipse.core.resources.prefs create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/context/IRuntimeDatatypeDefinition.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/IQueryParameterOr.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/DiagnosticOrder.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/DiagnosticReport.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Encounter.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/ImagingStudy.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Media.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/RelatedPerson.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AdmitSourceEnum.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DiagnosticOrderPriorityEnum.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DiagnosticOrderStatusEnum.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DiagnosticReportStatusEnum.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterClassEnum.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterReasonCodesEnum.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterStateEnum.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterTypeEnum.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ImagingModalityEnum.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/InstanceAvailabilityEnum.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MediaTypeEnum.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MessageEventEnum.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MessageTransportEnum.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ModalityEnum.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ParticipantTypeEnum.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PatientRelationshipTypeEnum.java rename hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/{common => method}/BaseMethodBinding.java (98%) rename hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/{common => method}/ConformanceMethodBinding.java (93%) rename hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/{common => method}/ReadMethodBinding.java (97%) rename hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/{common => method}/Request.java (93%) rename hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/{common => method}/SearchMethodBinding.java (81%) create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/CodingListParam.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/CollectionBinder.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/IParamBinder.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/IdentifierListParam.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/Parameter.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/QualifiedDateParam.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/QueryParameterOrBinder.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/QueryParameterTypeBinder.java delete mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Parameter.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/util/QueryUtil.java create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/util/ReflectionUtil.java create mode 100644 hapi-fhir-base/src/test/java/ca/uhn/fhir/testutil/QueryUtilTest.java create mode 100644 hapi-fhir-base/src/test/resources/contained-diagnosticreport.json create mode 100644 hapi-fhir-base/src/test/resources/contained-diagnosticreport.xml create mode 100644 hapi-fhir-base/src/test/resources/example-patient-general.json create mode 100644 hapi-tinder-plugin/src/main/resources/res/diagnosticorder-spreadsheet.xml create mode 100644 hapi-tinder-plugin/src/main/resources/res/diagnosticreport-spreadsheet.xml create mode 100644 hapi-tinder-plugin/src/main/resources/res/encounter-spreadsheet.xml create mode 100644 hapi-tinder-plugin/src/main/resources/res/imagingstudy-spreadsheet.xml create mode 100644 hapi-tinder-plugin/src/main/resources/res/media-spreadsheet.xml create mode 100644 hapi-tinder-plugin/src/main/resources/res/relatedperson-spreadsheet.xml diff --git a/hapi-fhir-base/.classpath b/hapi-fhir-base/.classpath index 80d418e6e21..63b83033cc1 100644 --- a/hapi-fhir-base/.classpath +++ b/hapi-fhir-base/.classpath @@ -1,70 +1,96 @@ - - + + + + + + + + - - - + + - + - + - + + + + + + + - - + - - + + + - - - - - - - - - - - + - - - - - - - - - - - - - - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + diff --git a/hapi-fhir-base/.project b/hapi-fhir-base/.project index a75380b92e5..22f076c3eef 100644 --- a/hapi-fhir-base/.project +++ b/hapi-fhir-base/.project @@ -1,4 +1,3 @@ - hapi-fhir-base NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse. diff --git a/hapi-fhir-base/.settings/org.eclipse.core.resources.prefs b/hapi-fhir-base/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000000..99f26c0203a --- /dev/null +++ b/hapi-fhir-base/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/hapi-fhir-base/TODO.txt b/hapi-fhir-base/TODO.txt index 3d47d223154..2ab3fe8135f 100644 --- a/hapi-fhir-base/TODO.txt +++ b/hapi-fhir-base/TODO.txt @@ -40,4 +40,6 @@ Issues: * CarePlan.Activity has a type of "xmlIdRef" which is a weird datatype. The example here: http://www.hl7.org/implement/standards/fhir/careplan-example-integrated.xml.html - seems to use an extension to model that element instead of the goal type too. \ No newline at end of file + seems to use an extension to model that element instead of the goal type too. + + * Would like a standardized (but optional) HTTP parameter for pretty-printing. Suggest: _pretty=true \ No newline at end of file diff --git a/hapi-fhir-base/pom.xml b/hapi-fhir-base/pom.xml index bd7558a79ae..f495672536a 100644 --- a/hapi-fhir-base/pom.xml +++ b/hapi-fhir-base/pom.xml @@ -18,12 +18,24 @@ + + + javax.json + javax.json-api + 1.0 + + + org.glassfish + javax.json + 1.0.4 + + org.codehaus.woodstox @@ -80,7 +92,7 @@ javax.servlet javax.servlet-api - 3.1.0 + 3.0.1 provided @@ -115,6 +127,20 @@ 1.9.5 test + + net.sf.json-lib + json-lib + 2.4 + jdk15 + test + + + net.sf.json-lib + json-lib + 2.4 + jdk15-sources + test + org.eclipse.jetty @@ -196,6 +222,10 @@ + + UTF-8 + + diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/BaseRuntimeDeclaredChildDefinition.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/BaseRuntimeDeclaredChildDefinition.java index 7b96af6169d..003d54d3c0d 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/BaseRuntimeDeclaredChildDefinition.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/BaseRuntimeDeclaredChildDefinition.java @@ -58,8 +58,8 @@ public abstract class BaseRuntimeDeclaredChildDefinition extends BaseRuntimeChil final Class targetReturnType = myField.getType(); try { String elementName = myElementName; - if ("Class".equals(elementName)) { - elementName = "ClassElement"; // because getClass() is reserved + if ("class".equals(elementName.toLowerCase())) { + elementName = "classElement"; // because getClass() is reserved } final Method accessor = BeanUtils.findAccessor(declaringClass, targetReturnType, elementName); final Method mutator = BeanUtils.findMutator(declaringClass, targetReturnType, elementName); diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/FhirContext.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/FhirContext.java index 6c98bb9b3fa..26b9bb32f7a 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/FhirContext.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/FhirContext.java @@ -41,8 +41,8 @@ public class FhirContext { return myIdToResourceDefinition.get(theId); } - public Map, BaseRuntimeElementDefinition> getClassToElementDefinition() { - return myClassToElementDefinition; + public BaseRuntimeElementDefinition getElementDefinition(Class theElementType) { + return myClassToElementDefinition.get(theElementType); } public RuntimeResourceDefinition getResourceDefinition(Class theResourceType) { diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/IRuntimeDatatypeDefinition.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/IRuntimeDatatypeDefinition.java new file mode 100644 index 00000000000..457971e6d44 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/IRuntimeDatatypeDefinition.java @@ -0,0 +1,7 @@ +package ca.uhn.fhir.context; + +public interface IRuntimeDatatypeDefinition { + + boolean isSpecialization(); + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/ModelScanner.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/ModelScanner.java index 933824e5369..bbe1ddc6989 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/ModelScanner.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/ModelScanner.java @@ -17,6 +17,7 @@ import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; +import ca.uhn.fhir.model.api.BaseResourceReference; import ca.uhn.fhir.model.api.CodeableConceptElement; import ca.uhn.fhir.model.api.ICodeEnum; import ca.uhn.fhir.model.api.ICompositeDatatype; @@ -27,7 +28,6 @@ import ca.uhn.fhir.model.api.IPrimitiveDatatype; import ca.uhn.fhir.model.api.IResource; import ca.uhn.fhir.model.api.IResourceBlock; import ca.uhn.fhir.model.api.IValueSetEnumBinder; -import ca.uhn.fhir.model.api.BaseResourceReference; import ca.uhn.fhir.model.api.annotation.Block; import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.CodeTableDef; @@ -42,6 +42,7 @@ import ca.uhn.fhir.model.primitive.CodeDt; import ca.uhn.fhir.model.primitive.DateDt; import ca.uhn.fhir.model.primitive.ICodedDatatype; import ca.uhn.fhir.model.primitive.XhtmlDt; +import ca.uhn.fhir.util.ReflectionUtil; class ModelScanner { private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(ModelScanner.class); @@ -92,7 +93,7 @@ class ModelScanner { private Class determineElementType(Field next) { Class nextElementType = next.getType(); if (List.class.equals(nextElementType)) { - nextElementType = getGenericCollectionTypeOfField(next); + nextElementType = ReflectionUtil.getGenericCollectionTypeOfField(next); } else if (Collection.class.isAssignableFrom(nextElementType)) { throw new ConfigurationException("Field '" + next.getName() + "' in type '" + next.getClass().getCanonicalName() + "' is a Collection - Only java.util.List curently supported"); } @@ -231,12 +232,7 @@ class ModelScanner { private void scanCompositeDatatype(Class theClass, DatatypeDef theDatatypeDefinition) { ourLog.debug("Scanning resource class: {}", theClass.getName()); - String resourceName = theDatatypeDefinition.name(); - if (isBlank(resourceName)) { - throw new ConfigurationException("Resource type @" + ResourceDef.class.getSimpleName() + " annotation contains no resource name: " + theClass.getCanonicalName()); - } - - RuntimeCompositeDatatypeDefinition resourceDef = new RuntimeCompositeDatatypeDefinition(resourceName, theClass); + RuntimeCompositeDatatypeDefinition resourceDef = new RuntimeCompositeDatatypeDefinition(theDatatypeDefinition, theClass); myClassToElementDefinitions.put(theClass, resourceDef); scanCompositeElementForChildren(theClass, resourceDef, null); } @@ -368,7 +364,7 @@ class ModelScanner { List> refTypesList = new ArrayList>(); for (Class nextType : childAnnotation.type()) { if (IResource.class.isAssignableFrom(nextType) == false) { - throw new ConfigurationException("Field '" + next.getName() + "' is of type " + ResourceReferenceDt.class + " but contains a non-resource type: " + nextType.getCanonicalName()); + throw new ConfigurationException("Field '" + next.getName() + "' in class '" + next.getDeclaringClass().getSimpleName() + "' is of type " + ResourceReferenceDt.class + " but contains a non-resource type: " + nextType.getCanonicalName()); } refTypesList.add((Class) nextType); addScanAlso(nextType); @@ -444,7 +440,7 @@ class ModelScanner { Class clazz = (Class) theClass; resourceDef = new RuntimePrimitiveDatatypeNarrativeDefinition(resourceName, clazz); } else { - resourceDef = new RuntimePrimitiveDatatypeDefinition(resourceName, theClass); + resourceDef = new RuntimePrimitiveDatatypeDefinition(theDatatypeDefinition, theClass); } myClassToElementDefinitions.put(theClass, resourceDef); @@ -506,26 +502,5 @@ class ModelScanner { return type; } - private static Class getGenericCollectionTypeOfField(Field next) { - // Type genericSuperclass = next.getType().getGenericSuperclass(); - Class type; - // if (genericSuperclass == null) { - ParameterizedType collectionType = (ParameterizedType) next.getGenericType(); - Type firstArg = collectionType.getActualTypeArguments()[0]; - if (ParameterizedType.class.isAssignableFrom(firstArg.getClass())) { - ParameterizedType pt = ((ParameterizedType) firstArg); - type = (Class) pt.getRawType(); - // firstArg = pt.getActualTypeArguments()[0]; - // type = (Class) firstArg; - } else { - type = (Class) firstArg; - } - // }else { - // Type[] actualTypeArguments = ((ParameterizedType) - // genericSuperclass).getActualTypeArguments(); - // type = (Class) actualTypeArguments[0]; - // } - return type; - } } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeChildResourceDefinition.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeChildResourceDefinition.java index 0a418a0e0f5..bec4393a17f 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeChildResourceDefinition.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeChildResourceDefinition.java @@ -5,11 +5,12 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; +import ca.uhn.fhir.model.api.BaseResourceReference; import ca.uhn.fhir.model.api.IElement; import ca.uhn.fhir.model.api.IResource; -import ca.uhn.fhir.model.api.BaseResourceReference; import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.Description; @@ -22,7 +23,7 @@ public class RuntimeChildResourceDefinition extends BaseRuntimeDeclaredChildDefi public RuntimeChildResourceDefinition(Field theField, String theElementName, Child theChildAnnotation, Description theDescriptionAnnotation, List> theResourceTypes) { super(theField, theChildAnnotation, theDescriptionAnnotation, theElementName); myResourceTypes = theResourceTypes; - + if (theResourceTypes == null || theResourceTypes.isEmpty()) { throw new ConfigurationException("Field '" + theField.getName() + "' on type '" + theField.getDeclaringClass().getCanonicalName() + "' has no resource types noted"); } @@ -58,16 +59,28 @@ public class RuntimeChildResourceDefinition extends BaseRuntimeDeclaredChildDefi void sealAndInitialize(Map, BaseRuntimeElementDefinition> theClassToElementDefinitions) { myRuntimeDef = new RuntimeResourceReferenceDefinition(getElementName(), myResourceTypes); myRuntimeDef.sealAndInitialize(theClassToElementDefinitions); - + myValidChildNames = new HashSet(); myValidChildNames.add(getElementName()); myValidChildNames.add(getElementName() + "Resource"); - + for (Class next : myResourceTypes) { - RuntimeResourceDefinition nextDef = (RuntimeResourceDefinition) theClassToElementDefinitions.get(next); - myValidChildNames.add(getElementName() + nextDef.getName()); + if (next == IResource.class) { + for (Entry, BaseRuntimeElementDefinition> nextEntry : theClassToElementDefinitions.entrySet()) { + if (IResource.class.isAssignableFrom(nextEntry.getKey())) { + RuntimeResourceDefinition nextDef = (RuntimeResourceDefinition) nextEntry.getValue(); + myValidChildNames.add(getElementName() + nextDef.getName()); + } + } + } else { + RuntimeResourceDefinition nextDef = (RuntimeResourceDefinition) theClassToElementDefinitions.get(next); + if (nextDef == null) { + throw new ConfigurationException("Can't find child of type: " + next.getCanonicalName() + " in " + getField().getDeclaringClass()); + } + myValidChildNames.add(getElementName() + nextDef.getName()); + } } - + myValidChildNames = Collections.unmodifiableSet(myValidChildNames); } } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeChildUndeclaredExtensionDefinition.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeChildUndeclaredExtensionDefinition.java index 3541895a383..57b2005f6c5 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeChildUndeclaredExtensionDefinition.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeChildUndeclaredExtensionDefinition.java @@ -8,10 +8,10 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import ca.uhn.fhir.model.api.BaseResourceReference; import ca.uhn.fhir.model.api.IDatatype; import ca.uhn.fhir.model.api.IElement; import ca.uhn.fhir.model.api.IResource; -import ca.uhn.fhir.model.api.BaseResourceReference; import ca.uhn.fhir.model.api.UndeclaredExtension; import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; @@ -52,9 +52,11 @@ public class RuntimeChildUndeclaredExtensionDefinition extends BaseRuntimeChildD Map> datatypeAttributeNameToDefinition=new HashMap>(); for (BaseRuntimeElementDefinition next : theClassToElementDefinitions.values()) { - if (next instanceof RuntimePrimitiveDatatypeDefinition || next instanceof RuntimeCompositeDatatypeDefinition) { - String attrName = "value" + next.getName().substring(0, 1).toUpperCase() + next.getName().substring(1); - datatypeAttributeNameToDefinition.put(attrName, next); + if (next instanceof IRuntimeDatatypeDefinition) { + if (!((IRuntimeDatatypeDefinition) next).isSpecialization()) { + String attrName = "value" + next.getName().substring(0, 1).toUpperCase() + next.getName().substring(1); + datatypeAttributeNameToDefinition.put(attrName, next); + } } } @@ -71,7 +73,7 @@ public class RuntimeChildUndeclaredExtensionDefinition extends BaseRuntimeChildD } // Resource Reference - myDatatypeToAttributeName.put(BaseResourceReference.class, "valueReference"); + myDatatypeToAttributeName.put(ResourceReferenceDt.class, "valueReference"); List> types = new ArrayList>(); types.add(IResource.class); RuntimeResourceReferenceDefinition def = new RuntimeResourceReferenceDefinition("valueResource", types); diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeCompositeDatatypeDefinition.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeCompositeDatatypeDefinition.java index 4a9e27a3529..ec16dbca1df 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeCompositeDatatypeDefinition.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeCompositeDatatypeDefinition.java @@ -1,12 +1,28 @@ package ca.uhn.fhir.context; -import ca.uhn.fhir.context.BaseRuntimeElementDefinition.ChildTypeEnum; +import static org.apache.commons.lang3.StringUtils.*; import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.ResourceDef; -public class RuntimeCompositeDatatypeDefinition extends BaseRuntimeElementCompositeDefinition { +public class RuntimeCompositeDatatypeDefinition extends BaseRuntimeElementCompositeDefinition implements IRuntimeDatatypeDefinition { - public RuntimeCompositeDatatypeDefinition(String theName, Class theImplementingClass) { - super(theName, theImplementingClass); + private boolean mySpecialization; + + public RuntimeCompositeDatatypeDefinition(DatatypeDef theDef, Class theImplementingClass) { + super(theDef.name(), theImplementingClass); + + String resourceName = theDef.name(); + if (isBlank(resourceName)) { + throw new ConfigurationException("Resource type @" + ResourceDef.class.getSimpleName() + " annotation contains no resource name: " + theImplementingClass.getCanonicalName()); + } + + mySpecialization = theDef.isSpecialization(); + + } + + public boolean isSpecialization() { + return mySpecialization; } @Override diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimePrimitiveDatatypeDefinition.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimePrimitiveDatatypeDefinition.java index 862124845a0..721a0c2b86f 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimePrimitiveDatatypeDefinition.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimePrimitiveDatatypeDefinition.java @@ -1,14 +1,32 @@ package ca.uhn.fhir.context; +import static org.apache.commons.lang3.StringUtils.*; + import java.util.Map; import ca.uhn.fhir.model.api.IElement; import ca.uhn.fhir.model.api.IPrimitiveDatatype; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.ResourceDef; -public class RuntimePrimitiveDatatypeDefinition extends BaseRuntimeElementDefinition>{ +public class RuntimePrimitiveDatatypeDefinition extends BaseRuntimeElementDefinition> implements IRuntimeDatatypeDefinition { - public RuntimePrimitiveDatatypeDefinition(String theName, Class> theImplementingClass) { - super(theName, theImplementingClass); + private boolean mySpecialization; + + public RuntimePrimitiveDatatypeDefinition(DatatypeDef theDef, Class> theImplementingClass) { + super(theDef.name(), theImplementingClass); + + String resourceName = theDef.name(); + if (isBlank(resourceName)) { + throw new ConfigurationException("Resource type @" + ResourceDef.class.getSimpleName() + " annotation contains no resource name: " + theImplementingClass.getCanonicalName()); + } + + mySpecialization = theDef.isSpecialization(); + } + + @Override + public boolean isSpecialization() { + return mySpecialization; } @Override diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeResourceBlockDefinition.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeResourceBlockDefinition.java index e5f892aa774..f3e5ca27796 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeResourceBlockDefinition.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeResourceBlockDefinition.java @@ -1,6 +1,5 @@ package ca.uhn.fhir.context; -import ca.uhn.fhir.context.BaseRuntimeElementDefinition.ChildTypeEnum; import ca.uhn.fhir.model.api.IResourceBlock; public class RuntimeResourceBlockDefinition extends BaseRuntimeElementCompositeDefinition { diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeResourceReferenceDefinition.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeResourceReferenceDefinition.java index 64955c5f955..6571a35fe8c 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeResourceReferenceDefinition.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/RuntimeResourceReferenceDefinition.java @@ -4,9 +4,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import ca.uhn.fhir.model.api.BaseResourceReference; import ca.uhn.fhir.model.api.IElement; import ca.uhn.fhir.model.api.IResource; -import ca.uhn.fhir.model.api.BaseResourceReference; public class RuntimeResourceReferenceDefinition extends BaseRuntimeElementDefinition { diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/BaseBundle.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/BaseBundle.java index 63b275d6c1d..b6509c3d492 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/BaseBundle.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/BaseBundle.java @@ -3,7 +3,7 @@ package ca.uhn.fhir.model.api; import ca.uhn.fhir.model.primitive.StringDt; import ca.uhn.fhir.util.ElementUtil; -public class BaseBundle implements IElement { +public class BaseBundle extends BaseElement implements IElement { private StringDt myAuthorName; private StringDt myAuthorUri; diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/BaseElement.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/BaseElement.java index e87f2a4ae83..615dc375316 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/BaseElement.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/BaseElement.java @@ -24,10 +24,10 @@ public abstract class BaseElement implements IElement, ISupportsUndeclaredExtens return Collections.unmodifiableList(retVal); } -// @Override -// public IdDt getId() { -// return myId; -// } + @Override + public IdDt getId() { + return myId; + } @Override public List getUndeclaredExtensions() { @@ -67,9 +67,9 @@ public abstract class BaseElement implements IElement, ISupportsUndeclaredExtens return true; } -// @Override -// public void setId(IdDt theId) { -// myId = theId; -// } + @Override + public void setId(IdDt theId) { + myId = theId; + } } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/BaseResourceReference.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/BaseResourceReference.java index e5c851c3a4c..3907304827c 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/BaseResourceReference.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/BaseResourceReference.java @@ -16,8 +16,8 @@ import ca.uhn.fhir.rest.client.api.IRestfulClient; public abstract class BaseResourceReference extends BaseElement { - private IResource myResource; private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(BaseResourceReference.class); + private IResource myResource; /** * Gets the value(s) for reference (Relative, internal or absolute URL reference). creating it if it does not exist. Will not return null. @@ -30,6 +30,23 @@ public abstract class BaseResourceReference extends BaseElement { */ public abstract StringDt getReference(); + /** + * Gets the actual loaded and parsed resource instance, if it is already present. This + * method will return the resource instance only if it has previously been loaded using + * {@link #loadResource(IRestfulClient)} or it was contained within the resource containing + * this resource. + * + * @see See {@link #loadResource(IRestfulClient)} + * @see See the FHIR specification section on 2.2.2 Search Parameter Types + * for information on the token format + */ + public void setValuesAsQueryTokens(List theParameters); + + /** + * Returns the value of this type using the token format. This + * format is used in HTTP queries as a parameter format. + * + * @see See FHIR specification + * 2.2.2 Search Parameter Types + * for information on the token format + */ + public List getValuesAsQueryTokens(); + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/ValueSetRegistry.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/ValueSetRegistry.java index df02b0b7cf4..92cbccb80a4 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/ValueSetRegistry.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/ValueSetRegistry.java @@ -1,7 +1,5 @@ package ca.uhn.fhir.model.api; -import java.util.HashMap; -import java.util.Map; public abstract class ValueSetRegistry { diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/annotation/DatatypeDef.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/annotation/DatatypeDef.java index 19d4fdfd4a5..9a005ecdaf6 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/annotation/DatatypeDef.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/api/annotation/DatatypeDef.java @@ -5,10 +5,25 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; + @Retention(RetentionPolicy.RUNTIME) @Target(value= {ElementType.TYPE}) public @interface DatatypeDef { + /** + * The defined name of this datatype + */ String name(); + /** + * Set this to true (default is false) for any types that are + * really only a specialization of another type. For example, + * {@link BoundCodeDt} is really just a specific type of + * {@link CodeDt} and not a separate datatype, so it should + * have this set to true. + */ + boolean isSpecialization() default false; + } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/AddressDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/AddressDt.java index 9159d021fd9..e9f886d3335 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/AddressDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/AddressDt.java @@ -16,12 +16,16 @@ package ca.uhn.fhir.model.dstu.composite; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.valueset.*; -import ca.uhn.fhir.model.dstu.resource.*; +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.Description; +import ca.uhn.fhir.model.dstu.valueset.AddressUseEnum; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.StringDt; /** * HAPI/FHIR Address Datatype @@ -61,7 +65,7 @@ public class AddressDt shortDefinition="Street name, number, direction & P.O. Box etc", formalDefinition="This component contains the house number, apartment number, street name, street direction, P.O. Box number, delivery hints, and similar address information" ) - private List myLine; + private java.util.List myLine; @Child(name="city", type=StringDt.class, order=3, min=0, max=1) @Description( @@ -103,6 +107,11 @@ public class AddressDt public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myUse, myText, myLine, myCity, myState, myZip, myCountry, myPeriod); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myUse, myText, myLine, myCity, myState, myZip, myCountry, myPeriod); + } + /** * Gets the value(s) for use (home | work | temp | old - purpose of this address). @@ -200,9 +209,9 @@ public class AddressDt * This component contains the house number, apartment number, street name, street direction, P.O. Box number, delivery hints, and similar address information *

*/ - public List getLine() { + public java.util.List getLine() { if (myLine == null) { - myLine = new ArrayList(); + myLine = new java.util.ArrayList(); } return myLine; } @@ -215,7 +224,7 @@ public class AddressDt * This component contains the house number, apartment number, street name, street direction, P.O. Box number, delivery hints, and similar address information *

*/ - public void setLine(List theValue) { + public void setLine(java.util.List theValue) { myLine = theValue; } @@ -243,7 +252,7 @@ public class AddressDt */ public void addLine( String theString) { if (myLine == null) { - myLine = new ArrayList(); + myLine = new java.util.ArrayList(); } myLine.add(new StringDt(theString)); } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/AttachmentDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/AttachmentDt.java index e31060e9eba..a15a11ec18c 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/AttachmentDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/AttachmentDt.java @@ -16,12 +16,17 @@ package ca.uhn.fhir.model.dstu.composite; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.valueset.*; -import ca.uhn.fhir.model.dstu.resource.*; +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.Description; +import ca.uhn.fhir.model.primitive.Base64BinaryDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.IntegerDt; +import ca.uhn.fhir.model.primitive.StringDt; +import ca.uhn.fhir.model.primitive.UriDt; /** * HAPI/FHIR Attachment Datatype @@ -96,6 +101,11 @@ public class AttachmentDt public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myContentType, myLanguage, myData, myUrl, mySize, myHash, myTitle); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myContentType, myLanguage, myData, myUrl, mySize, myHash, myTitle); + } + /** * Gets the value(s) for contentType (Mime type of the content, with charset etc.). diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/CodeableConceptDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/CodeableConceptDt.java index 2b363a3ca2d..6e9fb6fc982 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/CodeableConceptDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/CodeableConceptDt.java @@ -16,12 +16,13 @@ package ca.uhn.fhir.model.dstu.composite; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.valueset.*; -import ca.uhn.fhir.model.dstu.resource.*; +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.Description; +import ca.uhn.fhir.model.primitive.StringDt; /** * HAPI/FHIR CodeableConcept Datatype @@ -47,7 +48,7 @@ public class CodeableConceptDt shortDefinition="Code defined by a terminology system", formalDefinition="A reference to a code defined by a terminology system" ) - private List myCoding; + private java.util.List myCoding; @Child(name="text", type=StringDt.class, order=1, min=0, max=1) @Description( @@ -61,6 +62,11 @@ public class CodeableConceptDt public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myCoding, myText); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myCoding, myText); + } + /** * Gets the value(s) for coding (Code defined by a terminology system). @@ -72,9 +78,9 @@ public class CodeableConceptDt * A reference to a code defined by a terminology system *

*/ - public List getCoding() { + public java.util.List getCoding() { if (myCoding == null) { - myCoding = new ArrayList(); + myCoding = new java.util.ArrayList(); } return myCoding; } @@ -87,7 +93,7 @@ public class CodeableConceptDt * A reference to a code defined by a terminology system *

*/ - public void setCoding(List theValue) { + public void setCoding(java.util.List theValue) { myCoding = theValue; } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/CodingDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/CodingDt.java index 028ea184375..d4a27762547 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/CodingDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/CodingDt.java @@ -16,12 +16,17 @@ package ca.uhn.fhir.model.dstu.composite; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.valueset.*; -import ca.uhn.fhir.model.dstu.resource.*; +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IQueryParameterType; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.Description; +import ca.uhn.fhir.model.primitive.BooleanDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.StringDt; +import ca.uhn.fhir.model.primitive.UriDt; /** * HAPI/FHIR Coding Datatype @@ -39,8 +44,22 @@ import ca.uhn.fhir.model.dstu.resource.*; */ @DatatypeDef(name="Coding") public class CodingDt - extends BaseElement implements ICompositeDatatype { + extends BaseElement implements ICompositeDatatype , IQueryParameterType { + /** + * Creates a new Coding + */ + public CodingDt() { + // nothing + } + + /** + * Creates a new Coding with the given system and code + */ + public CodingDt(String theSystem, String theCode) { + setSystem(theSystem); + setCode(theCode); + } @Child(name="system", type=UriDt.class, order=0, min=0, max=1) @Description( @@ -78,7 +97,7 @@ public class CodingDt private BooleanDt myPrimary; @Child(name="valueSet", order=5, min=0, max=1, type={ - ValueSet.class, + ca.uhn.fhir.model.dstu.resource.ValueSet.class, }) @Description( shortDefinition="Set this coding was chosen from", @@ -91,6 +110,11 @@ public class CodingDt public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( mySystem, myVersion, myCode, myDisplay, myPrimary, myValueSet); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( mySystem, myVersion, myCode, myDisplay, myPrimary, myValueSet); + } + /** * Gets the value(s) for system (Identity of the terminology system). @@ -339,6 +363,43 @@ public class CodingDt + /** + * Returns true if this Coding has the same {@link CodingDt#getCode() Code} + * and {@link CodingDt#getSystem() system} (as compared by simple equals comparison). + * Does not compare other Codes (e.g. {@link CodingDt#getUse() use}) or any extensions. + */ + public boolean matchesSystemAndCode(CodingDt theCoding) { + if (theCoding == null) { + return false; + } + return getCode().equals(theCoding.getCode()) && getSystem().equals(theCoding.getSystem()); + } + + /** + * {@inheritDoc} + */ + @Override + public String getValueAsQueryToken() { + if (org.apache.commons.lang3.StringUtils.isNotBlank(getSystem().getValueAsString())) { + return getSystem().getValueAsString() + '|' + getCode().getValueAsString(); + } else { + return getCode().getValueAsString(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public void setValueAsQueryToken(String theParameter) { + int barIndex = theParameter.indexOf('|'); + if (barIndex != -1) { + setSystem(new UriDt(theParameter.substring(0, barIndex))); + setCode(theParameter.substring(barIndex + 1)); + } else { + setCode(theParameter); + } + } } \ No newline at end of file diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/ContactDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/ContactDt.java index 5daf48837b3..ec562036f6f 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/ContactDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/ContactDt.java @@ -16,12 +16,17 @@ package ca.uhn.fhir.model.dstu.composite; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.valueset.*; -import ca.uhn.fhir.model.dstu.resource.*; +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.Description; +import ca.uhn.fhir.model.dstu.valueset.ContactSystemEnum; +import ca.uhn.fhir.model.dstu.valueset.ContactUseEnum; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.StringDt; /** * HAPI/FHIR Contact Datatype @@ -75,6 +80,11 @@ public class ContactDt public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( mySystem, myValue, myUse, myPeriod); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( mySystem, myValue, myUse, myPeriod); + } + /** * Gets the value(s) for system (phone | fax | email | url). diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/DurationDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/DurationDt.java index f7b73c42538..a9e415401e3 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/DurationDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/DurationDt.java @@ -1,5 +1,8 @@ package ca.uhn.fhir.model.dstu.composite; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; + +@DatatypeDef(name = "duration") public class DurationDt extends QuantityDt { // TODO: implement restricions diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/HumanNameDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/HumanNameDt.java index 282b1379f71..b55ecab1ce9 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/HumanNameDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/HumanNameDt.java @@ -16,12 +16,16 @@ package ca.uhn.fhir.model.dstu.composite; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.valueset.*; -import ca.uhn.fhir.model.dstu.resource.*; +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.Description; +import ca.uhn.fhir.model.dstu.valueset.NameUseEnum; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.StringDt; /** * HAPI/FHIR HumanName Datatype @@ -61,28 +65,28 @@ public class HumanNameDt shortDefinition="Family name (often called 'Surname')", formalDefinition="The part of a name that links to the genealogy. In some cultures (e.g. Eritrea) the family name of a son is the first name of his father." ) - private List myFamily; + private java.util.List myFamily; @Child(name="given", type=StringDt.class, order=3, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Given names (not always 'first'). Includes middle names", formalDefinition="Given name" ) - private List myGiven; + private java.util.List myGiven; @Child(name="prefix", type=StringDt.class, order=4, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Parts that come before the name", formalDefinition="Part of the name that is acquired as a title due to academic, legal, employment or nobility status, etc. and that appears at the start of the name" ) - private List myPrefix; + private java.util.List myPrefix; @Child(name="suffix", type=StringDt.class, order=5, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Parts that come after the name", formalDefinition="Part of the name that is acquired as a title due to academic, legal, employment or nobility status, etc. and that appears at the end of the name" ) - private List mySuffix; + private java.util.List mySuffix; @Child(name="period", type=PeriodDt.class, order=6, min=0, max=1) @Description( @@ -96,6 +100,11 @@ public class HumanNameDt public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myUse, myText, myFamily, myGiven, myPrefix, mySuffix, myPeriod); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myUse, myText, myFamily, myGiven, myPrefix, mySuffix, myPeriod); + } + /** * Gets the value(s) for use (usual | official | temp | nickname | anonymous | old | maiden). @@ -193,9 +202,9 @@ public class HumanNameDt * The part of a name that links to the genealogy. In some cultures (e.g. Eritrea) the family name of a son is the first name of his father. *

*/ - public List getFamily() { + public java.util.List getFamily() { if (myFamily == null) { - myFamily = new ArrayList(); + myFamily = new java.util.ArrayList(); } return myFamily; } @@ -208,7 +217,7 @@ public class HumanNameDt * The part of a name that links to the genealogy. In some cultures (e.g. Eritrea) the family name of a son is the first name of his father. *

*/ - public void setFamily(List theValue) { + public void setFamily(java.util.List theValue) { myFamily = theValue; } @@ -236,7 +245,7 @@ public class HumanNameDt */ public void addFamily( String theString) { if (myFamily == null) { - myFamily = new ArrayList(); + myFamily = new java.util.ArrayList(); } myFamily.add(new StringDt(theString)); } @@ -252,9 +261,9 @@ public class HumanNameDt * Given name *

*/ - public List getGiven() { + public java.util.List getGiven() { if (myGiven == null) { - myGiven = new ArrayList(); + myGiven = new java.util.ArrayList(); } return myGiven; } @@ -267,7 +276,7 @@ public class HumanNameDt * Given name *

*/ - public void setGiven(List theValue) { + public void setGiven(java.util.List theValue) { myGiven = theValue; } @@ -295,7 +304,7 @@ public class HumanNameDt */ public void addGiven( String theString) { if (myGiven == null) { - myGiven = new ArrayList(); + myGiven = new java.util.ArrayList(); } myGiven.add(new StringDt(theString)); } @@ -311,9 +320,9 @@ public class HumanNameDt * Part of the name that is acquired as a title due to academic, legal, employment or nobility status, etc. and that appears at the start of the name *

*/ - public List getPrefix() { + public java.util.List getPrefix() { if (myPrefix == null) { - myPrefix = new ArrayList(); + myPrefix = new java.util.ArrayList(); } return myPrefix; } @@ -326,7 +335,7 @@ public class HumanNameDt * Part of the name that is acquired as a title due to academic, legal, employment or nobility status, etc. and that appears at the start of the name *

*/ - public void setPrefix(List theValue) { + public void setPrefix(java.util.List theValue) { myPrefix = theValue; } @@ -354,7 +363,7 @@ public class HumanNameDt */ public void addPrefix( String theString) { if (myPrefix == null) { - myPrefix = new ArrayList(); + myPrefix = new java.util.ArrayList(); } myPrefix.add(new StringDt(theString)); } @@ -370,9 +379,9 @@ public class HumanNameDt * Part of the name that is acquired as a title due to academic, legal, employment or nobility status, etc. and that appears at the end of the name *

*/ - public List getSuffix() { + public java.util.List getSuffix() { if (mySuffix == null) { - mySuffix = new ArrayList(); + mySuffix = new java.util.ArrayList(); } return mySuffix; } @@ -385,7 +394,7 @@ public class HumanNameDt * Part of the name that is acquired as a title due to academic, legal, employment or nobility status, etc. and that appears at the end of the name *

*/ - public void setSuffix(List theValue) { + public void setSuffix(java.util.List theValue) { mySuffix = theValue; } @@ -413,7 +422,7 @@ public class HumanNameDt */ public void addSuffix( String theString) { if (mySuffix == null) { - mySuffix = new ArrayList(); + mySuffix = new java.util.ArrayList(); } mySuffix.add(new StringDt(theString)); } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/IdentifierDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/IdentifierDt.java index 1cb8b3c8950..56155881895 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/IdentifierDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/IdentifierDt.java @@ -16,12 +16,18 @@ package ca.uhn.fhir.model.dstu.composite; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.valueset.*; -import ca.uhn.fhir.model.dstu.resource.*; +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IQueryParameterType; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.Description; +import ca.uhn.fhir.model.dstu.valueset.IdentifierUseEnum; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.StringDt; +import ca.uhn.fhir.model.primitive.UriDt; /** * HAPI/FHIR Identifier Datatype @@ -92,7 +98,7 @@ public class IdentifierDt private PeriodDt myPeriod; @Child(name="assigner", order=5, min=0, max=1, type={ - Organization.class, + ca.uhn.fhir.model.dstu.resource.Organization.class, }) @Description( shortDefinition="Organization that issued id (may be just text)", @@ -105,6 +111,11 @@ public class IdentifierDt public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myUse, myLabel, mySystem, myValue, myPeriod, myAssigner); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myUse, myLabel, mySystem, myValue, myPeriod, myAssigner); + } + /** * Gets the value(s) for use (usual | official | temp | secondary (If known)). diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/NarrativeDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/NarrativeDt.java index 474577074dc..29eaf8b01b6 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/NarrativeDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/NarrativeDt.java @@ -16,12 +16,17 @@ package ca.uhn.fhir.model.dstu.composite; -import java.util.*; +import java.util.List; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.valueset.*; +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.dstu.valueset.NarrativeStatusEnum; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.XhtmlDt; /** * HAPI/FHIR Narrative Datatype @@ -51,6 +56,11 @@ public class NarrativeDt extends BaseElement implements ICompositeDatatype { return ca.uhn.fhir.util.ElementUtil.isEmpty( myStatus, myDiv ); } + @Override + public List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myStatus, myDiv ); + } + /** * Gets the value(s) for status (generated | extensions | additional). * creating it if it does diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/PeriodDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/PeriodDt.java index b3bd50b223f..3ee4b5cbfcc 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/PeriodDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/PeriodDt.java @@ -16,12 +16,16 @@ package ca.uhn.fhir.model.dstu.composite; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.valueset.*; -import ca.uhn.fhir.model.dstu.resource.*; +import java.util.Date; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.Description; +import ca.uhn.fhir.model.primitive.DateTimeDt; /** * HAPI/FHIR Period Datatype @@ -61,6 +65,11 @@ public class PeriodDt public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myStart, myEnd); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myStart, myEnd); + } + /** * Gets the value(s) for start (Starting time with inclusive boundary). @@ -100,8 +109,8 @@ public class PeriodDt * The start of the period. The boundary is inclusive. *

*/ - public void setStartWithSecondsPrecision( Date theDate) { - myStart = new DateTimeDt(theDate); + public void setStart( Date theDate, TemporalPrecisionEnum thePrecision) { + myStart = new DateTimeDt(theDate, thePrecision); } /** @@ -112,8 +121,8 @@ public class PeriodDt * The start of the period. The boundary is inclusive. *

*/ - public void setStart( Date theDate, TemporalPrecisionEnum thePrecision) { - myStart = new DateTimeDt(theDate, thePrecision); + public void setStartWithSecondsPrecision( Date theDate) { + myStart = new DateTimeDt(theDate); } @@ -155,8 +164,8 @@ public class PeriodDt * The end of the period. If the end of the period is missing, it means that the period is ongoing *

*/ - public void setEndWithSecondsPrecision( Date theDate) { - myEnd = new DateTimeDt(theDate); + public void setEnd( Date theDate, TemporalPrecisionEnum thePrecision) { + myEnd = new DateTimeDt(theDate, thePrecision); } /** @@ -167,8 +176,8 @@ public class PeriodDt * The end of the period. If the end of the period is missing, it means that the period is ongoing *

*/ - public void setEnd( Date theDate, TemporalPrecisionEnum thePrecision) { - myEnd = new DateTimeDt(theDate, thePrecision); + public void setEndWithSecondsPrecision( Date theDate) { + myEnd = new DateTimeDt(theDate); } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/QuantityDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/QuantityDt.java index 4e1a68a8fb6..4b07f34090a 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/QuantityDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/QuantityDt.java @@ -16,12 +16,18 @@ package ca.uhn.fhir.model.dstu.composite; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.valueset.*; -import ca.uhn.fhir.model.dstu.resource.*; +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.Description; +import ca.uhn.fhir.model.dstu.valueset.QuantityCompararatorEnum; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.DecimalDt; +import ca.uhn.fhir.model.primitive.StringDt; +import ca.uhn.fhir.model.primitive.UriDt; /** * HAPI/FHIR Quantity Datatype @@ -82,6 +88,11 @@ public class QuantityDt public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myValue, myComparator, myUnits, mySystem, myCode); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myValue, myComparator, myUnits, mySystem, myCode); + } + /** * Gets the value(s) for value (Numerical value (with implicit precision)). @@ -121,7 +132,7 @@ public class QuantityDt * The value of the measured amount. The value includes an implicit precision in the presentation of the value *

*/ - public void setValue( java.math.BigDecimal theValue) { + public void setValue( long theValue) { myValue = new DecimalDt(theValue); } @@ -145,7 +156,7 @@ public class QuantityDt * The value of the measured amount. The value includes an implicit precision in the presentation of the value *

*/ - public void setValue( long theValue) { + public void setValue( java.math.BigDecimal theValue) { myValue = new DecimalDt(theValue); } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/RangeDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/RangeDt.java index 53f75792ad8..1cd873d6364 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/RangeDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/RangeDt.java @@ -16,12 +16,12 @@ package ca.uhn.fhir.model.dstu.composite; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.valueset.*; -import ca.uhn.fhir.model.dstu.resource.*; +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.Description; /** * HAPI/FHIR Range Datatype @@ -61,6 +61,11 @@ public class RangeDt public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myLow, myHigh); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myLow, myHigh); + } + /** * Gets the value(s) for low (Low limit). diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/RatioDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/RatioDt.java index a4a7ea55260..e689cd42a60 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/RatioDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/RatioDt.java @@ -16,12 +16,12 @@ package ca.uhn.fhir.model.dstu.composite; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.valueset.*; -import ca.uhn.fhir.model.dstu.resource.*; +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.Description; /** * HAPI/FHIR Ratio Datatype @@ -61,6 +61,11 @@ public class RatioDt public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myNumerator, myDenominator); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myNumerator, myDenominator); + } + /** * Gets the value(s) for numerator (Numerator value). diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/ResourceReferenceDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/ResourceReferenceDt.java index 46a73fc35c0..f38352de498 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/ResourceReferenceDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/ResourceReferenceDt.java @@ -16,12 +16,13 @@ package ca.uhn.fhir.model.dstu.composite; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.valueset.*; -import ca.uhn.fhir.model.dstu.resource.*; +import ca.uhn.fhir.model.api.BaseResourceReference; +import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.Description; +import ca.uhn.fhir.model.primitive.StringDt; /** * HAPI/FHIR ResourceReference Datatype @@ -61,6 +62,11 @@ public class ResourceReferenceDt public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myReference, myDisplay); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myReference, myDisplay); + } + /** * Gets the value(s) for reference (Relative, internal or absolute URL reference). diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/SampledDataDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/SampledDataDt.java index c4b4775e4f0..870a6531c07 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/SampledDataDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/SampledDataDt.java @@ -16,12 +16,15 @@ package ca.uhn.fhir.model.dstu.composite; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.valueset.*; -import ca.uhn.fhir.model.dstu.resource.*; +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.Description; +import ca.uhn.fhir.model.primitive.DecimalDt; +import ca.uhn.fhir.model.primitive.IntegerDt; +import ca.uhn.fhir.model.primitive.StringDt; /** * HAPI/FHIR SampledData Datatype @@ -96,6 +99,11 @@ public class SampledDataDt public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myOrigin, myPeriod, myFactor, myLowerLimit, myUpperLimit, myDimensions, myData); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myOrigin, myPeriod, myFactor, myLowerLimit, myUpperLimit, myDimensions, myData); + } + /** * Gets the value(s) for origin (Zero value and units). @@ -166,7 +174,7 @@ public class SampledDataDt * The length of time between sampling times, measured in milliseconds *

*/ - public void setPeriod( java.math.BigDecimal theValue) { + public void setPeriod( long theValue) { myPeriod = new DecimalDt(theValue); } @@ -190,7 +198,7 @@ public class SampledDataDt * The length of time between sampling times, measured in milliseconds *

*/ - public void setPeriod( long theValue) { + public void setPeriod( java.math.BigDecimal theValue) { myPeriod = new DecimalDt(theValue); } @@ -233,7 +241,7 @@ public class SampledDataDt * A correction factor that is applied to the sampled data points before they are added to the origin *

*/ - public void setFactor( java.math.BigDecimal theValue) { + public void setFactor( long theValue) { myFactor = new DecimalDt(theValue); } @@ -257,7 +265,7 @@ public class SampledDataDt * A correction factor that is applied to the sampled data points before they are added to the origin *

*/ - public void setFactor( long theValue) { + public void setFactor( java.math.BigDecimal theValue) { myFactor = new DecimalDt(theValue); } @@ -300,7 +308,7 @@ public class SampledDataDt * The lower limit of detection of the measured points. This is needed if any of the data points have the value \"L\" (lower than detection limit) *

*/ - public void setLowerLimit( java.math.BigDecimal theValue) { + public void setLowerLimit( long theValue) { myLowerLimit = new DecimalDt(theValue); } @@ -324,7 +332,7 @@ public class SampledDataDt * The lower limit of detection of the measured points. This is needed if any of the data points have the value \"L\" (lower than detection limit) *

*/ - public void setLowerLimit( long theValue) { + public void setLowerLimit( java.math.BigDecimal theValue) { myLowerLimit = new DecimalDt(theValue); } @@ -367,7 +375,7 @@ public class SampledDataDt * The upper limit of detection of the measured points. This is needed if any of the data points have the value \"U\" (higher than detection limit) *

*/ - public void setUpperLimit( java.math.BigDecimal theValue) { + public void setUpperLimit( long theValue) { myUpperLimit = new DecimalDt(theValue); } @@ -391,7 +399,7 @@ public class SampledDataDt * The upper limit of detection of the measured points. This is needed if any of the data points have the value \"U\" (higher than detection limit) *

*/ - public void setUpperLimit( long theValue) { + public void setUpperLimit( java.math.BigDecimal theValue) { myUpperLimit = new DecimalDt(theValue); } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/ScheduleDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/ScheduleDt.java index 94093399c8d..76fe3e56519 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/ScheduleDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/composite/ScheduleDt.java @@ -16,12 +16,24 @@ package ca.uhn.fhir.model.dstu.composite; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.valueset.*; -import ca.uhn.fhir.model.dstu.resource.*; +import java.util.Date; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +import ca.uhn.fhir.model.api.annotation.Block; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; +import ca.uhn.fhir.model.api.annotation.Description; +import ca.uhn.fhir.model.dstu.valueset.EventTimingEnum; +import ca.uhn.fhir.model.dstu.valueset.UnitsOfTimeEnum; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.DateTimeDt; +import ca.uhn.fhir.model.primitive.DecimalDt; +import ca.uhn.fhir.model.primitive.IntegerDt; /** * HAPI/FHIR Schedule Datatype @@ -47,7 +59,7 @@ public class ScheduleDt shortDefinition="When the event occurs", formalDefinition="Identifies specific time periods when the event should occur" ) - private List myEvent; + private java.util.List myEvent; @Child(name="repeat", order=1, min=0, max=1) @Description( @@ -61,6 +73,11 @@ public class ScheduleDt public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myEvent, myRepeat); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myEvent, myRepeat); + } + /** * Gets the value(s) for event (When the event occurs). @@ -72,9 +89,9 @@ public class ScheduleDt * Identifies specific time periods when the event should occur *

*/ - public List getEvent() { + public java.util.List getEvent() { if (myEvent == null) { - myEvent = new ArrayList(); + myEvent = new java.util.ArrayList(); } return myEvent; } @@ -87,7 +104,7 @@ public class ScheduleDt * Identifies specific time periods when the event should occur *

*/ - public void setEvent(List theValue) { + public void setEvent(java.util.List theValue) { myEvent = theValue; } @@ -195,6 +212,11 @@ public class ScheduleDt public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myFrequency, myWhen, myDuration, myUnits, myCount, myEnd); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myFrequency, myWhen, myDuration, myUnits, myCount, myEnd); + } + /** * Gets the value(s) for frequency (Event occurs frequency times per duration). @@ -320,7 +342,7 @@ public class ScheduleDt * How long each repetition should last *

*/ - public void setDuration( java.math.BigDecimal theValue) { + public void setDuration( long theValue) { myDuration = new DecimalDt(theValue); } @@ -344,7 +366,7 @@ public class ScheduleDt * How long each repetition should last *

*/ - public void setDuration( long theValue) { + public void setDuration( java.math.BigDecimal theValue) { myDuration = new DecimalDt(theValue); } @@ -473,8 +495,8 @@ public class ScheduleDt * When to stop repeating the schedule *

*/ - public void setEndWithSecondsPrecision( Date theDate) { - myEnd = new DateTimeDt(theDate); + public void setEnd( Date theDate, TemporalPrecisionEnum thePrecision) { + myEnd = new DateTimeDt(theDate, thePrecision); } /** @@ -485,8 +507,8 @@ public class ScheduleDt * When to stop repeating the schedule *

*/ - public void setEnd( Date theDate, TemporalPrecisionEnum thePrecision) { - myEnd = new DateTimeDt(theDate, thePrecision); + public void setEndWithSecondsPrecision( Date theDate) { + myEnd = new DateTimeDt(theDate); } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Binary.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Binary.java index 3b2479f76bf..381903341d8 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Binary.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Binary.java @@ -1,10 +1,14 @@ package ca.uhn.fhir.model.dstu.resource; +import java.util.List; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.IElement; import ca.uhn.fhir.model.api.IResource; import ca.uhn.fhir.model.api.annotation.ResourceDef; @ResourceDef(name="Binary", profile="http://hl7.org/fhir/profiles/Binary", id="binary") -public class Binary implements IResource { +public class Binary extends BaseElement implements IResource { // TODO: implement binary @@ -13,4 +17,10 @@ public class Binary implements IResource { return true; } + @Override + public List getAllPopulatedChildElements() { + // TODO Auto-generated method stub + return null; + } + } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Conformance.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Conformance.java index ddc2afdbe81..38a86b27c19 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Conformance.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Conformance.java @@ -16,12 +16,44 @@ package ca.uhn.fhir.model.dstu.resource; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.composite.*; -import ca.uhn.fhir.model.dstu.valueset.*; + +import java.util.Date; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.CodingDt; +import ca.uhn.fhir.model.dstu.composite.ContactDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.valueset.ConformanceEventModeEnum; +import ca.uhn.fhir.model.dstu.valueset.ConformanceStatementStatusEnum; +import ca.uhn.fhir.model.dstu.valueset.DocumentModeEnum; +import ca.uhn.fhir.model.dstu.valueset.MessageSignificanceCategoryEnum; +import ca.uhn.fhir.model.dstu.valueset.ResourceTypeEnum; +import ca.uhn.fhir.model.dstu.valueset.RestfulConformanceModeEnum; +import ca.uhn.fhir.model.dstu.valueset.RestfulOperationSystemEnum; +import ca.uhn.fhir.model.dstu.valueset.RestfulOperationTypeEnum; +import ca.uhn.fhir.model.dstu.valueset.RestfulSecurityServiceEnum; +import ca.uhn.fhir.model.dstu.valueset.SearchParamTypeEnum; +import ca.uhn.fhir.model.primitive.Base64BinaryDt; +import ca.uhn.fhir.model.primitive.BooleanDt; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.BoundCodeableConceptDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.DateTimeDt; +import ca.uhn.fhir.model.primitive.IdDt; +import ca.uhn.fhir.model.primitive.IntegerDt; +import ca.uhn.fhir.model.primitive.StringDt; +import ca.uhn.fhir.model.primitive.UriDt; + /** * HAPI/FHIR Conformance Resource @@ -234,7 +266,7 @@ public class Conformance extends BaseResource implements IResource { shortDefinition="Contacts for Organization", formalDefinition="Contacts for Organization relevant to this conformance statement. The contacts may be a website, email, phone numbers, etc." ) - private List myTelecom; + private java.util.List myTelecom; @Child(name="description", type=StringDt.class, order=5, min=0, max=1) @Description( @@ -297,43 +329,48 @@ public class Conformance extends BaseResource implements IResource { shortDefinition="formats supported (xml | json | mime type)", formalDefinition="A list of the formats supported by this implementation" ) - private List myFormat; + private java.util.List myFormat; @Child(name="profile", order=14, min=0, max=Child.MAX_UNLIMITED, type={ - Profile.class, + ca.uhn.fhir.model.dstu.resource.Profile.class, }) @Description( shortDefinition="Profiles supported by the system", formalDefinition="A list of profiles supported by the system. For a server, \"supported by the system\" means the system hosts/produces a set of recourses, conformant to a particular profile, and allows its clients to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile." ) - private List myProfile; + private java.util.List myProfile; @Child(name="rest", order=15, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="If the endpoint is a RESTful one", formalDefinition="A definition of the restful capabilities of the solution, if any" ) - private List myRest; + private java.util.List myRest; @Child(name="messaging", order=16, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="If messaging is supported", formalDefinition="A description of the messaging capabilities of the solution" ) - private List myMessaging; + private java.util.List myMessaging; @Child(name="document", order=17, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Document definition", formalDefinition="A document definition" ) - private List myDocument; + private java.util.List myDocument; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentifier, myVersion, myName, myPublisher, myTelecom, myDescription, myStatus, myExperimental, myDate, mySoftware, myImplementation, myFhirVersion, myAcceptUnknown, myFormat, myProfile, myRest, myMessaging, myDocument); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier, myVersion, myName, myPublisher, myTelecom, myDescription, myStatus, myExperimental, myDate, mySoftware, myImplementation, myFhirVersion, myAcceptUnknown, myFormat, myProfile, myRest, myMessaging, myDocument); + } + /** * Gets the value(s) for identifier (Logical id to reference this statement). @@ -517,9 +554,9 @@ public class Conformance extends BaseResource implements IResource { * Contacts for Organization relevant to this conformance statement. The contacts may be a website, email, phone numbers, etc. *

*/ - public List getTelecom() { + public java.util.List getTelecom() { if (myTelecom == null) { - myTelecom = new ArrayList(); + myTelecom = new java.util.ArrayList(); } return myTelecom; } @@ -532,7 +569,7 @@ public class Conformance extends BaseResource implements IResource { * Contacts for Organization relevant to this conformance statement. The contacts may be a website, email, phone numbers, etc. *

*/ - public void setTelecom(List theValue) { + public void setTelecom(java.util.List theValue) { myTelecom = theValue; } @@ -718,8 +755,8 @@ public class Conformance extends BaseResource implements IResource { * The date when the conformance statement was published *

*/ - public void setDateWithSecondsPrecision( Date theDate) { - myDate = new DateTimeDt(theDate); + public void setDate( Date theDate, TemporalPrecisionEnum thePrecision) { + myDate = new DateTimeDt(theDate, thePrecision); } /** @@ -730,8 +767,8 @@ public class Conformance extends BaseResource implements IResource { * The date when the conformance statement was published *

*/ - public void setDate( Date theDate, TemporalPrecisionEnum thePrecision) { - myDate = new DateTimeDt(theDate, thePrecision); + public void setDateWithSecondsPrecision( Date theDate) { + myDate = new DateTimeDt(theDate); } @@ -893,9 +930,9 @@ public class Conformance extends BaseResource implements IResource { * A list of the formats supported by this implementation *

*/ - public List getFormat() { + public java.util.List getFormat() { if (myFormat == null) { - myFormat = new ArrayList(); + myFormat = new java.util.ArrayList(); } return myFormat; } @@ -908,7 +945,7 @@ public class Conformance extends BaseResource implements IResource { * A list of the formats supported by this implementation *

*/ - public void setFormat(List theValue) { + public void setFormat(java.util.List theValue) { myFormat = theValue; } @@ -936,7 +973,7 @@ public class Conformance extends BaseResource implements IResource { */ public void addFormat( String theCode) { if (myFormat == null) { - myFormat = new ArrayList(); + myFormat = new java.util.ArrayList(); } myFormat.add(new CodeDt(theCode)); } @@ -952,9 +989,9 @@ public class Conformance extends BaseResource implements IResource { * A list of profiles supported by the system. For a server, \"supported by the system\" means the system hosts/produces a set of recourses, conformant to a particular profile, and allows its clients to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile. *

*/ - public List getProfile() { + public java.util.List getProfile() { if (myProfile == null) { - myProfile = new ArrayList(); + myProfile = new java.util.ArrayList(); } return myProfile; } @@ -967,7 +1004,7 @@ public class Conformance extends BaseResource implements IResource { * A list of profiles supported by the system. For a server, \"supported by the system\" means the system hosts/produces a set of recourses, conformant to a particular profile, and allows its clients to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile. *

*/ - public void setProfile(List theValue) { + public void setProfile(java.util.List theValue) { myProfile = theValue; } @@ -983,9 +1020,9 @@ public class Conformance extends BaseResource implements IResource { * A definition of the restful capabilities of the solution, if any *

*/ - public List getRest() { + public java.util.List getRest() { if (myRest == null) { - myRest = new ArrayList(); + myRest = new java.util.ArrayList(); } return myRest; } @@ -998,7 +1035,7 @@ public class Conformance extends BaseResource implements IResource { * A definition of the restful capabilities of the solution, if any *

*/ - public void setRest(List theValue) { + public void setRest(java.util.List theValue) { myRest = theValue; } @@ -1027,9 +1064,9 @@ public class Conformance extends BaseResource implements IResource { * A description of the messaging capabilities of the solution *

*/ - public List getMessaging() { + public java.util.List getMessaging() { if (myMessaging == null) { - myMessaging = new ArrayList(); + myMessaging = new java.util.ArrayList(); } return myMessaging; } @@ -1042,7 +1079,7 @@ public class Conformance extends BaseResource implements IResource { * A description of the messaging capabilities of the solution *

*/ - public void setMessaging(List theValue) { + public void setMessaging(java.util.List theValue) { myMessaging = theValue; } @@ -1071,9 +1108,9 @@ public class Conformance extends BaseResource implements IResource { * A document definition *

*/ - public List getDocument() { + public java.util.List getDocument() { if (myDocument == null) { - myDocument = new ArrayList(); + myDocument = new java.util.ArrayList(); } return myDocument; } @@ -1086,7 +1123,7 @@ public class Conformance extends BaseResource implements IResource { * A document definition *

*/ - public void setDocument(List theValue) { + public void setDocument(java.util.List theValue) { myDocument = theValue; } @@ -1142,6 +1179,11 @@ public class Conformance extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myName, myVersion, myReleaseDate); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myName, myVersion, myReleaseDate); + } + /** * Gets the value(s) for name (A name the software is known by). @@ -1267,8 +1309,8 @@ public class Conformance extends BaseResource implements IResource { * Date this version of the software released *

*/ - public void setReleaseDateWithSecondsPrecision( Date theDate) { - myReleaseDate = new DateTimeDt(theDate); + public void setReleaseDate( Date theDate, TemporalPrecisionEnum thePrecision) { + myReleaseDate = new DateTimeDt(theDate, thePrecision); } /** @@ -1279,8 +1321,8 @@ public class Conformance extends BaseResource implements IResource { * Date this version of the software released *

*/ - public void setReleaseDate( Date theDate, TemporalPrecisionEnum thePrecision) { - myReleaseDate = new DateTimeDt(theDate, thePrecision); + public void setReleaseDateWithSecondsPrecision( Date theDate) { + myReleaseDate = new DateTimeDt(theDate); } @@ -1318,6 +1360,11 @@ public class Conformance extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myDescription, myUrl); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myDescription, myUrl); + } + /** * Gets the value(s) for description (Describes this specific instance). @@ -1446,34 +1493,39 @@ public class Conformance extends BaseResource implements IResource { shortDefinition="Resource served on the REST interface", formalDefinition="A specification of the restful capabilities of the solution for a specific resource type" ) - private List myResource; + private java.util.List myResource; @Child(name="operation", order=4, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="What operations are supported?", formalDefinition="A specification of restful operations supported by the system" ) - private List myOperation; + private java.util.List myOperation; @Child(name="query", order=5, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Definition of a named query", formalDefinition="Definition of a named query and its parameters and their meaning" ) - private List myQuery; + private java.util.List myQuery; @Child(name="documentMailbox", type=UriDt.class, order=6, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="How documents are accepted in /Mailbox", formalDefinition="A list of profiles that this server implements for accepting documents in the mailbox. If this list is empty, then documents are not accepted. The base specification has the profile identifier \"http://hl7.org/fhir/documents/mailbox\". Other specifications can declare their own identifier for this purpose" ) - private List myDocumentMailbox; + private java.util.List myDocumentMailbox; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myMode, myDocumentation, mySecurity, myResource, myOperation, myQuery, myDocumentMailbox); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myMode, myDocumentation, mySecurity, myResource, myOperation, myQuery, myDocumentMailbox); + } + /** * Gets the value(s) for mode (client | server). @@ -1602,9 +1654,9 @@ public class Conformance extends BaseResource implements IResource { * A specification of the restful capabilities of the solution for a specific resource type *

*/ - public List getResource() { + public java.util.List getResource() { if (myResource == null) { - myResource = new ArrayList(); + myResource = new java.util.ArrayList(); } return myResource; } @@ -1617,7 +1669,7 @@ public class Conformance extends BaseResource implements IResource { * A specification of the restful capabilities of the solution for a specific resource type *

*/ - public void setResource(List theValue) { + public void setResource(java.util.List theValue) { myResource = theValue; } @@ -1646,9 +1698,9 @@ public class Conformance extends BaseResource implements IResource { * A specification of restful operations supported by the system *

*/ - public List getOperation() { + public java.util.List getOperation() { if (myOperation == null) { - myOperation = new ArrayList(); + myOperation = new java.util.ArrayList(); } return myOperation; } @@ -1661,7 +1713,7 @@ public class Conformance extends BaseResource implements IResource { * A specification of restful operations supported by the system *

*/ - public void setOperation(List theValue) { + public void setOperation(java.util.List theValue) { myOperation = theValue; } @@ -1690,9 +1742,9 @@ public class Conformance extends BaseResource implements IResource { * Definition of a named query and its parameters and their meaning *

*/ - public List getQuery() { + public java.util.List getQuery() { if (myQuery == null) { - myQuery = new ArrayList(); + myQuery = new java.util.ArrayList(); } return myQuery; } @@ -1705,7 +1757,7 @@ public class Conformance extends BaseResource implements IResource { * Definition of a named query and its parameters and their meaning *

*/ - public void setQuery(List theValue) { + public void setQuery(java.util.List theValue) { myQuery = theValue; } @@ -1734,9 +1786,9 @@ public class Conformance extends BaseResource implements IResource { * A list of profiles that this server implements for accepting documents in the mailbox. If this list is empty, then documents are not accepted. The base specification has the profile identifier \"http://hl7.org/fhir/documents/mailbox\". Other specifications can declare their own identifier for this purpose *

*/ - public List getDocumentMailbox() { + public java.util.List getDocumentMailbox() { if (myDocumentMailbox == null) { - myDocumentMailbox = new ArrayList(); + myDocumentMailbox = new java.util.ArrayList(); } return myDocumentMailbox; } @@ -1749,7 +1801,7 @@ public class Conformance extends BaseResource implements IResource { * A list of profiles that this server implements for accepting documents in the mailbox. If this list is empty, then documents are not accepted. The base specification has the profile identifier \"http://hl7.org/fhir/documents/mailbox\". Other specifications can declare their own identifier for this purpose *

*/ - public void setDocumentMailbox(List theValue) { + public void setDocumentMailbox(java.util.List theValue) { myDocumentMailbox = theValue; } @@ -1777,7 +1829,7 @@ public class Conformance extends BaseResource implements IResource { */ public void addDocumentMailbox( String theUri) { if (myDocumentMailbox == null) { - myDocumentMailbox = new ArrayList(); + myDocumentMailbox = new java.util.ArrayList(); } myDocumentMailbox.add(new UriDt(theUri)); } @@ -1809,7 +1861,7 @@ public class Conformance extends BaseResource implements IResource { shortDefinition="OAuth | OAuth2 | NTLM | Basic | Kerberos", formalDefinition="Types of security services are supported/required by the system" ) - private List> myService; + private java.util.List> myService; @Child(name="description", type=StringDt.class, order=2, min=0, max=1) @Description( @@ -1823,13 +1875,18 @@ public class Conformance extends BaseResource implements IResource { shortDefinition="Certificates associated with security profiles", formalDefinition="Certificates associated with security profiles" ) - private List myCertificate; + private java.util.List myCertificate; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myCors, myService, myDescription, myCertificate); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myCors, myService, myDescription, myCertificate); + } + /** * Gets the value(s) for cors (Adds CORS Headers (http://enable-cors.org/)). @@ -1884,9 +1941,9 @@ public class Conformance extends BaseResource implements IResource { * Types of security services are supported/required by the system *

*/ - public List> getService() { + public java.util.List> getService() { if (myService == null) { - myService = new ArrayList>(); + myService = new java.util.ArrayList>(); } return myService; } @@ -1899,7 +1956,7 @@ public class Conformance extends BaseResource implements IResource { * Types of security services are supported/required by the system *

*/ - public void setService(List> theValue) { + public void setService(java.util.List> theValue) { myService = theValue; } @@ -1983,9 +2040,9 @@ public class Conformance extends BaseResource implements IResource { * Certificates associated with security profiles *

*/ - public List getCertificate() { + public java.util.List getCertificate() { if (myCertificate == null) { - myCertificate = new ArrayList(); + myCertificate = new java.util.ArrayList(); } return myCertificate; } @@ -1998,7 +2055,7 @@ public class Conformance extends BaseResource implements IResource { * Certificates associated with security profiles *

*/ - public void setCertificate(List theValue) { + public void setCertificate(java.util.List theValue) { myCertificate = theValue; } @@ -2050,6 +2107,11 @@ public class Conformance extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myType, myBlob); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myType, myBlob); + } + /** * Gets the value(s) for type (Mime type for certificate). @@ -2161,7 +2223,7 @@ public class Conformance extends BaseResource implements IResource { private BoundCodeDt myType; @Child(name="profile", order=1, min=0, max=1, type={ - Profile.class, + ca.uhn.fhir.model.dstu.resource.Profile.class, }) @Description( shortDefinition="What structural features are supported", @@ -2174,7 +2236,7 @@ public class Conformance extends BaseResource implements IResource { shortDefinition="What operations are supported?", formalDefinition="Identifies a restful operation supported by the solution" ) - private List myOperation; + private java.util.List myOperation; @Child(name="readHistory", type=BooleanDt.class, order=3, min=0, max=1) @Description( @@ -2195,20 +2257,25 @@ public class Conformance extends BaseResource implements IResource { shortDefinition="_include values supported by the server", formalDefinition="A list of _include values supported by the server" ) - private List mySearchInclude; + private java.util.List mySearchInclude; @Child(name="searchParam", order=6, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Additional search params defined", formalDefinition="Additional search parameters for implementations to support and/or make use of" ) - private List mySearchParam; + private java.util.List mySearchParam; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myType, myProfile, myOperation, myReadHistory, myUpdateCreate, mySearchInclude, mySearchParam); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myType, myProfile, myOperation, myReadHistory, myUpdateCreate, mySearchInclude, mySearchParam); + } + /** * Gets the value(s) for type (A resource type that is supported). @@ -2294,9 +2361,9 @@ public class Conformance extends BaseResource implements IResource { * Identifies a restful operation supported by the solution *

*/ - public List getOperation() { + public java.util.List getOperation() { if (myOperation == null) { - myOperation = new ArrayList(); + myOperation = new java.util.ArrayList(); } return myOperation; } @@ -2309,7 +2376,7 @@ public class Conformance extends BaseResource implements IResource { * Identifies a restful operation supported by the solution *

*/ - public void setOperation(List theValue) { + public void setOperation(java.util.List theValue) { myOperation = theValue; } @@ -2424,9 +2491,9 @@ public class Conformance extends BaseResource implements IResource { * A list of _include values supported by the server *

*/ - public List getSearchInclude() { + public java.util.List getSearchInclude() { if (mySearchInclude == null) { - mySearchInclude = new ArrayList(); + mySearchInclude = new java.util.ArrayList(); } return mySearchInclude; } @@ -2439,7 +2506,7 @@ public class Conformance extends BaseResource implements IResource { * A list of _include values supported by the server *

*/ - public void setSearchInclude(List theValue) { + public void setSearchInclude(java.util.List theValue) { mySearchInclude = theValue; } @@ -2467,7 +2534,7 @@ public class Conformance extends BaseResource implements IResource { */ public void addSearchInclude( String theString) { if (mySearchInclude == null) { - mySearchInclude = new ArrayList(); + mySearchInclude = new java.util.ArrayList(); } mySearchInclude.add(new StringDt(theString)); } @@ -2483,9 +2550,9 @@ public class Conformance extends BaseResource implements IResource { * Additional search parameters for implementations to support and/or make use of *

*/ - public List getSearchParam() { + public java.util.List getSearchParam() { if (mySearchParam == null) { - mySearchParam = new ArrayList(); + mySearchParam = new java.util.ArrayList(); } return mySearchParam; } @@ -2498,7 +2565,7 @@ public class Conformance extends BaseResource implements IResource { * Additional search parameters for implementations to support and/or make use of *

*/ - public void setSearchParam(List theValue) { + public void setSearchParam(java.util.List theValue) { mySearchParam = theValue; } @@ -2550,6 +2617,11 @@ public class Conformance extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myCode, myDocumentation); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myCode, myDocumentation); + } + /** * Gets the value(s) for code (read | vread | update | delete | history-instance | validate | history-type | create | search-type). @@ -2685,20 +2757,25 @@ public class Conformance extends BaseResource implements IResource { shortDefinition="Types of resource (if a resource reference)", formalDefinition="Types of resource (if a resource is referenced)" ) - private List> myTarget; + private java.util.List> myTarget; @Child(name="chain", type=StringDt.class, order=5, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Chained names supported", formalDefinition="" ) - private List myChain; + private java.util.List myChain; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myName, myDefinition, myType, myDocumentation, myTarget, myChain); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myName, myDefinition, myType, myDocumentation, myTarget, myChain); + } + /** * Gets the value(s) for name (Name of search parameter). @@ -2882,9 +2959,9 @@ public class Conformance extends BaseResource implements IResource { * Types of resource (if a resource is referenced) *

*/ - public List> getTarget() { + public java.util.List> getTarget() { if (myTarget == null) { - myTarget = new ArrayList>(); + myTarget = new java.util.ArrayList>(); } return myTarget; } @@ -2897,7 +2974,7 @@ public class Conformance extends BaseResource implements IResource { * Types of resource (if a resource is referenced) *

*/ - public void setTarget(List> theValue) { + public void setTarget(java.util.List> theValue) { myTarget = theValue; } @@ -2938,9 +3015,9 @@ public class Conformance extends BaseResource implements IResource { * *

*/ - public List getChain() { + public java.util.List getChain() { if (myChain == null) { - myChain = new ArrayList(); + myChain = new java.util.ArrayList(); } return myChain; } @@ -2953,7 +3030,7 @@ public class Conformance extends BaseResource implements IResource { * *

*/ - public void setChain(List theValue) { + public void setChain(java.util.List theValue) { myChain = theValue; } @@ -2981,7 +3058,7 @@ public class Conformance extends BaseResource implements IResource { */ public void addChain( String theString) { if (myChain == null) { - myChain = new ArrayList(); + myChain = new java.util.ArrayList(); } myChain.add(new StringDt(theString)); } @@ -3022,6 +3099,11 @@ public class Conformance extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myCode, myDocumentation); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myCode, myDocumentation); + } + /** * Gets the value(s) for code (transaction | search-system | history-system). @@ -3150,13 +3232,18 @@ public class Conformance extends BaseResource implements IResource { shortDefinition="Parameter for the named query", formalDefinition="Identifies which of the parameters for the named query are supported" ) - private List myParameter; + private java.util.List myParameter; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myName, myDefinition, myDocumentation, myParameter); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myName, myDefinition, myDocumentation, myParameter); + } + /** * Gets the value(s) for name (Special named queries (_query=)). @@ -3297,9 +3384,9 @@ public class Conformance extends BaseResource implements IResource { * Identifies which of the parameters for the named query are supported *

*/ - public List getParameter() { + public java.util.List getParameter() { if (myParameter == null) { - myParameter = new ArrayList(); + myParameter = new java.util.ArrayList(); } return myParameter; } @@ -3312,7 +3399,7 @@ public class Conformance extends BaseResource implements IResource { * Identifies which of the parameters for the named query are supported *

*/ - public void setParameter(List theValue) { + public void setParameter(java.util.List theValue) { myParameter = theValue; } @@ -3373,13 +3460,18 @@ public class Conformance extends BaseResource implements IResource { shortDefinition="Declare support for this event", formalDefinition="A description of the solution's support for an event at this end point." ) - private List myEvent; + private java.util.List myEvent; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myEndpoint, myReliableCache, myDocumentation, myEvent); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myEndpoint, myReliableCache, myDocumentation, myEvent); + } + /** * Gets the value(s) for endpoint (Actual endpoint being described). @@ -3520,9 +3612,9 @@ public class Conformance extends BaseResource implements IResource { * A description of the solution's support for an event at this end point. *

*/ - public List getEvent() { + public java.util.List getEvent() { if (myEvent == null) { - myEvent = new ArrayList(); + myEvent = new java.util.ArrayList(); } return myEvent; } @@ -3535,7 +3627,7 @@ public class Conformance extends BaseResource implements IResource { * A description of the solution's support for an event at this end point. *

*/ - public void setEvent(List theValue) { + public void setEvent(java.util.List theValue) { myEvent = theValue; } @@ -3594,7 +3686,7 @@ public class Conformance extends BaseResource implements IResource { shortDefinition="http | ftp | mllp +", formalDefinition="A list of the messaging transport protocol(s) identifiers, supported by this endpoint" ) - private List myProtocol; + private java.util.List myProtocol; @Child(name="focus", type=CodeDt.class, order=4, min=1, max=1) @Description( @@ -3604,7 +3696,7 @@ public class Conformance extends BaseResource implements IResource { private BoundCodeDt myFocus; @Child(name="request", order=5, min=1, max=1, type={ - Profile.class, + ca.uhn.fhir.model.dstu.resource.Profile.class, }) @Description( shortDefinition="Profile that describes the request", @@ -3613,7 +3705,7 @@ public class Conformance extends BaseResource implements IResource { private ResourceReferenceDt myRequest; @Child(name="response", order=6, min=1, max=1, type={ - Profile.class, + ca.uhn.fhir.model.dstu.resource.Profile.class, }) @Description( shortDefinition="Profile that describes the response", @@ -3633,6 +3725,11 @@ public class Conformance extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myCode, myCategory, myMode, myProtocol, myFocus, myRequest, myResponse, myDocumentation); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myCode, myCategory, myMode, myProtocol, myFocus, myRequest, myResponse, myDocumentation); + } + /** * Gets the value(s) for code (Event type). @@ -3761,9 +3858,9 @@ public class Conformance extends BaseResource implements IResource { * A list of the messaging transport protocol(s) identifiers, supported by this endpoint *

*/ - public List getProtocol() { + public java.util.List getProtocol() { if (myProtocol == null) { - myProtocol = new ArrayList(); + myProtocol = new java.util.ArrayList(); } return myProtocol; } @@ -3776,7 +3873,7 @@ public class Conformance extends BaseResource implements IResource { * A list of the messaging transport protocol(s) identifiers, supported by this endpoint *

*/ - public void setProtocol(List theValue) { + public void setProtocol(java.util.List theValue) { myProtocol = theValue; } @@ -3974,7 +4071,7 @@ public class Conformance extends BaseResource implements IResource { private StringDt myDocumentation; @Child(name="profile", order=2, min=1, max=1, type={ - Profile.class, + ca.uhn.fhir.model.dstu.resource.Profile.class, }) @Description( shortDefinition="Constraint on a resource used in the document", @@ -3987,6 +4084,11 @@ public class Conformance extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myMode, myDocumentation, myProfile); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myMode, myDocumentation, myProfile); + } + /** * Gets the value(s) for mode (producer | consumer). diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Device.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Device.java index ffced6b7a53..8f9c646509e 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Device.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Device.java @@ -16,12 +16,24 @@ package ca.uhn.fhir.model.dstu.resource; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.composite.*; -import ca.uhn.fhir.model.dstu.valueset.*; + +import java.util.Date; + +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +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.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.ContactDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.primitive.DateDt; +import ca.uhn.fhir.model.primitive.StringDt; +import ca.uhn.fhir.model.primitive.UriDt; + /** * HAPI/FHIR Device Resource @@ -126,7 +138,7 @@ public class Device extends BaseResource implements IResource { shortDefinition="Instance id from manufacturer, owner and others", formalDefinition="Identifiers assigned to this device by various organizations. The most likely organizations to assign identifiers are the manufacturer and the owner, though regulatory agencies may also assign an identifier. The identifiers identify the particular device, not the kind of device" ) - private List myIdentifier; + private java.util.List myIdentifier; @Child(name="type", type=CodeableConceptDt.class, order=1, min=1, max=1) @Description( @@ -178,7 +190,7 @@ public class Device extends BaseResource implements IResource { private StringDt myLotNumber; @Child(name="owner", order=8, min=0, max=1, type={ - Organization.class, + ca.uhn.fhir.model.dstu.resource.Organization.class, }) @Description( shortDefinition="Organization responsible for device", @@ -187,7 +199,7 @@ public class Device extends BaseResource implements IResource { private ResourceReferenceDt myOwner; @Child(name="location", order=9, min=0, max=1, type={ - Location.class, + ca.uhn.fhir.model.dstu.resource.Location.class, }) @Description( shortDefinition="Where the resource is found", @@ -196,7 +208,7 @@ public class Device extends BaseResource implements IResource { private ResourceReferenceDt myLocation; @Child(name="patient", order=10, min=0, max=1, type={ - Patient.class, + ca.uhn.fhir.model.dstu.resource.Patient.class, }) @Description( shortDefinition="If the resource is affixed to a person", @@ -209,7 +221,7 @@ public class Device extends BaseResource implements IResource { shortDefinition="Details for human/organization for support", formalDefinition="Contact details for an organization or a particular human that is responsible for the device" ) - private List myContact; + private java.util.List myContact; @Child(name="url", type=UriDt.class, order=12, min=0, max=1) @Description( @@ -223,6 +235,11 @@ public class Device extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentifier, myType, myManufacturer, myModel, myVersion, myExpiry, myUdi, myLotNumber, myOwner, myLocation, myPatient, myContact, myUrl); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier, myType, myManufacturer, myModel, myVersion, myExpiry, myUdi, myLotNumber, myOwner, myLocation, myPatient, myContact, myUrl); + } + /** * Gets the value(s) for identifier (Instance id from manufacturer, owner and others). @@ -234,9 +251,9 @@ public class Device extends BaseResource implements IResource { * Identifiers assigned to this device by various organizations. The most likely organizations to assign identifiers are the manufacturer and the owner, though regulatory agencies may also assign an identifier. The identifiers identify the particular device, not the kind of device *

*/ - public List getIdentifier() { + public java.util.List getIdentifier() { if (myIdentifier == null) { - myIdentifier = new ArrayList(); + myIdentifier = new java.util.ArrayList(); } return myIdentifier; } @@ -249,7 +266,7 @@ public class Device extends BaseResource implements IResource { * Identifiers assigned to this device by various organizations. The most likely organizations to assign identifiers are the manufacturer and the owner, though regulatory agencies may also assign an identifier. The identifiers identify the particular device, not the kind of device *

*/ - public void setIdentifier(List theValue) { + public void setIdentifier(java.util.List theValue) { myIdentifier = theValue; } @@ -466,8 +483,8 @@ public class Device extends BaseResource implements IResource { * Date of expiry of this device (if applicable) *

*/ - public void setExpiry( Date theDate, TemporalPrecisionEnum thePrecision) { - myExpiry = new DateDt(theDate, thePrecision); + public void setExpiryWithDayPrecision( Date theDate) { + myExpiry = new DateDt(theDate); } /** @@ -478,8 +495,8 @@ public class Device extends BaseResource implements IResource { * Date of expiry of this device (if applicable) *

*/ - public void setExpiryWithDayPrecision( Date theDate) { - myExpiry = new DateDt(theDate); + public void setExpiry( Date theDate, TemporalPrecisionEnum thePrecision) { + myExpiry = new DateDt(theDate, thePrecision); } @@ -672,9 +689,9 @@ public class Device extends BaseResource implements IResource { * Contact details for an organization or a particular human that is responsible for the device *

*/ - public List getContact() { + public java.util.List getContact() { if (myContact == null) { - myContact = new ArrayList(); + myContact = new java.util.ArrayList(); } return myContact; } @@ -687,7 +704,7 @@ public class Device extends BaseResource implements IResource { * Contact details for an organization or a particular human that is responsible for the device *

*/ - public void setContact(List theValue) { + public void setContact(java.util.List theValue) { myContact = theValue; } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/DiagnosticOrder.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/DiagnosticOrder.java new file mode 100644 index 00000000000..90dcca69e96 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/DiagnosticOrder.java @@ -0,0 +1,1154 @@ + + + + + + + + + + + + + + + + +package ca.uhn.fhir.model.dstu.resource; + + +import java.util.Date; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.valueset.DiagnosticOrderPriorityEnum; +import ca.uhn.fhir.model.dstu.valueset.DiagnosticOrderStatusEnum; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.DateTimeDt; +import ca.uhn.fhir.model.primitive.StringDt; + + +/** + * HAPI/FHIR DiagnosticOrder Resource + * (A request for a diagnostic service) + * + *

+ * Definition: + * A request for a diagnostic investigation service to be performed + *

+ * + *

+ * Requirements: + * + *

+ */ +@ResourceDef(name="DiagnosticOrder", profile="http://hl7.org/fhir/profiles/DiagnosticOrder", id="diagnosticorder") +public class DiagnosticOrder extends BaseResource implements IResource { + + /** + * Search parameter constant for actor + *

+ * Description:
+ * Type: reference
+ * Path: DiagnosticOrder.event.actor | DiagnosticOrder.item.event.actor
+ *

+ */ + public static final String SP_ACTOR = "actor"; + + /** + * Search parameter constant for bodysite + *

+ * Description:
+ * Type: token
+ * Path: DiagnosticOrder.item.bodySite
+ *

+ */ + public static final String SP_BODYSITE = "bodysite"; + + /** + * Search parameter constant for code + *

+ * Description:
+ * Type: token
+ * Path: DiagnosticOrder.item.code
+ *

+ */ + public static final String SP_CODE = "code"; + + /** + * Search parameter constant for event-date + *

+ * Description:
+ * Type: date
+ * Path: DiagnosticOrder.event.dateTime
+ *

+ */ + public static final String SP_EVENT_DATE = "event-date"; + + /** + * Search parameter constant for encounter + *

+ * Description:
+ * Type: reference
+ * Path: DiagnosticOrder.encounter
+ *

+ */ + public static final String SP_ENCOUNTER = "encounter"; + + /** + * Search parameter constant for identifier + *

+ * Description:
+ * Type: token
+ * Path: DiagnosticOrder.identifier
+ *

+ */ + public static final String SP_IDENTIFIER = "identifier"; + + /** + * Search parameter constant for item-date + *

+ * Description:
+ * Type: date
+ * Path: DiagnosticOrder.item.event.dateTime
+ *

+ */ + public static final String SP_ITEM_DATE = "item-date"; + + /** + * Search parameter constant for item-past-status + *

+ * Description:
+ * Type: token
+ * Path: DiagnosticOrder.item.event.status
+ *

+ */ + public static final String SP_ITEM_PAST_STATUS = "item-past-status"; + + /** + * Search parameter constant for item-status + *

+ * Description:
+ * Type: token
+ * Path: DiagnosticOrder.item.status
+ *

+ */ + public static final String SP_ITEM_STATUS = "item-status"; + + /** + * Search parameter constant for item-status-date + *

+ * Description: A combination of item-past-status and item-date
+ * Type: composite
+ * Path: item-past-status & item-date
+ *

+ */ + public static final String SP_ITEM_STATUS_DATE = "item-status-date"; + + /** + * Search parameter constant for orderer + *

+ * Description:
+ * Type: reference
+ * Path: DiagnosticOrder.orderer
+ *

+ */ + public static final String SP_ORDERER = "orderer"; + + /** + * Search parameter constant for event-status + *

+ * Description:
+ * Type: token
+ * Path: DiagnosticOrder.event.status
+ *

+ */ + public static final String SP_EVENT_STATUS = "event-status"; + + /** + * Search parameter constant for specimen + *

+ * Description:
+ * Type: reference
+ * Path: DiagnosticOrder.specimen | DiagnosticOrder.item.specimen
+ *

+ */ + public static final String SP_SPECIMEN = "specimen"; + + /** + * Search parameter constant for status + *

+ * Description:
+ * Type: token
+ * Path: DiagnosticOrder.status
+ *

+ */ + public static final String SP_STATUS = "status"; + + /** + * Search parameter constant for event-status-date + *

+ * Description: A combination of past-status and date
+ * Type: composite
+ * Path: event-status & event-date
+ *

+ */ + public static final String SP_EVENT_STATUS_DATE = "event-status-date"; + + /** + * Search parameter constant for subject + *

+ * Description:
+ * Type: reference
+ * Path: DiagnosticOrder.subject
+ *

+ */ + public static final String SP_SUBJECT = "subject"; + + + @Child(name="subject", order=0, min=1, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Patient.class, + ca.uhn.fhir.model.dstu.resource.Group.class, + ca.uhn.fhir.model.dstu.resource.Location.class, + ca.uhn.fhir.model.dstu.resource.Device.class, + }) + @Description( + shortDefinition="Who and/or what test is about", + formalDefinition="Who or what the investigation is to be performed on. This is usually a human patient, but diagnostic tests can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans)" + ) + private ResourceReferenceDt mySubject; + + @Child(name="orderer", order=1, min=0, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Practitioner.class, + }) + @Description( + shortDefinition="Who ordered the test", + formalDefinition="The practitioner that holds legal responsibility for ordering the investigation" + ) + private ResourceReferenceDt myOrderer; + + @Child(name="identifier", type=IdentifierDt.class, order=2, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Identifiers assigned to this order", + formalDefinition="Identifiers assigned to this order by the order or by the receiver" + ) + private java.util.List myIdentifier; + + @Child(name="encounter", order=3, min=0, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Encounter.class, + }) + @Description( + shortDefinition="The encounter that this diagnostic order is associated with", + formalDefinition="An encounter that provides additional informaton about the healthcare context in which this request is made" + ) + private ResourceReferenceDt myEncounter; + + @Child(name="clinicalNotes", type=StringDt.class, order=4, min=0, max=1) + @Description( + shortDefinition="Explanation/Justification for test", + formalDefinition="An explanation or justification for why this diagnostic investigation is being requested" + ) + private StringDt myClinicalNotes; + + @Child(name="specimen", order=5, min=0, max=Child.MAX_UNLIMITED, type={ + ca.uhn.fhir.model.dstu.resource.Specimen.class, + }) + @Description( + shortDefinition="If the whole order relates to specific specimens", + formalDefinition="One or more specimens that the diagnostic investigation is about" + ) + private java.util.List mySpecimen; + + @Child(name="status", type=CodeDt.class, order=6, min=0, max=1) + @Description( + shortDefinition="requested | received | accepted | in progress | review | completed | suspended | rejected | failed", + formalDefinition="The status of the order" + ) + private BoundCodeDt myStatus; + + @Child(name="priority", type=CodeDt.class, order=7, min=0, max=1) + @Description( + shortDefinition="routine | urgent | stat | asap", + formalDefinition="The clinical priority associated with this order" + ) + private BoundCodeDt myPriority; + + @Child(name="event", order=8, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="A list of events of interest in the lifecycle", + formalDefinition="A summary of the events of interest that have occurred as the request is processed. E.g. when the order was made, various processing steps (specimens received), when it was completed" + ) + private java.util.List myEvent; + + @Child(name="item", order=9, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="The items the orderer requested", + formalDefinition="The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested" + ) + private java.util.List myItem; + + + @Override + public boolean isEmpty() { + return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( mySubject, myOrderer, myIdentifier, myEncounter, myClinicalNotes, mySpecimen, myStatus, myPriority, myEvent, myItem); + } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( mySubject, myOrderer, myIdentifier, myEncounter, myClinicalNotes, mySpecimen, myStatus, myPriority, myEvent, myItem); + } + + + /** + * Gets the value(s) for subject (Who and/or what test is about). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Who or what the investigation is to be performed on. This is usually a human patient, but diagnostic tests can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans) + *

+ */ + public ResourceReferenceDt getSubject() { + return mySubject; + } + + /** + * Sets the value(s) for subject (Who and/or what test is about) + * + *

+ * Definition: + * Who or what the investigation is to be performed on. This is usually a human patient, but diagnostic tests can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans) + *

+ */ + public void setSubject(ResourceReferenceDt theValue) { + mySubject = theValue; + } + + + + /** + * Gets the value(s) for orderer (Who ordered the test). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The practitioner that holds legal responsibility for ordering the investigation + *

+ */ + public ResourceReferenceDt getOrderer() { + if (myOrderer == null) { + myOrderer = new ResourceReferenceDt(); + } + return myOrderer; + } + + /** + * Sets the value(s) for orderer (Who ordered the test) + * + *

+ * Definition: + * The practitioner that holds legal responsibility for ordering the investigation + *

+ */ + public void setOrderer(ResourceReferenceDt theValue) { + myOrderer = theValue; + } + + + + /** + * Gets the value(s) for identifier (Identifiers assigned to this order). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Identifiers assigned to this order by the order or by the receiver + *

+ */ + public java.util.List getIdentifier() { + if (myIdentifier == null) { + myIdentifier = new java.util.ArrayList(); + } + return myIdentifier; + } + + /** + * Sets the value(s) for identifier (Identifiers assigned to this order) + * + *

+ * Definition: + * Identifiers assigned to this order by the order or by the receiver + *

+ */ + public void setIdentifier(java.util.List theValue) { + myIdentifier = theValue; + } + + /** + * Adds and returns a new value for identifier (Identifiers assigned to this order) + * + *

+ * Definition: + * Identifiers assigned to this order by the order or by the receiver + *

+ */ + public IdentifierDt addIdentifier() { + IdentifierDt newType = new IdentifierDt(); + getIdentifier().add(newType); + return newType; + } + + + /** + * Gets the value(s) for encounter (The encounter that this diagnostic order is associated with). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * An encounter that provides additional informaton about the healthcare context in which this request is made + *

+ */ + public ResourceReferenceDt getEncounter() { + if (myEncounter == null) { + myEncounter = new ResourceReferenceDt(); + } + return myEncounter; + } + + /** + * Sets the value(s) for encounter (The encounter that this diagnostic order is associated with) + * + *

+ * Definition: + * An encounter that provides additional informaton about the healthcare context in which this request is made + *

+ */ + public void setEncounter(ResourceReferenceDt theValue) { + myEncounter = theValue; + } + + + + /** + * Gets the value(s) for clinicalNotes (Explanation/Justification for test). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * An explanation or justification for why this diagnostic investigation is being requested + *

+ */ + public StringDt getClinicalNotes() { + if (myClinicalNotes == null) { + myClinicalNotes = new StringDt(); + } + return myClinicalNotes; + } + + /** + * Sets the value(s) for clinicalNotes (Explanation/Justification for test) + * + *

+ * Definition: + * An explanation or justification for why this diagnostic investigation is being requested + *

+ */ + public void setClinicalNotes(StringDt theValue) { + myClinicalNotes = theValue; + } + + + /** + * Sets the value for clinicalNotes (Explanation/Justification for test) + * + *

+ * Definition: + * An explanation or justification for why this diagnostic investigation is being requested + *

+ */ + public void setClinicalNotes( String theString) { + myClinicalNotes = new StringDt(theString); + } + + + /** + * Gets the value(s) for specimen (If the whole order relates to specific specimens). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * One or more specimens that the diagnostic investigation is about + *

+ */ + public java.util.List getSpecimen() { + if (mySpecimen == null) { + mySpecimen = new java.util.ArrayList(); + } + return mySpecimen; + } + + /** + * Sets the value(s) for specimen (If the whole order relates to specific specimens) + * + *

+ * Definition: + * One or more specimens that the diagnostic investigation is about + *

+ */ + public void setSpecimen(java.util.List theValue) { + mySpecimen = theValue; + } + + + + /** + * Gets the value(s) for status (requested | received | accepted | in progress | review | completed | suspended | rejected | failed). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The status of the order + *

+ */ + public BoundCodeDt getStatus() { + if (myStatus == null) { + myStatus = new BoundCodeDt(DiagnosticOrderStatusEnum.VALUESET_BINDER); + } + return myStatus; + } + + /** + * Sets the value(s) for status (requested | received | accepted | in progress | review | completed | suspended | rejected | failed) + * + *

+ * Definition: + * The status of the order + *

+ */ + public void setStatus(BoundCodeDt theValue) { + myStatus = theValue; + } + + + /** + * Sets the value(s) for status (requested | received | accepted | in progress | review | completed | suspended | rejected | failed) + * + *

+ * Definition: + * The status of the order + *

+ */ + public void setStatus(DiagnosticOrderStatusEnum theValue) { + getStatus().setValueAsEnum(theValue); + } + + + /** + * Gets the value(s) for priority (routine | urgent | stat | asap). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The clinical priority associated with this order + *

+ */ + public BoundCodeDt getPriority() { + if (myPriority == null) { + myPriority = new BoundCodeDt(DiagnosticOrderPriorityEnum.VALUESET_BINDER); + } + return myPriority; + } + + /** + * Sets the value(s) for priority (routine | urgent | stat | asap) + * + *

+ * Definition: + * The clinical priority associated with this order + *

+ */ + public void setPriority(BoundCodeDt theValue) { + myPriority = theValue; + } + + + /** + * Sets the value(s) for priority (routine | urgent | stat | asap) + * + *

+ * Definition: + * The clinical priority associated with this order + *

+ */ + public void setPriority(DiagnosticOrderPriorityEnum theValue) { + getPriority().setValueAsEnum(theValue); + } + + + /** + * Gets the value(s) for event (A list of events of interest in the lifecycle). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * A summary of the events of interest that have occurred as the request is processed. E.g. when the order was made, various processing steps (specimens received), when it was completed + *

+ */ + public java.util.List getEvent() { + if (myEvent == null) { + myEvent = new java.util.ArrayList(); + } + return myEvent; + } + + /** + * Sets the value(s) for event (A list of events of interest in the lifecycle) + * + *

+ * Definition: + * A summary of the events of interest that have occurred as the request is processed. E.g. when the order was made, various processing steps (specimens received), when it was completed + *

+ */ + public void setEvent(java.util.List theValue) { + myEvent = theValue; + } + + /** + * Adds and returns a new value for event (A list of events of interest in the lifecycle) + * + *

+ * Definition: + * A summary of the events of interest that have occurred as the request is processed. E.g. when the order was made, various processing steps (specimens received), when it was completed + *

+ */ + public Event addEvent() { + Event newType = new Event(); + getEvent().add(newType); + return newType; + } + + + /** + * Gets the value(s) for item (The items the orderer requested). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested + *

+ */ + public java.util.List getItem() { + if (myItem == null) { + myItem = new java.util.ArrayList(); + } + return myItem; + } + + /** + * Sets the value(s) for item (The items the orderer requested) + * + *

+ * Definition: + * The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested + *

+ */ + public void setItem(java.util.List theValue) { + myItem = theValue; + } + + /** + * Adds and returns a new value for item (The items the orderer requested) + * + *

+ * Definition: + * The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested + *

+ */ + public Item addItem() { + Item newType = new Item(); + getItem().add(newType); + return newType; + } + + + /** + * Block class for child element: DiagnosticOrder.event (A list of events of interest in the lifecycle) + * + *

+ * Definition: + * A summary of the events of interest that have occurred as the request is processed. E.g. when the order was made, various processing steps (specimens received), when it was completed + *

+ */ + @Block(name="DiagnosticOrder.event") + public static class Event extends BaseElement implements IResourceBlock { + + @Child(name="status", type=CodeDt.class, order=0, min=1, max=1) + @Description( + shortDefinition="requested | received | accepted | in progress | review | completed | suspended | rejected | failed", + formalDefinition="The status for the event" + ) + private BoundCodeDt myStatus; + + @Child(name="description", type=CodeableConceptDt.class, order=1, min=0, max=1) + @Description( + shortDefinition="More information about the event and it's context", + formalDefinition="Additional information about the event that occurred - e.g. if the status remained unchanged" + ) + private CodeableConceptDt myDescription; + + @Child(name="dateTime", type=DateTimeDt.class, order=2, min=1, max=1) + @Description( + shortDefinition="The date at which the event happened", + formalDefinition="The date/time at which the event occurred" + ) + private DateTimeDt myDateTime; + + @Child(name="actor", order=3, min=0, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Practitioner.class, + ca.uhn.fhir.model.dstu.resource.Device.class, + }) + @Description( + shortDefinition="Who recorded or did this", + formalDefinition="The person who was responsible for performing or recording the action" + ) + private ResourceReferenceDt myActor; + + + @Override + public boolean isEmpty() { + return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myStatus, myDescription, myDateTime, myActor); + } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myStatus, myDescription, myDateTime, myActor); + } + + + /** + * Gets the value(s) for status (requested | received | accepted | in progress | review | completed | suspended | rejected | failed). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The status for the event + *

+ */ + public BoundCodeDt getStatus() { + if (myStatus == null) { + myStatus = new BoundCodeDt(DiagnosticOrderStatusEnum.VALUESET_BINDER); + } + return myStatus; + } + + /** + * Sets the value(s) for status (requested | received | accepted | in progress | review | completed | suspended | rejected | failed) + * + *

+ * Definition: + * The status for the event + *

+ */ + public void setStatus(BoundCodeDt theValue) { + myStatus = theValue; + } + + + /** + * Sets the value(s) for status (requested | received | accepted | in progress | review | completed | suspended | rejected | failed) + * + *

+ * Definition: + * The status for the event + *

+ */ + public void setStatus(DiagnosticOrderStatusEnum theValue) { + getStatus().setValueAsEnum(theValue); + } + + + /** + * Gets the value(s) for description (More information about the event and it's context). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Additional information about the event that occurred - e.g. if the status remained unchanged + *

+ */ + public CodeableConceptDt getDescription() { + if (myDescription == null) { + myDescription = new CodeableConceptDt(); + } + return myDescription; + } + + /** + * Sets the value(s) for description (More information about the event and it's context) + * + *

+ * Definition: + * Additional information about the event that occurred - e.g. if the status remained unchanged + *

+ */ + public void setDescription(CodeableConceptDt theValue) { + myDescription = theValue; + } + + + + /** + * Gets the value(s) for dateTime (The date at which the event happened). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The date/time at which the event occurred + *

+ */ + public DateTimeDt getDateTime() { + if (myDateTime == null) { + myDateTime = new DateTimeDt(); + } + return myDateTime; + } + + /** + * Sets the value(s) for dateTime (The date at which the event happened) + * + *

+ * Definition: + * The date/time at which the event occurred + *

+ */ + public void setDateTime(DateTimeDt theValue) { + myDateTime = theValue; + } + + + /** + * Sets the value for dateTime (The date at which the event happened) + * + *

+ * Definition: + * The date/time at which the event occurred + *

+ */ + public void setDateTime( Date theDate, TemporalPrecisionEnum thePrecision) { + myDateTime = new DateTimeDt(theDate, thePrecision); + } + + /** + * Sets the value for dateTime (The date at which the event happened) + * + *

+ * Definition: + * The date/time at which the event occurred + *

+ */ + public void setDateTimeWithSecondsPrecision( Date theDate) { + myDateTime = new DateTimeDt(theDate); + } + + + /** + * Gets the value(s) for actor (Who recorded or did this). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The person who was responsible for performing or recording the action + *

+ */ + public ResourceReferenceDt getActor() { + return myActor; + } + + /** + * Sets the value(s) for actor (Who recorded or did this) + * + *

+ * Definition: + * The person who was responsible for performing or recording the action + *

+ */ + public void setActor(ResourceReferenceDt theValue) { + myActor = theValue; + } + + + + + } + + + /** + * Block class for child element: DiagnosticOrder.item (The items the orderer requested) + * + *

+ * Definition: + * The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested + *

+ */ + @Block(name="DiagnosticOrder.item") + public static class Item extends BaseElement implements IResourceBlock { + + @Child(name="code", type=CodeableConceptDt.class, order=0, min=1, max=1) + @Description( + shortDefinition="Code to indicate the item (test or panel) being ordered", + formalDefinition="A code that identifies a particular diagnostic investigation, or panel of investigations, that have been requested" + ) + private CodeableConceptDt myCode; + + @Child(name="specimen", order=1, min=0, max=Child.MAX_UNLIMITED, type={ + ca.uhn.fhir.model.dstu.resource.Specimen.class, + }) + @Description( + shortDefinition="If this item relates to specific specimens", + formalDefinition="If the item is related to a specific speciment" + ) + private java.util.List mySpecimen; + + @Child(name="bodySite", type=CodeableConceptDt.class, order=2, min=0, max=1) + @Description( + shortDefinition="Location of requested test (if applicable)", + formalDefinition="Anatomical location where the request test should be performed" + ) + private CodeableConceptDt myBodySite; + + @Child(name="status", type=CodeDt.class, order=3, min=0, max=1) + @Description( + shortDefinition="requested | received | accepted | in progress | review | completed | suspended | rejected | failed", + formalDefinition="The status of this individual item within the order" + ) + private BoundCodeDt myStatus; + + @Child(name="event", type=Event.class, order=4, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Events specific to this item", + formalDefinition="A summary of the events of interest that have occurred as this item of the request is processed" + ) + private java.util.List myEvent; + + + @Override + public boolean isEmpty() { + return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myCode, mySpecimen, myBodySite, myStatus, myEvent); + } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myCode, mySpecimen, myBodySite, myStatus, myEvent); + } + + + /** + * Gets the value(s) for code (Code to indicate the item (test or panel) being ordered). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * A code that identifies a particular diagnostic investigation, or panel of investigations, that have been requested + *

+ */ + public CodeableConceptDt getCode() { + if (myCode == null) { + myCode = new CodeableConceptDt(); + } + return myCode; + } + + /** + * Sets the value(s) for code (Code to indicate the item (test or panel) being ordered) + * + *

+ * Definition: + * A code that identifies a particular diagnostic investigation, or panel of investigations, that have been requested + *

+ */ + public void setCode(CodeableConceptDt theValue) { + myCode = theValue; + } + + + + /** + * Gets the value(s) for specimen (If this item relates to specific specimens). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * If the item is related to a specific speciment + *

+ */ + public java.util.List getSpecimen() { + if (mySpecimen == null) { + mySpecimen = new java.util.ArrayList(); + } + return mySpecimen; + } + + /** + * Sets the value(s) for specimen (If this item relates to specific specimens) + * + *

+ * Definition: + * If the item is related to a specific speciment + *

+ */ + public void setSpecimen(java.util.List theValue) { + mySpecimen = theValue; + } + + + + /** + * Gets the value(s) for bodySite (Location of requested test (if applicable)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Anatomical location where the request test should be performed + *

+ */ + public CodeableConceptDt getBodySite() { + if (myBodySite == null) { + myBodySite = new CodeableConceptDt(); + } + return myBodySite; + } + + /** + * Sets the value(s) for bodySite (Location of requested test (if applicable)) + * + *

+ * Definition: + * Anatomical location where the request test should be performed + *

+ */ + public void setBodySite(CodeableConceptDt theValue) { + myBodySite = theValue; + } + + + + /** + * Gets the value(s) for status (requested | received | accepted | in progress | review | completed | suspended | rejected | failed). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The status of this individual item within the order + *

+ */ + public BoundCodeDt getStatus() { + if (myStatus == null) { + myStatus = new BoundCodeDt(DiagnosticOrderStatusEnum.VALUESET_BINDER); + } + return myStatus; + } + + /** + * Sets the value(s) for status (requested | received | accepted | in progress | review | completed | suspended | rejected | failed) + * + *

+ * Definition: + * The status of this individual item within the order + *

+ */ + public void setStatus(BoundCodeDt theValue) { + myStatus = theValue; + } + + + /** + * Sets the value(s) for status (requested | received | accepted | in progress | review | completed | suspended | rejected | failed) + * + *

+ * Definition: + * The status of this individual item within the order + *

+ */ + public void setStatus(DiagnosticOrderStatusEnum theValue) { + getStatus().setValueAsEnum(theValue); + } + + + /** + * Gets the value(s) for event (Events specific to this item). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * A summary of the events of interest that have occurred as this item of the request is processed + *

+ */ + public java.util.List getEvent() { + if (myEvent == null) { + myEvent = new java.util.ArrayList(); + } + return myEvent; + } + + /** + * Sets the value(s) for event (Events specific to this item) + * + *

+ * Definition: + * A summary of the events of interest that have occurred as this item of the request is processed + *

+ */ + public void setEvent(java.util.List theValue) { + myEvent = theValue; + } + + /** + * Adds and returns a new value for event (Events specific to this item) + * + *

+ * Definition: + * A summary of the events of interest that have occurred as this item of the request is processed + *

+ */ + public Event addEvent() { + Event newType = new Event(); + getEvent().add(newType); + return newType; + } + + + + } + + + + +} \ No newline at end of file diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/DiagnosticReport.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/DiagnosticReport.java new file mode 100644 index 00000000000..33bfc23b235 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/DiagnosticReport.java @@ -0,0 +1,1027 @@ + + + + + + + + + + + + + + + + +package ca.uhn.fhir.model.dstu.resource; + + +import java.util.Date; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.AttachmentDt; +import ca.uhn.fhir.model.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.composite.PeriodDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.valueset.DiagnosticReportStatusEnum; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.DateTimeDt; +import ca.uhn.fhir.model.primitive.StringDt; + + +/** + * HAPI/FHIR DiagnosticReport Resource + * (A Diagnostic report - a combination of request information, atomic results, images, interpretation, as well as formatted reports) + * + *

+ * Definition: + * 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 interpretation, and formatted representation of diagnostic reports + *

+ * + *

+ * Requirements: + * To support reporting for any diagnostic report into a clinical data repository. + *

+ */ +@ResourceDef(name="DiagnosticReport", profile="http://hl7.org/fhir/profiles/DiagnosticReport", id="diagnosticreport") +public class DiagnosticReport extends BaseResource implements IResource { + + /** + * Search parameter constant for status + *

+ * Description: The status of the report
+ * Type: token
+ * Path: DiagnosticReport.status
+ *

+ */ + public static final String SP_STATUS = "status"; + + /** + * Search parameter constant for issued + *

+ * Description: When the report was issued
+ * Type: date
+ * Path: DiagnosticReport.issued
+ *

+ */ + public static final String SP_ISSUED = "issued"; + + /** + * Search parameter constant for subject + *

+ * Description: The subject of the report
+ * Type: reference
+ * Path: DiagnosticReport.subject
+ *

+ */ + public static final String SP_SUBJECT = "subject"; + + /** + * Search parameter constant for performer + *

+ * Description: Who was the source of the report (organization)
+ * Type: reference
+ * Path: DiagnosticReport.performer
+ *

+ */ + public static final String SP_PERFORMER = "performer"; + + /** + * Search parameter constant for identifier + *

+ * Description: An identifier for the report
+ * Type: token
+ * Path: DiagnosticReport.identifier
+ *

+ */ + public static final String SP_IDENTIFIER = "identifier"; + + /** + * Search parameter constant for service + *

+ * Description: Which diagnostic discipline/department created the report
+ * Type: token
+ * Path: DiagnosticReport.serviceCategory
+ *

+ */ + public static final String SP_SERVICE = "service"; + + /** + * Search parameter constant for date + *

+ * Description: The clinically relevant time of the report
+ * Type: date
+ * Path: DiagnosticReport.diagnostic[x]
+ *

+ */ + public static final String SP_DATE = "date"; + + /** + * Search parameter constant for specimen + *

+ * Description: The specimen details
+ * Type: reference
+ * Path: DiagnosticReport.specimen
+ *

+ */ + public static final String SP_SPECIMEN = "specimen"; + + /** + * Search parameter constant for name + *

+ * Description: The name of the report (e.g. the code for the report as a whole, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result)
+ * Type: token
+ * Path: DiagnosticReport.name
+ *

+ */ + public static final String SP_NAME = "name"; + + /** + * Search parameter constant for result + *

+ * Description: Link to an atomic result (observation resource)
+ * Type: reference
+ * Path: DiagnosticReport.result
+ *

+ */ + public static final String SP_RESULT = "result"; + + /** + * Search parameter constant for diagnosis + *

+ * Description: A coded diagnosis on the report
+ * Type: token
+ * Path: DiagnosticReport.codedDiagnosis
+ *

+ */ + public static final String SP_DIAGNOSIS = "diagnosis"; + + /** + * Search parameter constant for image + *

+ * Description:
+ * Type: reference
+ * Path: DiagnosticReport.image.link
+ *

+ */ + public static final String SP_IMAGE = "image"; + + /** + * Search parameter constant for request + *

+ * Description:
+ * Type: reference
+ * Path: DiagnosticReport.requestDetail
+ *

+ */ + public static final String SP_REQUEST = "request"; + + + @Child(name="name", type=CodeableConceptDt.class, order=0, min=1, max=1) + @Description( + shortDefinition="Name/Code for this diagnostic report", + formalDefinition="A code or name that describes this diagnostic report" + ) + private CodeableConceptDt myName; + + @Child(name="status", type=CodeDt.class, order=1, min=1, max=1) + @Description( + shortDefinition="registered | partial | final | corrected +", + formalDefinition="The status of the diagnostic report as a whole" + ) + private BoundCodeDt myStatus; + + @Child(name="issued", type=DateTimeDt.class, order=2, min=1, max=1) + @Description( + shortDefinition="Date this version was released", + formalDefinition="The date and/or time that this version of the report was released from the source diagnostic service" + ) + private DateTimeDt myIssued; + + @Child(name="subject", order=3, min=1, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Patient.class, + ca.uhn.fhir.model.dstu.resource.Group.class, + ca.uhn.fhir.model.dstu.resource.Device.class, + ca.uhn.fhir.model.dstu.resource.Location.class, + }) + @Description( + shortDefinition="The subject of the report, usually, but not always, the patient", + formalDefinition="The subject of the report. Usually, but not always, this is a patient. However diagnostic services also perform analyses on specimens collected from a variety of other sources" + ) + private ResourceReferenceDt mySubject; + + @Child(name="performer", order=4, min=1, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Practitioner.class, + ca.uhn.fhir.model.dstu.resource.Organization.class, + }) + @Description( + shortDefinition="Responsible Diagnostic Service", + formalDefinition="The diagnostic service that is responsible for issuing the report" + ) + private ResourceReferenceDt myPerformer; + + @Child(name="identifier", type=IdentifierDt.class, order=5, min=0, max=1) + @Description( + shortDefinition="Id for external references to this report", + formalDefinition="The local ID assigned to the report by the order filler, usually by the Information System of the diagnostic service provider" + ) + private IdentifierDt myIdentifier; + + @Child(name="requestDetail", order=6, min=0, max=Child.MAX_UNLIMITED, type={ + ca.uhn.fhir.model.dstu.resource.DiagnosticOrder.class, + }) + @Description( + shortDefinition="What was requested", + formalDefinition="Details concerning a test requested." + ) + private java.util.List myRequestDetail; + + @Child(name="serviceCategory", type=CodeableConceptDt.class, order=7, min=0, max=1) + @Description( + shortDefinition="Biochemistry, Hematology etc.", + formalDefinition="The section of the diagnostic service that performs the examination e.g. biochemistry, hematology, MRI" + ) + private CodeableConceptDt myServiceCategory; + + @Child(name="diagnostic", order=8, min=1, max=1, type={ + DateTimeDt.class, + PeriodDt.class, + }) + @Description( + shortDefinition="Physiologically Relevant time/time-period for report", + formalDefinition="The time or time-period the observed values are related to. This is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself" + ) + private IDatatype myDiagnostic; + + @Child(name="specimen", order=9, min=0, max=Child.MAX_UNLIMITED, type={ + ca.uhn.fhir.model.dstu.resource.Specimen.class, + }) + @Description( + shortDefinition="Specimens this report is based on", + formalDefinition="Details about the specimens on which this Disagnostic report is based" + ) + private java.util.List mySpecimen; + + @Child(name="result", order=10, min=0, max=Child.MAX_UNLIMITED, type={ + ca.uhn.fhir.model.dstu.resource.Observation.class, + }) + @Description( + shortDefinition="Observations - simple, or complex nested groups", + formalDefinition="Observations that are part of this diagnostic report. Observations can be simple name/value pairs (e.g. \"atomic\" results), or they can be grouping observations that include references to other members of the group (e.g. \"panels\")" + ) + private java.util.List myResult; + + @Child(name="imagingStudy", order=11, min=0, max=Child.MAX_UNLIMITED, type={ + ca.uhn.fhir.model.dstu.resource.ImagingStudy.class, + }) + @Description( + shortDefinition="Reference to full details of imaging associated with the diagnostic report", + formalDefinition="One or more links to full details of any imaging performed during the diagnostic investigation. Typically, this is imaging performed by DICOM enabled modalities, but this is not required. A fully enabled PACS viewer can use this information to provide views of the source images" + ) + private java.util.List myImagingStudy; + + @Child(name="image", order=12, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Key images associated with this report", + formalDefinition="A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest)" + ) + private java.util.List myImage; + + @Child(name="conclusion", type=StringDt.class, order=13, min=0, max=1) + @Description( + shortDefinition="Clinical Interpretation of test results", + formalDefinition="Concise and clinically contextualized narrative interpretation of the diagnostic report" + ) + private StringDt myConclusion; + + @Child(name="codedDiagnosis", type=CodeableConceptDt.class, order=14, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Codes for the conclusion", + formalDefinition="" + ) + private java.util.List myCodedDiagnosis; + + @Child(name="presentedForm", type=AttachmentDt.class, order=15, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Entire Report as issued", + formalDefinition="Rich text representation of the entire result as issued by the diagnostic service. Multiple formats are allowed but they SHALL be semantically equivalent." + ) + private java.util.List myPresentedForm; + + + @Override + public boolean isEmpty() { + return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myName, myStatus, myIssued, mySubject, myPerformer, myIdentifier, myRequestDetail, myServiceCategory, myDiagnostic, mySpecimen, myResult, myImagingStudy, myImage, myConclusion, myCodedDiagnosis, myPresentedForm); + } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myName, myStatus, myIssued, mySubject, myPerformer, myIdentifier, myRequestDetail, myServiceCategory, myDiagnostic, mySpecimen, myResult, myImagingStudy, myImage, myConclusion, myCodedDiagnosis, myPresentedForm); + } + + + /** + * Gets the value(s) for name (Name/Code for this diagnostic report). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * A code or name that describes this diagnostic report + *

+ */ + public CodeableConceptDt getName() { + if (myName == null) { + myName = new CodeableConceptDt(); + } + return myName; + } + + /** + * Sets the value(s) for name (Name/Code for this diagnostic report) + * + *

+ * Definition: + * A code or name that describes this diagnostic report + *

+ */ + public void setName(CodeableConceptDt theValue) { + myName = theValue; + } + + + + /** + * Gets the value(s) for status (registered | partial | final | corrected +). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The status of the diagnostic report as a whole + *

+ */ + public BoundCodeDt getStatus() { + if (myStatus == null) { + myStatus = new BoundCodeDt(DiagnosticReportStatusEnum.VALUESET_BINDER); + } + return myStatus; + } + + /** + * Sets the value(s) for status (registered | partial | final | corrected +) + * + *

+ * Definition: + * The status of the diagnostic report as a whole + *

+ */ + public void setStatus(BoundCodeDt theValue) { + myStatus = theValue; + } + + + /** + * Sets the value(s) for status (registered | partial | final | corrected +) + * + *

+ * Definition: + * The status of the diagnostic report as a whole + *

+ */ + public void setStatus(DiagnosticReportStatusEnum theValue) { + getStatus().setValueAsEnum(theValue); + } + + + /** + * Gets the value(s) for issued (Date this version was released). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The date and/or time that this version of the report was released from the source diagnostic service + *

+ */ + public DateTimeDt getIssued() { + if (myIssued == null) { + myIssued = new DateTimeDt(); + } + return myIssued; + } + + /** + * Sets the value(s) for issued (Date this version was released) + * + *

+ * Definition: + * The date and/or time that this version of the report was released from the source diagnostic service + *

+ */ + public void setIssued(DateTimeDt theValue) { + myIssued = theValue; + } + + + /** + * Sets the value for issued (Date this version was released) + * + *

+ * Definition: + * The date and/or time that this version of the report was released from the source diagnostic service + *

+ */ + public void setIssued( Date theDate, TemporalPrecisionEnum thePrecision) { + myIssued = new DateTimeDt(theDate, thePrecision); + } + + /** + * Sets the value for issued (Date this version was released) + * + *

+ * Definition: + * The date and/or time that this version of the report was released from the source diagnostic service + *

+ */ + public void setIssuedWithSecondsPrecision( Date theDate) { + myIssued = new DateTimeDt(theDate); + } + + + /** + * Gets the value(s) for subject (The subject of the report, usually, but not always, the patient). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The subject of the report. Usually, but not always, this is a patient. However diagnostic services also perform analyses on specimens collected from a variety of other sources + *

+ */ + public ResourceReferenceDt getSubject() { + return mySubject; + } + + /** + * Sets the value(s) for subject (The subject of the report, usually, but not always, the patient) + * + *

+ * Definition: + * The subject of the report. Usually, but not always, this is a patient. However diagnostic services also perform analyses on specimens collected from a variety of other sources + *

+ */ + public void setSubject(ResourceReferenceDt theValue) { + mySubject = theValue; + } + + + + /** + * Gets the value(s) for performer (Responsible Diagnostic Service). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The diagnostic service that is responsible for issuing the report + *

+ */ + public ResourceReferenceDt getPerformer() { + return myPerformer; + } + + /** + * Sets the value(s) for performer (Responsible Diagnostic Service) + * + *

+ * Definition: + * The diagnostic service that is responsible for issuing the report + *

+ */ + public void setPerformer(ResourceReferenceDt theValue) { + myPerformer = theValue; + } + + + + /** + * Gets the value(s) for identifier (Id for external references to this report). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The local ID assigned to the report by the order filler, usually by the Information System of the diagnostic service provider + *

+ */ + public IdentifierDt getIdentifier() { + if (myIdentifier == null) { + myIdentifier = new IdentifierDt(); + } + return myIdentifier; + } + + /** + * Sets the value(s) for identifier (Id for external references to this report) + * + *

+ * Definition: + * The local ID assigned to the report by the order filler, usually by the Information System of the diagnostic service provider + *

+ */ + public void setIdentifier(IdentifierDt theValue) { + myIdentifier = theValue; + } + + + + /** + * Gets the value(s) for requestDetail (What was requested). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Details concerning a test requested. + *

+ */ + public java.util.List getRequestDetail() { + if (myRequestDetail == null) { + myRequestDetail = new java.util.ArrayList(); + } + return myRequestDetail; + } + + /** + * Sets the value(s) for requestDetail (What was requested) + * + *

+ * Definition: + * Details concerning a test requested. + *

+ */ + public void setRequestDetail(java.util.List theValue) { + myRequestDetail = theValue; + } + + + + /** + * Gets the value(s) for serviceCategory (Biochemistry, Hematology etc.). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The section of the diagnostic service that performs the examination e.g. biochemistry, hematology, MRI + *

+ */ + public CodeableConceptDt getServiceCategory() { + if (myServiceCategory == null) { + myServiceCategory = new CodeableConceptDt(); + } + return myServiceCategory; + } + + /** + * Sets the value(s) for serviceCategory (Biochemistry, Hematology etc.) + * + *

+ * Definition: + * The section of the diagnostic service that performs the examination e.g. biochemistry, hematology, MRI + *

+ */ + public void setServiceCategory(CodeableConceptDt theValue) { + myServiceCategory = theValue; + } + + + + /** + * Gets the value(s) for diagnostic[x] (Physiologically Relevant time/time-period for report). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The time or time-period the observed values are related to. This is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself + *

+ */ + public IDatatype getDiagnostic() { + return myDiagnostic; + } + + /** + * Sets the value(s) for diagnostic[x] (Physiologically Relevant time/time-period for report) + * + *

+ * Definition: + * The time or time-period the observed values are related to. This is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself + *

+ */ + public void setDiagnostic(IDatatype theValue) { + myDiagnostic = theValue; + } + + + + /** + * Gets the value(s) for specimen (Specimens this report is based on). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Details about the specimens on which this Disagnostic report is based + *

+ */ + public java.util.List getSpecimen() { + if (mySpecimen == null) { + mySpecimen = new java.util.ArrayList(); + } + return mySpecimen; + } + + /** + * Sets the value(s) for specimen (Specimens this report is based on) + * + *

+ * Definition: + * Details about the specimens on which this Disagnostic report is based + *

+ */ + public void setSpecimen(java.util.List theValue) { + mySpecimen = theValue; + } + + + + /** + * Gets the value(s) for result (Observations - simple, or complex nested groups). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Observations that are part of this diagnostic report. Observations can be simple name/value pairs (e.g. \"atomic\" results), or they can be grouping observations that include references to other members of the group (e.g. \"panels\") + *

+ */ + public java.util.List getResult() { + if (myResult == null) { + myResult = new java.util.ArrayList(); + } + return myResult; + } + + /** + * Sets the value(s) for result (Observations - simple, or complex nested groups) + * + *

+ * Definition: + * Observations that are part of this diagnostic report. Observations can be simple name/value pairs (e.g. \"atomic\" results), or they can be grouping observations that include references to other members of the group (e.g. \"panels\") + *

+ */ + public void setResult(java.util.List theValue) { + myResult = theValue; + } + + + + /** + * Gets the value(s) for imagingStudy (Reference to full details of imaging associated with the diagnostic report). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * One or more links to full details of any imaging performed during the diagnostic investigation. Typically, this is imaging performed by DICOM enabled modalities, but this is not required. A fully enabled PACS viewer can use this information to provide views of the source images + *

+ */ + public java.util.List getImagingStudy() { + if (myImagingStudy == null) { + myImagingStudy = new java.util.ArrayList(); + } + return myImagingStudy; + } + + /** + * Sets the value(s) for imagingStudy (Reference to full details of imaging associated with the diagnostic report) + * + *

+ * Definition: + * One or more links to full details of any imaging performed during the diagnostic investigation. Typically, this is imaging performed by DICOM enabled modalities, but this is not required. A fully enabled PACS viewer can use this information to provide views of the source images + *

+ */ + public void setImagingStudy(java.util.List theValue) { + myImagingStudy = theValue; + } + + + + /** + * Gets the value(s) for image (Key images associated with this report). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest) + *

+ */ + public java.util.List getImage() { + if (myImage == null) { + myImage = new java.util.ArrayList(); + } + return myImage; + } + + /** + * Sets the value(s) for image (Key images associated with this report) + * + *

+ * Definition: + * A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest) + *

+ */ + public void setImage(java.util.List theValue) { + myImage = theValue; + } + + /** + * Adds and returns a new value for image (Key images associated with this report) + * + *

+ * Definition: + * A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest) + *

+ */ + public Image addImage() { + Image newType = new Image(); + getImage().add(newType); + return newType; + } + + + /** + * Gets the value(s) for conclusion (Clinical Interpretation of test results). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Concise and clinically contextualized narrative interpretation of the diagnostic report + *

+ */ + public StringDt getConclusion() { + if (myConclusion == null) { + myConclusion = new StringDt(); + } + return myConclusion; + } + + /** + * Sets the value(s) for conclusion (Clinical Interpretation of test results) + * + *

+ * Definition: + * Concise and clinically contextualized narrative interpretation of the diagnostic report + *

+ */ + public void setConclusion(StringDt theValue) { + myConclusion = theValue; + } + + + /** + * Sets the value for conclusion (Clinical Interpretation of test results) + * + *

+ * Definition: + * Concise and clinically contextualized narrative interpretation of the diagnostic report + *

+ */ + public void setConclusion( String theString) { + myConclusion = new StringDt(theString); + } + + + /** + * Gets the value(s) for codedDiagnosis (Codes for the conclusion). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public java.util.List getCodedDiagnosis() { + if (myCodedDiagnosis == null) { + myCodedDiagnosis = new java.util.ArrayList(); + } + return myCodedDiagnosis; + } + + /** + * Sets the value(s) for codedDiagnosis (Codes for the conclusion) + * + *

+ * Definition: + * + *

+ */ + public void setCodedDiagnosis(java.util.List theValue) { + myCodedDiagnosis = theValue; + } + + /** + * Adds and returns a new value for codedDiagnosis (Codes for the conclusion) + * + *

+ * Definition: + * + *

+ */ + public CodeableConceptDt addCodedDiagnosis() { + CodeableConceptDt newType = new CodeableConceptDt(); + getCodedDiagnosis().add(newType); + return newType; + } + + + /** + * Gets the value(s) for presentedForm (Entire Report as issued). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Rich text representation of the entire result as issued by the diagnostic service. Multiple formats are allowed but they SHALL be semantically equivalent. + *

+ */ + public java.util.List getPresentedForm() { + if (myPresentedForm == null) { + myPresentedForm = new java.util.ArrayList(); + } + return myPresentedForm; + } + + /** + * Sets the value(s) for presentedForm (Entire Report as issued) + * + *

+ * Definition: + * Rich text representation of the entire result as issued by the diagnostic service. Multiple formats are allowed but they SHALL be semantically equivalent. + *

+ */ + public void setPresentedForm(java.util.List theValue) { + myPresentedForm = theValue; + } + + /** + * Adds and returns a new value for presentedForm (Entire Report as issued) + * + *

+ * Definition: + * Rich text representation of the entire result as issued by the diagnostic service. Multiple formats are allowed but they SHALL be semantically equivalent. + *

+ */ + public AttachmentDt addPresentedForm() { + AttachmentDt newType = new AttachmentDt(); + getPresentedForm().add(newType); + return newType; + } + + + /** + * Block class for child element: DiagnosticReport.image (Key images associated with this report) + * + *

+ * Definition: + * A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest) + *

+ */ + @Block(name="DiagnosticReport.image") + public static class Image extends BaseElement implements IResourceBlock { + + @Child(name="comment", type=StringDt.class, order=0, min=0, max=1) + @Description( + shortDefinition="Comment about the image (e.g. explanation)", + formalDefinition="A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features" + ) + private StringDt myComment; + + @Child(name="link", order=1, min=1, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Media.class, + }) + @Description( + shortDefinition="Reference to the image source", + formalDefinition="" + ) + private ResourceReferenceDt myLink; + + + @Override + public boolean isEmpty() { + return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myComment, myLink); + } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myComment, myLink); + } + + + /** + * Gets the value(s) for comment (Comment about the image (e.g. explanation)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features + *

+ */ + public StringDt getComment() { + if (myComment == null) { + myComment = new StringDt(); + } + return myComment; + } + + /** + * Sets the value(s) for comment (Comment about the image (e.g. explanation)) + * + *

+ * Definition: + * A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features + *

+ */ + public void setComment(StringDt theValue) { + myComment = theValue; + } + + + /** + * Sets the value for comment (Comment about the image (e.g. explanation)) + * + *

+ * Definition: + * A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features + *

+ */ + public void setComment( String theString) { + myComment = new StringDt(theString); + } + + + /** + * Gets the value(s) for link (Reference to the image source). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public ResourceReferenceDt getLink() { + if (myLink == null) { + myLink = new ResourceReferenceDt(); + } + return myLink; + } + + /** + * Sets the value(s) for link (Reference to the image source) + * + *

+ * Definition: + * + *

+ */ + public void setLink(ResourceReferenceDt theValue) { + myLink = theValue; + } + + + + + } + + + + +} \ No newline at end of file diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Encounter.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Encounter.java new file mode 100644 index 00000000000..969dea70674 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Encounter.java @@ -0,0 +1,1731 @@ + + + + + + + + + + + + + + + + +package ca.uhn.fhir.model.dstu.resource; + + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.DurationDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.composite.PeriodDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.valueset.AdmitSourceEnum; +import ca.uhn.fhir.model.dstu.valueset.EncounterClassEnum; +import ca.uhn.fhir.model.dstu.valueset.EncounterReasonCodesEnum; +import ca.uhn.fhir.model.dstu.valueset.EncounterStateEnum; +import ca.uhn.fhir.model.dstu.valueset.EncounterTypeEnum; +import ca.uhn.fhir.model.dstu.valueset.ParticipantTypeEnum; +import ca.uhn.fhir.model.primitive.BooleanDt; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.BoundCodeableConceptDt; +import ca.uhn.fhir.model.primitive.CodeDt; + + +/** + * HAPI/FHIR Encounter Resource + * (An interaction during which services are provided to the patient) + * + *

+ * Definition: + * 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. + *

+ * + *

+ * Requirements: + * + *

+ */ +@ResourceDef(name="Encounter", profile="http://hl7.org/fhir/profiles/Encounter", id="encounter") +public class Encounter extends BaseResource implements IResource { + + /** + * Search parameter constant for identifier + *

+ * Description:
+ * Type: token
+ * Path: Encounter.identifier
+ *

+ */ + public static final String SP_IDENTIFIER = "identifier"; + + /** + * Search parameter constant for status + *

+ * Description:
+ * Type: token
+ * Path: Encounter.status
+ *

+ */ + public static final String SP_STATUS = "status"; + + /** + * Search parameter constant for date + *

+ * Description: A date within the period the Encounter lasted
+ * Type: date
+ * Path: Encounter.period
+ *

+ */ + public static final String SP_DATE = "date"; + + /** + * Search parameter constant for subject + *

+ * Description:
+ * Type: reference
+ * Path: Encounter.subject
+ *

+ */ + public static final String SP_SUBJECT = "subject"; + + /** + * Search parameter constant for !fulfills + *

+ * Description:
+ * Type: reference
+ * Path: Encounter.fulfills
+ *

+ */ + public static final String SP_FULFILLS = "!fulfills"; + + /** + * Search parameter constant for length + *

+ * Description: Length of encounter in days
+ * Type: number
+ * Path: Encounter.length
+ *

+ */ + public static final String SP_LENGTH = "length"; + + /** + * Search parameter constant for indication + *

+ * Description:
+ * Type: reference
+ * Path: Encounter.indication
+ *

+ */ + public static final String SP_INDICATION = "indication"; + + /** + * Search parameter constant for location + *

+ * Description:
+ * Type: reference
+ * Path: Encounter.location.location
+ *

+ */ + public static final String SP_LOCATION = "location"; + + /** + * Search parameter constant for location-period + *

+ * Description:
+ * Type: date
+ * Path: Encounter.location.period
+ *

+ */ + public static final String SP_LOCATION_PERIOD = "location-period"; + + + @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Identifier(s) by which this encounter is known", + formalDefinition="" + ) + private java.util.List myIdentifier; + + @Child(name="status", type=CodeDt.class, order=1, min=1, max=1) + @Description( + shortDefinition="planned | in progress | onleave | finished | cancelled", + formalDefinition="" + ) + private BoundCodeDt myStatus; + + @Child(name="class", type=CodeDt.class, order=2, min=1, max=1) + @Description( + shortDefinition="inpatient | outpatient | ambulatory | emergency +", + formalDefinition="" + ) + private BoundCodeDt myClassElement; + + @Child(name="type", type=CodeableConceptDt.class, order=3, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Specific type of encounter", + formalDefinition="Specific type of encounter (e.g. e-mail consultation, surgical day-care, skilled nursing, rehabilitation)" + ) + private java.util.List> myType; + + @Child(name="subject", order=4, min=0, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Patient.class, + }) + @Description( + shortDefinition="The patient present at the encounter", + formalDefinition="" + ) + private ResourceReferenceDt mySubject; + + @Child(name="participant", order=5, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="List of participants involved in the encounter", + formalDefinition="The main practitioner responsible for providing the service" + ) + private java.util.List myParticipant; + + @Child(name="period", type=PeriodDt.class, order=6, min=0, max=1) + @Description( + shortDefinition="The start and end time of the encounter", + formalDefinition="The start and end time of the encounter" + ) + private PeriodDt myPeriod; + + @Child(name="length", type=DurationDt.class, order=7, min=0, max=1) + @Description( + shortDefinition="Quantity of time the encounter lasted", + formalDefinition="Quantity of time the encounter lasted. This excludes the time during leaves of absence." + ) + private DurationDt myLength; + + @Child(name="reason", type=CodeableConceptDt.class, order=8, min=0, max=1) + @Description( + shortDefinition="Reason the encounter takes place (code)", + formalDefinition="Reason the encounter takes place, expressed as a code. For admissions, this can be used for a coded admission diagnosis." + ) + private BoundCodeableConceptDt myReason; + + @Child(name="indication", order=9, min=0, max=1, type={ + IResource.class, + }) + @Description( + shortDefinition="Reason the encounter takes place (resource)", + formalDefinition="Reason the encounter takes place, as specified using information from another resource. For admissions, this is the admission diagnosis." + ) + private ResourceReferenceDt myIndication; + + @Child(name="priority", type=CodeableConceptDt.class, order=10, min=0, max=1) + @Description( + shortDefinition="Indicates the urgency of the encounter", + formalDefinition="" + ) + private CodeableConceptDt myPriority; + + @Child(name="hospitalization", order=11, min=0, max=1) + @Description( + shortDefinition="Details about an admission to a clinic", + formalDefinition="Details about an admission to a clinic" + ) + private Hospitalization myHospitalization; + + @Child(name="location", order=12, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="List of locations the patient has been at", + formalDefinition="List of locations at which the patient has been" + ) + private java.util.List myLocation; + + @Child(name="serviceProvider", order=13, min=0, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Organization.class, + }) + @Description( + shortDefinition="Department or team providing care", + formalDefinition="" + ) + private ResourceReferenceDt myServiceProvider; + + @Child(name="partOf", order=14, min=0, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Encounter.class, + }) + @Description( + shortDefinition="Another Encounter this encounter is part of", + formalDefinition="Another Encounter of which this encounter is a part of (administratively or in time)." + ) + private ResourceReferenceDt myPartOf; + + + @Override + public boolean isEmpty() { + return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentifier, myStatus, myClassElement, myType, mySubject, myParticipant, myPeriod, myLength, myReason, myIndication, myPriority, myHospitalization, myLocation, myServiceProvider, myPartOf); + } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier, myStatus, myClassElement, myType, mySubject, myParticipant, myPeriod, myLength, myReason, myIndication, myPriority, myHospitalization, myLocation, myServiceProvider, myPartOf); + } + + + /** + * Gets the value(s) for identifier (Identifier(s) by which this encounter is known). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public java.util.List getIdentifier() { + if (myIdentifier == null) { + myIdentifier = new java.util.ArrayList(); + } + return myIdentifier; + } + + /** + * Sets the value(s) for identifier (Identifier(s) by which this encounter is known) + * + *

+ * Definition: + * + *

+ */ + public void setIdentifier(java.util.List theValue) { + myIdentifier = theValue; + } + + /** + * Adds and returns a new value for identifier (Identifier(s) by which this encounter is known) + * + *

+ * Definition: + * + *

+ */ + public IdentifierDt addIdentifier() { + IdentifierDt newType = new IdentifierDt(); + getIdentifier().add(newType); + return newType; + } + + + /** + * Gets the value(s) for status (planned | in progress | onleave | finished | cancelled). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public BoundCodeDt getStatus() { + if (myStatus == null) { + myStatus = new BoundCodeDt(EncounterStateEnum.VALUESET_BINDER); + } + return myStatus; + } + + /** + * Sets the value(s) for status (planned | in progress | onleave | finished | cancelled) + * + *

+ * Definition: + * + *

+ */ + public void setStatus(BoundCodeDt theValue) { + myStatus = theValue; + } + + + /** + * Sets the value(s) for status (planned | in progress | onleave | finished | cancelled) + * + *

+ * Definition: + * + *

+ */ + public void setStatus(EncounterStateEnum theValue) { + getStatus().setValueAsEnum(theValue); + } + + + /** + * Gets the value(s) for class (inpatient | outpatient | ambulatory | emergency +). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public BoundCodeDt getClassElement() { + if (myClassElement == null) { + myClassElement = new BoundCodeDt(EncounterClassEnum.VALUESET_BINDER); + } + return myClassElement; + } + + /** + * Sets the value(s) for class (inpatient | outpatient | ambulatory | emergency +) + * + *

+ * Definition: + * + *

+ */ + public void setClassElement(BoundCodeDt theValue) { + myClassElement = theValue; + } + + + /** + * Sets the value(s) for class (inpatient | outpatient | ambulatory | emergency +) + * + *

+ * Definition: + * + *

+ */ + public void setClassElement(EncounterClassEnum theValue) { + getClassElement().setValueAsEnum(theValue); + } + + + /** + * Gets the value(s) for type (Specific type of encounter). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Specific type of encounter (e.g. e-mail consultation, surgical day-care, skilled nursing, rehabilitation) + *

+ */ + public java.util.List> getType() { + if (myType == null) { + myType = new java.util.ArrayList>(); + } + return myType; + } + + /** + * Sets the value(s) for type (Specific type of encounter) + * + *

+ * Definition: + * Specific type of encounter (e.g. e-mail consultation, surgical day-care, skilled nursing, rehabilitation) + *

+ */ + public void setType(java.util.List> theValue) { + myType = theValue; + } + + + /** + * Add a value for type (Specific type of encounter) + * + *

+ * Definition: + * Specific type of encounter (e.g. e-mail consultation, surgical day-care, skilled nursing, rehabilitation) + *

+ */ + public void addType(EncounterTypeEnum theValue) { + getType().add(new BoundCodeableConceptDt(EncounterTypeEnum.VALUESET_BINDER, theValue)); + } + + /** + * Sets the value(s), and clears any existing value(s) for type (Specific type of encounter) + * + *

+ * Definition: + * Specific type of encounter (e.g. e-mail consultation, surgical day-care, skilled nursing, rehabilitation) + *

+ */ + public void setType(EncounterTypeEnum theValue) { + getType().clear(); + addType(theValue); + } + + + /** + * Gets the value(s) for subject (The patient present at the encounter). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public ResourceReferenceDt getSubject() { + if (mySubject == null) { + mySubject = new ResourceReferenceDt(); + } + return mySubject; + } + + /** + * Sets the value(s) for subject (The patient present at the encounter) + * + *

+ * Definition: + * + *

+ */ + public void setSubject(ResourceReferenceDt theValue) { + mySubject = theValue; + } + + + + /** + * Gets the value(s) for participant (List of participants involved in the encounter). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The main practitioner responsible for providing the service + *

+ */ + public java.util.List getParticipant() { + if (myParticipant == null) { + myParticipant = new java.util.ArrayList(); + } + return myParticipant; + } + + /** + * Sets the value(s) for participant (List of participants involved in the encounter) + * + *

+ * Definition: + * The main practitioner responsible for providing the service + *

+ */ + public void setParticipant(java.util.List theValue) { + myParticipant = theValue; + } + + /** + * Adds and returns a new value for participant (List of participants involved in the encounter) + * + *

+ * Definition: + * The main practitioner responsible for providing the service + *

+ */ + public Participant addParticipant() { + Participant newType = new Participant(); + getParticipant().add(newType); + return newType; + } + + + /** + * Gets the value(s) for period (The start and end time of the encounter). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The start and end time of the encounter + *

+ */ + public PeriodDt getPeriod() { + if (myPeriod == null) { + myPeriod = new PeriodDt(); + } + return myPeriod; + } + + /** + * Sets the value(s) for period (The start and end time of the encounter) + * + *

+ * Definition: + * The start and end time of the encounter + *

+ */ + public void setPeriod(PeriodDt theValue) { + myPeriod = theValue; + } + + + + /** + * Gets the value(s) for length (Quantity of time the encounter lasted). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Quantity of time the encounter lasted. This excludes the time during leaves of absence. + *

+ */ + public DurationDt getLength() { + if (myLength == null) { + myLength = new DurationDt(); + } + return myLength; + } + + /** + * Sets the value(s) for length (Quantity of time the encounter lasted) + * + *

+ * Definition: + * Quantity of time the encounter lasted. This excludes the time during leaves of absence. + *

+ */ + public void setLength(DurationDt theValue) { + myLength = theValue; + } + + + + /** + * Gets the value(s) for reason (Reason the encounter takes place (code)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Reason the encounter takes place, expressed as a code. For admissions, this can be used for a coded admission diagnosis. + *

+ */ + public BoundCodeableConceptDt getReason() { + if (myReason == null) { + myReason = new BoundCodeableConceptDt(EncounterReasonCodesEnum.VALUESET_BINDER); + } + return myReason; + } + + /** + * Sets the value(s) for reason (Reason the encounter takes place (code)) + * + *

+ * Definition: + * Reason the encounter takes place, expressed as a code. For admissions, this can be used for a coded admission diagnosis. + *

+ */ + public void setReason(BoundCodeableConceptDt theValue) { + myReason = theValue; + } + + + /** + * Sets the value(s) for reason (Reason the encounter takes place (code)) + * + *

+ * Definition: + * Reason the encounter takes place, expressed as a code. For admissions, this can be used for a coded admission diagnosis. + *

+ */ + public void setReason(EncounterReasonCodesEnum theValue) { + getReason().setValueAsEnum(theValue); + } + + + /** + * Gets the value(s) for indication (Reason the encounter takes place (resource)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Reason the encounter takes place, as specified using information from another resource. For admissions, this is the admission diagnosis. + *

+ */ + public ResourceReferenceDt getIndication() { + if (myIndication == null) { + myIndication = new ResourceReferenceDt(); + } + return myIndication; + } + + /** + * Sets the value(s) for indication (Reason the encounter takes place (resource)) + * + *

+ * Definition: + * Reason the encounter takes place, as specified using information from another resource. For admissions, this is the admission diagnosis. + *

+ */ + public void setIndication(ResourceReferenceDt theValue) { + myIndication = theValue; + } + + + + /** + * Gets the value(s) for priority (Indicates the urgency of the encounter). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public CodeableConceptDt getPriority() { + if (myPriority == null) { + myPriority = new CodeableConceptDt(); + } + return myPriority; + } + + /** + * Sets the value(s) for priority (Indicates the urgency of the encounter) + * + *

+ * Definition: + * + *

+ */ + public void setPriority(CodeableConceptDt theValue) { + myPriority = theValue; + } + + + + /** + * Gets the value(s) for hospitalization (Details about an admission to a clinic). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Details about an admission to a clinic + *

+ */ + public Hospitalization getHospitalization() { + if (myHospitalization == null) { + myHospitalization = new Hospitalization(); + } + return myHospitalization; + } + + /** + * Sets the value(s) for hospitalization (Details about an admission to a clinic) + * + *

+ * Definition: + * Details about an admission to a clinic + *

+ */ + public void setHospitalization(Hospitalization theValue) { + myHospitalization = theValue; + } + + + + /** + * Gets the value(s) for location (List of locations the patient has been at). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * List of locations at which the patient has been + *

+ */ + public java.util.List getLocation() { + if (myLocation == null) { + myLocation = new java.util.ArrayList(); + } + return myLocation; + } + + /** + * Sets the value(s) for location (List of locations the patient has been at) + * + *

+ * Definition: + * List of locations at which the patient has been + *

+ */ + public void setLocation(java.util.List theValue) { + myLocation = theValue; + } + + /** + * Adds and returns a new value for location (List of locations the patient has been at) + * + *

+ * Definition: + * List of locations at which the patient has been + *

+ */ + public Location addLocation() { + Location newType = new Location(); + getLocation().add(newType); + return newType; + } + + + /** + * Gets the value(s) for serviceProvider (Department or team providing care). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public ResourceReferenceDt getServiceProvider() { + if (myServiceProvider == null) { + myServiceProvider = new ResourceReferenceDt(); + } + return myServiceProvider; + } + + /** + * Sets the value(s) for serviceProvider (Department or team providing care) + * + *

+ * Definition: + * + *

+ */ + public void setServiceProvider(ResourceReferenceDt theValue) { + myServiceProvider = theValue; + } + + + + /** + * Gets the value(s) for partOf (Another Encounter this encounter is part of). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Another Encounter of which this encounter is a part of (administratively or in time). + *

+ */ + public ResourceReferenceDt getPartOf() { + if (myPartOf == null) { + myPartOf = new ResourceReferenceDt(); + } + return myPartOf; + } + + /** + * Sets the value(s) for partOf (Another Encounter this encounter is part of) + * + *

+ * Definition: + * Another Encounter of which this encounter is a part of (administratively or in time). + *

+ */ + public void setPartOf(ResourceReferenceDt theValue) { + myPartOf = theValue; + } + + + + /** + * Block class for child element: Encounter.participant (List of participants involved in the encounter) + * + *

+ * Definition: + * The main practitioner responsible for providing the service + *

+ */ + @Block(name="Encounter.participant") + public static class Participant extends BaseElement implements IResourceBlock { + + @Child(name="type", type=CodeableConceptDt.class, order=0, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Role of participant in encounter", + formalDefinition="" + ) + private java.util.List> myType; + + @Child(name="individual", order=1, min=0, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Practitioner.class, + ca.uhn.fhir.model.dstu.resource.RelatedPerson.class, + }) + @Description( + shortDefinition="Persons involved in the encounter other than the patient", + formalDefinition="" + ) + private ResourceReferenceDt myIndividual; + + + @Override + public boolean isEmpty() { + return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myType, myIndividual); + } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myType, myIndividual); + } + + + /** + * Gets the value(s) for type (Role of participant in encounter). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public java.util.List> getType() { + if (myType == null) { + myType = new java.util.ArrayList>(); + } + return myType; + } + + /** + * Sets the value(s) for type (Role of participant in encounter) + * + *

+ * Definition: + * + *

+ */ + public void setType(java.util.List> theValue) { + myType = theValue; + } + + + /** + * Add a value for type (Role of participant in encounter) + * + *

+ * Definition: + * + *

+ */ + public void addType(ParticipantTypeEnum theValue) { + getType().add(new BoundCodeableConceptDt(ParticipantTypeEnum.VALUESET_BINDER, theValue)); + } + + /** + * Sets the value(s), and clears any existing value(s) for type (Role of participant in encounter) + * + *

+ * Definition: + * + *

+ */ + public void setType(ParticipantTypeEnum theValue) { + getType().clear(); + addType(theValue); + } + + + /** + * Gets the value(s) for individual (Persons involved in the encounter other than the patient). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public ResourceReferenceDt getIndividual() { + return myIndividual; + } + + /** + * Sets the value(s) for individual (Persons involved in the encounter other than the patient) + * + *

+ * Definition: + * + *

+ */ + public void setIndividual(ResourceReferenceDt theValue) { + myIndividual = theValue; + } + + + + + } + + + /** + * Block class for child element: Encounter.hospitalization (Details about an admission to a clinic) + * + *

+ * Definition: + * Details about an admission to a clinic + *

+ */ + @Block(name="Encounter.hospitalization") + public static class Hospitalization extends BaseElement implements IResourceBlock { + + @Child(name="preAdmissionIdentifier", type=IdentifierDt.class, order=0, min=0, max=1) + @Description( + shortDefinition="Pre-admission identifier", + formalDefinition="" + ) + private IdentifierDt myPreAdmissionIdentifier; + + @Child(name="origin", order=1, min=0, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Location.class, + }) + @Description( + shortDefinition="The location from which the patient came before admission", + formalDefinition="" + ) + private ResourceReferenceDt myOrigin; + + @Child(name="admitSource", type=CodeableConceptDt.class, order=2, min=0, max=1) + @Description( + shortDefinition="From where patient was admitted (physician referral, transfer)", + formalDefinition="" + ) + private BoundCodeableConceptDt myAdmitSource; + + @Child(name="period", type=PeriodDt.class, order=3, min=0, max=1) + @Description( + shortDefinition="Period during which the patient was admitted", + formalDefinition="Period during which the patient was admitted" + ) + private PeriodDt myPeriod; + + @Child(name="accomodation", order=4, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Where the patient stays during this encounter", + formalDefinition="" + ) + private java.util.List myAccomodation; + + @Child(name="diet", type=CodeableConceptDt.class, order=5, min=0, max=1) + @Description( + shortDefinition="Dietary restrictions for the patient", + formalDefinition="Dietary restrictions for the patient" + ) + private CodeableConceptDt myDiet; + + @Child(name="specialCourtesy", type=CodeableConceptDt.class, order=6, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Special courtesies (VIP, board member)", + formalDefinition="" + ) + private java.util.List mySpecialCourtesy; + + @Child(name="specialArrangement", type=CodeableConceptDt.class, order=7, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Wheelchair, translator, stretcher, etc", + formalDefinition="" + ) + private java.util.List mySpecialArrangement; + + @Child(name="destination", order=8, min=0, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Location.class, + }) + @Description( + shortDefinition="Location to which the patient is discharged", + formalDefinition="" + ) + private ResourceReferenceDt myDestination; + + @Child(name="dischargeDisposition", type=CodeableConceptDt.class, order=9, min=0, max=1) + @Description( + shortDefinition="Category or kind of location after discharge", + formalDefinition="" + ) + private CodeableConceptDt myDischargeDisposition; + + @Child(name="dischargeDiagnosis", order=10, min=0, max=1, type={ + IResource.class, + }) + @Description( + shortDefinition="The final diagnosis given a patient before release from the hospital after all testing, surgery, and workup are complete", + formalDefinition="" + ) + private ResourceReferenceDt myDischargeDiagnosis; + + @Child(name="reAdmission", type=BooleanDt.class, order=11, min=0, max=1) + @Description( + shortDefinition="Is this hospitalization a readmission?", + formalDefinition="Whether this hospitalization is a readmission" + ) + private BooleanDt myReAdmission; + + + @Override + public boolean isEmpty() { + return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myPreAdmissionIdentifier, myOrigin, myAdmitSource, myPeriod, myAccomodation, myDiet, mySpecialCourtesy, mySpecialArrangement, myDestination, myDischargeDisposition, myDischargeDiagnosis, myReAdmission); + } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myPreAdmissionIdentifier, myOrigin, myAdmitSource, myPeriod, myAccomodation, myDiet, mySpecialCourtesy, mySpecialArrangement, myDestination, myDischargeDisposition, myDischargeDiagnosis, myReAdmission); + } + + + /** + * Gets the value(s) for preAdmissionIdentifier (Pre-admission identifier). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public IdentifierDt getPreAdmissionIdentifier() { + if (myPreAdmissionIdentifier == null) { + myPreAdmissionIdentifier = new IdentifierDt(); + } + return myPreAdmissionIdentifier; + } + + /** + * Sets the value(s) for preAdmissionIdentifier (Pre-admission identifier) + * + *

+ * Definition: + * + *

+ */ + public void setPreAdmissionIdentifier(IdentifierDt theValue) { + myPreAdmissionIdentifier = theValue; + } + + + + /** + * Gets the value(s) for origin (The location from which the patient came before admission). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public ResourceReferenceDt getOrigin() { + if (myOrigin == null) { + myOrigin = new ResourceReferenceDt(); + } + return myOrigin; + } + + /** + * Sets the value(s) for origin (The location from which the patient came before admission) + * + *

+ * Definition: + * + *

+ */ + public void setOrigin(ResourceReferenceDt theValue) { + myOrigin = theValue; + } + + + + /** + * Gets the value(s) for admitSource (From where patient was admitted (physician referral, transfer)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public BoundCodeableConceptDt getAdmitSource() { + if (myAdmitSource == null) { + myAdmitSource = new BoundCodeableConceptDt(AdmitSourceEnum.VALUESET_BINDER); + } + return myAdmitSource; + } + + /** + * Sets the value(s) for admitSource (From where patient was admitted (physician referral, transfer)) + * + *

+ * Definition: + * + *

+ */ + public void setAdmitSource(BoundCodeableConceptDt theValue) { + myAdmitSource = theValue; + } + + + /** + * Sets the value(s) for admitSource (From where patient was admitted (physician referral, transfer)) + * + *

+ * Definition: + * + *

+ */ + public void setAdmitSource(AdmitSourceEnum theValue) { + getAdmitSource().setValueAsEnum(theValue); + } + + + /** + * Gets the value(s) for period (Period during which the patient was admitted). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Period during which the patient was admitted + *

+ */ + public PeriodDt getPeriod() { + if (myPeriod == null) { + myPeriod = new PeriodDt(); + } + return myPeriod; + } + + /** + * Sets the value(s) for period (Period during which the patient was admitted) + * + *

+ * Definition: + * Period during which the patient was admitted + *

+ */ + public void setPeriod(PeriodDt theValue) { + myPeriod = theValue; + } + + + + /** + * Gets the value(s) for accomodation (Where the patient stays during this encounter). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public java.util.List getAccomodation() { + if (myAccomodation == null) { + myAccomodation = new java.util.ArrayList(); + } + return myAccomodation; + } + + /** + * Sets the value(s) for accomodation (Where the patient stays during this encounter) + * + *

+ * Definition: + * + *

+ */ + public void setAccomodation(java.util.List theValue) { + myAccomodation = theValue; + } + + /** + * Adds and returns a new value for accomodation (Where the patient stays during this encounter) + * + *

+ * Definition: + * + *

+ */ + public HospitalizationAccomodation addAccomodation() { + HospitalizationAccomodation newType = new HospitalizationAccomodation(); + getAccomodation().add(newType); + return newType; + } + + + /** + * Gets the value(s) for diet (Dietary restrictions for the patient). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Dietary restrictions for the patient + *

+ */ + public CodeableConceptDt getDiet() { + if (myDiet == null) { + myDiet = new CodeableConceptDt(); + } + return myDiet; + } + + /** + * Sets the value(s) for diet (Dietary restrictions for the patient) + * + *

+ * Definition: + * Dietary restrictions for the patient + *

+ */ + public void setDiet(CodeableConceptDt theValue) { + myDiet = theValue; + } + + + + /** + * Gets the value(s) for specialCourtesy (Special courtesies (VIP, board member)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public java.util.List getSpecialCourtesy() { + if (mySpecialCourtesy == null) { + mySpecialCourtesy = new java.util.ArrayList(); + } + return mySpecialCourtesy; + } + + /** + * Sets the value(s) for specialCourtesy (Special courtesies (VIP, board member)) + * + *

+ * Definition: + * + *

+ */ + public void setSpecialCourtesy(java.util.List theValue) { + mySpecialCourtesy = theValue; + } + + /** + * Adds and returns a new value for specialCourtesy (Special courtesies (VIP, board member)) + * + *

+ * Definition: + * + *

+ */ + public CodeableConceptDt addSpecialCourtesy() { + CodeableConceptDt newType = new CodeableConceptDt(); + getSpecialCourtesy().add(newType); + return newType; + } + + + /** + * Gets the value(s) for specialArrangement (Wheelchair, translator, stretcher, etc). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public java.util.List getSpecialArrangement() { + if (mySpecialArrangement == null) { + mySpecialArrangement = new java.util.ArrayList(); + } + return mySpecialArrangement; + } + + /** + * Sets the value(s) for specialArrangement (Wheelchair, translator, stretcher, etc) + * + *

+ * Definition: + * + *

+ */ + public void setSpecialArrangement(java.util.List theValue) { + mySpecialArrangement = theValue; + } + + /** + * Adds and returns a new value for specialArrangement (Wheelchair, translator, stretcher, etc) + * + *

+ * Definition: + * + *

+ */ + public CodeableConceptDt addSpecialArrangement() { + CodeableConceptDt newType = new CodeableConceptDt(); + getSpecialArrangement().add(newType); + return newType; + } + + + /** + * Gets the value(s) for destination (Location to which the patient is discharged). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public ResourceReferenceDt getDestination() { + if (myDestination == null) { + myDestination = new ResourceReferenceDt(); + } + return myDestination; + } + + /** + * Sets the value(s) for destination (Location to which the patient is discharged) + * + *

+ * Definition: + * + *

+ */ + public void setDestination(ResourceReferenceDt theValue) { + myDestination = theValue; + } + + + + /** + * Gets the value(s) for dischargeDisposition (Category or kind of location after discharge). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public CodeableConceptDt getDischargeDisposition() { + if (myDischargeDisposition == null) { + myDischargeDisposition = new CodeableConceptDt(); + } + return myDischargeDisposition; + } + + /** + * Sets the value(s) for dischargeDisposition (Category or kind of location after discharge) + * + *

+ * Definition: + * + *

+ */ + public void setDischargeDisposition(CodeableConceptDt theValue) { + myDischargeDisposition = theValue; + } + + + + /** + * Gets the value(s) for dischargeDiagnosis (The final diagnosis given a patient before release from the hospital after all testing, surgery, and workup are complete). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public ResourceReferenceDt getDischargeDiagnosis() { + if (myDischargeDiagnosis == null) { + myDischargeDiagnosis = new ResourceReferenceDt(); + } + return myDischargeDiagnosis; + } + + /** + * Sets the value(s) for dischargeDiagnosis (The final diagnosis given a patient before release from the hospital after all testing, surgery, and workup are complete) + * + *

+ * Definition: + * + *

+ */ + public void setDischargeDiagnosis(ResourceReferenceDt theValue) { + myDischargeDiagnosis = theValue; + } + + + + /** + * Gets the value(s) for reAdmission (Is this hospitalization a readmission?). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Whether this hospitalization is a readmission + *

+ */ + public BooleanDt getReAdmission() { + if (myReAdmission == null) { + myReAdmission = new BooleanDt(); + } + return myReAdmission; + } + + /** + * Sets the value(s) for reAdmission (Is this hospitalization a readmission?) + * + *

+ * Definition: + * Whether this hospitalization is a readmission + *

+ */ + public void setReAdmission(BooleanDt theValue) { + myReAdmission = theValue; + } + + + /** + * Sets the value for reAdmission (Is this hospitalization a readmission?) + * + *

+ * Definition: + * Whether this hospitalization is a readmission + *

+ */ + public void setReAdmission( Boolean theBoolean) { + myReAdmission = new BooleanDt(theBoolean); + } + + + + } + + /** + * Block class for child element: Encounter.hospitalization.accomodation (Where the patient stays during this encounter) + * + *

+ * Definition: + * + *

+ */ + @Block(name="Encounter.hospitalization.accomodation") + public static class HospitalizationAccomodation extends BaseElement implements IResourceBlock { + + @Child(name="bed", order=0, min=0, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Location.class, + }) + @Description( + shortDefinition="The bed that is assigned to the patient", + formalDefinition="" + ) + private ResourceReferenceDt myBed; + + @Child(name="period", type=PeriodDt.class, order=1, min=0, max=1) + @Description( + shortDefinition="Period during which the patient was assigned the bed", + formalDefinition="" + ) + private PeriodDt myPeriod; + + + @Override + public boolean isEmpty() { + return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myBed, myPeriod); + } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myBed, myPeriod); + } + + + /** + * Gets the value(s) for bed (The bed that is assigned to the patient). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public ResourceReferenceDt getBed() { + if (myBed == null) { + myBed = new ResourceReferenceDt(); + } + return myBed; + } + + /** + * Sets the value(s) for bed (The bed that is assigned to the patient) + * + *

+ * Definition: + * + *

+ */ + public void setBed(ResourceReferenceDt theValue) { + myBed = theValue; + } + + + + /** + * Gets the value(s) for period (Period during which the patient was assigned the bed). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public PeriodDt getPeriod() { + if (myPeriod == null) { + myPeriod = new PeriodDt(); + } + return myPeriod; + } + + /** + * Sets the value(s) for period (Period during which the patient was assigned the bed) + * + *

+ * Definition: + * + *

+ */ + public void setPeriod(PeriodDt theValue) { + myPeriod = theValue; + } + + + + + } + + + + /** + * Block class for child element: Encounter.location (List of locations the patient has been at) + * + *

+ * Definition: + * List of locations at which the patient has been + *

+ */ + @Block(name="Encounter.location") + public static class Location extends BaseElement implements IResourceBlock { + + @Child(name="location", order=0, min=1, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Location.class, + }) + @Description( + shortDefinition="Location the encounter takes place", + formalDefinition="The location where the encounter takes place" + ) + private ResourceReferenceDt myLocation; + + @Child(name="period", type=PeriodDt.class, order=1, min=1, max=1) + @Description( + shortDefinition="Time period during which the patient was present at the location", + formalDefinition="" + ) + private PeriodDt myPeriod; + + + @Override + public boolean isEmpty() { + return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myLocation, myPeriod); + } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myLocation, myPeriod); + } + + + /** + * Gets the value(s) for location (Location the encounter takes place). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The location where the encounter takes place + *

+ */ + public ResourceReferenceDt getLocation() { + if (myLocation == null) { + myLocation = new ResourceReferenceDt(); + } + return myLocation; + } + + /** + * Sets the value(s) for location (Location the encounter takes place) + * + *

+ * Definition: + * The location where the encounter takes place + *

+ */ + public void setLocation(ResourceReferenceDt theValue) { + myLocation = theValue; + } + + + + /** + * Gets the value(s) for period (Time period during which the patient was present at the location). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public PeriodDt getPeriod() { + if (myPeriod == null) { + myPeriod = new PeriodDt(); + } + return myPeriod; + } + + /** + * Sets the value(s) for period (Time period during which the patient was present at the location) + * + *

+ * Definition: + * + *

+ */ + public void setPeriod(PeriodDt theValue) { + myPeriod = theValue; + } + + + + + } + + + + +} \ No newline at end of file diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Group.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Group.java index b82c0dc9c14..2be8a30602d 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Group.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Group.java @@ -16,12 +16,29 @@ package ca.uhn.fhir.model.dstu.resource; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.composite.*; -import ca.uhn.fhir.model.dstu.valueset.*; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.composite.QuantityDt; +import ca.uhn.fhir.model.dstu.composite.RangeDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.valueset.GroupTypeEnum; +import ca.uhn.fhir.model.primitive.BooleanDt; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.IntegerDt; +import ca.uhn.fhir.model.primitive.StringDt; + /** * HAPI/FHIR Group Resource @@ -178,26 +195,31 @@ public class Group extends BaseResource implements IResource { shortDefinition="Trait of group members", formalDefinition="Identifies the traits shared by members of the group" ) - private List myCharacteristic; + private java.util.List myCharacteristic; @Child(name="member", order=7, min=0, max=Child.MAX_UNLIMITED, type={ - Patient.class, - Practitioner.class, - Device.class, - Medication.class, - Substance.class, + ca.uhn.fhir.model.dstu.resource.Patient.class, + ca.uhn.fhir.model.dstu.resource.Practitioner.class, + ca.uhn.fhir.model.dstu.resource.Device.class, + ca.uhn.fhir.model.dstu.resource.Medication.class, + ca.uhn.fhir.model.dstu.resource.Substance.class, }) @Description( shortDefinition="Who is in group", formalDefinition="Identifies the resource instances that are members of the group." ) - private List myMember; + private java.util.List myMember; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentifier, myType, myActual, myCode, myName, myQuantity, myCharacteristic, myMember); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier, myType, myActual, myCode, myName, myQuantity, myCharacteristic, myMember); + } + /** * Gets the value(s) for identifier (Unique id). @@ -443,9 +465,9 @@ public class Group extends BaseResource implements IResource { * Identifies the traits shared by members of the group *

*/ - public List getCharacteristic() { + public java.util.List getCharacteristic() { if (myCharacteristic == null) { - myCharacteristic = new ArrayList(); + myCharacteristic = new java.util.ArrayList(); } return myCharacteristic; } @@ -458,7 +480,7 @@ public class Group extends BaseResource implements IResource { * Identifies the traits shared by members of the group *

*/ - public void setCharacteristic(List theValue) { + public void setCharacteristic(java.util.List theValue) { myCharacteristic = theValue; } @@ -487,7 +509,7 @@ public class Group extends BaseResource implements IResource { * Identifies the resource instances that are members of the group. *

*/ - public List getMember() { + public java.util.List getMember() { return myMember; } @@ -499,7 +521,7 @@ public class Group extends BaseResource implements IResource { * Identifies the resource instances that are members of the group. *

*/ - public void setMember(List theValue) { + public void setMember(java.util.List theValue) { myMember = theValue; } @@ -547,6 +569,11 @@ public class Group extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myCode, myValue, myExclude); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myCode, myValue, myExclude); + } + /** * Gets the value(s) for code (Kind of characteristic). diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/ImagingStudy.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/ImagingStudy.java new file mode 100644 index 00000000000..aefca051e1c --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/ImagingStudy.java @@ -0,0 +1,1849 @@ + + + + + + + + + + + + + + + + +package ca.uhn.fhir.model.dstu.resource; + + +import java.util.Date; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.CodingDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.valueset.ImagingModalityEnum; +import ca.uhn.fhir.model.dstu.valueset.InstanceAvailabilityEnum; +import ca.uhn.fhir.model.dstu.valueset.ModalityEnum; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.DateTimeDt; +import ca.uhn.fhir.model.primitive.IntegerDt; +import ca.uhn.fhir.model.primitive.OidDt; +import ca.uhn.fhir.model.primitive.StringDt; +import ca.uhn.fhir.model.primitive.UriDt; + + +/** + * HAPI/FHIR ImagingStudy Resource + * (A set of images produced in single study (one or more series of references images)) + * + *

+ * Definition: + * Manifest of a set of images produced in study. The set of images may include every image in the study, or it may be an incomplete sample, such as a list of key images + *

+ * + *

+ * Requirements: + * + *

+ */ +@ResourceDef(name="ImagingStudy", profile="http://hl7.org/fhir/profiles/ImagingStudy", id="imagingstudy") +public class ImagingStudy extends BaseResource implements IResource { + + /** + * Search parameter constant for subject + *

+ * Description: Who the study is about
+ * Type: reference
+ * Path: ImagingStudy.subject
+ *

+ */ + public static final String SP_SUBJECT = "subject"; + + /** + * Search parameter constant for date + *

+ * Description: The date the study was done was taken
+ * Type: date
+ * Path: ImagingStudy.dateTime
+ *

+ */ + public static final String SP_DATE = "date"; + + /** + * Search parameter constant for accession + *

+ * Description: The accession id for the image
+ * Type: token
+ * Path: ImagingStudy.accessionNo
+ *

+ */ + public static final String SP_ACCESSION = "accession"; + + /** + * Search parameter constant for study + *

+ * Description: The study id for the image
+ * Type: token
+ * Path: ImagingStudy.uid
+ *

+ */ + public static final String SP_STUDY = "study"; + + /** + * Search parameter constant for series + *

+ * Description: The series id for the image
+ * Type: token
+ * Path: ImagingStudy.series.uid
+ *

+ */ + public static final String SP_SERIES = "series"; + + /** + * Search parameter constant for modality + *

+ * Description: The modality of the image
+ * Type: token
+ * Path: ImagingStudy.series.modality
+ *

+ */ + public static final String SP_MODALITY = "modality"; + + /** + * Search parameter constant for size + *

+ * Description: The size of the image in MB - may include > or < in the value
+ * Type: number
+ * Path:
+ *

+ */ + public static final String SP_SIZE = "size"; + + /** + * Search parameter constant for bodysite + *

+ * Description:
+ * Type: token
+ * Path: ImagingStudy.series.bodySite
+ *

+ */ + public static final String SP_BODYSITE = "bodysite"; + + /** + * Search parameter constant for uid + *

+ * Description:
+ * Type: token
+ * Path: ImagingStudy.series.instance.uid
+ *

+ */ + public static final String SP_UID = "uid"; + + /** + * Search parameter constant for dicom-class + *

+ * Description:
+ * Type: token
+ * Path: ImagingStudy.series.instance.sopclass
+ *

+ */ + public static final String SP_DICOM_CLASS = "dicom-class"; + + + @Child(name="dateTime", type=DateTimeDt.class, order=0, min=0, max=1) + @Description( + shortDefinition="When the study was performed", + formalDefinition="Date and Time the study took place" + ) + private DateTimeDt myDateTime; + + @Child(name="subject", order=1, min=1, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Patient.class, + }) + @Description( + shortDefinition="Who the images are of", + formalDefinition="Who the images are of" + ) + private ResourceReferenceDt mySubject; + + @Child(name="uid", type=OidDt.class, order=2, min=1, max=1) + @Description( + shortDefinition="Formal identifier for the study (0020,000D)", + formalDefinition="Formal identifier for the study" + ) + private OidDt myUid; + + @Child(name="accessionNo", type=IdentifierDt.class, order=3, min=0, max=1) + @Description( + shortDefinition="Accession Number (0008,0050)", + formalDefinition="Accession Number" + ) + private IdentifierDt myAccessionNo; + + @Child(name="identifier", type=IdentifierDt.class, order=4, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Other identifiers for the study (0020,0010)", + formalDefinition="Other identifiers for the study" + ) + private java.util.List myIdentifier; + + @Child(name="order", order=5, min=0, max=Child.MAX_UNLIMITED, type={ + ca.uhn.fhir.model.dstu.resource.DiagnosticOrder.class, + }) + @Description( + shortDefinition="Order(s) that caused this study to be performed", + formalDefinition="A list of the diagnostic orders that resulted in this imaging study being performed" + ) + private java.util.List myOrder; + + @Child(name="modality", type=CodeDt.class, order=6, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="All series.modality if actual acquisition modalities", + formalDefinition="A list of all the Series.ImageModality values that are actual acquisition modalities, i.e. those in the DICOM Context Group 29 (value set OID 1.2.840.10008.6.1.19)" + ) + private java.util.List> myModality; + + @Child(name="referrer", order=7, min=0, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Practitioner.class, + }) + @Description( + shortDefinition="Referring physician (0008,0090)", + formalDefinition="The requesting/referring physician" + ) + private ResourceReferenceDt myReferrer; + + @Child(name="availability", type=CodeDt.class, order=8, min=0, max=1) + @Description( + shortDefinition="ONLINE | OFFLINE | NEARLINE | UNAVAILABLE (0008,0056)", + formalDefinition="Availability of study (online, offline or nearline)" + ) + private BoundCodeDt myAvailability; + + @Child(name="url", type=UriDt.class, order=9, min=0, max=1) + @Description( + shortDefinition="Retrieve URI (0008,1190)", + formalDefinition="WADO-RS URI where Study is available" + ) + private UriDt myUrl; + + @Child(name="numberOfSeries", type=IntegerDt.class, order=10, min=1, max=1) + @Description( + shortDefinition="Number of Study Related Series (0020,1206)", + formalDefinition="Number of Series in Study" + ) + private IntegerDt myNumberOfSeries; + + @Child(name="numberOfInstances", type=IntegerDt.class, order=11, min=1, max=1) + @Description( + shortDefinition="Number of Study Related Instances (0020,1208)", + formalDefinition="Number of SOP Instances in Study" + ) + private IntegerDt myNumberOfInstances; + + @Child(name="clinicalInformation", type=StringDt.class, order=12, min=0, max=1) + @Description( + shortDefinition="Diagnoses etc with request (0040,1002)", + formalDefinition="Diagnoses etc provided with request" + ) + private StringDt myClinicalInformation; + + @Child(name="procedure", type=CodingDt.class, order=13, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Type of procedure performed (0008,1032)", + formalDefinition="Type of procedure performed" + ) + private java.util.List myProcedure; + + @Child(name="interpreter", order=14, min=0, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Practitioner.class, + }) + @Description( + shortDefinition="Who interpreted images (0008,1060)", + formalDefinition="Who read study and interpreted the images" + ) + private ResourceReferenceDt myInterpreter; + + @Child(name="description", type=StringDt.class, order=15, min=0, max=1) + @Description( + shortDefinition="Institution-generated description (0008,1030)", + formalDefinition="Institution-generated description or classification of the Study (component) performed" + ) + private StringDt myDescription; + + @Child(name="series", order=16, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Each study has one or more series of instances", + formalDefinition="Each study has one or more series of image instances" + ) + private java.util.List mySeries; + + + @Override + public boolean isEmpty() { + return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myDateTime, mySubject, myUid, myAccessionNo, myIdentifier, myOrder, myModality, myReferrer, myAvailability, myUrl, myNumberOfSeries, myNumberOfInstances, myClinicalInformation, myProcedure, myInterpreter, myDescription, mySeries); + } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myDateTime, mySubject, myUid, myAccessionNo, myIdentifier, myOrder, myModality, myReferrer, myAvailability, myUrl, myNumberOfSeries, myNumberOfInstances, myClinicalInformation, myProcedure, myInterpreter, myDescription, mySeries); + } + + + /** + * Gets the value(s) for dateTime (When the study was performed). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Date and Time the study took place + *

+ */ + public DateTimeDt getDateTime() { + if (myDateTime == null) { + myDateTime = new DateTimeDt(); + } + return myDateTime; + } + + /** + * Sets the value(s) for dateTime (When the study was performed) + * + *

+ * Definition: + * Date and Time the study took place + *

+ */ + public void setDateTime(DateTimeDt theValue) { + myDateTime = theValue; + } + + + /** + * Sets the value for dateTime (When the study was performed) + * + *

+ * Definition: + * Date and Time the study took place + *

+ */ + public void setDateTime( Date theDate, TemporalPrecisionEnum thePrecision) { + myDateTime = new DateTimeDt(theDate, thePrecision); + } + + /** + * Sets the value for dateTime (When the study was performed) + * + *

+ * Definition: + * Date and Time the study took place + *

+ */ + public void setDateTimeWithSecondsPrecision( Date theDate) { + myDateTime = new DateTimeDt(theDate); + } + + + /** + * Gets the value(s) for subject (Who the images are of). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Who the images are of + *

+ */ + public ResourceReferenceDt getSubject() { + if (mySubject == null) { + mySubject = new ResourceReferenceDt(); + } + return mySubject; + } + + /** + * Sets the value(s) for subject (Who the images are of) + * + *

+ * Definition: + * Who the images are of + *

+ */ + public void setSubject(ResourceReferenceDt theValue) { + mySubject = theValue; + } + + + + /** + * Gets the value(s) for uid (Formal identifier for the study (0020,000D)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Formal identifier for the study + *

+ */ + public OidDt getUid() { + if (myUid == null) { + myUid = new OidDt(); + } + return myUid; + } + + /** + * Sets the value(s) for uid (Formal identifier for the study (0020,000D)) + * + *

+ * Definition: + * Formal identifier for the study + *

+ */ + public void setUid(OidDt theValue) { + myUid = theValue; + } + + + + /** + * Gets the value(s) for accessionNo (Accession Number (0008,0050)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Accession Number + *

+ */ + public IdentifierDt getAccessionNo() { + if (myAccessionNo == null) { + myAccessionNo = new IdentifierDt(); + } + return myAccessionNo; + } + + /** + * Sets the value(s) for accessionNo (Accession Number (0008,0050)) + * + *

+ * Definition: + * Accession Number + *

+ */ + public void setAccessionNo(IdentifierDt theValue) { + myAccessionNo = theValue; + } + + + + /** + * Gets the value(s) for identifier (Other identifiers for the study (0020,0010)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Other identifiers for the study + *

+ */ + public java.util.List getIdentifier() { + if (myIdentifier == null) { + myIdentifier = new java.util.ArrayList(); + } + return myIdentifier; + } + + /** + * Sets the value(s) for identifier (Other identifiers for the study (0020,0010)) + * + *

+ * Definition: + * Other identifiers for the study + *

+ */ + public void setIdentifier(java.util.List theValue) { + myIdentifier = theValue; + } + + /** + * Adds and returns a new value for identifier (Other identifiers for the study (0020,0010)) + * + *

+ * Definition: + * Other identifiers for the study + *

+ */ + public IdentifierDt addIdentifier() { + IdentifierDt newType = new IdentifierDt(); + getIdentifier().add(newType); + return newType; + } + + + /** + * Gets the value(s) for order (Order(s) that caused this study to be performed). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * A list of the diagnostic orders that resulted in this imaging study being performed + *

+ */ + public java.util.List getOrder() { + if (myOrder == null) { + myOrder = new java.util.ArrayList(); + } + return myOrder; + } + + /** + * Sets the value(s) for order (Order(s) that caused this study to be performed) + * + *

+ * Definition: + * A list of the diagnostic orders that resulted in this imaging study being performed + *

+ */ + public void setOrder(java.util.List theValue) { + myOrder = theValue; + } + + + + /** + * Gets the value(s) for modality (All series.modality if actual acquisition modalities). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * A list of all the Series.ImageModality values that are actual acquisition modalities, i.e. those in the DICOM Context Group 29 (value set OID 1.2.840.10008.6.1.19) + *

+ */ + public java.util.List> getModality() { + if (myModality == null) { + myModality = new java.util.ArrayList>(); + } + return myModality; + } + + /** + * Sets the value(s) for modality (All series.modality if actual acquisition modalities) + * + *

+ * Definition: + * A list of all the Series.ImageModality values that are actual acquisition modalities, i.e. those in the DICOM Context Group 29 (value set OID 1.2.840.10008.6.1.19) + *

+ */ + public void setModality(java.util.List> theValue) { + myModality = theValue; + } + + + /** + * Add a value for modality (All series.modality if actual acquisition modalities) + * + *

+ * Definition: + * A list of all the Series.ImageModality values that are actual acquisition modalities, i.e. those in the DICOM Context Group 29 (value set OID 1.2.840.10008.6.1.19) + *

+ */ + public void addModality(ImagingModalityEnum theValue) { + getModality().add(new BoundCodeDt(ImagingModalityEnum.VALUESET_BINDER, theValue)); + } + + /** + * Sets the value(s), and clears any existing value(s) for modality (All series.modality if actual acquisition modalities) + * + *

+ * Definition: + * A list of all the Series.ImageModality values that are actual acquisition modalities, i.e. those in the DICOM Context Group 29 (value set OID 1.2.840.10008.6.1.19) + *

+ */ + public void setModality(ImagingModalityEnum theValue) { + getModality().clear(); + addModality(theValue); + } + + + /** + * Gets the value(s) for referrer (Referring physician (0008,0090)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The requesting/referring physician + *

+ */ + public ResourceReferenceDt getReferrer() { + if (myReferrer == null) { + myReferrer = new ResourceReferenceDt(); + } + return myReferrer; + } + + /** + * Sets the value(s) for referrer (Referring physician (0008,0090)) + * + *

+ * Definition: + * The requesting/referring physician + *

+ */ + public void setReferrer(ResourceReferenceDt theValue) { + myReferrer = theValue; + } + + + + /** + * Gets the value(s) for availability (ONLINE | OFFLINE | NEARLINE | UNAVAILABLE (0008,0056)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Availability of study (online, offline or nearline) + *

+ */ + public BoundCodeDt getAvailability() { + if (myAvailability == null) { + myAvailability = new BoundCodeDt(InstanceAvailabilityEnum.VALUESET_BINDER); + } + return myAvailability; + } + + /** + * Sets the value(s) for availability (ONLINE | OFFLINE | NEARLINE | UNAVAILABLE (0008,0056)) + * + *

+ * Definition: + * Availability of study (online, offline or nearline) + *

+ */ + public void setAvailability(BoundCodeDt theValue) { + myAvailability = theValue; + } + + + /** + * Sets the value(s) for availability (ONLINE | OFFLINE | NEARLINE | UNAVAILABLE (0008,0056)) + * + *

+ * Definition: + * Availability of study (online, offline or nearline) + *

+ */ + public void setAvailability(InstanceAvailabilityEnum theValue) { + getAvailability().setValueAsEnum(theValue); + } + + + /** + * Gets the value(s) for url (Retrieve URI (0008,1190)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * WADO-RS URI where Study is available + *

+ */ + public UriDt getUrl() { + if (myUrl == null) { + myUrl = new UriDt(); + } + return myUrl; + } + + /** + * Sets the value(s) for url (Retrieve URI (0008,1190)) + * + *

+ * Definition: + * WADO-RS URI where Study is available + *

+ */ + public void setUrl(UriDt theValue) { + myUrl = theValue; + } + + + /** + * Sets the value for url (Retrieve URI (0008,1190)) + * + *

+ * Definition: + * WADO-RS URI where Study is available + *

+ */ + public void setUrl( String theUri) { + myUrl = new UriDt(theUri); + } + + + /** + * Gets the value(s) for numberOfSeries (Number of Study Related Series (0020,1206)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Number of Series in Study + *

+ */ + public IntegerDt getNumberOfSeries() { + if (myNumberOfSeries == null) { + myNumberOfSeries = new IntegerDt(); + } + return myNumberOfSeries; + } + + /** + * Sets the value(s) for numberOfSeries (Number of Study Related Series (0020,1206)) + * + *

+ * Definition: + * Number of Series in Study + *

+ */ + public void setNumberOfSeries(IntegerDt theValue) { + myNumberOfSeries = theValue; + } + + + /** + * Sets the value for numberOfSeries (Number of Study Related Series (0020,1206)) + * + *

+ * Definition: + * Number of Series in Study + *

+ */ + public void setNumberOfSeries( Integer theInteger) { + myNumberOfSeries = new IntegerDt(theInteger); + } + + + /** + * Gets the value(s) for numberOfInstances (Number of Study Related Instances (0020,1208)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Number of SOP Instances in Study + *

+ */ + public IntegerDt getNumberOfInstances() { + if (myNumberOfInstances == null) { + myNumberOfInstances = new IntegerDt(); + } + return myNumberOfInstances; + } + + /** + * Sets the value(s) for numberOfInstances (Number of Study Related Instances (0020,1208)) + * + *

+ * Definition: + * Number of SOP Instances in Study + *

+ */ + public void setNumberOfInstances(IntegerDt theValue) { + myNumberOfInstances = theValue; + } + + + /** + * Sets the value for numberOfInstances (Number of Study Related Instances (0020,1208)) + * + *

+ * Definition: + * Number of SOP Instances in Study + *

+ */ + public void setNumberOfInstances( Integer theInteger) { + myNumberOfInstances = new IntegerDt(theInteger); + } + + + /** + * Gets the value(s) for clinicalInformation (Diagnoses etc with request (0040,1002)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Diagnoses etc provided with request + *

+ */ + public StringDt getClinicalInformation() { + if (myClinicalInformation == null) { + myClinicalInformation = new StringDt(); + } + return myClinicalInformation; + } + + /** + * Sets the value(s) for clinicalInformation (Diagnoses etc with request (0040,1002)) + * + *

+ * Definition: + * Diagnoses etc provided with request + *

+ */ + public void setClinicalInformation(StringDt theValue) { + myClinicalInformation = theValue; + } + + + /** + * Sets the value for clinicalInformation (Diagnoses etc with request (0040,1002)) + * + *

+ * Definition: + * Diagnoses etc provided with request + *

+ */ + public void setClinicalInformation( String theString) { + myClinicalInformation = new StringDt(theString); + } + + + /** + * Gets the value(s) for procedure (Type of procedure performed (0008,1032)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Type of procedure performed + *

+ */ + public java.util.List getProcedure() { + if (myProcedure == null) { + myProcedure = new java.util.ArrayList(); + } + return myProcedure; + } + + /** + * Sets the value(s) for procedure (Type of procedure performed (0008,1032)) + * + *

+ * Definition: + * Type of procedure performed + *

+ */ + public void setProcedure(java.util.List theValue) { + myProcedure = theValue; + } + + /** + * Adds and returns a new value for procedure (Type of procedure performed (0008,1032)) + * + *

+ * Definition: + * Type of procedure performed + *

+ */ + public CodingDt addProcedure() { + CodingDt newType = new CodingDt(); + getProcedure().add(newType); + return newType; + } + + + /** + * Gets the value(s) for interpreter (Who interpreted images (0008,1060)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Who read study and interpreted the images + *

+ */ + public ResourceReferenceDt getInterpreter() { + if (myInterpreter == null) { + myInterpreter = new ResourceReferenceDt(); + } + return myInterpreter; + } + + /** + * Sets the value(s) for interpreter (Who interpreted images (0008,1060)) + * + *

+ * Definition: + * Who read study and interpreted the images + *

+ */ + public void setInterpreter(ResourceReferenceDt theValue) { + myInterpreter = theValue; + } + + + + /** + * Gets the value(s) for description (Institution-generated description (0008,1030)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Institution-generated description or classification of the Study (component) performed + *

+ */ + public StringDt getDescription() { + if (myDescription == null) { + myDescription = new StringDt(); + } + return myDescription; + } + + /** + * Sets the value(s) for description (Institution-generated description (0008,1030)) + * + *

+ * Definition: + * Institution-generated description or classification of the Study (component) performed + *

+ */ + public void setDescription(StringDt theValue) { + myDescription = theValue; + } + + + /** + * Sets the value for description (Institution-generated description (0008,1030)) + * + *

+ * Definition: + * Institution-generated description or classification of the Study (component) performed + *

+ */ + public void setDescription( String theString) { + myDescription = new StringDt(theString); + } + + + /** + * Gets the value(s) for series (Each study has one or more series of instances). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Each study has one or more series of image instances + *

+ */ + public java.util.List getSeries() { + if (mySeries == null) { + mySeries = new java.util.ArrayList(); + } + return mySeries; + } + + /** + * Sets the value(s) for series (Each study has one or more series of instances) + * + *

+ * Definition: + * Each study has one or more series of image instances + *

+ */ + public void setSeries(java.util.List theValue) { + mySeries = theValue; + } + + /** + * Adds and returns a new value for series (Each study has one or more series of instances) + * + *

+ * Definition: + * Each study has one or more series of image instances + *

+ */ + public Series addSeries() { + Series newType = new Series(); + getSeries().add(newType); + return newType; + } + + + /** + * Block class for child element: ImagingStudy.series (Each study has one or more series of instances) + * + *

+ * Definition: + * Each study has one or more series of image instances + *

+ */ + @Block(name="ImagingStudy.series") + public static class Series extends BaseElement implements IResourceBlock { + + @Child(name="number", type=IntegerDt.class, order=0, min=0, max=1) + @Description( + shortDefinition="Number of this series in overall sequence (0020,0011)", + formalDefinition="The number of this series in the overall sequence" + ) + private IntegerDt myNumber; + + @Child(name="modality", type=CodeDt.class, order=1, min=1, max=1) + @Description( + shortDefinition="The modality of the instances in the series (0008,0060)", + formalDefinition="The modality of this series sequence" + ) + private BoundCodeDt myModality; + + @Child(name="uid", type=OidDt.class, order=2, min=1, max=1) + @Description( + shortDefinition="Formal identifier for this series (0020,000E)", + formalDefinition="Formal identifier for this series" + ) + private OidDt myUid; + + @Child(name="description", type=StringDt.class, order=3, min=0, max=1) + @Description( + shortDefinition="A description of the series (0008,103E)", + formalDefinition="A description of the series" + ) + private StringDt myDescription; + + @Child(name="numberOfInstances", type=IntegerDt.class, order=4, min=1, max=1) + @Description( + shortDefinition="Number of Series Related Instances (0020,1209)", + formalDefinition="Sequence that contains attributes from the" + ) + private IntegerDt myNumberOfInstances; + + @Child(name="availability", type=CodeDt.class, order=5, min=0, max=1) + @Description( + shortDefinition="ONLINE | OFFLINE | NEARLINE | UNAVAILABLE (0008,0056)", + formalDefinition="Availability of series (online, offline or nearline)" + ) + private BoundCodeDt myAvailability; + + @Child(name="url", type=UriDt.class, order=6, min=0, max=1) + @Description( + shortDefinition="Retrieve URI (0008,1115 > 0008,1190)", + formalDefinition="WADO-RS URI where Series is available" + ) + private UriDt myUrl; + + @Child(name="bodySite", type=CodingDt.class, order=7, min=0, max=1) + @Description( + shortDefinition="Body part examined (Map from 0018,0015)", + formalDefinition="Body part examined. See DICOM Part 16 Annex L for the mapping from DICOM to Snomed" + ) + private CodingDt myBodySite; + + @Child(name="dateTime", type=DateTimeDt.class, order=8, min=0, max=1) + @Description( + shortDefinition="When the series started", + formalDefinition="" + ) + private DateTimeDt myDateTime; + + @Child(name="instance", order=9, min=1, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="A single instance taken from a patient (image or other)", + formalDefinition="A single image taken from a patient" + ) + private java.util.List myInstance; + + + @Override + public boolean isEmpty() { + return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myNumber, myModality, myUid, myDescription, myNumberOfInstances, myAvailability, myUrl, myBodySite, myDateTime, myInstance); + } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myNumber, myModality, myUid, myDescription, myNumberOfInstances, myAvailability, myUrl, myBodySite, myDateTime, myInstance); + } + + + /** + * Gets the value(s) for number (Number of this series in overall sequence (0020,0011)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The number of this series in the overall sequence + *

+ */ + public IntegerDt getNumber() { + if (myNumber == null) { + myNumber = new IntegerDt(); + } + return myNumber; + } + + /** + * Sets the value(s) for number (Number of this series in overall sequence (0020,0011)) + * + *

+ * Definition: + * The number of this series in the overall sequence + *

+ */ + public void setNumber(IntegerDt theValue) { + myNumber = theValue; + } + + + /** + * Sets the value for number (Number of this series in overall sequence (0020,0011)) + * + *

+ * Definition: + * The number of this series in the overall sequence + *

+ */ + public void setNumber( Integer theInteger) { + myNumber = new IntegerDt(theInteger); + } + + + /** + * Gets the value(s) for modality (The modality of the instances in the series (0008,0060)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The modality of this series sequence + *

+ */ + public BoundCodeDt getModality() { + if (myModality == null) { + myModality = new BoundCodeDt(ModalityEnum.VALUESET_BINDER); + } + return myModality; + } + + /** + * Sets the value(s) for modality (The modality of the instances in the series (0008,0060)) + * + *

+ * Definition: + * The modality of this series sequence + *

+ */ + public void setModality(BoundCodeDt theValue) { + myModality = theValue; + } + + + /** + * Sets the value(s) for modality (The modality of the instances in the series (0008,0060)) + * + *

+ * Definition: + * The modality of this series sequence + *

+ */ + public void setModality(ModalityEnum theValue) { + getModality().setValueAsEnum(theValue); + } + + + /** + * Gets the value(s) for uid (Formal identifier for this series (0020,000E)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Formal identifier for this series + *

+ */ + public OidDt getUid() { + if (myUid == null) { + myUid = new OidDt(); + } + return myUid; + } + + /** + * Sets the value(s) for uid (Formal identifier for this series (0020,000E)) + * + *

+ * Definition: + * Formal identifier for this series + *

+ */ + public void setUid(OidDt theValue) { + myUid = theValue; + } + + + + /** + * Gets the value(s) for description (A description of the series (0008,103E)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * A description of the series + *

+ */ + public StringDt getDescription() { + if (myDescription == null) { + myDescription = new StringDt(); + } + return myDescription; + } + + /** + * Sets the value(s) for description (A description of the series (0008,103E)) + * + *

+ * Definition: + * A description of the series + *

+ */ + public void setDescription(StringDt theValue) { + myDescription = theValue; + } + + + /** + * Sets the value for description (A description of the series (0008,103E)) + * + *

+ * Definition: + * A description of the series + *

+ */ + public void setDescription( String theString) { + myDescription = new StringDt(theString); + } + + + /** + * Gets the value(s) for numberOfInstances (Number of Series Related Instances (0020,1209)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Sequence that contains attributes from the + *

+ */ + public IntegerDt getNumberOfInstances() { + if (myNumberOfInstances == null) { + myNumberOfInstances = new IntegerDt(); + } + return myNumberOfInstances; + } + + /** + * Sets the value(s) for numberOfInstances (Number of Series Related Instances (0020,1209)) + * + *

+ * Definition: + * Sequence that contains attributes from the + *

+ */ + public void setNumberOfInstances(IntegerDt theValue) { + myNumberOfInstances = theValue; + } + + + /** + * Sets the value for numberOfInstances (Number of Series Related Instances (0020,1209)) + * + *

+ * Definition: + * Sequence that contains attributes from the + *

+ */ + public void setNumberOfInstances( Integer theInteger) { + myNumberOfInstances = new IntegerDt(theInteger); + } + + + /** + * Gets the value(s) for availability (ONLINE | OFFLINE | NEARLINE | UNAVAILABLE (0008,0056)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Availability of series (online, offline or nearline) + *

+ */ + public BoundCodeDt getAvailability() { + if (myAvailability == null) { + myAvailability = new BoundCodeDt(InstanceAvailabilityEnum.VALUESET_BINDER); + } + return myAvailability; + } + + /** + * Sets the value(s) for availability (ONLINE | OFFLINE | NEARLINE | UNAVAILABLE (0008,0056)) + * + *

+ * Definition: + * Availability of series (online, offline or nearline) + *

+ */ + public void setAvailability(BoundCodeDt theValue) { + myAvailability = theValue; + } + + + /** + * Sets the value(s) for availability (ONLINE | OFFLINE | NEARLINE | UNAVAILABLE (0008,0056)) + * + *

+ * Definition: + * Availability of series (online, offline or nearline) + *

+ */ + public void setAvailability(InstanceAvailabilityEnum theValue) { + getAvailability().setValueAsEnum(theValue); + } + + + /** + * Gets the value(s) for url (Retrieve URI (0008,1115 > 0008,1190)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * WADO-RS URI where Series is available + *

+ */ + public UriDt getUrl() { + if (myUrl == null) { + myUrl = new UriDt(); + } + return myUrl; + } + + /** + * Sets the value(s) for url (Retrieve URI (0008,1115 > 0008,1190)) + * + *

+ * Definition: + * WADO-RS URI where Series is available + *

+ */ + public void setUrl(UriDt theValue) { + myUrl = theValue; + } + + + /** + * Sets the value for url (Retrieve URI (0008,1115 > 0008,1190)) + * + *

+ * Definition: + * WADO-RS URI where Series is available + *

+ */ + public void setUrl( String theUri) { + myUrl = new UriDt(theUri); + } + + + /** + * Gets the value(s) for bodySite (Body part examined (Map from 0018,0015)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Body part examined. See DICOM Part 16 Annex L for the mapping from DICOM to Snomed + *

+ */ + public CodingDt getBodySite() { + if (myBodySite == null) { + myBodySite = new CodingDt(); + } + return myBodySite; + } + + /** + * Sets the value(s) for bodySite (Body part examined (Map from 0018,0015)) + * + *

+ * Definition: + * Body part examined. See DICOM Part 16 Annex L for the mapping from DICOM to Snomed + *

+ */ + public void setBodySite(CodingDt theValue) { + myBodySite = theValue; + } + + + + /** + * Gets the value(s) for dateTime (When the series started). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public DateTimeDt getDateTime() { + if (myDateTime == null) { + myDateTime = new DateTimeDt(); + } + return myDateTime; + } + + /** + * Sets the value(s) for dateTime (When the series started) + * + *

+ * Definition: + * + *

+ */ + public void setDateTime(DateTimeDt theValue) { + myDateTime = theValue; + } + + + /** + * Sets the value for dateTime (When the series started) + * + *

+ * Definition: + * + *

+ */ + public void setDateTime( Date theDate, TemporalPrecisionEnum thePrecision) { + myDateTime = new DateTimeDt(theDate, thePrecision); + } + + /** + * Sets the value for dateTime (When the series started) + * + *

+ * Definition: + * + *

+ */ + public void setDateTimeWithSecondsPrecision( Date theDate) { + myDateTime = new DateTimeDt(theDate); + } + + + /** + * Gets the value(s) for instance (A single instance taken from a patient (image or other)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * A single image taken from a patient + *

+ */ + public java.util.List getInstance() { + if (myInstance == null) { + myInstance = new java.util.ArrayList(); + } + return myInstance; + } + + /** + * Sets the value(s) for instance (A single instance taken from a patient (image or other)) + * + *

+ * Definition: + * A single image taken from a patient + *

+ */ + public void setInstance(java.util.List theValue) { + myInstance = theValue; + } + + /** + * Adds and returns a new value for instance (A single instance taken from a patient (image or other)) + * + *

+ * Definition: + * A single image taken from a patient + *

+ */ + public SeriesInstance addInstance() { + SeriesInstance newType = new SeriesInstance(); + getInstance().add(newType); + return newType; + } + + + + } + + /** + * Block class for child element: ImagingStudy.series.instance (A single instance taken from a patient (image or other)) + * + *

+ * Definition: + * A single image taken from a patient + *

+ */ + @Block(name="ImagingStudy.series.instance") + public static class SeriesInstance extends BaseElement implements IResourceBlock { + + @Child(name="number", type=IntegerDt.class, order=0, min=0, max=1) + @Description( + shortDefinition="The number of this instance in the series (0020,0013)", + formalDefinition="The number of this image in the series" + ) + private IntegerDt myNumber; + + @Child(name="uid", type=OidDt.class, order=1, min=1, max=1) + @Description( + shortDefinition="Formal identifier for this instance (0008,0018)", + formalDefinition="Formal identifier for this image" + ) + private OidDt myUid; + + @Child(name="sopclass", type=OidDt.class, order=2, min=1, max=1) + @Description( + shortDefinition="DICOM class type (0008,0016)", + formalDefinition="DICOM Image type" + ) + private OidDt mySopclass; + + @Child(name="type", type=StringDt.class, order=3, min=0, max=1) + @Description( + shortDefinition="Type of instance (image etc) (0004,1430)", + formalDefinition="" + ) + private StringDt myType; + + @Child(name="title", type=StringDt.class, order=4, min=0, max=1) + @Description( + shortDefinition="Description (0070,0080 | 0040,A043 > 0008,0104 | 0042,0010 | 0008,0008)", + formalDefinition="" + ) + private StringDt myTitle; + + @Child(name="url", type=UriDt.class, order=5, min=0, max=1) + @Description( + shortDefinition="WADO-RS service where instance is available (0008,1199 > 0008,1190)", + formalDefinition="WADO-RS url where image is available" + ) + private UriDt myUrl; + + @Child(name="attachment", order=6, min=0, max=1, type={ + IResource.class, + }) + @Description( + shortDefinition="A FHIR resource with content for this instance", + formalDefinition="" + ) + private ResourceReferenceDt myAttachment; + + + @Override + public boolean isEmpty() { + return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myNumber, myUid, mySopclass, myType, myTitle, myUrl, myAttachment); + } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myNumber, myUid, mySopclass, myType, myTitle, myUrl, myAttachment); + } + + + /** + * Gets the value(s) for number (The number of this instance in the series (0020,0013)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The number of this image in the series + *

+ */ + public IntegerDt getNumber() { + if (myNumber == null) { + myNumber = new IntegerDt(); + } + return myNumber; + } + + /** + * Sets the value(s) for number (The number of this instance in the series (0020,0013)) + * + *

+ * Definition: + * The number of this image in the series + *

+ */ + public void setNumber(IntegerDt theValue) { + myNumber = theValue; + } + + + /** + * Sets the value for number (The number of this instance in the series (0020,0013)) + * + *

+ * Definition: + * The number of this image in the series + *

+ */ + public void setNumber( Integer theInteger) { + myNumber = new IntegerDt(theInteger); + } + + + /** + * Gets the value(s) for uid (Formal identifier for this instance (0008,0018)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Formal identifier for this image + *

+ */ + public OidDt getUid() { + if (myUid == null) { + myUid = new OidDt(); + } + return myUid; + } + + /** + * Sets the value(s) for uid (Formal identifier for this instance (0008,0018)) + * + *

+ * Definition: + * Formal identifier for this image + *

+ */ + public void setUid(OidDt theValue) { + myUid = theValue; + } + + + + /** + * Gets the value(s) for sopclass (DICOM class type (0008,0016)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * DICOM Image type + *

+ */ + public OidDt getSopclass() { + if (mySopclass == null) { + mySopclass = new OidDt(); + } + return mySopclass; + } + + /** + * Sets the value(s) for sopclass (DICOM class type (0008,0016)) + * + *

+ * Definition: + * DICOM Image type + *

+ */ + public void setSopclass(OidDt theValue) { + mySopclass = theValue; + } + + + + /** + * Gets the value(s) for type (Type of instance (image etc) (0004,1430)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public StringDt getType() { + if (myType == null) { + myType = new StringDt(); + } + return myType; + } + + /** + * Sets the value(s) for type (Type of instance (image etc) (0004,1430)) + * + *

+ * Definition: + * + *

+ */ + public void setType(StringDt theValue) { + myType = theValue; + } + + + /** + * Sets the value for type (Type of instance (image etc) (0004,1430)) + * + *

+ * Definition: + * + *

+ */ + public void setType( String theString) { + myType = new StringDt(theString); + } + + + /** + * Gets the value(s) for title (Description (0070,0080 | 0040,A043 > 0008,0104 | 0042,0010 | 0008,0008)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public StringDt getTitle() { + if (myTitle == null) { + myTitle = new StringDt(); + } + return myTitle; + } + + /** + * Sets the value(s) for title (Description (0070,0080 | 0040,A043 > 0008,0104 | 0042,0010 | 0008,0008)) + * + *

+ * Definition: + * + *

+ */ + public void setTitle(StringDt theValue) { + myTitle = theValue; + } + + + /** + * Sets the value for title (Description (0070,0080 | 0040,A043 > 0008,0104 | 0042,0010 | 0008,0008)) + * + *

+ * Definition: + * + *

+ */ + public void setTitle( String theString) { + myTitle = new StringDt(theString); + } + + + /** + * Gets the value(s) for url (WADO-RS service where instance is available (0008,1199 > 0008,1190)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * WADO-RS url where image is available + *

+ */ + public UriDt getUrl() { + if (myUrl == null) { + myUrl = new UriDt(); + } + return myUrl; + } + + /** + * Sets the value(s) for url (WADO-RS service where instance is available (0008,1199 > 0008,1190)) + * + *

+ * Definition: + * WADO-RS url where image is available + *

+ */ + public void setUrl(UriDt theValue) { + myUrl = theValue; + } + + + /** + * Sets the value for url (WADO-RS service where instance is available (0008,1199 > 0008,1190)) + * + *

+ * Definition: + * WADO-RS url where image is available + *

+ */ + public void setUrl( String theUri) { + myUrl = new UriDt(theUri); + } + + + /** + * Gets the value(s) for attachment (A FHIR resource with content for this instance). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * + *

+ */ + public ResourceReferenceDt getAttachment() { + if (myAttachment == null) { + myAttachment = new ResourceReferenceDt(); + } + return myAttachment; + } + + /** + * Sets the value(s) for attachment (A FHIR resource with content for this instance) + * + *

+ * Definition: + * + *

+ */ + public void setAttachment(ResourceReferenceDt theValue) { + myAttachment = theValue; + } + + + + + } + + + + + +} \ No newline at end of file diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Location.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Location.java index 55974f4329f..4b30d07b3ee 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Location.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Location.java @@ -16,12 +16,30 @@ package ca.uhn.fhir.model.dstu.resource; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.composite.*; -import ca.uhn.fhir.model.dstu.valueset.*; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.AddressDt; +import ca.uhn.fhir.model.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.ContactDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.valueset.LocationModeEnum; +import ca.uhn.fhir.model.dstu.valueset.LocationStatusEnum; +import ca.uhn.fhir.model.dstu.valueset.LocationTypeEnum; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.BoundCodeableConceptDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.DecimalDt; +import ca.uhn.fhir.model.primitive.StringDt; + /** * HAPI/FHIR Location Resource @@ -154,7 +172,7 @@ public class Location extends BaseResource implements IResource { shortDefinition="Contact details of the location", formalDefinition="The contact details of communication devices available at the location. This can include phone numbers, fax numbers, mobile numbers, email addresses and web sites" ) - private List myTelecom; + private java.util.List myTelecom; @Child(name="address", type=AddressDt.class, order=5, min=0, max=1) @Description( @@ -178,7 +196,7 @@ public class Location extends BaseResource implements IResource { private Position myPosition; @Child(name="managingOrganization", order=8, min=0, max=1, type={ - Organization.class, + ca.uhn.fhir.model.dstu.resource.Organization.class, }) @Description( shortDefinition="The organization that is responsible for the provisioning and upkeep of the location", @@ -194,7 +212,7 @@ public class Location extends BaseResource implements IResource { private BoundCodeDt myStatus; @Child(name="partOf", order=10, min=0, max=1, type={ - Location.class, + ca.uhn.fhir.model.dstu.resource.Location.class, }) @Description( shortDefinition="Another Location which this Location is physically part of", @@ -214,6 +232,11 @@ public class Location extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentifier, myName, myDescription, myType, myTelecom, myAddress, myPhysicalType, myPosition, myManagingOrganization, myStatus, myPartOf, myMode); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier, myName, myDescription, myType, myTelecom, myAddress, myPhysicalType, myPosition, myManagingOrganization, myStatus, myPartOf, myMode); + } + /** * Gets the value(s) for identifier (Unique code or number identifying the location to its users). @@ -385,9 +408,9 @@ public class Location extends BaseResource implements IResource { * The contact details of communication devices available at the location. This can include phone numbers, fax numbers, mobile numbers, email addresses and web sites *

*/ - public List getTelecom() { + public java.util.List getTelecom() { if (myTelecom == null) { - myTelecom = new ArrayList(); + myTelecom = new java.util.ArrayList(); } return myTelecom; } @@ -400,7 +423,7 @@ public class Location extends BaseResource implements IResource { * The contact details of communication devices available at the location. This can include phone numbers, fax numbers, mobile numbers, email addresses and web sites *

*/ - public void setTelecom(List theValue) { + public void setTelecom(java.util.List theValue) { myTelecom = theValue; } @@ -697,6 +720,11 @@ public class Location extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myLongitude, myLatitude, myAltitude); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myLongitude, myLatitude, myAltitude); + } + /** * Gets the value(s) for longitude (Longitude as expressed in KML). @@ -736,7 +764,7 @@ public class Location extends BaseResource implements IResource { * Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below) *

*/ - public void setLongitude( java.math.BigDecimal theValue) { + public void setLongitude( long theValue) { myLongitude = new DecimalDt(theValue); } @@ -760,7 +788,7 @@ public class Location extends BaseResource implements IResource { * Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below) *

*/ - public void setLongitude( long theValue) { + public void setLongitude( java.math.BigDecimal theValue) { myLongitude = new DecimalDt(theValue); } @@ -803,7 +831,7 @@ public class Location extends BaseResource implements IResource { * Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below) *

*/ - public void setLatitude( java.math.BigDecimal theValue) { + public void setLatitude( long theValue) { myLatitude = new DecimalDt(theValue); } @@ -827,7 +855,7 @@ public class Location extends BaseResource implements IResource { * Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below) *

*/ - public void setLatitude( long theValue) { + public void setLatitude( java.math.BigDecimal theValue) { myLatitude = new DecimalDt(theValue); } @@ -870,7 +898,7 @@ public class Location extends BaseResource implements IResource { * Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below) *

*/ - public void setAltitude( java.math.BigDecimal theValue) { + public void setAltitude( long theValue) { myAltitude = new DecimalDt(theValue); } @@ -894,7 +922,7 @@ public class Location extends BaseResource implements IResource { * Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below) *

*/ - public void setAltitude( long theValue) { + public void setAltitude( java.math.BigDecimal theValue) { myAltitude = new DecimalDt(theValue); } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Media.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Media.java new file mode 100644 index 00000000000..f7362cf0cb0 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Media.java @@ -0,0 +1,750 @@ + + + + + + + + + + + + + + + + +package ca.uhn.fhir.model.dstu.resource; + + +import java.util.Date; + +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +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.dstu.composite.AttachmentDt; +import ca.uhn.fhir.model.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.valueset.MediaTypeEnum; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.DateTimeDt; +import ca.uhn.fhir.model.primitive.IntegerDt; +import ca.uhn.fhir.model.primitive.StringDt; + + +/** + * HAPI/FHIR Media Resource + * (A photo, video, or audio recording acquired or used in healthcare. The actual content may be inline or provided by direct reference) + * + *

+ * Definition: + * A photo, video, or audio recording acquired or used in healthcare. The actual content may be inline or provided by direct reference + *

+ * + *

+ * Requirements: + * + *

+ */ +@ResourceDef(name="Media", profile="http://hl7.org/fhir/profiles/Media", id="media") +public class Media extends BaseResource implements IResource { + + /** + * Search parameter constant for type + *

+ * Description:
+ * Type: token
+ * Path: Media.type
+ *

+ */ + public static final String SP_TYPE = "type"; + + /** + * Search parameter constant for subtype + *

+ * Description:
+ * Type: token
+ * Path: Media.subtype
+ *

+ */ + public static final String SP_SUBTYPE = "subtype"; + + /** + * Search parameter constant for identifier + *

+ * Description:
+ * Type: token
+ * Path: Media.identifier
+ *

+ */ + public static final String SP_IDENTIFIER = "identifier"; + + /** + * Search parameter constant for date + *

+ * Description:
+ * Type: date
+ * Path: Media.dateTime
+ *

+ */ + public static final String SP_DATE = "date"; + + /** + * Search parameter constant for subject + *

+ * Description:
+ * Type: reference
+ * Path: Media.subject
+ *

+ */ + public static final String SP_SUBJECT = "subject"; + + /** + * Search parameter constant for operator + *

+ * Description:
+ * Type: reference
+ * Path: Media.operator
+ *

+ */ + public static final String SP_OPERATOR = "operator"; + + /** + * Search parameter constant for view + *

+ * Description:
+ * Type: token
+ * Path: Media.view
+ *

+ */ + public static final String SP_VIEW = "view"; + + + @Child(name="type", type=CodeDt.class, order=0, min=1, max=1) + @Description( + shortDefinition="photo | video | audio", + formalDefinition="Whether the media is a photo (still image), an audio recording, or a video recording" + ) + private BoundCodeDt myType; + + @Child(name="subtype", type=CodeableConceptDt.class, order=1, min=0, max=1) + @Description( + shortDefinition="The type of acquisition equipment/process", + formalDefinition="Details of the type of the media - usually, how it was acquired (what type of device). If images sourced from a DICOM system, are wrapped in a Media resource, then this is the modality" + ) + private CodeableConceptDt mySubtype; + + @Child(name="identifier", type=IdentifierDt.class, order=2, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Identifier(s) for the image", + formalDefinition="Identifiers associated with the image - these may include identifiers for the image itself, identifiers for the context of its collection (e.g. series ids) and context ids such as accession numbers or other workflow identifiers" + ) + private java.util.List myIdentifier; + + @Child(name="dateTime", type=DateTimeDt.class, order=3, min=0, max=1) + @Description( + shortDefinition="When the media was taken/recorded (end)", + formalDefinition="When the media was originally recorded. For video and audio, if the length of the recording is not insignificant, this is the end of the recording" + ) + private DateTimeDt myDateTime; + + @Child(name="subject", order=4, min=0, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Patient.class, + ca.uhn.fhir.model.dstu.resource.Practitioner.class, + ca.uhn.fhir.model.dstu.resource.Group.class, + ca.uhn.fhir.model.dstu.resource.Device.class, + ca.uhn.fhir.model.dstu.resource.Specimen.class, + }) + @Description( + shortDefinition="Who/What this Media is a record of", + formalDefinition="Who/What this Media is a record of" + ) + private ResourceReferenceDt mySubject; + + @Child(name="operator", order=5, min=0, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Practitioner.class, + }) + @Description( + shortDefinition="The person who generated the image", + formalDefinition="The person who administered the collection of the image" + ) + private ResourceReferenceDt myOperator; + + @Child(name="view", type=CodeableConceptDt.class, order=6, min=0, max=1) + @Description( + shortDefinition="Imaging view e.g Lateral or Antero-posterior", + formalDefinition="The name of the imaging view e.g Lateral or Antero-posterior (AP)." + ) + private CodeableConceptDt myView; + + @Child(name="deviceName", type=StringDt.class, order=7, min=0, max=1) + @Description( + shortDefinition="Name of the device/manufacturer", + formalDefinition="The name of the device / manufacturer of the device that was used to make the recording" + ) + private StringDt myDeviceName; + + @Child(name="height", type=IntegerDt.class, order=8, min=0, max=1) + @Description( + shortDefinition="Height of the image in pixels(photo/video)", + formalDefinition="Height of the image in pixels(photo/video)" + ) + private IntegerDt myHeight; + + @Child(name="width", type=IntegerDt.class, order=9, min=0, max=1) + @Description( + shortDefinition="Width of the image in pixels (photo/video)", + formalDefinition="Width of the image in pixels (photo/video)" + ) + private IntegerDt myWidth; + + @Child(name="frames", type=IntegerDt.class, order=10, min=0, max=1) + @Description( + shortDefinition="Number of frames if > 1 (photo)", + formalDefinition="The number of frames in a photo. This is used with a multi-page fax, or an imaging acquisition context that takes multiple slices in a single image, or an animated gif. If there is more than one frame, this SHALL have a value in order to alert interface software that a multi-frame capable rendering widget is required" + ) + private IntegerDt myFrames; + + @Child(name="length", type=IntegerDt.class, order=11, min=0, max=1) + @Description( + shortDefinition="Length in seconds (audio / video)", + formalDefinition="The length of the recording in seconds - for audio and video" + ) + private IntegerDt myLength; + + @Child(name="content", type=AttachmentDt.class, order=12, min=1, max=1) + @Description( + shortDefinition="Actual Media - reference or data", + formalDefinition="The actual content of the media - inline or by direct reference to the media source file" + ) + private AttachmentDt myContent; + + + @Override + public boolean isEmpty() { + return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myType, mySubtype, myIdentifier, myDateTime, mySubject, myOperator, myView, myDeviceName, myHeight, myWidth, myFrames, myLength, myContent); + } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myType, mySubtype, myIdentifier, myDateTime, mySubject, myOperator, myView, myDeviceName, myHeight, myWidth, myFrames, myLength, myContent); + } + + + /** + * Gets the value(s) for type (photo | video | audio). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Whether the media is a photo (still image), an audio recording, or a video recording + *

+ */ + public BoundCodeDt getType() { + if (myType == null) { + myType = new BoundCodeDt(MediaTypeEnum.VALUESET_BINDER); + } + return myType; + } + + /** + * Sets the value(s) for type (photo | video | audio) + * + *

+ * Definition: + * Whether the media is a photo (still image), an audio recording, or a video recording + *

+ */ + public void setType(BoundCodeDt theValue) { + myType = theValue; + } + + + /** + * Sets the value(s) for type (photo | video | audio) + * + *

+ * Definition: + * Whether the media is a photo (still image), an audio recording, or a video recording + *

+ */ + public void setType(MediaTypeEnum theValue) { + getType().setValueAsEnum(theValue); + } + + + /** + * Gets the value(s) for subtype (The type of acquisition equipment/process). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Details of the type of the media - usually, how it was acquired (what type of device). If images sourced from a DICOM system, are wrapped in a Media resource, then this is the modality + *

+ */ + public CodeableConceptDt getSubtype() { + if (mySubtype == null) { + mySubtype = new CodeableConceptDt(); + } + return mySubtype; + } + + /** + * Sets the value(s) for subtype (The type of acquisition equipment/process) + * + *

+ * Definition: + * Details of the type of the media - usually, how it was acquired (what type of device). If images sourced from a DICOM system, are wrapped in a Media resource, then this is the modality + *

+ */ + public void setSubtype(CodeableConceptDt theValue) { + mySubtype = theValue; + } + + + + /** + * Gets the value(s) for identifier (Identifier(s) for the image). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Identifiers associated with the image - these may include identifiers for the image itself, identifiers for the context of its collection (e.g. series ids) and context ids such as accession numbers or other workflow identifiers + *

+ */ + public java.util.List getIdentifier() { + if (myIdentifier == null) { + myIdentifier = new java.util.ArrayList(); + } + return myIdentifier; + } + + /** + * Sets the value(s) for identifier (Identifier(s) for the image) + * + *

+ * Definition: + * Identifiers associated with the image - these may include identifiers for the image itself, identifiers for the context of its collection (e.g. series ids) and context ids such as accession numbers or other workflow identifiers + *

+ */ + public void setIdentifier(java.util.List theValue) { + myIdentifier = theValue; + } + + /** + * Adds and returns a new value for identifier (Identifier(s) for the image) + * + *

+ * Definition: + * Identifiers associated with the image - these may include identifiers for the image itself, identifiers for the context of its collection (e.g. series ids) and context ids such as accession numbers or other workflow identifiers + *

+ */ + public IdentifierDt addIdentifier() { + IdentifierDt newType = new IdentifierDt(); + getIdentifier().add(newType); + return newType; + } + + + /** + * Gets the value(s) for dateTime (When the media was taken/recorded (end)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * When the media was originally recorded. For video and audio, if the length of the recording is not insignificant, this is the end of the recording + *

+ */ + public DateTimeDt getDateTime() { + if (myDateTime == null) { + myDateTime = new DateTimeDt(); + } + return myDateTime; + } + + /** + * Sets the value(s) for dateTime (When the media was taken/recorded (end)) + * + *

+ * Definition: + * When the media was originally recorded. For video and audio, if the length of the recording is not insignificant, this is the end of the recording + *

+ */ + public void setDateTime(DateTimeDt theValue) { + myDateTime = theValue; + } + + + /** + * Sets the value for dateTime (When the media was taken/recorded (end)) + * + *

+ * Definition: + * When the media was originally recorded. For video and audio, if the length of the recording is not insignificant, this is the end of the recording + *

+ */ + public void setDateTime( Date theDate, TemporalPrecisionEnum thePrecision) { + myDateTime = new DateTimeDt(theDate, thePrecision); + } + + /** + * Sets the value for dateTime (When the media was taken/recorded (end)) + * + *

+ * Definition: + * When the media was originally recorded. For video and audio, if the length of the recording is not insignificant, this is the end of the recording + *

+ */ + public void setDateTimeWithSecondsPrecision( Date theDate) { + myDateTime = new DateTimeDt(theDate); + } + + + /** + * Gets the value(s) for subject (Who/What this Media is a record of). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Who/What this Media is a record of + *

+ */ + public ResourceReferenceDt getSubject() { + return mySubject; + } + + /** + * Sets the value(s) for subject (Who/What this Media is a record of) + * + *

+ * Definition: + * Who/What this Media is a record of + *

+ */ + public void setSubject(ResourceReferenceDt theValue) { + mySubject = theValue; + } + + + + /** + * Gets the value(s) for operator (The person who generated the image). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The person who administered the collection of the image + *

+ */ + public ResourceReferenceDt getOperator() { + if (myOperator == null) { + myOperator = new ResourceReferenceDt(); + } + return myOperator; + } + + /** + * Sets the value(s) for operator (The person who generated the image) + * + *

+ * Definition: + * The person who administered the collection of the image + *

+ */ + public void setOperator(ResourceReferenceDt theValue) { + myOperator = theValue; + } + + + + /** + * Gets the value(s) for view (Imaging view e.g Lateral or Antero-posterior). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The name of the imaging view e.g Lateral or Antero-posterior (AP). + *

+ */ + public CodeableConceptDt getView() { + if (myView == null) { + myView = new CodeableConceptDt(); + } + return myView; + } + + /** + * Sets the value(s) for view (Imaging view e.g Lateral or Antero-posterior) + * + *

+ * Definition: + * The name of the imaging view e.g Lateral or Antero-posterior (AP). + *

+ */ + public void setView(CodeableConceptDt theValue) { + myView = theValue; + } + + + + /** + * Gets the value(s) for deviceName (Name of the device/manufacturer). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The name of the device / manufacturer of the device that was used to make the recording + *

+ */ + public StringDt getDeviceName() { + if (myDeviceName == null) { + myDeviceName = new StringDt(); + } + return myDeviceName; + } + + /** + * Sets the value(s) for deviceName (Name of the device/manufacturer) + * + *

+ * Definition: + * The name of the device / manufacturer of the device that was used to make the recording + *

+ */ + public void setDeviceName(StringDt theValue) { + myDeviceName = theValue; + } + + + /** + * Sets the value for deviceName (Name of the device/manufacturer) + * + *

+ * Definition: + * The name of the device / manufacturer of the device that was used to make the recording + *

+ */ + public void setDeviceName( String theString) { + myDeviceName = new StringDt(theString); + } + + + /** + * Gets the value(s) for height (Height of the image in pixels(photo/video)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Height of the image in pixels(photo/video) + *

+ */ + public IntegerDt getHeight() { + if (myHeight == null) { + myHeight = new IntegerDt(); + } + return myHeight; + } + + /** + * Sets the value(s) for height (Height of the image in pixels(photo/video)) + * + *

+ * Definition: + * Height of the image in pixels(photo/video) + *

+ */ + public void setHeight(IntegerDt theValue) { + myHeight = theValue; + } + + + /** + * Sets the value for height (Height of the image in pixels(photo/video)) + * + *

+ * Definition: + * Height of the image in pixels(photo/video) + *

+ */ + public void setHeight( Integer theInteger) { + myHeight = new IntegerDt(theInteger); + } + + + /** + * Gets the value(s) for width (Width of the image in pixels (photo/video)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Width of the image in pixels (photo/video) + *

+ */ + public IntegerDt getWidth() { + if (myWidth == null) { + myWidth = new IntegerDt(); + } + return myWidth; + } + + /** + * Sets the value(s) for width (Width of the image in pixels (photo/video)) + * + *

+ * Definition: + * Width of the image in pixels (photo/video) + *

+ */ + public void setWidth(IntegerDt theValue) { + myWidth = theValue; + } + + + /** + * Sets the value for width (Width of the image in pixels (photo/video)) + * + *

+ * Definition: + * Width of the image in pixels (photo/video) + *

+ */ + public void setWidth( Integer theInteger) { + myWidth = new IntegerDt(theInteger); + } + + + /** + * Gets the value(s) for frames (Number of frames if > 1 (photo)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The number of frames in a photo. This is used with a multi-page fax, or an imaging acquisition context that takes multiple slices in a single image, or an animated gif. If there is more than one frame, this SHALL have a value in order to alert interface software that a multi-frame capable rendering widget is required + *

+ */ + public IntegerDt getFrames() { + if (myFrames == null) { + myFrames = new IntegerDt(); + } + return myFrames; + } + + /** + * Sets the value(s) for frames (Number of frames if > 1 (photo)) + * + *

+ * Definition: + * The number of frames in a photo. This is used with a multi-page fax, or an imaging acquisition context that takes multiple slices in a single image, or an animated gif. If there is more than one frame, this SHALL have a value in order to alert interface software that a multi-frame capable rendering widget is required + *

+ */ + public void setFrames(IntegerDt theValue) { + myFrames = theValue; + } + + + /** + * Sets the value for frames (Number of frames if > 1 (photo)) + * + *

+ * Definition: + * The number of frames in a photo. This is used with a multi-page fax, or an imaging acquisition context that takes multiple slices in a single image, or an animated gif. If there is more than one frame, this SHALL have a value in order to alert interface software that a multi-frame capable rendering widget is required + *

+ */ + public void setFrames( Integer theInteger) { + myFrames = new IntegerDt(theInteger); + } + + + /** + * Gets the value(s) for length (Length in seconds (audio / video)). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The length of the recording in seconds - for audio and video + *

+ */ + public IntegerDt getLength() { + if (myLength == null) { + myLength = new IntegerDt(); + } + return myLength; + } + + /** + * Sets the value(s) for length (Length in seconds (audio / video)) + * + *

+ * Definition: + * The length of the recording in seconds - for audio and video + *

+ */ + public void setLength(IntegerDt theValue) { + myLength = theValue; + } + + + /** + * Sets the value for length (Length in seconds (audio / video)) + * + *

+ * Definition: + * The length of the recording in seconds - for audio and video + *

+ */ + public void setLength( Integer theInteger) { + myLength = new IntegerDt(theInteger); + } + + + /** + * Gets the value(s) for content (Actual Media - reference or data). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The actual content of the media - inline or by direct reference to the media source file + *

+ */ + public AttachmentDt getContent() { + if (myContent == null) { + myContent = new AttachmentDt(); + } + return myContent; + } + + /** + * Sets the value(s) for content (Actual Media - reference or data) + * + *

+ * Definition: + * The actual content of the media - inline or by direct reference to the media source file + *

+ */ + public void setContent(AttachmentDt theValue) { + myContent = theValue; + } + + + + + +} \ No newline at end of file diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Medication.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Medication.java index 3b86e38cfe6..029c58b63ff 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Medication.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Medication.java @@ -16,12 +16,25 @@ package ca.uhn.fhir.model.dstu.resource; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.composite.*; -import ca.uhn.fhir.model.dstu.valueset.*; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.RatioDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.valueset.MedicationKindEnum; +import ca.uhn.fhir.model.primitive.BooleanDt; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.StringDt; + /** * HAPI/FHIR Medication Resource @@ -133,7 +146,7 @@ public class Medication extends BaseResource implements IResource { private BooleanDt myIsBrand; @Child(name="manufacturer", order=3, min=0, max=1, type={ - Organization.class, + ca.uhn.fhir.model.dstu.resource.Organization.class, }) @Description( shortDefinition="Manufacturer of the item", @@ -167,6 +180,11 @@ public class Medication extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myName, myCode, myIsBrand, myManufacturer, myKind, myProduct, myPackage); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myName, myCode, myIsBrand, myManufacturer, myKind, myProduct, myPackage); + } + /** * Gets the value(s) for name (Common / Commercial name). @@ -456,13 +474,18 @@ public class Medication extends BaseResource implements IResource { shortDefinition="Active or inactive ingredient", formalDefinition="Identifies a particular constituent of interest in the product" ) - private List myIngredient; + private java.util.List myIngredient; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myForm, myIngredient); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myForm, myIngredient); + } + /** * Gets the value(s) for form (powder | tablets | carton +). @@ -505,9 +528,9 @@ public class Medication extends BaseResource implements IResource { * Identifies a particular constituent of interest in the product *

*/ - public List getIngredient() { + public java.util.List getIngredient() { if (myIngredient == null) { - myIngredient = new ArrayList(); + myIngredient = new java.util.ArrayList(); } return myIngredient; } @@ -520,7 +543,7 @@ public class Medication extends BaseResource implements IResource { * Identifies a particular constituent of interest in the product *

*/ - public void setIngredient(List theValue) { + public void setIngredient(java.util.List theValue) { myIngredient = theValue; } @@ -554,8 +577,8 @@ public class Medication extends BaseResource implements IResource { public static class ProductIngredient extends BaseElement implements IResourceBlock { @Child(name="item", order=0, min=1, max=1, type={ - Substance.class, - Medication.class, + ca.uhn.fhir.model.dstu.resource.Substance.class, + ca.uhn.fhir.model.dstu.resource.Medication.class, }) @Description( shortDefinition="The product contained", @@ -575,6 +598,11 @@ public class Medication extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myItem, myAmount); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myItem, myAmount); + } + /** * Gets the value(s) for item (The product contained). diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Observation.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Observation.java index d94464091b3..4e8f93dfc8b 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Observation.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Observation.java @@ -16,12 +16,40 @@ package ca.uhn.fhir.model.dstu.resource; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.composite.*; -import ca.uhn.fhir.model.dstu.valueset.*; + +import java.util.Date; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.AttachmentDt; +import ca.uhn.fhir.model.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.composite.PeriodDt; +import ca.uhn.fhir.model.dstu.composite.QuantityDt; +import ca.uhn.fhir.model.dstu.composite.RangeDt; +import ca.uhn.fhir.model.dstu.composite.RatioDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.composite.SampledDataDt; +import ca.uhn.fhir.model.dstu.valueset.ObservationInterpretationCodesEnum; +import ca.uhn.fhir.model.dstu.valueset.ObservationRelationshipTypeEnum; +import ca.uhn.fhir.model.dstu.valueset.ObservationReliabilityEnum; +import ca.uhn.fhir.model.dstu.valueset.ObservationStatusEnum; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.BoundCodeableConceptDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.DateTimeDt; +import ca.uhn.fhir.model.primitive.InstantDt; +import ca.uhn.fhir.model.primitive.StringDt; + /** * HAPI/FHIR Observation Resource @@ -280,10 +308,10 @@ public class Observation extends BaseResource implements IResource { private IdentifierDt myIdentifier; @Child(name="subject", order=11, min=0, max=1, type={ - Patient.class, - Group.class, - Device.class, - Location.class, + ca.uhn.fhir.model.dstu.resource.Patient.class, + ca.uhn.fhir.model.dstu.resource.Group.class, + ca.uhn.fhir.model.dstu.resource.Device.class, + ca.uhn.fhir.model.dstu.resource.Location.class, }) @Description( shortDefinition="Who and/or what this is about", @@ -292,7 +320,7 @@ public class Observation extends BaseResource implements IResource { private ResourceReferenceDt mySubject; @Child(name="specimen", order=12, min=0, max=1, type={ - Specimen.class, + ca.uhn.fhir.model.dstu.resource.Specimen.class, }) @Description( shortDefinition="Specimen used for this observation", @@ -301,35 +329,40 @@ public class Observation extends BaseResource implements IResource { private ResourceReferenceDt mySpecimen; @Child(name="performer", order=13, min=0, max=Child.MAX_UNLIMITED, type={ - Practitioner.class, - Device.class, - Organization.class, + ca.uhn.fhir.model.dstu.resource.Practitioner.class, + ca.uhn.fhir.model.dstu.resource.Device.class, + ca.uhn.fhir.model.dstu.resource.Organization.class, }) @Description( shortDefinition="Who did the observation", formalDefinition="Who was responsible for asserting the observed value as \"true\"" ) - private List myPerformer; + private java.util.List myPerformer; @Child(name="referenceRange", order=14, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Provides guide for interpretation", formalDefinition="Guidance on how to interpret the value by comparison to a normal or recommended range" ) - private List myReferenceRange; + private java.util.List myReferenceRange; @Child(name="related", order=15, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Observations related to this observation", formalDefinition="Related observations - either components, or previous observations, or statements of derivation" ) - private List myRelated; + private java.util.List myRelated; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myName, myValue, myInterpretation, myComments, myApplies, myIssued, myStatus, myReliability, myBodySite, myMethod, myIdentifier, mySubject, mySpecimen, myPerformer, myReferenceRange, myRelated); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myName, myValue, myInterpretation, myComments, myApplies, myIssued, myStatus, myReliability, myBodySite, myMethod, myIdentifier, mySubject, mySpecimen, myPerformer, myReferenceRange, myRelated); + } + /** * Gets the value(s) for name (Type of observation (code / type)). @@ -542,8 +575,8 @@ public class Observation extends BaseResource implements IResource { * *

*/ - public void setIssuedWithMillisPrecision( Date theDate) { - myIssued = new InstantDt(theDate); + public void setIssued( Date theDate, TemporalPrecisionEnum thePrecision) { + myIssued = new InstantDt(theDate, thePrecision); } /** @@ -554,8 +587,8 @@ public class Observation extends BaseResource implements IResource { * *

*/ - public void setIssued( Date theDate, TemporalPrecisionEnum thePrecision) { - myIssued = new InstantDt(theDate, thePrecision); + public void setIssuedWithMillisPrecision( Date theDate) { + myIssued = new InstantDt(theDate); } @@ -807,7 +840,7 @@ public class Observation extends BaseResource implements IResource { * Who was responsible for asserting the observed value as \"true\" *

*/ - public List getPerformer() { + public java.util.List getPerformer() { return myPerformer; } @@ -819,7 +852,7 @@ public class Observation extends BaseResource implements IResource { * Who was responsible for asserting the observed value as \"true\" *

*/ - public void setPerformer(List theValue) { + public void setPerformer(java.util.List theValue) { myPerformer = theValue; } @@ -835,9 +868,9 @@ public class Observation extends BaseResource implements IResource { * Guidance on how to interpret the value by comparison to a normal or recommended range *

*/ - public List getReferenceRange() { + public java.util.List getReferenceRange() { if (myReferenceRange == null) { - myReferenceRange = new ArrayList(); + myReferenceRange = new java.util.ArrayList(); } return myReferenceRange; } @@ -850,7 +883,7 @@ public class Observation extends BaseResource implements IResource { * Guidance on how to interpret the value by comparison to a normal or recommended range *

*/ - public void setReferenceRange(List theValue) { + public void setReferenceRange(java.util.List theValue) { myReferenceRange = theValue; } @@ -879,9 +912,9 @@ public class Observation extends BaseResource implements IResource { * Related observations - either components, or previous observations, or statements of derivation *

*/ - public List getRelated() { + public java.util.List getRelated() { if (myRelated == null) { - myRelated = new ArrayList(); + myRelated = new java.util.ArrayList(); } return myRelated; } @@ -894,7 +927,7 @@ public class Observation extends BaseResource implements IResource { * Related observations - either components, or previous observations, or statements of derivation *

*/ - public void setRelated(List theValue) { + public void setRelated(java.util.List theValue) { myRelated = theValue; } @@ -957,6 +990,11 @@ public class Observation extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myLow, myHigh, myMeaning, myAge); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myLow, myHigh, myMeaning, myAge); + } + /** * Gets the value(s) for low (Low Range, if relevant). @@ -1105,7 +1143,7 @@ public class Observation extends BaseResource implements IResource { private BoundCodeDt myType; @Child(name="target", order=1, min=1, max=1, type={ - Observation.class, + ca.uhn.fhir.model.dstu.resource.Observation.class, }) @Description( shortDefinition="Observation that is related to this one", @@ -1118,6 +1156,11 @@ public class Observation extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myType, myTarget); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myType, myTarget); + } + /** * Gets the value(s) for type (has-component | has-member | derived-from | sequel-to | replaces | qualified-by | interfered-by). diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Organization.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Organization.java index 69fce53ac2b..796d73983db 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Organization.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Organization.java @@ -16,12 +16,28 @@ package ca.uhn.fhir.model.dstu.resource; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.composite.*; -import ca.uhn.fhir.model.dstu.valueset.*; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.AddressDt; +import ca.uhn.fhir.model.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.ContactDt; +import ca.uhn.fhir.model.dstu.composite.HumanNameDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.valueset.AdministrativeGenderCodesEnum; +import ca.uhn.fhir.model.dstu.valueset.OrganizationTypeEnum; +import ca.uhn.fhir.model.primitive.BooleanDt; +import ca.uhn.fhir.model.primitive.BoundCodeableConceptDt; +import ca.uhn.fhir.model.primitive.StringDt; + /** * HAPI/FHIR Organization Resource @@ -116,7 +132,7 @@ public class Organization extends BaseResource implements IResource { shortDefinition="Identifies this organization across multiple systems", formalDefinition="Identifier for the organization that is used to identify the organization across multiple disparate systems" ) - private List myIdentifier; + private java.util.List myIdentifier; @Child(name="name", type=StringDt.class, order=1, min=0, max=1) @Description( @@ -137,17 +153,17 @@ public class Organization extends BaseResource implements IResource { shortDefinition="A contact detail for the organization", formalDefinition="A contact detail for the organization" ) - private List myTelecom; + private java.util.List myTelecom; @Child(name="address", type=AddressDt.class, order=4, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="An address for the organization", formalDefinition="An address for the organization" ) - private List myAddress; + private java.util.List myAddress; @Child(name="partOf", order=5, min=0, max=1, type={ - Organization.class, + ca.uhn.fhir.model.dstu.resource.Organization.class, }) @Description( shortDefinition="The organization of which this organization forms a part", @@ -160,16 +176,16 @@ public class Organization extends BaseResource implements IResource { shortDefinition="Contact for the organization for a certain purpose", formalDefinition="" ) - private List myContact; + private java.util.List myContact; @Child(name="location", order=7, min=0, max=Child.MAX_UNLIMITED, type={ - Location.class, + ca.uhn.fhir.model.dstu.resource.Location.class, }) @Description( shortDefinition="Location(s) the organization uses to provide services", formalDefinition="Location(s) the organization uses to provide services" ) - private List myLocation; + private java.util.List myLocation; @Child(name="active", type=BooleanDt.class, order=8, min=0, max=1) @Description( @@ -183,6 +199,11 @@ public class Organization extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentifier, myName, myType, myTelecom, myAddress, myPartOf, myContact, myLocation, myActive); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier, myName, myType, myTelecom, myAddress, myPartOf, myContact, myLocation, myActive); + } + /** * Gets the value(s) for identifier (Identifies this organization across multiple systems). @@ -194,9 +215,9 @@ public class Organization extends BaseResource implements IResource { * Identifier for the organization that is used to identify the organization across multiple disparate systems *

*/ - public List getIdentifier() { + public java.util.List getIdentifier() { if (myIdentifier == null) { - myIdentifier = new ArrayList(); + myIdentifier = new java.util.ArrayList(); } return myIdentifier; } @@ -209,7 +230,7 @@ public class Organization extends BaseResource implements IResource { * Identifier for the organization that is used to identify the organization across multiple disparate systems *

*/ - public void setIdentifier(List theValue) { + public void setIdentifier(java.util.List theValue) { myIdentifier = theValue; } @@ -324,9 +345,9 @@ public class Organization extends BaseResource implements IResource { * A contact detail for the organization *

*/ - public List getTelecom() { + public java.util.List getTelecom() { if (myTelecom == null) { - myTelecom = new ArrayList(); + myTelecom = new java.util.ArrayList(); } return myTelecom; } @@ -339,7 +360,7 @@ public class Organization extends BaseResource implements IResource { * A contact detail for the organization *

*/ - public void setTelecom(List theValue) { + public void setTelecom(java.util.List theValue) { myTelecom = theValue; } @@ -368,9 +389,9 @@ public class Organization extends BaseResource implements IResource { * An address for the organization *

*/ - public List getAddress() { + public java.util.List getAddress() { if (myAddress == null) { - myAddress = new ArrayList(); + myAddress = new java.util.ArrayList(); } return myAddress; } @@ -383,7 +404,7 @@ public class Organization extends BaseResource implements IResource { * An address for the organization *

*/ - public void setAddress(List theValue) { + public void setAddress(java.util.List theValue) { myAddress = theValue; } @@ -443,9 +464,9 @@ public class Organization extends BaseResource implements IResource { * *

*/ - public List getContact() { + public java.util.List getContact() { if (myContact == null) { - myContact = new ArrayList(); + myContact = new java.util.ArrayList(); } return myContact; } @@ -458,7 +479,7 @@ public class Organization extends BaseResource implements IResource { * *

*/ - public void setContact(List theValue) { + public void setContact(java.util.List theValue) { myContact = theValue; } @@ -487,9 +508,9 @@ public class Organization extends BaseResource implements IResource { * Location(s) the organization uses to provide services *

*/ - public List getLocation() { + public java.util.List getLocation() { if (myLocation == null) { - myLocation = new ArrayList(); + myLocation = new java.util.ArrayList(); } return myLocation; } @@ -502,7 +523,7 @@ public class Organization extends BaseResource implements IResource { * Location(s) the organization uses to provide services *

*/ - public void setLocation(List theValue) { + public void setLocation(java.util.List theValue) { myLocation = theValue; } @@ -581,7 +602,7 @@ public class Organization extends BaseResource implements IResource { shortDefinition="Contact details (telephone, email, etc) for a contact", formalDefinition="A contact detail (e.g. a telephone number or an email address) by which the party may be contacted." ) - private List myTelecom; + private java.util.List myTelecom; @Child(name="address", type=AddressDt.class, order=3, min=0, max=1) @Description( @@ -602,6 +623,11 @@ public class Organization extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myPurpose, myName, myTelecom, myAddress, myGender); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myPurpose, myName, myTelecom, myAddress, myGender); + } + /** * Gets the value(s) for purpose (The type of contact). @@ -675,9 +701,9 @@ public class Organization extends BaseResource implements IResource { * A contact detail (e.g. a telephone number or an email address) by which the party may be contacted. *

*/ - public List getTelecom() { + public java.util.List getTelecom() { if (myTelecom == null) { - myTelecom = new ArrayList(); + myTelecom = new java.util.ArrayList(); } return myTelecom; } @@ -690,7 +716,7 @@ public class Organization extends BaseResource implements IResource { * A contact detail (e.g. a telephone number or an email address) by which the party may be contacted. *

*/ - public void setTelecom(List theValue) { + public void setTelecom(java.util.List theValue) { myTelecom = theValue; } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Patient.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Patient.java index b846500b7c4..cc0ca24de99 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Patient.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Patient.java @@ -16,12 +16,38 @@ package ca.uhn.fhir.model.dstu.resource; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.composite.*; -import ca.uhn.fhir.model.dstu.valueset.*; + +import java.util.Date; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.AddressDt; +import ca.uhn.fhir.model.dstu.composite.AttachmentDt; +import ca.uhn.fhir.model.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.ContactDt; +import ca.uhn.fhir.model.dstu.composite.HumanNameDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.valueset.AdministrativeGenderCodesEnum; +import ca.uhn.fhir.model.dstu.valueset.AnimalSpeciesEnum; +import ca.uhn.fhir.model.dstu.valueset.LinkTypeEnum; +import ca.uhn.fhir.model.dstu.valueset.MaritalStatusCodesEnum; +import ca.uhn.fhir.model.primitive.BooleanDt; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.BoundCodeableConceptDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.DateTimeDt; +import ca.uhn.fhir.model.primitive.IntegerDt; + /** * HAPI/FHIR Patient Resource @@ -196,21 +222,21 @@ public class Patient extends BaseResource implements IResource { shortDefinition="An identifier for the person as this patient", formalDefinition="An identifier that applies to this person as a patient" ) - private List myIdentifier; + private java.util.List myIdentifier; @Child(name="name", type=HumanNameDt.class, order=1, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="A name associated with the patient", formalDefinition="A name associated with the individual." ) - private List myName; + private java.util.List myName; @Child(name="telecom", type=ContactDt.class, order=2, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="A contact detail for the individual", formalDefinition="A contact detail (e.g. a telephone number or an email address) by which the individual may be contacted." ) - private List myTelecom; + private java.util.List myTelecom; @Child(name="gender", type=CodeableConceptDt.class, order=3, min=0, max=1) @Description( @@ -241,7 +267,7 @@ public class Patient extends BaseResource implements IResource { shortDefinition="Addresses for the individual", formalDefinition="Addresses for the individual" ) - private List myAddress; + private java.util.List myAddress; @Child(name="maritalStatus", type=CodeableConceptDt.class, order=7, min=0, max=1) @Description( @@ -265,14 +291,14 @@ public class Patient extends BaseResource implements IResource { shortDefinition="Image of the person", formalDefinition="Image of the person" ) - private List myPhoto; + private java.util.List myPhoto; @Child(name="contact", order=10, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="A contact party (e.g. guardian, partner, friend) for the patient", formalDefinition="A contact party (e.g. guardian, partner, friend) for the patient" ) - private List myContact; + private java.util.List myContact; @Child(name="animal", order=11, min=0, max=1) @Description( @@ -286,20 +312,20 @@ public class Patient extends BaseResource implements IResource { shortDefinition="Languages which may be used to communicate with the patient about his or her health", formalDefinition="Languages which may be used to communicate with the patient about his or her health" ) - private List myCommunication; + private java.util.List myCommunication; @Child(name="careProvider", order=13, min=0, max=Child.MAX_UNLIMITED, type={ - Organization.class, - Practitioner.class, + ca.uhn.fhir.model.dstu.resource.Organization.class, + ca.uhn.fhir.model.dstu.resource.Practitioner.class, }) @Description( shortDefinition="Patient's nominated care provider", formalDefinition="Patient's nominated care provider" ) - private List myCareProvider; + private java.util.List myCareProvider; @Child(name="managingOrganization", order=14, min=0, max=1, type={ - Organization.class, + ca.uhn.fhir.model.dstu.resource.Organization.class, }) @Description( shortDefinition="Organization that is the custodian of the patient record", @@ -312,7 +338,7 @@ public class Patient extends BaseResource implements IResource { shortDefinition="Link to another patient resource that concerns the same actual person", formalDefinition="Link to another patient resource that concerns the same actual person" ) - private List myLink; + private java.util.List myLink; @Child(name="active", type=BooleanDt.class, order=16, min=0, max=1) @Description( @@ -326,6 +352,11 @@ public class Patient extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentifier, myName, myTelecom, myGender, myBirthDate, myDeceased, myAddress, myMaritalStatus, myMultipleBirth, myPhoto, myContact, myAnimal, myCommunication, myCareProvider, myManagingOrganization, myLink, myActive); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier, myName, myTelecom, myGender, myBirthDate, myDeceased, myAddress, myMaritalStatus, myMultipleBirth, myPhoto, myContact, myAnimal, myCommunication, myCareProvider, myManagingOrganization, myLink, myActive); + } + /** * Gets the value(s) for identifier (An identifier for the person as this patient). @@ -337,9 +368,9 @@ public class Patient extends BaseResource implements IResource { * An identifier that applies to this person as a patient *

*/ - public List getIdentifier() { + public java.util.List getIdentifier() { if (myIdentifier == null) { - myIdentifier = new ArrayList(); + myIdentifier = new java.util.ArrayList(); } return myIdentifier; } @@ -352,7 +383,7 @@ public class Patient extends BaseResource implements IResource { * An identifier that applies to this person as a patient *

*/ - public void setIdentifier(List theValue) { + public void setIdentifier(java.util.List theValue) { myIdentifier = theValue; } @@ -381,9 +412,9 @@ public class Patient extends BaseResource implements IResource { * A name associated with the individual. *

*/ - public List getName() { + public java.util.List getName() { if (myName == null) { - myName = new ArrayList(); + myName = new java.util.ArrayList(); } return myName; } @@ -396,7 +427,7 @@ public class Patient extends BaseResource implements IResource { * A name associated with the individual. *

*/ - public void setName(List theValue) { + public void setName(java.util.List theValue) { myName = theValue; } @@ -425,9 +456,9 @@ public class Patient extends BaseResource implements IResource { * A contact detail (e.g. a telephone number or an email address) by which the individual may be contacted. *

*/ - public List getTelecom() { + public java.util.List getTelecom() { if (myTelecom == null) { - myTelecom = new ArrayList(); + myTelecom = new java.util.ArrayList(); } return myTelecom; } @@ -440,7 +471,7 @@ public class Patient extends BaseResource implements IResource { * A contact detail (e.g. a telephone number or an email address) by which the individual may be contacted. *

*/ - public void setTelecom(List theValue) { + public void setTelecom(java.util.List theValue) { myTelecom = theValue; } @@ -540,8 +571,8 @@ public class Patient extends BaseResource implements IResource { * The date and time of birth for the individual *

*/ - public void setBirthDateWithSecondsPrecision( Date theDate) { - myBirthDate = new DateTimeDt(theDate); + public void setBirthDate( Date theDate, TemporalPrecisionEnum thePrecision) { + myBirthDate = new DateTimeDt(theDate, thePrecision); } /** @@ -552,8 +583,8 @@ public class Patient extends BaseResource implements IResource { * The date and time of birth for the individual *

*/ - public void setBirthDate( Date theDate, TemporalPrecisionEnum thePrecision) { - myBirthDate = new DateTimeDt(theDate, thePrecision); + public void setBirthDateWithSecondsPrecision( Date theDate) { + myBirthDate = new DateTimeDt(theDate); } @@ -595,9 +626,9 @@ public class Patient extends BaseResource implements IResource { * Addresses for the individual *

*/ - public List getAddress() { + public java.util.List getAddress() { if (myAddress == null) { - myAddress = new ArrayList(); + myAddress = new java.util.ArrayList(); } return myAddress; } @@ -610,7 +641,7 @@ public class Patient extends BaseResource implements IResource { * Addresses for the individual *

*/ - public void setAddress(List theValue) { + public void setAddress(java.util.List theValue) { myAddress = theValue; } @@ -710,9 +741,9 @@ public class Patient extends BaseResource implements IResource { * Image of the person *

*/ - public List getPhoto() { + public java.util.List getPhoto() { if (myPhoto == null) { - myPhoto = new ArrayList(); + myPhoto = new java.util.ArrayList(); } return myPhoto; } @@ -725,7 +756,7 @@ public class Patient extends BaseResource implements IResource { * Image of the person *

*/ - public void setPhoto(List theValue) { + public void setPhoto(java.util.List theValue) { myPhoto = theValue; } @@ -754,9 +785,9 @@ public class Patient extends BaseResource implements IResource { * A contact party (e.g. guardian, partner, friend) for the patient *

*/ - public List getContact() { + public java.util.List getContact() { if (myContact == null) { - myContact = new ArrayList(); + myContact = new java.util.ArrayList(); } return myContact; } @@ -769,7 +800,7 @@ public class Patient extends BaseResource implements IResource { * A contact party (e.g. guardian, partner, friend) for the patient *

*/ - public void setContact(List theValue) { + public void setContact(java.util.List theValue) { myContact = theValue; } @@ -829,9 +860,9 @@ public class Patient extends BaseResource implements IResource { * Languages which may be used to communicate with the patient about his or her health *

*/ - public List getCommunication() { + public java.util.List getCommunication() { if (myCommunication == null) { - myCommunication = new ArrayList(); + myCommunication = new java.util.ArrayList(); } return myCommunication; } @@ -844,7 +875,7 @@ public class Patient extends BaseResource implements IResource { * Languages which may be used to communicate with the patient about his or her health *

*/ - public void setCommunication(List theValue) { + public void setCommunication(java.util.List theValue) { myCommunication = theValue; } @@ -873,7 +904,7 @@ public class Patient extends BaseResource implements IResource { * Patient's nominated care provider *

*/ - public List getCareProvider() { + public java.util.List getCareProvider() { return myCareProvider; } @@ -885,7 +916,7 @@ public class Patient extends BaseResource implements IResource { * Patient's nominated care provider *

*/ - public void setCareProvider(List theValue) { + public void setCareProvider(java.util.List theValue) { myCareProvider = theValue; } @@ -932,9 +963,9 @@ public class Patient extends BaseResource implements IResource { * Link to another patient resource that concerns the same actual person *

*/ - public List getLink() { + public java.util.List getLink() { if (myLink == null) { - myLink = new ArrayList(); + myLink = new java.util.ArrayList(); } return myLink; } @@ -947,7 +978,7 @@ public class Patient extends BaseResource implements IResource { * Link to another patient resource that concerns the same actual person *

*/ - public void setLink(List theValue) { + public void setLink(java.util.List theValue) { myLink = theValue; } @@ -1025,7 +1056,7 @@ public class Patient extends BaseResource implements IResource { shortDefinition="The kind of relationship", formalDefinition="The nature of the relationship between the patient and the contact person" ) - private List myRelationship; + private java.util.List myRelationship; @Child(name="name", type=HumanNameDt.class, order=1, min=0, max=1) @Description( @@ -1039,7 +1070,7 @@ public class Patient extends BaseResource implements IResource { shortDefinition="A contact detail for the person", formalDefinition="A contact detail for the person, e.g. a telephone number or an email address." ) - private List myTelecom; + private java.util.List myTelecom; @Child(name="address", type=AddressDt.class, order=3, min=0, max=1) @Description( @@ -1056,7 +1087,7 @@ public class Patient extends BaseResource implements IResource { private BoundCodeableConceptDt myGender; @Child(name="organization", order=5, min=0, max=1, type={ - Organization.class, + ca.uhn.fhir.model.dstu.resource.Organization.class, }) @Description( shortDefinition="Organization that is associated with the contact", @@ -1069,6 +1100,11 @@ public class Patient extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myRelationship, myName, myTelecom, myAddress, myGender, myOrganization); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myRelationship, myName, myTelecom, myAddress, myGender, myOrganization); + } + /** * Gets the value(s) for relationship (The kind of relationship). @@ -1080,9 +1116,9 @@ public class Patient extends BaseResource implements IResource { * The nature of the relationship between the patient and the contact person *

*/ - public List getRelationship() { + public java.util.List getRelationship() { if (myRelationship == null) { - myRelationship = new ArrayList(); + myRelationship = new java.util.ArrayList(); } return myRelationship; } @@ -1095,7 +1131,7 @@ public class Patient extends BaseResource implements IResource { * The nature of the relationship between the patient and the contact person *

*/ - public void setRelationship(List theValue) { + public void setRelationship(java.util.List theValue) { myRelationship = theValue; } @@ -1155,9 +1191,9 @@ public class Patient extends BaseResource implements IResource { * A contact detail for the person, e.g. a telephone number or an email address. *

*/ - public List getTelecom() { + public java.util.List getTelecom() { if (myTelecom == null) { - myTelecom = new ArrayList(); + myTelecom = new java.util.ArrayList(); } return myTelecom; } @@ -1170,7 +1206,7 @@ public class Patient extends BaseResource implements IResource { * A contact detail for the person, e.g. a telephone number or an email address. *

*/ - public void setTelecom(List theValue) { + public void setTelecom(java.util.List theValue) { myTelecom = theValue; } @@ -1335,6 +1371,11 @@ public class Patient extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( mySpecies, myBreed, myGenderStatus); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( mySpecies, myBreed, myGenderStatus); + } + /** * Gets the value(s) for species (E.g. Dog, Cow). @@ -1457,7 +1498,7 @@ public class Patient extends BaseResource implements IResource { public static class Link extends BaseElement implements IResourceBlock { @Child(name="other", order=0, min=1, max=1, type={ - Patient.class, + ca.uhn.fhir.model.dstu.resource.Patient.class, }) @Description( shortDefinition="The other patient resource that the link refers to", @@ -1477,6 +1518,11 @@ public class Patient extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myOther, myType); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myOther, myType); + } + /** * Gets the value(s) for other (The other patient resource that the link refers to). diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Practitioner.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Practitioner.java index 6ab63339554..1ab2a0efb31 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Practitioner.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Practitioner.java @@ -16,12 +16,33 @@ package ca.uhn.fhir.model.dstu.resource; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.composite.*; -import ca.uhn.fhir.model.dstu.valueset.*; + +import java.util.Date; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.AddressDt; +import ca.uhn.fhir.model.dstu.composite.AttachmentDt; +import ca.uhn.fhir.model.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.ContactDt; +import ca.uhn.fhir.model.dstu.composite.HumanNameDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.composite.PeriodDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.valueset.AdministrativeGenderCodesEnum; +import ca.uhn.fhir.model.dstu.valueset.PractitionerRoleEnum; +import ca.uhn.fhir.model.dstu.valueset.PractitionerSpecialtyEnum; +import ca.uhn.fhir.model.primitive.BoundCodeableConceptDt; +import ca.uhn.fhir.model.primitive.DateTimeDt; + /** * HAPI/FHIR Practitioner Resource @@ -136,7 +157,7 @@ public class Practitioner extends BaseResource implements IResource { shortDefinition="A identifier for the person as this agent", formalDefinition="An identifier that applies to this person in this role" ) - private List myIdentifier; + private java.util.List myIdentifier; @Child(name="name", type=HumanNameDt.class, order=1, min=0, max=1) @Description( @@ -150,7 +171,7 @@ public class Practitioner extends BaseResource implements IResource { shortDefinition="A contact detail for the practitioner", formalDefinition="A contact detail for the practitioner, e.g. a telephone number or an email address." ) - private List myTelecom; + private java.util.List myTelecom; @Child(name="address", type=AddressDt.class, order=3, min=0, max=1) @Description( @@ -178,10 +199,10 @@ public class Practitioner extends BaseResource implements IResource { shortDefinition="Image of the person", formalDefinition="Image of the person" ) - private List myPhoto; + private java.util.List myPhoto; @Child(name="organization", order=7, min=0, max=1, type={ - Organization.class, + ca.uhn.fhir.model.dstu.resource.Organization.class, }) @Description( shortDefinition="The represented organization", @@ -194,14 +215,14 @@ public class Practitioner extends BaseResource implements IResource { shortDefinition="Roles which this practitioner may perform", formalDefinition="Roles which this practitioner is authorized to perform for the organization" ) - private List> myRole; + private java.util.List> myRole; @Child(name="specialty", type=CodeableConceptDt.class, order=9, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Specific specialty of the practitioner", formalDefinition="Specific specialty of the practitioner" ) - private List> mySpecialty; + private java.util.List> mySpecialty; @Child(name="period", type=PeriodDt.class, order=10, min=0, max=1) @Description( @@ -211,33 +232,38 @@ public class Practitioner extends BaseResource implements IResource { private PeriodDt myPeriod; @Child(name="location", order=11, min=0, max=Child.MAX_UNLIMITED, type={ - Location.class, + ca.uhn.fhir.model.dstu.resource.Location.class, }) @Description( shortDefinition="The location(s) at which this practitioner provides care", formalDefinition="The location(s) at which this practitioner provides care" ) - private List myLocation; + private java.util.List myLocation; @Child(name="qualification", order=12, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Qualifications obtained by training and certification", formalDefinition="" ) - private List myQualification; + private java.util.List myQualification; @Child(name="communication", type=CodeableConceptDt.class, order=13, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="A language the practitioner is able to use in patient communication", formalDefinition="A language the practitioner is able to use in patient communication" ) - private List myCommunication; + private java.util.List myCommunication; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentifier, myName, myTelecom, myAddress, myGender, myBirthDate, myPhoto, myOrganization, myRole, mySpecialty, myPeriod, myLocation, myQualification, myCommunication); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier, myName, myTelecom, myAddress, myGender, myBirthDate, myPhoto, myOrganization, myRole, mySpecialty, myPeriod, myLocation, myQualification, myCommunication); + } + /** * Gets the value(s) for identifier (A identifier for the person as this agent). @@ -249,9 +275,9 @@ public class Practitioner extends BaseResource implements IResource { * An identifier that applies to this person in this role *

*/ - public List getIdentifier() { + public java.util.List getIdentifier() { if (myIdentifier == null) { - myIdentifier = new ArrayList(); + myIdentifier = new java.util.ArrayList(); } return myIdentifier; } @@ -264,7 +290,7 @@ public class Practitioner extends BaseResource implements IResource { * An identifier that applies to this person in this role *

*/ - public void setIdentifier(List theValue) { + public void setIdentifier(java.util.List theValue) { myIdentifier = theValue; } @@ -324,9 +350,9 @@ public class Practitioner extends BaseResource implements IResource { * A contact detail for the practitioner, e.g. a telephone number or an email address. *

*/ - public List getTelecom() { + public java.util.List getTelecom() { if (myTelecom == null) { - myTelecom = new ArrayList(); + myTelecom = new java.util.ArrayList(); } return myTelecom; } @@ -339,7 +365,7 @@ public class Practitioner extends BaseResource implements IResource { * A contact detail for the practitioner, e.g. a telephone number or an email address. *

*/ - public void setTelecom(List theValue) { + public void setTelecom(java.util.List theValue) { myTelecom = theValue; } @@ -470,8 +496,8 @@ public class Practitioner extends BaseResource implements IResource { * The date and time of birth for the practitioner *

*/ - public void setBirthDateWithSecondsPrecision( Date theDate) { - myBirthDate = new DateTimeDt(theDate); + public void setBirthDate( Date theDate, TemporalPrecisionEnum thePrecision) { + myBirthDate = new DateTimeDt(theDate, thePrecision); } /** @@ -482,8 +508,8 @@ public class Practitioner extends BaseResource implements IResource { * The date and time of birth for the practitioner *

*/ - public void setBirthDate( Date theDate, TemporalPrecisionEnum thePrecision) { - myBirthDate = new DateTimeDt(theDate, thePrecision); + public void setBirthDateWithSecondsPrecision( Date theDate) { + myBirthDate = new DateTimeDt(theDate); } @@ -497,9 +523,9 @@ public class Practitioner extends BaseResource implements IResource { * Image of the person *

*/ - public List getPhoto() { + public java.util.List getPhoto() { if (myPhoto == null) { - myPhoto = new ArrayList(); + myPhoto = new java.util.ArrayList(); } return myPhoto; } @@ -512,7 +538,7 @@ public class Practitioner extends BaseResource implements IResource { * Image of the person *

*/ - public void setPhoto(List theValue) { + public void setPhoto(java.util.List theValue) { myPhoto = theValue; } @@ -572,9 +598,9 @@ public class Practitioner extends BaseResource implements IResource { * Roles which this practitioner is authorized to perform for the organization *

*/ - public List> getRole() { + public java.util.List> getRole() { if (myRole == null) { - myRole = new ArrayList>(); + myRole = new java.util.ArrayList>(); } return myRole; } @@ -587,7 +613,7 @@ public class Practitioner extends BaseResource implements IResource { * Roles which this practitioner is authorized to perform for the organization *

*/ - public void setRole(List> theValue) { + public void setRole(java.util.List> theValue) { myRole = theValue; } @@ -628,9 +654,9 @@ public class Practitioner extends BaseResource implements IResource { * Specific specialty of the practitioner *

*/ - public List> getSpecialty() { + public java.util.List> getSpecialty() { if (mySpecialty == null) { - mySpecialty = new ArrayList>(); + mySpecialty = new java.util.ArrayList>(); } return mySpecialty; } @@ -643,7 +669,7 @@ public class Practitioner extends BaseResource implements IResource { * Specific specialty of the practitioner *

*/ - public void setSpecialty(List> theValue) { + public void setSpecialty(java.util.List> theValue) { mySpecialty = theValue; } @@ -715,9 +741,9 @@ public class Practitioner extends BaseResource implements IResource { * The location(s) at which this practitioner provides care *

*/ - public List getLocation() { + public java.util.List getLocation() { if (myLocation == null) { - myLocation = new ArrayList(); + myLocation = new java.util.ArrayList(); } return myLocation; } @@ -730,7 +756,7 @@ public class Practitioner extends BaseResource implements IResource { * The location(s) at which this practitioner provides care *

*/ - public void setLocation(List theValue) { + public void setLocation(java.util.List theValue) { myLocation = theValue; } @@ -746,9 +772,9 @@ public class Practitioner extends BaseResource implements IResource { * *

*/ - public List getQualification() { + public java.util.List getQualification() { if (myQualification == null) { - myQualification = new ArrayList(); + myQualification = new java.util.ArrayList(); } return myQualification; } @@ -761,7 +787,7 @@ public class Practitioner extends BaseResource implements IResource { * *

*/ - public void setQualification(List theValue) { + public void setQualification(java.util.List theValue) { myQualification = theValue; } @@ -790,9 +816,9 @@ public class Practitioner extends BaseResource implements IResource { * A language the practitioner is able to use in patient communication *

*/ - public List getCommunication() { + public java.util.List getCommunication() { if (myCommunication == null) { - myCommunication = new ArrayList(); + myCommunication = new java.util.ArrayList(); } return myCommunication; } @@ -805,7 +831,7 @@ public class Practitioner extends BaseResource implements IResource { * A language the practitioner is able to use in patient communication *

*/ - public void setCommunication(List theValue) { + public void setCommunication(java.util.List theValue) { myCommunication = theValue; } @@ -850,7 +876,7 @@ public class Practitioner extends BaseResource implements IResource { private PeriodDt myPeriod; @Child(name="issuer", order=2, min=0, max=1, type={ - Organization.class, + ca.uhn.fhir.model.dstu.resource.Organization.class, }) @Description( shortDefinition="Organization that regulates and issues the qualification", @@ -863,6 +889,11 @@ public class Practitioner extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myCode, myPeriod, myIssuer); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myCode, myPeriod, myIssuer); + } + /** * Gets the value(s) for code (Coded representation of the qualification). diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Profile.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Profile.java index 5dc4be3e513..d5302ac4533 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Profile.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Profile.java @@ -16,12 +16,42 @@ package ca.uhn.fhir.model.dstu.resource; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.composite.*; -import ca.uhn.fhir.model.dstu.valueset.*; + +import java.util.Date; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.CodingDt; +import ca.uhn.fhir.model.dstu.composite.ContactDt; +import ca.uhn.fhir.model.dstu.valueset.AggregationModeEnum; +import ca.uhn.fhir.model.dstu.valueset.BindingConformanceEnum; +import ca.uhn.fhir.model.dstu.valueset.ConstraintSeverityEnum; +import ca.uhn.fhir.model.dstu.valueset.DataTypeEnum; +import ca.uhn.fhir.model.dstu.valueset.ExtensionContextEnum; +import ca.uhn.fhir.model.dstu.valueset.FHIRDefinedTypeEnum; +import ca.uhn.fhir.model.dstu.valueset.PropertyRepresentationEnum; +import ca.uhn.fhir.model.dstu.valueset.ResourceProfileStatusEnum; +import ca.uhn.fhir.model.dstu.valueset.ResourceTypeEnum; +import ca.uhn.fhir.model.dstu.valueset.SearchParamTypeEnum; +import ca.uhn.fhir.model.dstu.valueset.SlicingRulesEnum; +import ca.uhn.fhir.model.primitive.BooleanDt; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.DateTimeDt; +import ca.uhn.fhir.model.primitive.IdDt; +import ca.uhn.fhir.model.primitive.IntegerDt; +import ca.uhn.fhir.model.primitive.StringDt; +import ca.uhn.fhir.model.primitive.UriDt; + /** * HAPI/FHIR Profile Resource @@ -184,7 +214,7 @@ public class Profile extends BaseResource implements IResource { shortDefinition="Contact information of the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher" ) - private List myTelecom; + private java.util.List myTelecom; @Child(name="description", type=StringDt.class, order=5, min=0, max=1) @Description( @@ -198,7 +228,7 @@ public class Profile extends BaseResource implements IResource { shortDefinition="Assist with indexing and finding", formalDefinition="A set of terms from external terminologies that may be used to assist with indexing and searching of templates." ) - private List myCode; + private java.util.List myCode; @Child(name="status", type=CodeDt.class, order=7, min=1, max=1) @Description( @@ -240,34 +270,39 @@ public class Profile extends BaseResource implements IResource { shortDefinition="External specification that the content is mapped to", formalDefinition="An external specification that the content is mapped to" ) - private List myMapping; + private java.util.List myMapping; @Child(name="structure", order=13, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="A constraint on a resource or a data type", formalDefinition="A constraint statement about what contents a resource or data type may have" ) - private List myStructure; + private java.util.List myStructure; @Child(name="extensionDefn", order=14, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Definition of an extension", formalDefinition="An extension defined as part of the profile" ) - private List myExtensionDefn; + private java.util.List myExtensionDefn; @Child(name="query", order=15, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Definition of a named query", formalDefinition="Definition of a named query and its parameters and their meaning" ) - private List myQuery; + private java.util.List myQuery; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentifier, myVersion, myName, myPublisher, myTelecom, myDescription, myCode, myStatus, myExperimental, myDate, myRequirements, myFhirVersion, myMapping, myStructure, myExtensionDefn, myQuery); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier, myVersion, myName, myPublisher, myTelecom, myDescription, myCode, myStatus, myExperimental, myDate, myRequirements, myFhirVersion, myMapping, myStructure, myExtensionDefn, myQuery); + } + /** * Gets the value(s) for identifier (Logical id to reference this profile). @@ -451,9 +486,9 @@ public class Profile extends BaseResource implements IResource { * Contact details to assist a user in finding and communicating with the publisher *

*/ - public List getTelecom() { + public java.util.List getTelecom() { if (myTelecom == null) { - myTelecom = new ArrayList(); + myTelecom = new java.util.ArrayList(); } return myTelecom; } @@ -466,7 +501,7 @@ public class Profile extends BaseResource implements IResource { * Contact details to assist a user in finding and communicating with the publisher *

*/ - public void setTelecom(List theValue) { + public void setTelecom(java.util.List theValue) { myTelecom = theValue; } @@ -538,9 +573,9 @@ public class Profile extends BaseResource implements IResource { * A set of terms from external terminologies that may be used to assist with indexing and searching of templates. *

*/ - public List getCode() { + public java.util.List getCode() { if (myCode == null) { - myCode = new ArrayList(); + myCode = new java.util.ArrayList(); } return myCode; } @@ -553,7 +588,7 @@ public class Profile extends BaseResource implements IResource { * A set of terms from external terminologies that may be used to assist with indexing and searching of templates. *

*/ - public void setCode(List theValue) { + public void setCode(java.util.List theValue) { myCode = theValue; } @@ -696,8 +731,8 @@ public class Profile extends BaseResource implements IResource { * The date that this version of the profile was published *

*/ - public void setDateWithSecondsPrecision( Date theDate) { - myDate = new DateTimeDt(theDate); + public void setDate( Date theDate, TemporalPrecisionEnum thePrecision) { + myDate = new DateTimeDt(theDate, thePrecision); } /** @@ -708,8 +743,8 @@ public class Profile extends BaseResource implements IResource { * The date that this version of the profile was published *

*/ - public void setDate( Date theDate, TemporalPrecisionEnum thePrecision) { - myDate = new DateTimeDt(theDate, thePrecision); + public void setDateWithSecondsPrecision( Date theDate) { + myDate = new DateTimeDt(theDate); } @@ -809,9 +844,9 @@ public class Profile extends BaseResource implements IResource { * An external specification that the content is mapped to *

*/ - public List getMapping() { + public java.util.List getMapping() { if (myMapping == null) { - myMapping = new ArrayList(); + myMapping = new java.util.ArrayList(); } return myMapping; } @@ -824,7 +859,7 @@ public class Profile extends BaseResource implements IResource { * An external specification that the content is mapped to *

*/ - public void setMapping(List theValue) { + public void setMapping(java.util.List theValue) { myMapping = theValue; } @@ -853,9 +888,9 @@ public class Profile extends BaseResource implements IResource { * A constraint statement about what contents a resource or data type may have *

*/ - public List getStructure() { + public java.util.List getStructure() { if (myStructure == null) { - myStructure = new ArrayList(); + myStructure = new java.util.ArrayList(); } return myStructure; } @@ -868,7 +903,7 @@ public class Profile extends BaseResource implements IResource { * A constraint statement about what contents a resource or data type may have *

*/ - public void setStructure(List theValue) { + public void setStructure(java.util.List theValue) { myStructure = theValue; } @@ -897,9 +932,9 @@ public class Profile extends BaseResource implements IResource { * An extension defined as part of the profile *

*/ - public List getExtensionDefn() { + public java.util.List getExtensionDefn() { if (myExtensionDefn == null) { - myExtensionDefn = new ArrayList(); + myExtensionDefn = new java.util.ArrayList(); } return myExtensionDefn; } @@ -912,7 +947,7 @@ public class Profile extends BaseResource implements IResource { * An extension defined as part of the profile *

*/ - public void setExtensionDefn(List theValue) { + public void setExtensionDefn(java.util.List theValue) { myExtensionDefn = theValue; } @@ -941,9 +976,9 @@ public class Profile extends BaseResource implements IResource { * Definition of a named query and its parameters and their meaning *

*/ - public List getQuery() { + public java.util.List getQuery() { if (myQuery == null) { - myQuery = new ArrayList(); + myQuery = new java.util.ArrayList(); } return myQuery; } @@ -956,7 +991,7 @@ public class Profile extends BaseResource implements IResource { * Definition of a named query and its parameters and their meaning *

*/ - public void setQuery(List theValue) { + public void setQuery(java.util.List theValue) { myQuery = theValue; } @@ -1019,6 +1054,11 @@ public class Profile extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentity, myUri, myName, myComments); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentity, myUri, myName, myComments); + } + /** * Gets the value(s) for identity (Internal id when this mapping is used). @@ -1240,20 +1280,25 @@ public class Profile extends BaseResource implements IResource { shortDefinition="Definition of elements in the resource (if no profile)", formalDefinition="Captures constraints on each element within the resource" ) - private List myElement; + private java.util.List myElement; @Child(name="searchParam", order=5, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Search params defined", formalDefinition="Additional search parameters for implementations to support and/or make use of" ) - private List mySearchParam; + private java.util.List mySearchParam; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myType, myName, myPublish, myPurpose, myElement, mySearchParam); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myType, myName, myPublish, myPurpose, myElement, mySearchParam); + } + /** * Gets the value(s) for type (The Resource or Data Type being described). @@ -1437,9 +1482,9 @@ public class Profile extends BaseResource implements IResource { * Captures constraints on each element within the resource *

*/ - public List getElement() { + public java.util.List getElement() { if (myElement == null) { - myElement = new ArrayList(); + myElement = new java.util.ArrayList(); } return myElement; } @@ -1452,7 +1497,7 @@ public class Profile extends BaseResource implements IResource { * Captures constraints on each element within the resource *

*/ - public void setElement(List theValue) { + public void setElement(java.util.List theValue) { myElement = theValue; } @@ -1481,9 +1526,9 @@ public class Profile extends BaseResource implements IResource { * Additional search parameters for implementations to support and/or make use of *

*/ - public List getSearchParam() { + public java.util.List getSearchParam() { if (mySearchParam == null) { - mySearchParam = new ArrayList(); + mySearchParam = new java.util.ArrayList(); } return mySearchParam; } @@ -1496,7 +1541,7 @@ public class Profile extends BaseResource implements IResource { * Additional search parameters for implementations to support and/or make use of *

*/ - public void setSearchParam(List theValue) { + public void setSearchParam(java.util.List theValue) { mySearchParam = theValue; } @@ -1541,7 +1586,7 @@ public class Profile extends BaseResource implements IResource { shortDefinition="How this element is represented in instances", formalDefinition="Codes that define how this element is represented in instances, when the deviation varies from the normal case" ) - private List> myRepresentation; + private java.util.List> myRepresentation; @Child(name="name", type=StringDt.class, order=2, min=0, max=1) @Description( @@ -1569,6 +1614,11 @@ public class Profile extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myPath, myRepresentation, myName, mySlicing, myDefinition); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myPath, myRepresentation, myName, mySlicing, myDefinition); + } + /** * Gets the value(s) for path (The path of the element (see the formal definitions)). @@ -1623,9 +1673,9 @@ public class Profile extends BaseResource implements IResource { * Codes that define how this element is represented in instances, when the deviation varies from the normal case *

*/ - public List> getRepresentation() { + public java.util.List> getRepresentation() { if (myRepresentation == null) { - myRepresentation = new ArrayList>(); + myRepresentation = new java.util.ArrayList>(); } return myRepresentation; } @@ -1638,7 +1688,7 @@ public class Profile extends BaseResource implements IResource { * Codes that define how this element is represented in instances, when the deviation varies from the normal case *

*/ - public void setRepresentation(List> theValue) { + public void setRepresentation(java.util.List> theValue) { myRepresentation = theValue; } @@ -1814,6 +1864,11 @@ public class Profile extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myDiscriminator, myOrdered, myRules); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myDiscriminator, myOrdered, myRules); + } + /** * Gets the value(s) for discriminator (Element that used to distinguish the slices). @@ -1992,7 +2047,7 @@ public class Profile extends BaseResource implements IResource { shortDefinition="Other names", formalDefinition="Identifies additional names by which this element might also be known" ) - private List mySynonym; + private java.util.List mySynonym; @Child(name="min", type=IntegerDt.class, order=5, min=1, max=1) @Description( @@ -2013,7 +2068,7 @@ public class Profile extends BaseResource implements IResource { shortDefinition="Data type and Profile for this element", formalDefinition="The data type or resource that the value of this element is permitted to be" ) - private List myType; + private java.util.List myType; @Child(name="nameReference", type=StringDt.class, order=8, min=0, max=1) @Description( @@ -2048,14 +2103,14 @@ public class Profile extends BaseResource implements IResource { shortDefinition="Reference to invariant about presence", formalDefinition="A reference to an invariant that may make additional statements about the cardinality or value in the instance" ) - private List myCondition; + private java.util.List myCondition; @Child(name="constraint", order=13, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Condition that must evaluate to true", formalDefinition="Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instance" ) - private List myConstraint; + private java.util.List myConstraint; @Child(name="mustSupport", type=BooleanDt.class, order=14, min=0, max=1) @Description( @@ -2083,13 +2138,18 @@ public class Profile extends BaseResource implements IResource { shortDefinition="Map element to another set of definitions", formalDefinition="Identifies a concept from an external specification that roughly corresponds to this element" ) - private List myMapping; + private java.util.List myMapping; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myShort, myFormal, myComments, myRequirements, mySynonym, myMin, myMax, myType, myNameReference, myValue, myExample, myMaxLength, myCondition, myConstraint, myMustSupport, myIsModifier, myBinding, myMapping); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myShort, myFormal, myComments, myRequirements, mySynonym, myMin, myMax, myType, myNameReference, myValue, myExample, myMaxLength, myCondition, myConstraint, myMustSupport, myIsModifier, myBinding, myMapping); + } + /** * Gets the value(s) for short (Concise definition for xml presentation). @@ -2273,9 +2333,9 @@ public class Profile extends BaseResource implements IResource { * Identifies additional names by which this element might also be known *

*/ - public List getSynonym() { + public java.util.List getSynonym() { if (mySynonym == null) { - mySynonym = new ArrayList(); + mySynonym = new java.util.ArrayList(); } return mySynonym; } @@ -2288,7 +2348,7 @@ public class Profile extends BaseResource implements IResource { * Identifies additional names by which this element might also be known *

*/ - public void setSynonym(List theValue) { + public void setSynonym(java.util.List theValue) { mySynonym = theValue; } @@ -2316,7 +2376,7 @@ public class Profile extends BaseResource implements IResource { */ public void addSynonym( String theString) { if (mySynonym == null) { - mySynonym = new ArrayList(); + mySynonym = new java.util.ArrayList(); } mySynonym.add(new StringDt(theString)); } @@ -2418,9 +2478,9 @@ public class Profile extends BaseResource implements IResource { * The data type or resource that the value of this element is permitted to be *

*/ - public List getType() { + public java.util.List getType() { if (myType == null) { - myType = new ArrayList(); + myType = new java.util.ArrayList(); } return myType; } @@ -2433,7 +2493,7 @@ public class Profile extends BaseResource implements IResource { * The data type or resource that the value of this element is permitted to be *

*/ - public void setType(List theValue) { + public void setType(java.util.List theValue) { myType = theValue; } @@ -2604,9 +2664,9 @@ public class Profile extends BaseResource implements IResource { * A reference to an invariant that may make additional statements about the cardinality or value in the instance *

*/ - public List getCondition() { + public java.util.List getCondition() { if (myCondition == null) { - myCondition = new ArrayList(); + myCondition = new java.util.ArrayList(); } return myCondition; } @@ -2619,7 +2679,7 @@ public class Profile extends BaseResource implements IResource { * A reference to an invariant that may make additional statements about the cardinality or value in the instance *

*/ - public void setCondition(List theValue) { + public void setCondition(java.util.List theValue) { myCondition = theValue; } @@ -2647,7 +2707,7 @@ public class Profile extends BaseResource implements IResource { */ public void addCondition( String theId) { if (myCondition == null) { - myCondition = new ArrayList(); + myCondition = new java.util.ArrayList(); } myCondition.add(new IdDt(theId)); } @@ -2663,9 +2723,9 @@ public class Profile extends BaseResource implements IResource { * Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instance *

*/ - public List getConstraint() { + public java.util.List getConstraint() { if (myConstraint == null) { - myConstraint = new ArrayList(); + myConstraint = new java.util.ArrayList(); } return myConstraint; } @@ -2678,7 +2738,7 @@ public class Profile extends BaseResource implements IResource { * Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instance *

*/ - public void setConstraint(List theValue) { + public void setConstraint(java.util.List theValue) { myConstraint = theValue; } @@ -2824,9 +2884,9 @@ public class Profile extends BaseResource implements IResource { * Identifies a concept from an external specification that roughly corresponds to this element *

*/ - public List getMapping() { + public java.util.List getMapping() { if (myMapping == null) { - myMapping = new ArrayList(); + myMapping = new java.util.ArrayList(); } return myMapping; } @@ -2839,7 +2899,7 @@ public class Profile extends BaseResource implements IResource { * Identifies a concept from an external specification that roughly corresponds to this element *

*/ - public void setMapping(List theValue) { + public void setMapping(java.util.List theValue) { myMapping = theValue; } @@ -2891,13 +2951,18 @@ public class Profile extends BaseResource implements IResource { shortDefinition="contained | referenced | bundled - how aggregated", formalDefinition="If the type is a reference to another resource, how the resource is or can be aggreated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundle" ) - private List> myAggregation; + private java.util.List> myAggregation; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myCode, myProfile, myAggregation); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myCode, myProfile, myAggregation); + } + /** * Gets the value(s) for code (Name of Data type or Resource). @@ -2995,9 +3060,9 @@ public class Profile extends BaseResource implements IResource { * If the type is a reference to another resource, how the resource is or can be aggreated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundle *

*/ - public List> getAggregation() { + public java.util.List> getAggregation() { if (myAggregation == null) { - myAggregation = new ArrayList>(); + myAggregation = new java.util.ArrayList>(); } return myAggregation; } @@ -3010,7 +3075,7 @@ public class Profile extends BaseResource implements IResource { * If the type is a reference to another resource, how the resource is or can be aggreated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundle *

*/ - public void setAggregation(List> theValue) { + public void setAggregation(java.util.List> theValue) { myAggregation = theValue; } @@ -3096,6 +3161,11 @@ public class Profile extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myKey, myName, mySeverity, myHuman, myXpath); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myKey, myName, mySeverity, myHuman, myXpath); + } + /** * Gets the value(s) for key (Target of 'condition' reference above). @@ -3370,6 +3440,11 @@ public class Profile extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myName, myIsExtensible, myConformance, myDescription, myReference); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myName, myIsExtensible, myConformance, myDescription, myReference); + } + /** * Gets the value(s) for name (Descriptive Name). @@ -3605,6 +3680,11 @@ public class Profile extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentity, myMap); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentity, myMap); + } + /** * Gets the value(s) for identity (Reference to mapping declaration). @@ -3742,13 +3822,18 @@ public class Profile extends BaseResource implements IResource { shortDefinition="Types of resource (if a resource reference)", formalDefinition="Types of resource (if a resource is referenced)" ) - private List> myTarget; + private java.util.List> myTarget; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myName, myType, myDocumentation, myXpath, myTarget); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myName, myType, myDocumentation, myXpath, myTarget); + } + /** * Gets the value(s) for name (Name of search parameter). @@ -3932,9 +4017,9 @@ public class Profile extends BaseResource implements IResource { * Types of resource (if a resource is referenced) *

*/ - public List> getTarget() { + public java.util.List> getTarget() { if (myTarget == null) { - myTarget = new ArrayList>(); + myTarget = new java.util.ArrayList>(); } return myTarget; } @@ -3947,7 +4032,7 @@ public class Profile extends BaseResource implements IResource { * Types of resource (if a resource is referenced) *

*/ - public void setTarget(List> theValue) { + public void setTarget(java.util.List> theValue) { myTarget = theValue; } @@ -4020,7 +4105,7 @@ public class Profile extends BaseResource implements IResource { shortDefinition="Where the extension can be used in instances", formalDefinition="Identifies the types of resource or data type elements to which the extension can be applied" ) - private List myContext; + private java.util.List myContext; @Child(name="definition", type=StructureElementDefinition.class, order=4, min=1, max=1) @Description( @@ -4034,6 +4119,11 @@ public class Profile extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myCode, myDisplay, myContextType, myContext, myDefinition); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myCode, myDisplay, myContextType, myContext, myDefinition); + } + /** * Gets the value(s) for code (Identifies the extension in this profile). @@ -4174,9 +4264,9 @@ public class Profile extends BaseResource implements IResource { * Identifies the types of resource or data type elements to which the extension can be applied *

*/ - public List getContext() { + public java.util.List getContext() { if (myContext == null) { - myContext = new ArrayList(); + myContext = new java.util.ArrayList(); } return myContext; } @@ -4189,7 +4279,7 @@ public class Profile extends BaseResource implements IResource { * Identifies the types of resource or data type elements to which the extension can be applied *

*/ - public void setContext(List theValue) { + public void setContext(java.util.List theValue) { myContext = theValue; } @@ -4217,7 +4307,7 @@ public class Profile extends BaseResource implements IResource { */ public void addContext( String theString) { if (myContext == null) { - myContext = new ArrayList(); + myContext = new java.util.ArrayList(); } myContext.add(new StringDt(theString)); } @@ -4288,13 +4378,18 @@ public class Profile extends BaseResource implements IResource { shortDefinition="Parameter for the named query", formalDefinition="A parameter of a named query" ) - private List myParameter; + private java.util.List myParameter; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myName, myDocumentation, myParameter); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myName, myDocumentation, myParameter); + } + /** * Gets the value(s) for name (Special named queries (_query=)). @@ -4392,9 +4487,9 @@ public class Profile extends BaseResource implements IResource { * A parameter of a named query *

*/ - public List getParameter() { + public java.util.List getParameter() { if (myParameter == null) { - myParameter = new ArrayList(); + myParameter = new java.util.ArrayList(); } return myParameter; } @@ -4407,7 +4502,7 @@ public class Profile extends BaseResource implements IResource { * A parameter of a named query *

*/ - public void setParameter(List theValue) { + public void setParameter(java.util.List theValue) { myParameter = theValue; } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/RelatedPerson.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/RelatedPerson.java new file mode 100644 index 00000000000..5bbae658b94 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/RelatedPerson.java @@ -0,0 +1,508 @@ + + + + + + + + + + + + + + + + +package ca.uhn.fhir.model.dstu.resource; + + +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +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.dstu.composite.AddressDt; +import ca.uhn.fhir.model.dstu.composite.AttachmentDt; +import ca.uhn.fhir.model.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.ContactDt; +import ca.uhn.fhir.model.dstu.composite.HumanNameDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.valueset.AdministrativeGenderCodesEnum; +import ca.uhn.fhir.model.dstu.valueset.PatientRelationshipTypeEnum; +import ca.uhn.fhir.model.primitive.BoundCodeableConceptDt; + + +/** + * HAPI/FHIR RelatedPerson Resource + * (An person that is related to a patient, but who is not a direct target of care) + * + *

+ * Definition: + * Information about a person that is involved in the care for a patient, but who is not the target of healthcare, nor has a formal responsibility in the care process + *

+ * + *

+ * Requirements: + * Need to track persons related to the patient or the healthcare process. + *

+ */ +@ResourceDef(name="RelatedPerson", profile="http://hl7.org/fhir/profiles/RelatedPerson", id="relatedperson") +public class RelatedPerson extends BaseResource implements IResource { + + /** + * Search parameter constant for identifier + *

+ * Description: A patient Identifier
+ * Type: token
+ * Path: RelatedPerson.identifier
+ *

+ */ + public static final String SP_IDENTIFIER = "identifier"; + + /** + * Search parameter constant for name + *

+ * Description: A portion of name in any name part
+ * Type: string
+ * Path: RelatedPerson.name
+ *

+ */ + public static final String SP_NAME = "name"; + + /** + * Search parameter constant for phonetic + *

+ * Description: A portion of name using some kind of phonetic matching algorithm
+ * Type: string
+ * Path:
+ *

+ */ + public static final String SP_PHONETIC = "phonetic"; + + /** + * Search parameter constant for telecom + *

+ * Description: The value in any kind of contact
+ * Type: string
+ * Path: RelatedPerson.telecom
+ *

+ */ + public static final String SP_TELECOM = "telecom"; + + /** + * Search parameter constant for address + *

+ * Description: An address in any kind of address/part
+ * Type: string
+ * Path: RelatedPerson.address
+ *

+ */ + public static final String SP_ADDRESS = "address"; + + /** + * Search parameter constant for gender + *

+ * Description: Gender of the person
+ * Type: token
+ * Path: RelatedPerson.gender
+ *

+ */ + public static final String SP_GENDER = "gender"; + + /** + * Search parameter constant for patient + *

+ * Description: The patient this person is related to
+ * Type: reference
+ * Path: RelatedPerson.patient
+ *

+ */ + public static final String SP_PATIENT = "patient"; + + + @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="A Human identifier for this person", + formalDefinition="Identifier for a person within a particular scope." + ) + private java.util.List myIdentifier; + + @Child(name="patient", order=1, min=1, max=1, type={ + ca.uhn.fhir.model.dstu.resource.Patient.class, + }) + @Description( + shortDefinition="The patient this person is related to", + formalDefinition="The patient this person is related to" + ) + private ResourceReferenceDt myPatient; + + @Child(name="relationship", type=CodeableConceptDt.class, order=2, min=0, max=1) + @Description( + shortDefinition="The nature of the relationship", + formalDefinition="The nature of the relationship between a patient and the related person" + ) + private BoundCodeableConceptDt myRelationship; + + @Child(name="name", type=HumanNameDt.class, order=3, min=0, max=1) + @Description( + shortDefinition="A name associated with the person", + formalDefinition="A name associated with the person" + ) + private HumanNameDt myName; + + @Child(name="telecom", type=ContactDt.class, order=4, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="A contact detail for the person", + formalDefinition="A contact detail for the person, e.g. a telephone number or an email address." + ) + private java.util.List myTelecom; + + @Child(name="gender", type=CodeableConceptDt.class, order=5, min=0, max=1) + @Description( + shortDefinition="Gender for administrative purposes", + formalDefinition="Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes." + ) + private BoundCodeableConceptDt myGender; + + @Child(name="address", type=AddressDt.class, order=6, min=0, max=1) + @Description( + shortDefinition="Address where the related person can be contacted or visited", + formalDefinition="Address where the related person can be contacted or visited" + ) + private AddressDt myAddress; + + @Child(name="photo", type=AttachmentDt.class, order=7, min=0, max=Child.MAX_UNLIMITED) + @Description( + shortDefinition="Image of the person", + formalDefinition="Image of the person" + ) + private java.util.List myPhoto; + + + @Override + public boolean isEmpty() { + return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentifier, myPatient, myRelationship, myName, myTelecom, myGender, myAddress, myPhoto); + } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier, myPatient, myRelationship, myName, myTelecom, myGender, myAddress, myPhoto); + } + + + /** + * Gets the value(s) for identifier (A Human identifier for this person). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Identifier for a person within a particular scope. + *

+ */ + public java.util.List getIdentifier() { + if (myIdentifier == null) { + myIdentifier = new java.util.ArrayList(); + } + return myIdentifier; + } + + /** + * Sets the value(s) for identifier (A Human identifier for this person) + * + *

+ * Definition: + * Identifier for a person within a particular scope. + *

+ */ + public void setIdentifier(java.util.List theValue) { + myIdentifier = theValue; + } + + /** + * Adds and returns a new value for identifier (A Human identifier for this person) + * + *

+ * Definition: + * Identifier for a person within a particular scope. + *

+ */ + public IdentifierDt addIdentifier() { + IdentifierDt newType = new IdentifierDt(); + getIdentifier().add(newType); + return newType; + } + + + /** + * Gets the value(s) for patient (The patient this person is related to). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The patient this person is related to + *

+ */ + public ResourceReferenceDt getPatient() { + if (myPatient == null) { + myPatient = new ResourceReferenceDt(); + } + return myPatient; + } + + /** + * Sets the value(s) for patient (The patient this person is related to) + * + *

+ * Definition: + * The patient this person is related to + *

+ */ + public void setPatient(ResourceReferenceDt theValue) { + myPatient = theValue; + } + + + + /** + * Gets the value(s) for relationship (The nature of the relationship). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * The nature of the relationship between a patient and the related person + *

+ */ + public BoundCodeableConceptDt getRelationship() { + if (myRelationship == null) { + myRelationship = new BoundCodeableConceptDt(PatientRelationshipTypeEnum.VALUESET_BINDER); + } + return myRelationship; + } + + /** + * Sets the value(s) for relationship (The nature of the relationship) + * + *

+ * Definition: + * The nature of the relationship between a patient and the related person + *

+ */ + public void setRelationship(BoundCodeableConceptDt theValue) { + myRelationship = theValue; + } + + + /** + * Sets the value(s) for relationship (The nature of the relationship) + * + *

+ * Definition: + * The nature of the relationship between a patient and the related person + *

+ */ + public void setRelationship(PatientRelationshipTypeEnum theValue) { + getRelationship().setValueAsEnum(theValue); + } + + + /** + * Gets the value(s) for name (A name associated with the person). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * A name associated with the person + *

+ */ + public HumanNameDt getName() { + if (myName == null) { + myName = new HumanNameDt(); + } + return myName; + } + + /** + * Sets the value(s) for name (A name associated with the person) + * + *

+ * Definition: + * A name associated with the person + *

+ */ + public void setName(HumanNameDt theValue) { + myName = theValue; + } + + + + /** + * Gets the value(s) for telecom (A contact detail for the person). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * A contact detail for the person, e.g. a telephone number or an email address. + *

+ */ + public java.util.List getTelecom() { + if (myTelecom == null) { + myTelecom = new java.util.ArrayList(); + } + return myTelecom; + } + + /** + * Sets the value(s) for telecom (A contact detail for the person) + * + *

+ * Definition: + * A contact detail for the person, e.g. a telephone number or an email address. + *

+ */ + public void setTelecom(java.util.List theValue) { + myTelecom = theValue; + } + + /** + * Adds and returns a new value for telecom (A contact detail for the person) + * + *

+ * Definition: + * A contact detail for the person, e.g. a telephone number or an email address. + *

+ */ + public ContactDt addTelecom() { + ContactDt newType = new ContactDt(); + getTelecom().add(newType); + return newType; + } + + + /** + * Gets the value(s) for gender (Gender for administrative purposes). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes. + *

+ */ + public BoundCodeableConceptDt getGender() { + if (myGender == null) { + myGender = new BoundCodeableConceptDt(AdministrativeGenderCodesEnum.VALUESET_BINDER); + } + return myGender; + } + + /** + * Sets the value(s) for gender (Gender for administrative purposes) + * + *

+ * Definition: + * Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes. + *

+ */ + public void setGender(BoundCodeableConceptDt theValue) { + myGender = theValue; + } + + + /** + * Sets the value(s) for gender (Gender for administrative purposes) + * + *

+ * Definition: + * Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes. + *

+ */ + public void setGender(AdministrativeGenderCodesEnum theValue) { + getGender().setValueAsEnum(theValue); + } + + + /** + * Gets the value(s) for address (Address where the related person can be contacted or visited). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Address where the related person can be contacted or visited + *

+ */ + public AddressDt getAddress() { + if (myAddress == null) { + myAddress = new AddressDt(); + } + return myAddress; + } + + /** + * Sets the value(s) for address (Address where the related person can be contacted or visited) + * + *

+ * Definition: + * Address where the related person can be contacted or visited + *

+ */ + public void setAddress(AddressDt theValue) { + myAddress = theValue; + } + + + + /** + * Gets the value(s) for photo (Image of the person). + * creating it if it does + * not exist. Will not return null. + * + *

+ * Definition: + * Image of the person + *

+ */ + public java.util.List getPhoto() { + if (myPhoto == null) { + myPhoto = new java.util.ArrayList(); + } + return myPhoto; + } + + /** + * Sets the value(s) for photo (Image of the person) + * + *

+ * Definition: + * Image of the person + *

+ */ + public void setPhoto(java.util.List theValue) { + myPhoto = theValue; + } + + /** + * Adds and returns a new value for photo (Image of the person) + * + *

+ * Definition: + * Image of the person + *

+ */ + public AttachmentDt addPhoto() { + AttachmentDt newType = new AttachmentDt(); + getPhoto().add(newType); + return newType; + } + + + + +} \ No newline at end of file diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Specimen.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Specimen.java index e75d11bb040..8a5dcda25a4 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Specimen.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Specimen.java @@ -16,12 +16,34 @@ package ca.uhn.fhir.model.dstu.resource; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.composite.*; -import ca.uhn.fhir.model.dstu.valueset.*; + +import java.util.Date; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IDatatype; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.composite.PeriodDt; +import ca.uhn.fhir.model.dstu.composite.QuantityDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.valueset.HierarchicalRelationshipTypeEnum; +import ca.uhn.fhir.model.dstu.valueset.SpecimenCollectionMethodEnum; +import ca.uhn.fhir.model.dstu.valueset.SpecimenTreatmentProcedureEnum; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.BoundCodeableConceptDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.DateTimeDt; +import ca.uhn.fhir.model.primitive.StringDt; + /** * HAPI/FHIR Specimen Resource @@ -56,7 +78,7 @@ public class Specimen extends BaseResource implements IResource { shortDefinition="External Identifier", formalDefinition="Id for specimen" ) - private List myIdentifier; + private java.util.List myIdentifier; @Child(name="type", type=CodeableConceptDt.class, order=1, min=0, max=1) @Description( @@ -70,13 +92,13 @@ public class Specimen extends BaseResource implements IResource { shortDefinition="Parent of specimen", formalDefinition="Parent specimen from which the focal specimen was a component" ) - private List mySource; + private java.util.List mySource; @Child(name="subject", order=3, min=1, max=1, type={ - Patient.class, - Group.class, - Device.class, - Substance.class, + ca.uhn.fhir.model.dstu.resource.Patient.class, + ca.uhn.fhir.model.dstu.resource.Group.class, + ca.uhn.fhir.model.dstu.resource.Device.class, + ca.uhn.fhir.model.dstu.resource.Substance.class, }) @Description( shortDefinition="Where the specimen came from. This may be the patient(s) or from the environment or a device", @@ -110,20 +132,25 @@ public class Specimen extends BaseResource implements IResource { shortDefinition="Treatment and processing step details", formalDefinition="Details concerning treatment and processing steps for the specimen" ) - private List myTreatment; + private java.util.List myTreatment; @Child(name="container", order=8, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Direct container of specimen (tube/slide, etc)", formalDefinition="The container holding the specimen. The recursive nature of containers; i.e. blood in tube in tray in rack is not addressed here." ) - private List myContainer; + private java.util.List myContainer; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentifier, myType, mySource, mySubject, myAccessionIdentifier, myReceivedTime, myCollection, myTreatment, myContainer); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier, myType, mySource, mySubject, myAccessionIdentifier, myReceivedTime, myCollection, myTreatment, myContainer); + } + /** * Gets the value(s) for identifier (External Identifier). @@ -135,9 +162,9 @@ public class Specimen extends BaseResource implements IResource { * Id for specimen *

*/ - public List getIdentifier() { + public java.util.List getIdentifier() { if (myIdentifier == null) { - myIdentifier = new ArrayList(); + myIdentifier = new java.util.ArrayList(); } return myIdentifier; } @@ -150,7 +177,7 @@ public class Specimen extends BaseResource implements IResource { * Id for specimen *

*/ - public void setIdentifier(List theValue) { + public void setIdentifier(java.util.List theValue) { myIdentifier = theValue; } @@ -210,9 +237,9 @@ public class Specimen extends BaseResource implements IResource { * Parent specimen from which the focal specimen was a component *

*/ - public List getSource() { + public java.util.List getSource() { if (mySource == null) { - mySource = new ArrayList(); + mySource = new java.util.ArrayList(); } return mySource; } @@ -225,7 +252,7 @@ public class Specimen extends BaseResource implements IResource { * Parent specimen from which the focal specimen was a component *

*/ - public void setSource(List theValue) { + public void setSource(java.util.List theValue) { mySource = theValue; } @@ -341,8 +368,8 @@ public class Specimen extends BaseResource implements IResource { * Time when specimen was received for processing or testing *

*/ - public void setReceivedTimeWithSecondsPrecision( Date theDate) { - myReceivedTime = new DateTimeDt(theDate); + public void setReceivedTime( Date theDate, TemporalPrecisionEnum thePrecision) { + myReceivedTime = new DateTimeDt(theDate, thePrecision); } /** @@ -353,8 +380,8 @@ public class Specimen extends BaseResource implements IResource { * Time when specimen was received for processing or testing *

*/ - public void setReceivedTime( Date theDate, TemporalPrecisionEnum thePrecision) { - myReceivedTime = new DateTimeDt(theDate, thePrecision); + public void setReceivedTimeWithSecondsPrecision( Date theDate) { + myReceivedTime = new DateTimeDt(theDate); } @@ -399,9 +426,9 @@ public class Specimen extends BaseResource implements IResource { * Details concerning treatment and processing steps for the specimen *

*/ - public List getTreatment() { + public java.util.List getTreatment() { if (myTreatment == null) { - myTreatment = new ArrayList(); + myTreatment = new java.util.ArrayList(); } return myTreatment; } @@ -414,7 +441,7 @@ public class Specimen extends BaseResource implements IResource { * Details concerning treatment and processing steps for the specimen *

*/ - public void setTreatment(List theValue) { + public void setTreatment(java.util.List theValue) { myTreatment = theValue; } @@ -443,9 +470,9 @@ public class Specimen extends BaseResource implements IResource { * The container holding the specimen. The recursive nature of containers; i.e. blood in tube in tray in rack is not addressed here. *

*/ - public List getContainer() { + public java.util.List getContainer() { if (myContainer == null) { - myContainer = new ArrayList(); + myContainer = new java.util.ArrayList(); } return myContainer; } @@ -458,7 +485,7 @@ public class Specimen extends BaseResource implements IResource { * The container holding the specimen. The recursive nature of containers; i.e. blood in tube in tray in rack is not addressed here. *

*/ - public void setContainer(List theValue) { + public void setContainer(java.util.List theValue) { myContainer = theValue; } @@ -496,19 +523,24 @@ public class Specimen extends BaseResource implements IResource { private BoundCodeDt myRelationship; @Child(name="target", order=1, min=0, max=Child.MAX_UNLIMITED, type={ - Specimen.class, + ca.uhn.fhir.model.dstu.resource.Specimen.class, }) @Description( shortDefinition="The subject of the relationship", formalDefinition="The specimen resource that is the target of this relationship" ) - private List myTarget; + private java.util.List myTarget; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myRelationship, myTarget); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myRelationship, myTarget); + } + /** * Gets the value(s) for relationship (parent | child). @@ -563,9 +595,9 @@ public class Specimen extends BaseResource implements IResource { * The specimen resource that is the target of this relationship *

*/ - public List getTarget() { + public java.util.List getTarget() { if (myTarget == null) { - myTarget = new ArrayList(); + myTarget = new java.util.ArrayList(); } return myTarget; } @@ -578,7 +610,7 @@ public class Specimen extends BaseResource implements IResource { * The specimen resource that is the target of this relationship *

*/ - public void setTarget(List theValue) { + public void setTarget(java.util.List theValue) { myTarget = theValue; } @@ -600,7 +632,7 @@ public class Specimen extends BaseResource implements IResource { public static class Collection extends BaseElement implements IResourceBlock { @Child(name="collector", order=0, min=0, max=1, type={ - Practitioner.class, + ca.uhn.fhir.model.dstu.resource.Practitioner.class, }) @Description( shortDefinition="Who collected the specimen", @@ -613,7 +645,7 @@ public class Specimen extends BaseResource implements IResource { shortDefinition="Collector comments", formalDefinition="To communicate any details or issues encountered during the specimen collection procedure." ) - private List myComment; + private java.util.List myComment; @Child(name="collected", order=2, min=0, max=1, type={ DateTimeDt.class, @@ -651,6 +683,11 @@ public class Specimen extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myCollector, myComment, myCollected, myQuantity, myMethod, mySourceSite); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myCollector, myComment, myCollected, myQuantity, myMethod, mySourceSite); + } + /** * Gets the value(s) for collector (Who collected the specimen). @@ -693,9 +730,9 @@ public class Specimen extends BaseResource implements IResource { * To communicate any details or issues encountered during the specimen collection procedure. *

*/ - public List getComment() { + public java.util.List getComment() { if (myComment == null) { - myComment = new ArrayList(); + myComment = new java.util.ArrayList(); } return myComment; } @@ -708,7 +745,7 @@ public class Specimen extends BaseResource implements IResource { * To communicate any details or issues encountered during the specimen collection procedure. *

*/ - public void setComment(List theValue) { + public void setComment(java.util.List theValue) { myComment = theValue; } @@ -736,7 +773,7 @@ public class Specimen extends BaseResource implements IResource { */ public void addComment( String theString) { if (myComment == null) { - myComment = new ArrayList(); + myComment = new java.util.ArrayList(); } myComment.add(new StringDt(theString)); } @@ -905,19 +942,24 @@ public class Specimen extends BaseResource implements IResource { private BoundCodeableConceptDt myProcedure; @Child(name="additive", order=2, min=0, max=Child.MAX_UNLIMITED, type={ - Substance.class, + ca.uhn.fhir.model.dstu.resource.Substance.class, }) @Description( shortDefinition="Material used in the processing step", formalDefinition="" ) - private List myAdditive; + private java.util.List myAdditive; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myDescription, myProcedure, myAdditive); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myDescription, myProcedure, myAdditive); + } + /** * Gets the value(s) for description (Textual description of procedure). @@ -1015,9 +1057,9 @@ public class Specimen extends BaseResource implements IResource { * *

*/ - public List getAdditive() { + public java.util.List getAdditive() { if (myAdditive == null) { - myAdditive = new ArrayList(); + myAdditive = new java.util.ArrayList(); } return myAdditive; } @@ -1030,7 +1072,7 @@ public class Specimen extends BaseResource implements IResource { * *

*/ - public void setAdditive(List theValue) { + public void setAdditive(java.util.List theValue) { myAdditive = theValue; } @@ -1056,7 +1098,7 @@ public class Specimen extends BaseResource implements IResource { shortDefinition="Id for the container", formalDefinition="Id for container. There may be multiple; a manufacturer's bar code, lab assigned identifier, etc. The container ID may differ from the specimen id in some circumstances" ) - private List myIdentifier; + private java.util.List myIdentifier; @Child(name="description", type=StringDt.class, order=1, min=0, max=1) @Description( @@ -1087,7 +1129,7 @@ public class Specimen extends BaseResource implements IResource { private QuantityDt mySpecimenQuantity; @Child(name="additive", order=5, min=0, max=1, type={ - Substance.class, + ca.uhn.fhir.model.dstu.resource.Substance.class, }) @Description( shortDefinition="Additive associated with container", @@ -1100,6 +1142,11 @@ public class Specimen extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentifier, myDescription, myType, myCapacity, mySpecimenQuantity, myAdditive); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier, myDescription, myType, myCapacity, mySpecimenQuantity, myAdditive); + } + /** * Gets the value(s) for identifier (Id for the container). @@ -1111,9 +1158,9 @@ public class Specimen extends BaseResource implements IResource { * Id for container. There may be multiple; a manufacturer's bar code, lab assigned identifier, etc. The container ID may differ from the specimen id in some circumstances *

*/ - public List getIdentifier() { + public java.util.List getIdentifier() { if (myIdentifier == null) { - myIdentifier = new ArrayList(); + myIdentifier = new java.util.ArrayList(); } return myIdentifier; } @@ -1126,7 +1173,7 @@ public class Specimen extends BaseResource implements IResource { * Id for container. There may be multiple; a manufacturer's bar code, lab assigned identifier, etc. The container ID may differ from the specimen id in some circumstances *

*/ - public void setIdentifier(List theValue) { + public void setIdentifier(java.util.List theValue) { myIdentifier = theValue; } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Substance.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Substance.java index f20432a72b2..bf926ddcd8d 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Substance.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/Substance.java @@ -16,12 +16,29 @@ package ca.uhn.fhir.model.dstu.resource; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.composite.*; -import ca.uhn.fhir.model.dstu.valueset.*; + +import java.util.Date; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.CodeableConceptDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.composite.QuantityDt; +import ca.uhn.fhir.model.dstu.composite.RatioDt; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.valueset.SubstanceTypeEnum; +import ca.uhn.fhir.model.primitive.BoundCodeableConceptDt; +import ca.uhn.fhir.model.primitive.DateTimeDt; +import ca.uhn.fhir.model.primitive.StringDt; + /** * HAPI/FHIR Substance Resource @@ -117,13 +134,18 @@ public class Substance extends BaseResource implements IResource { shortDefinition="Composition information about the substance", formalDefinition="A substance can be composed of other substances" ) - private List myIngredient; + private java.util.List myIngredient; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myType, myDescription, myInstance, myIngredient); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myType, myDescription, myInstance, myIngredient); + } + /** * Gets the value(s) for type (What kind of substance this is). @@ -252,9 +274,9 @@ public class Substance extends BaseResource implements IResource { * A substance can be composed of other substances *

*/ - public List getIngredient() { + public java.util.List getIngredient() { if (myIngredient == null) { - myIngredient = new ArrayList(); + myIngredient = new java.util.ArrayList(); } return myIngredient; } @@ -267,7 +289,7 @@ public class Substance extends BaseResource implements IResource { * A substance can be composed of other substances *

*/ - public void setIngredient(List theValue) { + public void setIngredient(java.util.List theValue) { myIngredient = theValue; } @@ -323,6 +345,11 @@ public class Substance extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentifier, myExpiry, myQuantity); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier, myExpiry, myQuantity); + } + /** * Gets the value(s) for identifier (Identifier of the package/container). @@ -393,8 +420,8 @@ public class Substance extends BaseResource implements IResource { * When the substance is no longer valid to use. For some substances, a single arbitrary date is used for expiry. *

*/ - public void setExpiryWithSecondsPrecision( Date theDate) { - myExpiry = new DateTimeDt(theDate); + public void setExpiry( Date theDate, TemporalPrecisionEnum thePrecision) { + myExpiry = new DateTimeDt(theDate, thePrecision); } /** @@ -405,8 +432,8 @@ public class Substance extends BaseResource implements IResource { * When the substance is no longer valid to use. For some substances, a single arbitrary date is used for expiry. *

*/ - public void setExpiry( Date theDate, TemporalPrecisionEnum thePrecision) { - myExpiry = new DateTimeDt(theDate, thePrecision); + public void setExpiryWithSecondsPrecision( Date theDate) { + myExpiry = new DateTimeDt(theDate); } @@ -464,7 +491,7 @@ public class Substance extends BaseResource implements IResource { private RatioDt myQuantity; @Child(name="substance", order=1, min=1, max=1, type={ - Substance.class, + ca.uhn.fhir.model.dstu.resource.Substance.class, }) @Description( shortDefinition="A component of the substance", @@ -477,6 +504,11 @@ public class Substance extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myQuantity, mySubstance); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myQuantity, mySubstance); + } + /** * Gets the value(s) for quantity (Optional amount (concentration)). diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/ValueSet.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/ValueSet.java index 2decd6fc49b..70dfe0b83d6 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/ValueSet.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/resource/ValueSet.java @@ -16,12 +16,31 @@ package ca.uhn.fhir.model.dstu.resource; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; -import ca.uhn.fhir.model.primitive.*; -import ca.uhn.fhir.model.dstu.composite.*; -import ca.uhn.fhir.model.dstu.valueset.*; + +import java.util.Date; + +import ca.uhn.fhir.model.api.BaseElement; +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.IResourceBlock; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +import ca.uhn.fhir.model.api.annotation.Block; +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.dstu.composite.ContactDt; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.valueset.FilterOperatorEnum; +import ca.uhn.fhir.model.dstu.valueset.ValueSetStatusEnum; +import ca.uhn.fhir.model.primitive.BooleanDt; +import ca.uhn.fhir.model.primitive.BoundCodeDt; +import ca.uhn.fhir.model.primitive.CodeDt; +import ca.uhn.fhir.model.primitive.DateTimeDt; +import ca.uhn.fhir.model.primitive.InstantDt; +import ca.uhn.fhir.model.primitive.StringDt; +import ca.uhn.fhir.model.primitive.UriDt; + /** * HAPI/FHIR ValueSet Resource @@ -184,7 +203,7 @@ public class ValueSet extends BaseResource implements IResource { shortDefinition="Contact information of the publisher", formalDefinition="Contacts of the publisher to assist a user in finding and communicating with the publisher" ) - private List myTelecom; + private java.util.List myTelecom; @Child(name="description", type=StringDt.class, order=5, min=1, max=1) @Description( @@ -254,6 +273,11 @@ public class ValueSet extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentifier, myVersion, myName, myPublisher, myTelecom, myDescription, myCopyright, myStatus, myExperimental, myExtensible, myDate, myDefine, myCompose, myExpansion); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier, myVersion, myName, myPublisher, myTelecom, myDescription, myCopyright, myStatus, myExperimental, myExtensible, myDate, myDefine, myCompose, myExpansion); + } + /** * Gets the value(s) for identifier (Logical id to reference this value set). @@ -437,9 +461,9 @@ public class ValueSet extends BaseResource implements IResource { * Contacts of the publisher to assist a user in finding and communicating with the publisher *

*/ - public List getTelecom() { + public java.util.List getTelecom() { if (myTelecom == null) { - myTelecom = new ArrayList(); + myTelecom = new java.util.ArrayList(); } return myTelecom; } @@ -452,7 +476,7 @@ public class ValueSet extends BaseResource implements IResource { * Contacts of the publisher to assist a user in finding and communicating with the publisher *

*/ - public void setTelecom(List theValue) { + public void setTelecom(java.util.List theValue) { myTelecom = theValue; } @@ -724,8 +748,8 @@ public class ValueSet extends BaseResource implements IResource { * The date that the value set status was last changed *

*/ - public void setDateWithSecondsPrecision( Date theDate) { - myDate = new DateTimeDt(theDate); + public void setDate( Date theDate, TemporalPrecisionEnum thePrecision) { + myDate = new DateTimeDt(theDate, thePrecision); } /** @@ -736,8 +760,8 @@ public class ValueSet extends BaseResource implements IResource { * The date that the value set status was last changed *

*/ - public void setDate( Date theDate, TemporalPrecisionEnum thePrecision) { - myDate = new DateTimeDt(theDate, thePrecision); + public void setDateWithSecondsPrecision( Date theDate) { + myDate = new DateTimeDt(theDate); } @@ -871,13 +895,18 @@ public class ValueSet extends BaseResource implements IResource { shortDefinition="Concepts in the code system", formalDefinition="" ) - private List myConcept; + private java.util.List myConcept; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( mySystem, myVersion, myCaseSensitive, myConcept); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( mySystem, myVersion, myCaseSensitive, myConcept); + } + /** * Gets the value(s) for system (URI to identify the code system). @@ -1018,9 +1047,9 @@ public class ValueSet extends BaseResource implements IResource { * *

*/ - public List getConcept() { + public java.util.List getConcept() { if (myConcept == null) { - myConcept = new ArrayList(); + myConcept = new java.util.ArrayList(); } return myConcept; } @@ -1033,7 +1062,7 @@ public class ValueSet extends BaseResource implements IResource { * *

*/ - public void setConcept(List theValue) { + public void setConcept(java.util.List theValue) { myConcept = theValue; } @@ -1099,13 +1128,18 @@ public class ValueSet extends BaseResource implements IResource { shortDefinition="Child Concepts (is-a / contains)", formalDefinition="" ) - private List myConcept; + private java.util.List myConcept; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myCode, myAbstract, myDisplay, myDefinition, myConcept); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myCode, myAbstract, myDisplay, myDefinition, myConcept); + } + /** * Gets the value(s) for code (Code that identifies concept). @@ -1289,9 +1323,9 @@ public class ValueSet extends BaseResource implements IResource { * *

*/ - public List getConcept() { + public java.util.List getConcept() { if (myConcept == null) { - myConcept = new ArrayList(); + myConcept = new java.util.ArrayList(); } return myConcept; } @@ -1304,7 +1338,7 @@ public class ValueSet extends BaseResource implements IResource { * *

*/ - public void setConcept(List theValue) { + public void setConcept(java.util.List theValue) { myConcept = theValue; } @@ -1344,27 +1378,32 @@ public class ValueSet extends BaseResource implements IResource { shortDefinition="Import the contents of another value set", formalDefinition="Includes the contents of the referenced value set as a part of the contents of this value set" ) - private List myImport; + private java.util.List myImport; @Child(name="include", order=1, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Include one or more codes from a code system", formalDefinition="Include one or more codes from a code system" ) - private List myInclude; + private java.util.List myInclude; @Child(name="exclude", type=ComposeInclude.class, order=2, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Explicitly exclude codes", formalDefinition="Exclude one or more codes from the value set" ) - private List myExclude; + private java.util.List myExclude; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myImport, myInclude, myExclude); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myImport, myInclude, myExclude); + } + /** * Gets the value(s) for import (Import the contents of another value set). @@ -1376,9 +1415,9 @@ public class ValueSet extends BaseResource implements IResource { * Includes the contents of the referenced value set as a part of the contents of this value set *

*/ - public List getImport() { + public java.util.List getImport() { if (myImport == null) { - myImport = new ArrayList(); + myImport = new java.util.ArrayList(); } return myImport; } @@ -1391,7 +1430,7 @@ public class ValueSet extends BaseResource implements IResource { * Includes the contents of the referenced value set as a part of the contents of this value set *

*/ - public void setImport(List theValue) { + public void setImport(java.util.List theValue) { myImport = theValue; } @@ -1419,7 +1458,7 @@ public class ValueSet extends BaseResource implements IResource { */ public void addImport( String theUri) { if (myImport == null) { - myImport = new ArrayList(); + myImport = new java.util.ArrayList(); } myImport.add(new UriDt(theUri)); } @@ -1435,9 +1474,9 @@ public class ValueSet extends BaseResource implements IResource { * Include one or more codes from a code system *

*/ - public List getInclude() { + public java.util.List getInclude() { if (myInclude == null) { - myInclude = new ArrayList(); + myInclude = new java.util.ArrayList(); } return myInclude; } @@ -1450,7 +1489,7 @@ public class ValueSet extends BaseResource implements IResource { * Include one or more codes from a code system *

*/ - public void setInclude(List theValue) { + public void setInclude(java.util.List theValue) { myInclude = theValue; } @@ -1479,9 +1518,9 @@ public class ValueSet extends BaseResource implements IResource { * Exclude one or more codes from the value set *

*/ - public List getExclude() { + public java.util.List getExclude() { if (myExclude == null) { - myExclude = new ArrayList(); + myExclude = new java.util.ArrayList(); } return myExclude; } @@ -1494,7 +1533,7 @@ public class ValueSet extends BaseResource implements IResource { * Exclude one or more codes from the value set *

*/ - public void setExclude(List theValue) { + public void setExclude(java.util.List theValue) { myExclude = theValue; } @@ -1546,20 +1585,25 @@ public class ValueSet extends BaseResource implements IResource { shortDefinition="Code or concept from system", formalDefinition="Specifies a code or concept to be included or excluded. The list of codes is considered ordered, though the order may not have any particular significance" ) - private List myCode; + private java.util.List myCode; @Child(name="filter", order=3, min=0, max=Child.MAX_UNLIMITED) @Description( shortDefinition="Select codes/concepts by their properties (including relationships)", formalDefinition="Select concepts by specify a matching criteria based on the properties (including relationships) defined by the system. If multiple filters are specified, they SHALL all be true." ) - private List myFilter; + private java.util.List myFilter; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( mySystem, myVersion, myCode, myFilter); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( mySystem, myVersion, myCode, myFilter); + } + /** * Gets the value(s) for system (The system the codes come from). @@ -1657,9 +1701,9 @@ public class ValueSet extends BaseResource implements IResource { * Specifies a code or concept to be included or excluded. The list of codes is considered ordered, though the order may not have any particular significance *

*/ - public List getCode() { + public java.util.List getCode() { if (myCode == null) { - myCode = new ArrayList(); + myCode = new java.util.ArrayList(); } return myCode; } @@ -1672,7 +1716,7 @@ public class ValueSet extends BaseResource implements IResource { * Specifies a code or concept to be included or excluded. The list of codes is considered ordered, though the order may not have any particular significance *

*/ - public void setCode(List theValue) { + public void setCode(java.util.List theValue) { myCode = theValue; } @@ -1700,7 +1744,7 @@ public class ValueSet extends BaseResource implements IResource { */ public void addCode( String theCode) { if (myCode == null) { - myCode = new ArrayList(); + myCode = new java.util.ArrayList(); } myCode.add(new CodeDt(theCode)); } @@ -1716,9 +1760,9 @@ public class ValueSet extends BaseResource implements IResource { * Select concepts by specify a matching criteria based on the properties (including relationships) defined by the system. If multiple filters are specified, they SHALL all be true. *

*/ - public List getFilter() { + public java.util.List getFilter() { if (myFilter == null) { - myFilter = new ArrayList(); + myFilter = new java.util.ArrayList(); } return myFilter; } @@ -1731,7 +1775,7 @@ public class ValueSet extends BaseResource implements IResource { * Select concepts by specify a matching criteria based on the properties (including relationships) defined by the system. If multiple filters are specified, they SHALL all be true. *

*/ - public void setFilter(List theValue) { + public void setFilter(java.util.List theValue) { myFilter = theValue; } @@ -1790,6 +1834,11 @@ public class ValueSet extends BaseResource implements IResource { public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myProperty, myOp, myValue); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myProperty, myOp, myValue); + } + /** * Gets the value(s) for property (). @@ -1956,13 +2005,18 @@ public class ValueSet extends BaseResource implements IResource { shortDefinition="Codes in the value set", formalDefinition="" ) - private List myContains; + private java.util.List myContains; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myIdentifier, myTimestamp, myContains); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier, myTimestamp, myContains); + } + /** * Gets the value(s) for identifier (Uniquely identifies this expansion). @@ -2033,8 +2087,8 @@ public class ValueSet extends BaseResource implements IResource { * *

*/ - public void setTimestampWithMillisPrecision( Date theDate) { - myTimestamp = new InstantDt(theDate); + public void setTimestamp( Date theDate, TemporalPrecisionEnum thePrecision) { + myTimestamp = new InstantDt(theDate, thePrecision); } /** @@ -2045,8 +2099,8 @@ public class ValueSet extends BaseResource implements IResource { * *

*/ - public void setTimestamp( Date theDate, TemporalPrecisionEnum thePrecision) { - myTimestamp = new InstantDt(theDate, thePrecision); + public void setTimestampWithMillisPrecision( Date theDate) { + myTimestamp = new InstantDt(theDate); } @@ -2060,9 +2114,9 @@ public class ValueSet extends BaseResource implements IResource { * *

*/ - public List getContains() { + public java.util.List getContains() { if (myContains == null) { - myContains = new ArrayList(); + myContains = new java.util.ArrayList(); } return myContains; } @@ -2075,7 +2129,7 @@ public class ValueSet extends BaseResource implements IResource { * *

*/ - public void setContains(List theValue) { + public void setContains(java.util.List theValue) { myContains = theValue; } @@ -2134,13 +2188,18 @@ public class ValueSet extends BaseResource implements IResource { shortDefinition="Codes contained in this concept", formalDefinition="" ) - private List myContains; + private java.util.List myContains; @Override public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( mySystem, myCode, myDisplay, myContains); } + + public java.util.List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( mySystem, myCode, myDisplay, myContains); + } + /** * Gets the value(s) for system (System value for the code). @@ -2281,9 +2340,9 @@ public class ValueSet extends BaseResource implements IResource { * *

*/ - public List getContains() { + public java.util.List getContains() { if (myContains == null) { - myContains = new ArrayList(); + myContains = new java.util.ArrayList(); } return myContains; } @@ -2296,7 +2355,7 @@ public class ValueSet extends BaseResource implements IResource { * *

*/ - public void setContains(List theValue) { + public void setContains(java.util.List theValue) { myContains = theValue; } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AddressUseEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AddressUseEnum.java index 8e7af0aba04..0834efea35f 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AddressUseEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AddressUseEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum AddressUseEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AdministrativeGenderCodesEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AdministrativeGenderCodesEnum.java index 9080c017d06..fc3bef06312 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AdministrativeGenderCodesEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AdministrativeGenderCodesEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum AdministrativeGenderCodesEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AdmitSourceEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AdmitSourceEnum.java new file mode 100644 index 00000000000..86f29801d5f --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AdmitSourceEnum.java @@ -0,0 +1,163 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum AdmitSourceEnum { + + /** + * Display: Transferred from other hospital
+ * Code Value: hosp-trans + */ + TRANSFERRED_FROM_OTHER_HOSPITAL("hosp-trans", "http://hl7.org/fhir/admit-source"), + + /** + * Display: From accident/emergency department
+ * Code Value: emd + */ + FROM_ACCIDENT_EMERGENCY_DEPARTMENT("emd", "http://hl7.org/fhir/admit-source"), + + /** + * Display: From outpatient department
+ * Code Value: outp + */ + FROM_OUTPATIENT_DEPARTMENT("outp", "http://hl7.org/fhir/admit-source"), + + /** + * Display: Born in hospital
+ * Code Value: born + */ + BORN_IN_HOSPITAL("born", "http://hl7.org/fhir/admit-source"), + + /** + * Display: General Practitioner referral
+ * Code Value: gp + */ + GENERAL_PRACTITIONER_REFERRAL("gp", "http://hl7.org/fhir/admit-source"), + + /** + * Display: Medical Practitioner/physician referral
+ * Code Value: mp + */ + MEDICAL_PRACTITIONER_PHYSICIAN_REFERRAL("mp", "http://hl7.org/fhir/admit-source"), + + /** + * Display: From nursing home
+ * Code Value: nursing + */ + FROM_NURSING_HOME("nursing", "http://hl7.org/fhir/admit-source"), + + /** + * Display: From psychiatric hospital
+ * Code Value: psych + */ + FROM_PSYCHIATRIC_HOSPITAL("psych", "http://hl7.org/fhir/admit-source"), + + /** + * Display: From rehabilitation facility
+ * Code Value: rehab + */ + FROM_REHABILITATION_FACILITY("rehab", "http://hl7.org/fhir/admit-source"), + + /** + * Display: Other
+ * Code Value: other + */ + OTHER("other", "http://hl7.org/fhir/admit-source"), + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/encounter-admit-source + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/encounter-admit-source"; + + /** + * Name for this Value Set: + * AdmitSource + */ + public static final String VALUESET_NAME = "AdmitSource"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (AdmitSourceEnum next : AdmitSourceEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public AdmitSourceEnum forCode(String theCode) { + AdmitSourceEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(AdmitSourceEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(AdmitSourceEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public AdmitSourceEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public AdmitSourceEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + AdmitSourceEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AggregationModeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AggregationModeEnum.java index 60d0a0d6bb4..64b208d74db 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AggregationModeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AggregationModeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum AggregationModeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AnimalSpeciesEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AnimalSpeciesEnum.java index 75dc85669f5..0740810ba43 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AnimalSpeciesEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/AnimalSpeciesEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum AnimalSpeciesEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/BindingConformanceEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/BindingConformanceEnum.java index f8f7dd220ab..9128cb487b3 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/BindingConformanceEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/BindingConformanceEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum BindingConformanceEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ConformanceEventModeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ConformanceEventModeEnum.java index 40cfac3382e..6ead45fbbf4 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ConformanceEventModeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ConformanceEventModeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum ConformanceEventModeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ConformanceStatementStatusEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ConformanceStatementStatusEnum.java index bba1cda2887..5fdddf75797 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ConformanceStatementStatusEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ConformanceStatementStatusEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum ConformanceStatementStatusEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ConstraintSeverityEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ConstraintSeverityEnum.java index 4dae5072625..077dd54c2df 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ConstraintSeverityEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ConstraintSeverityEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum ConstraintSeverityEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ContactSystemEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ContactSystemEnum.java index eb09b1d6f61..0bedabfba0a 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ContactSystemEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ContactSystemEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum ContactSystemEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ContactUseEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ContactUseEnum.java index 8ccb4c42632..f59a28e331f 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ContactUseEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ContactUseEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum ContactUseEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DataTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DataTypeEnum.java index b53c53d1e79..4ef67d9de00 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DataTypeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DataTypeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum DataTypeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DiagnosticOrderPriorityEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DiagnosticOrderPriorityEnum.java new file mode 100644 index 00000000000..d53c7028f5a --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DiagnosticOrderPriorityEnum.java @@ -0,0 +1,135 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum DiagnosticOrderPriorityEnum { + + /** + * Display: Routine
+ * Code Value: routine + * + * The order has a normal priority. + */ + ROUTINE("routine", "http://hl7.org/fhir/diagnostic-order-priority"), + + /** + * Display: Urgent
+ * Code Value: urgent + * + * The order should be urgently. + */ + URGENT("urgent", "http://hl7.org/fhir/diagnostic-order-priority"), + + /** + * Display: Stat
+ * Code Value: stat + * + * The order is time-critical. + */ + STAT("stat", "http://hl7.org/fhir/diagnostic-order-priority"), + + /** + * Display: ASAP
+ * Code Value: asap + * + * The order should be acted on as soon as possible. + */ + ASAP("asap", "http://hl7.org/fhir/diagnostic-order-priority"), + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/diagnostic-order-priority + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/diagnostic-order-priority"; + + /** + * Name for this Value Set: + * DiagnosticOrderPriority + */ + public static final String VALUESET_NAME = "DiagnosticOrderPriority"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (DiagnosticOrderPriorityEnum next : DiagnosticOrderPriorityEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public DiagnosticOrderPriorityEnum forCode(String theCode) { + DiagnosticOrderPriorityEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(DiagnosticOrderPriorityEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(DiagnosticOrderPriorityEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public DiagnosticOrderPriorityEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public DiagnosticOrderPriorityEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + DiagnosticOrderPriorityEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DiagnosticOrderStatusEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DiagnosticOrderStatusEnum.java new file mode 100644 index 00000000000..a3dbc077753 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DiagnosticOrderStatusEnum.java @@ -0,0 +1,166 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum DiagnosticOrderStatusEnum { + + /** + * Code Value: requested + * + * The request has been placed. + */ + REQUESTED("requested", "http://hl7.org/fhir/diagnostic-order-status"), + + /** + * Code Value: received + * + * The receiving system has received the order, but not yet decided whether it will be performed. + */ + RECEIVED("received", "http://hl7.org/fhir/diagnostic-order-status"), + + /** + * Code Value: accepted + * + * The receiving system has accepted the order, but work has not yet commenced. + */ + ACCEPTED("accepted", "http://hl7.org/fhir/diagnostic-order-status"), + + /** + * Code Value: in progress + * + * The work to fulfill the order is happening. + */ + IN_PROGRESS("in progress", "http://hl7.org/fhir/diagnostic-order-status"), + + /** + * Code Value: review + * + * The work is complete, and the outcomes are being reviewed for approval. + */ + REVIEW("review", "http://hl7.org/fhir/diagnostic-order-status"), + + /** + * Code Value: completed + * + * The work has been complete, the report(s) released, and no further work is planned. + */ + COMPLETED("completed", "http://hl7.org/fhir/diagnostic-order-status"), + + /** + * Code Value: suspended + * + * The request has been held by originating system/user request. + */ + SUSPENDED("suspended", "http://hl7.org/fhir/diagnostic-order-status"), + + /** + * Code Value: rejected + * + * The receiving system has declined to fulfill the request. + */ + REJECTED("rejected", "http://hl7.org/fhir/diagnostic-order-status"), + + /** + * Code Value: failed + * + * The diagnostic investigation was attempted, but due to some procedural error, it could not be completed. + */ + FAILED("failed", "http://hl7.org/fhir/diagnostic-order-status"), + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/diagnostic-order-status + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/diagnostic-order-status"; + + /** + * Name for this Value Set: + * DiagnosticOrderStatus + */ + public static final String VALUESET_NAME = "DiagnosticOrderStatus"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (DiagnosticOrderStatusEnum next : DiagnosticOrderStatusEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public DiagnosticOrderStatusEnum forCode(String theCode) { + DiagnosticOrderStatusEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(DiagnosticOrderStatusEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(DiagnosticOrderStatusEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public DiagnosticOrderStatusEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public DiagnosticOrderStatusEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + DiagnosticOrderStatusEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DiagnosticReportStatusEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DiagnosticReportStatusEnum.java new file mode 100644 index 00000000000..4bb7463eec2 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DiagnosticReportStatusEnum.java @@ -0,0 +1,159 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum DiagnosticReportStatusEnum { + + /** + * Code Value: registered + * + * The existence of the report is registered, but there is nothing yet available. + */ + REGISTERED("registered", "http://hl7.org/fhir/diagnostic-report-status"), + + /** + * Code Value: partial + * + * This is a partial (e.g. initial, interim or preliminary) report: data in the report may be incomplete or unverified. + */ + PARTIAL("partial", "http://hl7.org/fhir/diagnostic-report-status"), + + /** + * Code Value: final + * + * The report is complete and verified by an authorized person. + */ + FINAL("final", "http://hl7.org/fhir/diagnostic-report-status"), + + /** + * Code Value: corrected + * + * The report has been modified subsequent to being Final, and is complete and verified by an authorized person. + */ + CORRECTED("corrected", "http://hl7.org/fhir/diagnostic-report-status"), + + /** + * Code Value: amended + * + * The report has been modified subsequent to being Final, and is complete and verified by an authorized person, and data has been changed. + */ + AMENDED("amended", "http://hl7.org/fhir/diagnostic-report-status"), + + /** + * Code Value: appended + * + * The report has been modified subsequent to being Final, and is complete and verified by an authorized person. New content has been added, but existing content hasn't changed. + */ + APPENDED("appended", "http://hl7.org/fhir/diagnostic-report-status"), + + /** + * Code Value: cancelled + * + * The report is unavailable because the measurement was not started or not completed (also sometimes called "aborted"). + */ + CANCELLED("cancelled", "http://hl7.org/fhir/diagnostic-report-status"), + + /** + * Code Value: entered in error + * + * The report has been withdrawn following previous Final release. + */ + ENTERED_IN_ERROR("entered in error", "http://hl7.org/fhir/diagnostic-report-status"), + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/diagnostic-report-status + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/diagnostic-report-status"; + + /** + * Name for this Value Set: + * DiagnosticReportStatus + */ + public static final String VALUESET_NAME = "DiagnosticReportStatus"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (DiagnosticReportStatusEnum next : DiagnosticReportStatusEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public DiagnosticReportStatusEnum forCode(String theCode) { + DiagnosticReportStatusEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(DiagnosticReportStatusEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(DiagnosticReportStatusEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public DiagnosticReportStatusEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public DiagnosticReportStatusEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + DiagnosticReportStatusEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DocumentModeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DocumentModeEnum.java index e88daa8965a..fb5fd1b334d 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DocumentModeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/DocumentModeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum DocumentModeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterClassEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterClassEnum.java new file mode 100644 index 00000000000..4e52815649b --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterClassEnum.java @@ -0,0 +1,159 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum EncounterClassEnum { + + /** + * Code Value: inpatient + * + * An encounter during which the patient is hospitalized and stays overnight. + */ + INPATIENT("inpatient", "http://hl7.org/fhir/encounter-class"), + + /** + * Code Value: outpatient + * + * An encounter during which the patient is not hospitalized overnight. + */ + OUTPATIENT("outpatient", "http://hl7.org/fhir/encounter-class"), + + /** + * Code Value: ambulatory + * + * An encounter where the patient visits the practitioner in his/her office, e.g. a G.P. visit. + */ + AMBULATORY("ambulatory", "http://hl7.org/fhir/encounter-class"), + + /** + * Code Value: emergency + * + * An encounter where the patient needs urgent care. + */ + EMERGENCY("emergency", "http://hl7.org/fhir/encounter-class"), + + /** + * Code Value: home + * + * An encounter where the practitioner visits the patient at his/her home. + */ + HOME("home", "http://hl7.org/fhir/encounter-class"), + + /** + * Code Value: field + * + * An encounter taking place outside the regular environment for giving care. + */ + FIELD("field", "http://hl7.org/fhir/encounter-class"), + + /** + * Code Value: daytime + * + * An encounter where the patient needs more prolonged treatment or investigations than outpatients, but who do not need to stay in the hospital overnight. + */ + DAYTIME("daytime", "http://hl7.org/fhir/encounter-class"), + + /** + * Code Value: virtual + * + * An encounter that takes place where the patient and practitioner do not physically meet but use electronic means for contact. + */ + VIRTUAL("virtual", "http://hl7.org/fhir/encounter-class"), + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/encounter-class + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/encounter-class"; + + /** + * Name for this Value Set: + * EncounterClass + */ + public static final String VALUESET_NAME = "EncounterClass"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (EncounterClassEnum next : EncounterClassEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public EncounterClassEnum forCode(String theCode) { + EncounterClassEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(EncounterClassEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(EncounterClassEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public EncounterClassEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public EncounterClassEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + EncounterClassEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterReasonCodesEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterReasonCodesEnum.java new file mode 100644 index 00000000000..8ab5bc911cc --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterReasonCodesEnum.java @@ -0,0 +1,103 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum EncounterReasonCodesEnum { + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/encounter-reason + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/encounter-reason"; + + /** + * Name for this Value Set: + * Encounter Reason Codes + */ + public static final String VALUESET_NAME = "Encounter Reason Codes"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (EncounterReasonCodesEnum next : EncounterReasonCodesEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public EncounterReasonCodesEnum forCode(String theCode) { + EncounterReasonCodesEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(EncounterReasonCodesEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(EncounterReasonCodesEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public EncounterReasonCodesEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public EncounterReasonCodesEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + EncounterReasonCodesEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterStateEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterStateEnum.java new file mode 100644 index 00000000000..fe6f0a1a450 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterStateEnum.java @@ -0,0 +1,138 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum EncounterStateEnum { + + /** + * Code Value: planned + * + * The Encounter has not yet started. + */ + PLANNED("planned", "http://hl7.org/fhir/encounter-state"), + + /** + * Code Value: in progress + * + * The Encounter has begun and the patient is present / the practitioner and the patient are meeting. + */ + IN_PROGRESS("in progress", "http://hl7.org/fhir/encounter-state"), + + /** + * Code Value: onleave + * + * The Encounter has begun, but the patient is temporarily on leave. + */ + ONLEAVE("onleave", "http://hl7.org/fhir/encounter-state"), + + /** + * Code Value: finished + * + * The Encounter has ended. + */ + FINISHED("finished", "http://hl7.org/fhir/encounter-state"), + + /** + * Code Value: cancelled + * + * The Encounter has ended before it has begun. + */ + CANCELLED("cancelled", "http://hl7.org/fhir/encounter-state"), + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/encounter-state + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/encounter-state"; + + /** + * Name for this Value Set: + * EncounterState + */ + public static final String VALUESET_NAME = "EncounterState"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (EncounterStateEnum next : EncounterStateEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public EncounterStateEnum forCode(String theCode) { + EncounterStateEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(EncounterStateEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(EncounterStateEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public EncounterStateEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public EncounterStateEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + EncounterStateEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterTypeEnum.java new file mode 100644 index 00000000000..eb70fb3d125 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EncounterTypeEnum.java @@ -0,0 +1,127 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum EncounterTypeEnum { + + /** + * Display: Annual diabetes mellitus screening
+ * Code Value: ADMS + */ + ANNUAL_DIABETES_MELLITUS_SCREENING("ADMS", "http://hl7.org/fhir/encounter-type"), + + /** + * Display: Bone drilling/bone marrow punction in clinic
+ * Code Value: BD/BM-clin + */ + BONE_DRILLING_BONE_MARROW_PUNCTION_IN_CLINIC("BD/BM-clin", "http://hl7.org/fhir/encounter-type"), + + /** + * Display: Infant colon screening - 60 minutes
+ * Code Value: CCS60 + */ + INFANT_COLON_SCREENING___60_MINUTES("CCS60", "http://hl7.org/fhir/encounter-type"), + + /** + * Display: Outpatient Kenacort injection
+ * Code Value: OKI + */ + OUTPATIENT_KENACORT_INJECTION("OKI", "http://hl7.org/fhir/encounter-type"), + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/encounter-type + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/encounter-type"; + + /** + * Name for this Value Set: + * EncounterType + */ + public static final String VALUESET_NAME = "EncounterType"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (EncounterTypeEnum next : EncounterTypeEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public EncounterTypeEnum forCode(String theCode) { + EncounterTypeEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(EncounterTypeEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(EncounterTypeEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public EncounterTypeEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public EncounterTypeEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + EncounterTypeEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EventTimingEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EventTimingEnum.java index 422ea762ea6..95fbd017cf4 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EventTimingEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/EventTimingEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum EventTimingEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ExtensionContextEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ExtensionContextEnum.java index d305d45efa9..7dfd5430776 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ExtensionContextEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ExtensionContextEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum ExtensionContextEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/FHIRDefinedTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/FHIRDefinedTypeEnum.java index 78e5a82b1e1..af1537a7835 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/FHIRDefinedTypeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/FHIRDefinedTypeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum FHIRDefinedTypeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/FilterOperatorEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/FilterOperatorEnum.java index 2b4cf2f4967..415fdf9fca3 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/FilterOperatorEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/FilterOperatorEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum FilterOperatorEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/GroupTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/GroupTypeEnum.java index bef28a9632b..4865bb27967 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/GroupTypeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/GroupTypeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum GroupTypeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/HierarchicalRelationshipTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/HierarchicalRelationshipTypeEnum.java index 8168a3f69e7..7a54c31f335 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/HierarchicalRelationshipTypeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/HierarchicalRelationshipTypeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum HierarchicalRelationshipTypeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/IdentifierUseEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/IdentifierUseEnum.java index 86fb510814f..cb730f54b38 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/IdentifierUseEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/IdentifierUseEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum IdentifierUseEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ImagingModalityEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ImagingModalityEnum.java new file mode 100644 index 00000000000..fb2368b86a2 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ImagingModalityEnum.java @@ -0,0 +1,283 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum ImagingModalityEnum { + + /** + * Code Value: AR + */ + AR("AR", "http://nema.org/dicom/dcid"), + + /** + * Code Value: BMD + */ + BMD("BMD", "http://nema.org/dicom/dcid"), + + /** + * Code Value: BDUS + */ + BDUS("BDUS", "http://nema.org/dicom/dcid"), + + /** + * Code Value: EPS + */ + EPS("EPS", "http://nema.org/dicom/dcid"), + + /** + * Code Value: CR + */ + CR("CR", "http://nema.org/dicom/dcid"), + + /** + * Code Value: CT + */ + CT("CT", "http://nema.org/dicom/dcid"), + + /** + * Code Value: DX + */ + DX("DX", "http://nema.org/dicom/dcid"), + + /** + * Code Value: ECG + */ + ECG("ECG", "http://nema.org/dicom/dcid"), + + /** + * Code Value: ES + */ + ES("ES", "http://nema.org/dicom/dcid"), + + /** + * Code Value: XC + */ + XC("XC", "http://nema.org/dicom/dcid"), + + /** + * Code Value: GM + */ + GM("GM", "http://nema.org/dicom/dcid"), + + /** + * Code Value: HD + */ + HD("HD", "http://nema.org/dicom/dcid"), + + /** + * Code Value: IO + */ + IO("IO", "http://nema.org/dicom/dcid"), + + /** + * Code Value: IVOCT + */ + IVOCT("IVOCT", "http://nema.org/dicom/dcid"), + + /** + * Code Value: IVUS + */ + IVUS("IVUS", "http://nema.org/dicom/dcid"), + + /** + * Code Value: KER + */ + KER("KER", "http://nema.org/dicom/dcid"), + + /** + * Code Value: LEN + */ + LEN("LEN", "http://nema.org/dicom/dcid"), + + /** + * Code Value: MR + */ + MR("MR", "http://nema.org/dicom/dcid"), + + /** + * Code Value: MG + */ + MG("MG", "http://nema.org/dicom/dcid"), + + /** + * Code Value: NM + */ + NM("NM", "http://nema.org/dicom/dcid"), + + /** + * Code Value: OAM + */ + OAM("OAM", "http://nema.org/dicom/dcid"), + + /** + * Code Value: OCT + */ + OCT("OCT", "http://nema.org/dicom/dcid"), + + /** + * Code Value: OPM + */ + OPM("OPM", "http://nema.org/dicom/dcid"), + + /** + * Code Value: OP + */ + OP("OP", "http://nema.org/dicom/dcid"), + + /** + * Code Value: OPR + */ + OPR("OPR", "http://nema.org/dicom/dcid"), + + /** + * Code Value: OPT + */ + OPT("OPT", "http://nema.org/dicom/dcid"), + + /** + * Code Value: OPV + */ + OPV("OPV", "http://nema.org/dicom/dcid"), + + /** + * Code Value: PX + */ + PX("PX", "http://nema.org/dicom/dcid"), + + /** + * Code Value: PT + */ + PT("PT", "http://nema.org/dicom/dcid"), + + /** + * Code Value: RF + */ + RF("RF", "http://nema.org/dicom/dcid"), + + /** + * Code Value: RG + */ + RG("RG", "http://nema.org/dicom/dcid"), + + /** + * Code Value: SM + */ + SM("SM", "http://nema.org/dicom/dcid"), + + /** + * Code Value: SRF + */ + SRF("SRF", "http://nema.org/dicom/dcid"), + + /** + * Code Value: US + */ + US("US", "http://nema.org/dicom/dcid"), + + /** + * Code Value: VA + */ + VA("VA", "http://nema.org/dicom/dcid"), + + /** + * Code Value: XA + */ + XA("XA", "http://nema.org/dicom/dcid"), + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/imaging-modality + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/imaging-modality"; + + /** + * Name for this Value Set: + * ImagingModality + */ + public static final String VALUESET_NAME = "ImagingModality"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (ImagingModalityEnum next : ImagingModalityEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public ImagingModalityEnum forCode(String theCode) { + ImagingModalityEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(ImagingModalityEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(ImagingModalityEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public ImagingModalityEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public ImagingModalityEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + ImagingModalityEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/InstanceAvailabilityEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/InstanceAvailabilityEnum.java new file mode 100644 index 00000000000..5b8579c9ded --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/InstanceAvailabilityEnum.java @@ -0,0 +1,123 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum InstanceAvailabilityEnum { + + /** + * Code Value: ONLINE + */ + ONLINE("ONLINE", "http://nema.org/dicom/dcid"), + + /** + * Code Value: OFFLINE + */ + OFFLINE("OFFLINE", "http://nema.org/dicom/dcid"), + + /** + * Code Value: NEARLINE + */ + NEARLINE("NEARLINE", "http://nema.org/dicom/dcid"), + + /** + * Code Value: UNAVAILABLE + */ + UNAVAILABLE("UNAVAILABLE", "http://nema.org/dicom/dcid"), + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/instance-availability + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/instance-availability"; + + /** + * Name for this Value Set: + * InstanceAvailability + */ + public static final String VALUESET_NAME = "InstanceAvailability"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (InstanceAvailabilityEnum next : InstanceAvailabilityEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public InstanceAvailabilityEnum forCode(String theCode) { + InstanceAvailabilityEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(InstanceAvailabilityEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(InstanceAvailabilityEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public InstanceAvailabilityEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public InstanceAvailabilityEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + InstanceAvailabilityEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LinkTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LinkTypeEnum.java index 1df57d15599..58b5f80b3b3 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LinkTypeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LinkTypeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum LinkTypeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LocationModeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LocationModeEnum.java index 3e1535b47b0..fe6e00442bd 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LocationModeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LocationModeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum LocationModeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LocationStatusEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LocationStatusEnum.java index 9b245f0d755..36392e12c30 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LocationStatusEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LocationStatusEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum LocationStatusEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LocationTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LocationTypeEnum.java index 43da18f818f..32e1a356b38 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LocationTypeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/LocationTypeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum LocationTypeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MaritalStatusCodesEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MaritalStatusCodesEnum.java index 2729305d903..7a503e89fb2 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MaritalStatusCodesEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MaritalStatusCodesEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum MaritalStatusCodesEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MediaTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MediaTypeEnum.java new file mode 100644 index 00000000000..bb045f98431 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MediaTypeEnum.java @@ -0,0 +1,124 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum MediaTypeEnum { + + /** + * Code Value: photo + * + * The media consists of one or more unmoving images, including photographs, computer-generated graphs and charts, and scanned documents. + */ + PHOTO("photo", "http://hl7.org/fhir/media-type"), + + /** + * Code Value: video + * + * The media consists of a series of frames that capture a moving image. + */ + VIDEO("video", "http://hl7.org/fhir/media-type"), + + /** + * Code Value: audio + * + * The media consists of a sound recording. + */ + AUDIO("audio", "http://hl7.org/fhir/media-type"), + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/media-type + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/media-type"; + + /** + * Name for this Value Set: + * MediaType + */ + public static final String VALUESET_NAME = "MediaType"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (MediaTypeEnum next : MediaTypeEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public MediaTypeEnum forCode(String theCode) { + MediaTypeEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(MediaTypeEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(MediaTypeEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public MediaTypeEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public MediaTypeEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + MediaTypeEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MedicationKindEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MedicationKindEnum.java index 883793555dc..a3595d62ab3 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MedicationKindEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MedicationKindEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum MedicationKindEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MessageEventEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MessageEventEnum.java new file mode 100644 index 00000000000..8f77d5c7373 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MessageEventEnum.java @@ -0,0 +1,180 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum MessageEventEnum { + + /** + * Code Value: MedicationAdministration-Complete + * + * Change the status of a Medication Administration to show that it is complete. + */ + MEDICATIONADMINISTRATION_COMPLETE("MedicationAdministration-Complete", "http://hl7.org/fhir/message-events"), + + /** + * Code Value: MedicationAdministration-Nullification + * + * Someone wishes to record that the record of administration of a medication is in error and should be ignored. + */ + MEDICATIONADMINISTRATION_NULLIFICATION("MedicationAdministration-Nullification", "http://hl7.org/fhir/message-events"), + + /** + * Code Value: MedicationAdministration-Recording + * + * Indicates that a medication has been recorded against the patient's record. + */ + MEDICATIONADMINISTRATION_RECORDING("MedicationAdministration-Recording", "http://hl7.org/fhir/message-events"), + + /** + * Code Value: MedicationAdministration-Update + * + * Update a Medication Administration record. + */ + MEDICATIONADMINISTRATION_UPDATE("MedicationAdministration-Update", "http://hl7.org/fhir/message-events"), + + /** + * Code Value: admin-notify + * + * Notification that a patient or other administrative resource as been created or updated. + */ + ADMIN_NOTIFY("admin-notify", "http://hl7.org/fhir/message-events"), + + /** + * Code Value: diagnosticreport-provide + * + * Provide a diagnostic report, or update a previously provided diagnostic report. + */ + DIAGNOSTICREPORT_PROVIDE("diagnosticreport-provide", "http://hl7.org/fhir/message-events"), + + /** + * Code Value: observation-provide + * + * Provide a simple observation or update a previously provided simple observation. + */ + OBSERVATION_PROVIDE("observation-provide", "http://hl7.org/fhir/message-events"), + + /** + * Code Value: patient-link + * + * Notification that two patient records actually identify the same patient. + */ + PATIENT_LINK("patient-link", "http://hl7.org/fhir/message-events"), + + /** + * Code Value: patient-unlink + * + * Notification that previous advice that two patient records concern the same patient is now considered incorrect. + */ + PATIENT_UNLINK("patient-unlink", "http://hl7.org/fhir/message-events"), + + /** + * Code Value: query + * + * Request to perform a query according to the attached query resource. + */ + QUERY("query", "http://hl7.org/fhir/message-events"), + + /** + * Code Value: query-response + * + * Response with the result of processing the query. + */ + QUERY_RESPONSE("query-response", "http://hl7.org/fhir/message-events"), + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/message-events + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/message-events"; + + /** + * Name for this Value Set: + * MessageEvent + */ + public static final String VALUESET_NAME = "MessageEvent"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (MessageEventEnum next : MessageEventEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public MessageEventEnum forCode(String theCode) { + MessageEventEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(MessageEventEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(MessageEventEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public MessageEventEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public MessageEventEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + MessageEventEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MessageSignificanceCategoryEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MessageSignificanceCategoryEnum.java index 5c91d621019..e257e23d8ab 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MessageSignificanceCategoryEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MessageSignificanceCategoryEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum MessageSignificanceCategoryEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MessageTransportEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MessageTransportEnum.java new file mode 100644 index 00000000000..1fcee4235ee --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/MessageTransportEnum.java @@ -0,0 +1,124 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum MessageTransportEnum { + + /** + * Code Value: http + * + * The application sends or receives messages using HTTP POST (may be over http or https). + */ + HTTP("http", "http://hl7.org/fhir/message-transport"), + + /** + * Code Value: ftp + * + * The application sends or receives messages using File Transfer Protocol. + */ + FTP("ftp", "http://hl7.org/fhir/message-transport"), + + /** + * Code Value: mllp + * + * The application sends or receivers messages using HL7's Minimal Lower Level Protocol. + */ + MLLP("mllp", "http://hl7.org/fhir/message-transport"), + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/message-transport + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/message-transport"; + + /** + * Name for this Value Set: + * MessageTransport + */ + public static final String VALUESET_NAME = "MessageTransport"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (MessageTransportEnum next : MessageTransportEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public MessageTransportEnum forCode(String theCode) { + MessageTransportEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(MessageTransportEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(MessageTransportEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public MessageTransportEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public MessageTransportEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + MessageTransportEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ModalityEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ModalityEnum.java new file mode 100644 index 00000000000..5b0d4adff18 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ModalityEnum.java @@ -0,0 +1,368 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum ModalityEnum { + + /** + * Code Value: AR + */ + AR("AR", "http://nema.org/dicom/dcid"), + + /** + * Code Value: AU + */ + AU("AU", "http://nema.org/dicom/dcid"), + + /** + * Code Value: BDUS + */ + BDUS("BDUS", "http://nema.org/dicom/dcid"), + + /** + * Code Value: BI + */ + BI("BI", "http://nema.org/dicom/dcid"), + + /** + * Code Value: BMD + */ + BMD("BMD", "http://nema.org/dicom/dcid"), + + /** + * Code Value: CR + */ + CR("CR", "http://nema.org/dicom/dcid"), + + /** + * Code Value: CT + */ + CT("CT", "http://nema.org/dicom/dcid"), + + /** + * Code Value: DG + */ + DG("DG", "http://nema.org/dicom/dcid"), + + /** + * Code Value: DX + */ + DX("DX", "http://nema.org/dicom/dcid"), + + /** + * Code Value: ECG + */ + ECG("ECG", "http://nema.org/dicom/dcid"), + + /** + * Code Value: EPS + */ + EPS("EPS", "http://nema.org/dicom/dcid"), + + /** + * Code Value: ES + */ + ES("ES", "http://nema.org/dicom/dcid"), + + /** + * Code Value: GM + */ + GM("GM", "http://nema.org/dicom/dcid"), + + /** + * Code Value: HC + */ + HC("HC", "http://nema.org/dicom/dcid"), + + /** + * Code Value: HD + */ + HD("HD", "http://nema.org/dicom/dcid"), + + /** + * Code Value: IO + */ + IO("IO", "http://nema.org/dicom/dcid"), + + /** + * Code Value: IVOCT + */ + IVOCT("IVOCT", "http://nema.org/dicom/dcid"), + + /** + * Code Value: IVUS + */ + IVUS("IVUS", "http://nema.org/dicom/dcid"), + + /** + * Code Value: KER + */ + KER("KER", "http://nema.org/dicom/dcid"), + + /** + * Code Value: KO + */ + KO("KO", "http://nema.org/dicom/dcid"), + + /** + * Code Value: LEN + */ + LEN("LEN", "http://nema.org/dicom/dcid"), + + /** + * Code Value: LS + */ + LS("LS", "http://nema.org/dicom/dcid"), + + /** + * Code Value: MG + */ + MG("MG", "http://nema.org/dicom/dcid"), + + /** + * Code Value: MR + */ + MR("MR", "http://nema.org/dicom/dcid"), + + /** + * Code Value: NM + */ + NM("NM", "http://nema.org/dicom/dcid"), + + /** + * Code Value: OAM + */ + OAM("OAM", "http://nema.org/dicom/dcid"), + + /** + * Code Value: OCT + */ + OCT("OCT", "http://nema.org/dicom/dcid"), + + /** + * Code Value: OP + */ + OP("OP", "http://nema.org/dicom/dcid"), + + /** + * Code Value: OPM + */ + OPM("OPM", "http://nema.org/dicom/dcid"), + + /** + * Code Value: OPT + */ + OPT("OPT", "http://nema.org/dicom/dcid"), + + /** + * Code Value: OPV + */ + OPV("OPV", "http://nema.org/dicom/dcid"), + + /** + * Code Value: OT + */ + OT("OT", "http://nema.org/dicom/dcid"), + + /** + * Code Value: PR + */ + PR("PR", "http://nema.org/dicom/dcid"), + + /** + * Code Value: PT + */ + PT("PT", "http://nema.org/dicom/dcid"), + + /** + * Code Value: PX + */ + PX("PX", "http://nema.org/dicom/dcid"), + + /** + * Code Value: REG + */ + REG("REG", "http://nema.org/dicom/dcid"), + + /** + * Code Value: RF + */ + RF("RF", "http://nema.org/dicom/dcid"), + + /** + * Code Value: RG + */ + RG("RG", "http://nema.org/dicom/dcid"), + + /** + * Code Value: RTDOSE + */ + RTDOSE("RTDOSE", "http://nema.org/dicom/dcid"), + + /** + * Code Value: RTIMAGE + */ + RTIMAGE("RTIMAGE", "http://nema.org/dicom/dcid"), + + /** + * Code Value: RTPLAN + */ + RTPLAN("RTPLAN", "http://nema.org/dicom/dcid"), + + /** + * Code Value: RTRECORD + */ + RTRECORD("RTRECORD", "http://nema.org/dicom/dcid"), + + /** + * Code Value: RTSTRUCT + */ + RTSTRUCT("RTSTRUCT", "http://nema.org/dicom/dcid"), + + /** + * Code Value: SEG + */ + SEG("SEG", "http://nema.org/dicom/dcid"), + + /** + * Code Value: SM + */ + SM("SM", "http://nema.org/dicom/dcid"), + + /** + * Code Value: SMR + */ + SMR("SMR", "http://nema.org/dicom/dcid"), + + /** + * Code Value: SR + */ + SR("SR", "http://nema.org/dicom/dcid"), + + /** + * Code Value: SRF + */ + SRF("SRF", "http://nema.org/dicom/dcid"), + + /** + * Code Value: TG + */ + TG("TG", "http://nema.org/dicom/dcid"), + + /** + * Code Value: US + */ + US("US", "http://nema.org/dicom/dcid"), + + /** + * Code Value: VA + */ + VA("VA", "http://nema.org/dicom/dcid"), + + /** + * Code Value: XA + */ + XA("XA", "http://nema.org/dicom/dcid"), + + /** + * Code Value: XC + */ + XC("XC", "http://nema.org/dicom/dcid"), + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/modality + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/modality"; + + /** + * Name for this Value Set: + * Modality + */ + public static final String VALUESET_NAME = "Modality"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (ModalityEnum next : ModalityEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public ModalityEnum forCode(String theCode) { + ModalityEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(ModalityEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(ModalityEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public ModalityEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public ModalityEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + ModalityEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/NameUseEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/NameUseEnum.java index a840d79ac8a..1cbd699f1db 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/NameUseEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/NameUseEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum NameUseEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/NarrativeStatusEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/NarrativeStatusEnum.java index c0b17e5be53..cfc7b75c0e3 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/NarrativeStatusEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/NarrativeStatusEnum.java @@ -1,11 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; - import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum NarrativeStatusEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationInterpretationCodesEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationInterpretationCodesEnum.java index 43091629456..756f6ff8111 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationInterpretationCodesEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationInterpretationCodesEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum ObservationInterpretationCodesEnum { ; diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationRelationshipTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationRelationshipTypeEnum.java index 12935223067..43e8fc0f10f 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationRelationshipTypeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationRelationshipTypeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum ObservationRelationshipTypeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationReliabilityEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationReliabilityEnum.java index c29efbf2119..914a7057416 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationReliabilityEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationReliabilityEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum ObservationReliabilityEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationStatusEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationStatusEnum.java index 981f2269cad..1ef8c76a570 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationStatusEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ObservationStatusEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum ObservationStatusEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/OrganizationTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/OrganizationTypeEnum.java index e8554e05dfe..0b9bb93d0d4 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/OrganizationTypeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/OrganizationTypeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum OrganizationTypeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ParticipantTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ParticipantTypeEnum.java new file mode 100644 index 00000000000..6847e614d9f --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ParticipantTypeEnum.java @@ -0,0 +1,119 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum ParticipantTypeEnum { + + /** + * Display: Translator
+ * Code Value: translator + * + * A translator who is facilitating communication with the patient during the encounter + */ + TRANSLATOR("translator", "http://hl7.org/fhir/participant-type"), + + /** + * Display: Emergency
+ * Code Value: emergency + * + * A person to be contacted in case of an emergency during the encounter + */ + EMERGENCY("emergency", "http://hl7.org/fhir/participant-type"), + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/encounter-participant-type + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/encounter-participant-type"; + + /** + * Name for this Value Set: + * ParticipantType + */ + public static final String VALUESET_NAME = "ParticipantType"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (ParticipantTypeEnum next : ParticipantTypeEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public ParticipantTypeEnum forCode(String theCode) { + ParticipantTypeEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(ParticipantTypeEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(ParticipantTypeEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public ParticipantTypeEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public ParticipantTypeEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + ParticipantTypeEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PatientRelationshipTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PatientRelationshipTypeEnum.java new file mode 100644 index 00000000000..7eb44b5e137 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PatientRelationshipTypeEnum.java @@ -0,0 +1,103 @@ + +package ca.uhn.fhir.model.dstu.valueset; + +import java.util.HashMap; +import java.util.Map; + +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + +public enum PatientRelationshipTypeEnum { + + ; + + /** + * Identifier for this Value Set: + * http://hl7.org/fhir/vs/relatedperson-relationshiptype + */ + public static final String VALUESET_IDENTIFIER = "http://hl7.org/fhir/vs/relatedperson-relationshiptype"; + + /** + * Name for this Value Set: + * PatientRelationshipType + */ + public static final String VALUESET_NAME = "PatientRelationshipType"; + + private static Map CODE_TO_ENUM = new HashMap(); + private static Map> SYSTEM_TO_CODE_TO_ENUM = new HashMap>(); + + private final String myCode; + private final String mySystem; + + static { + for (PatientRelationshipTypeEnum next : PatientRelationshipTypeEnum.values()) { + CODE_TO_ENUM.put(next.getCode(), next); + + if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) { + SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap()); + } + SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next); + } + } + + /** + * Returns the code associated with this enumerated value + */ + public String getCode() { + return myCode; + } + + /** + * Returns the code system associated with this enumerated value + */ + public String getSystem() { + return mySystem; + } + + /** + * Returns the enumerated value associated with this code + */ + public PatientRelationshipTypeEnum forCode(String theCode) { + PatientRelationshipTypeEnum retVal = CODE_TO_ENUM.get(theCode); + return retVal; + } + + /** + * Converts codes to their respective enumerated values + */ + public static final IValueSetEnumBinder VALUESET_BINDER = new IValueSetEnumBinder() { + @Override + public String toCodeString(PatientRelationshipTypeEnum theEnum) { + return theEnum.getCode(); + } + + @Override + public String toSystemString(PatientRelationshipTypeEnum theEnum) { + return theEnum.getSystem(); + } + + @Override + public PatientRelationshipTypeEnum fromCodeString(String theCodeString) { + return CODE_TO_ENUM.get(theCodeString); + } + + @Override + public PatientRelationshipTypeEnum fromCodeString(String theCodeString, String theSystemString) { + Map map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString); + if (map == null) { + return null; + } + return map.get(theCodeString); + } + + }; + + /** + * Constructor + */ + PatientRelationshipTypeEnum(String theCode, String theSystem) { + myCode = theCode; + mySystem = theSystem; + } + + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PractitionerRoleEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PractitionerRoleEnum.java index 8ec4108092d..55cd0aad5e7 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PractitionerRoleEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PractitionerRoleEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum PractitionerRoleEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PractitionerSpecialtyEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PractitionerSpecialtyEnum.java index 99ae1802ea8..91baf569041 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PractitionerSpecialtyEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PractitionerSpecialtyEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum PractitionerSpecialtyEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PropertyRepresentationEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PropertyRepresentationEnum.java index 9b211757d28..45ee8117ea3 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PropertyRepresentationEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/PropertyRepresentationEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum PropertyRepresentationEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/QuantityCompararatorEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/QuantityCompararatorEnum.java index 343c2fa347f..cfa2ee82347 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/QuantityCompararatorEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/QuantityCompararatorEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum QuantityCompararatorEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ResourceProfileStatusEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ResourceProfileStatusEnum.java index 82473d28661..b4f91cd6f79 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ResourceProfileStatusEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ResourceProfileStatusEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum ResourceProfileStatusEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ResourceTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ResourceTypeEnum.java index e97a97fa098..4f0d6f841e6 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ResourceTypeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ResourceTypeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum ResourceTypeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulConformanceModeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulConformanceModeEnum.java index 3c052f5d238..cb523a892a3 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulConformanceModeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulConformanceModeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum RestfulConformanceModeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulOperationSystemEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulOperationSystemEnum.java index 4194c55fe53..cca87aff1c7 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulOperationSystemEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulOperationSystemEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum RestfulOperationSystemEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulOperationTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulOperationTypeEnum.java index e5b0acd85c0..965a78ae9f7 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulOperationTypeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulOperationTypeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum RestfulOperationTypeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulSecurityServiceEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulSecurityServiceEnum.java index 582964e9484..97eb12f8ad7 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulSecurityServiceEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/RestfulSecurityServiceEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum RestfulSecurityServiceEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SearchParamTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SearchParamTypeEnum.java index 954f60aab09..84b3b44ca98 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SearchParamTypeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SearchParamTypeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum SearchParamTypeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SlicingRulesEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SlicingRulesEnum.java index 607578e31f2..2c5c28e73c1 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SlicingRulesEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SlicingRulesEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum SlicingRulesEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SpecimenCollectionMethodEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SpecimenCollectionMethodEnum.java index 8bfd477920e..abc18b1e836 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SpecimenCollectionMethodEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SpecimenCollectionMethodEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum SpecimenCollectionMethodEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SpecimenTreatmentProcedureEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SpecimenTreatmentProcedureEnum.java index c5c217ecf94..453cf400f8a 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SpecimenTreatmentProcedureEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SpecimenTreatmentProcedureEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum SpecimenTreatmentProcedureEnum { ; diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SubstanceTypeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SubstanceTypeEnum.java index d393c5f887a..5389284dd28 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SubstanceTypeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/SubstanceTypeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum SubstanceTypeEnum { ; diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/UnitsOfTimeEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/UnitsOfTimeEnum.java index 32c60720c24..8bde3e0a832 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/UnitsOfTimeEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/UnitsOfTimeEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum UnitsOfTimeEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ValueSetStatusEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ValueSetStatusEnum.java index 51b011acaac..4a8c5ba1b62 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ValueSetStatusEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/dstu/valueset/ValueSetStatusEnum.java @@ -1,10 +1,11 @@ package ca.uhn.fhir.model.dstu.valueset; -import ca.uhn.fhir.model.api.*; import java.util.HashMap; import java.util.Map; +import ca.uhn.fhir.model.api.IValueSetEnumBinder; + public enum ValueSetStatusEnum { /** diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/BaseDateTimeDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/BaseDateTimeDt.java index 1db8942e524..f0b0ffb863b 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/BaseDateTimeDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/BaseDateTimeDt.java @@ -12,9 +12,7 @@ import javax.xml.bind.DatatypeConverter; import org.apache.commons.lang3.time.FastDateFormat; -import ca.uhn.fhir.model.api.BaseElement; import ca.uhn.fhir.model.api.BasePrimitive; -import ca.uhn.fhir.model.api.IPrimitiveDatatype; import ca.uhn.fhir.model.api.TemporalPrecisionEnum; import ca.uhn.fhir.parser.DataFormatException; diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/BoundCodeDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/BoundCodeDt.java index 0aa8ffcc971..7fefaf42e70 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/BoundCodeDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/BoundCodeDt.java @@ -3,7 +3,7 @@ package ca.uhn.fhir.model.primitive; import ca.uhn.fhir.model.api.IValueSetEnumBinder; import ca.uhn.fhir.model.api.annotation.DatatypeDef; -@DatatypeDef(name = "boundCode") // note: this name is not real, it's a HAPI identifier- we should remove it +@DatatypeDef(name = "code", isSpecialization = true) public class BoundCodeDt> extends CodeDt { private IValueSetEnumBinder myBinder; diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/DecimalDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/DecimalDt.java index eb6a14c98b2..b194525d800 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/DecimalDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/DecimalDt.java @@ -2,9 +2,7 @@ package ca.uhn.fhir.model.primitive; import java.math.BigDecimal; -import ca.uhn.fhir.model.api.BaseElement; import ca.uhn.fhir.model.api.BasePrimitive; -import ca.uhn.fhir.model.api.IPrimitiveDatatype; import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.SimpleSetter; import ca.uhn.fhir.parser.DataFormatException; diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/IdDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/IdDt.java index 2c910d5bf26..b33761209af 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/IdDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/IdDt.java @@ -1,8 +1,6 @@ package ca.uhn.fhir.model.primitive; -import ca.uhn.fhir.model.api.BaseElement; import ca.uhn.fhir.model.api.BasePrimitive; -import ca.uhn.fhir.model.api.IPrimitiveDatatype; import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.SimpleSetter; import ca.uhn.fhir.parser.DataFormatException; diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/IntegerDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/IntegerDt.java index eb1c1932470..6b29ed4ca5b 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/IntegerDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/IntegerDt.java @@ -1,8 +1,6 @@ package ca.uhn.fhir.model.primitive; -import ca.uhn.fhir.model.api.BaseElement; import ca.uhn.fhir.model.api.BasePrimitive; -import ca.uhn.fhir.model.api.IPrimitiveDatatype; import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.SimpleSetter; import ca.uhn.fhir.parser.DataFormatException; diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/OidDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/OidDt.java index 2dceeb204d0..bc12b60eb48 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/OidDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/OidDt.java @@ -1,5 +1,8 @@ package ca.uhn.fhir.model.primitive; +import ca.uhn.fhir.model.api.annotation.DatatypeDef; + +@DatatypeDef(name = "oid") public class OidDt extends UriDt { // TODO: implement restrictions diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/StringDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/StringDt.java index 79f80728467..ca3c0072568 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/StringDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/StringDt.java @@ -2,9 +2,7 @@ package ca.uhn.fhir.model.primitive; import org.apache.commons.lang3.StringUtils; -import ca.uhn.fhir.model.api.BaseElement; import ca.uhn.fhir.model.api.BasePrimitive; -import ca.uhn.fhir.model.api.IPrimitiveDatatype; import ca.uhn.fhir.model.api.IQueryParameterType; import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.SimpleSetter; diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/UriDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/UriDt.java index e3c10296ab7..93f2173d7a4 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/UriDt.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/primitive/UriDt.java @@ -5,9 +5,7 @@ import java.net.URISyntaxException; import org.apache.commons.lang3.StringUtils; -import ca.uhn.fhir.model.api.BaseElement; import ca.uhn.fhir.model.api.BasePrimitive; -import ca.uhn.fhir.model.api.IPrimitiveDatatype; import ca.uhn.fhir.model.api.annotation.DatatypeDef; import ca.uhn.fhir.model.api.annotation.SimpleSetter; import ca.uhn.fhir.parser.DataFormatException; diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/IParser.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/IParser.java index 61aa47a9f59..1276c2b23f8 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/IParser.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/IParser.java @@ -10,9 +10,9 @@ import ca.uhn.fhir.model.api.IResource; public interface IParser { - String encodeBundleToString(Bundle theBundle) throws DataFormatException; + String encodeBundleToString(Bundle theBundle) throws DataFormatException, IOException; - void encodeBundleToWriter(Bundle theBundle, Writer theWriter); + void encodeBundleToWriter(Bundle theBundle, Writer theWriter) throws IOException; String encodeResourceToString(IResource theResource) throws DataFormatException, IOException; @@ -30,4 +30,6 @@ public interface IParser { IResource parseResource(Class theResourceType, Reader theReader); + IParser setPrettyPrint(boolean thePrettyPrint); + } \ No newline at end of file diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/JsonParser.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/JsonParser.java index 43704f8c742..c8f36e7720d 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/JsonParser.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/JsonParser.java @@ -7,17 +7,16 @@ import java.io.Reader; import java.io.StringWriter; import java.io.Writer; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLOutputFactory; +import javax.json.Json; +import javax.json.stream.JsonGenerator; +import javax.json.stream.JsonGeneratorFactory; import org.apache.commons.lang3.StringUtils; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.stream.JsonWriter; - import ca.uhn.fhir.context.BaseRuntimeChildDefinition; import ca.uhn.fhir.context.BaseRuntimeElementCompositeDefinition; import ca.uhn.fhir.context.BaseRuntimeElementDefinition; @@ -26,9 +25,9 @@ import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.RuntimeChildDeclaredExtensionDefinition; import ca.uhn.fhir.context.RuntimeChildUndeclaredExtensionDefinition; import ca.uhn.fhir.context.RuntimeResourceDefinition; +import ca.uhn.fhir.model.api.BaseBundle; import ca.uhn.fhir.model.api.Bundle; import ca.uhn.fhir.model.api.BundleEntry; -import ca.uhn.fhir.model.api.ICompositeDatatype; import ca.uhn.fhir.model.api.IElement; import ca.uhn.fhir.model.api.IPrimitiveDatatype; import ca.uhn.fhir.model.api.IResource; @@ -39,100 +38,278 @@ import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; import ca.uhn.fhir.model.primitive.BooleanDt; import ca.uhn.fhir.model.primitive.DecimalDt; import ca.uhn.fhir.model.primitive.IntegerDt; +import ca.uhn.fhir.model.primitive.StringDt; import ca.uhn.fhir.model.primitive.XhtmlDt; public class JsonParser implements IParser { private FhirContext myContext; + private boolean myPrettyPrint; public JsonParser(FhirContext theContext) { myContext = theContext; } @Override - public String encodeBundleToString(Bundle theBundle) throws DataFormatException { + public String encodeBundleToString(Bundle theBundle) throws DataFormatException, IOException { StringWriter stringWriter = new StringWriter(); encodeBundleToWriter(theBundle, stringWriter); return stringWriter.toString(); } + private void writeTagWithTextNode(JsonGenerator theEventWriter, String theElementName, StringDt theStringDt) { + if (StringUtils.isNotBlank(theStringDt.getValue())) { + theEventWriter.write(theElementName,theStringDt.getValue()); + }else { + theEventWriter.writeNull(theElementName); + } + } + + private void writeOptionalTagWithTextNode(JsonGenerator theEventWriter, String theElementName, IPrimitiveDatatype theInstantDt) { + String str = theInstantDt.getValueAsString(); + if (StringUtils.isNotBlank(str)) { + theEventWriter.write(theElementName,theInstantDt.getValueAsString()); + } + } + @Override - public void encodeBundleToWriter(Bundle theBundle, Writer theWriter) { + public void encodeBundleToWriter(Bundle theBundle, Writer theWriter) throws IOException { + JsonGenerator eventWriter = createJsonGenerator(theWriter); + eventWriter.writeStartObject(); + + eventWriter.write("resourceType", "Bundle"); + + writeTagWithTextNode(eventWriter, "title", theBundle.getTitle()); + writeTagWithTextNode(eventWriter, "id", theBundle.getBundleId()); + writeOptionalTagWithTextNode(eventWriter, "updated", theBundle.getUpdated()); + writeOptionalTagWithTextNode(eventWriter, "published", theBundle.getPublished()); + + eventWriter.writeStartArray("link"); + writeAtomLink(eventWriter, "self", theBundle.getLinkSelf()); + writeAtomLink(eventWriter, "first", theBundle.getLinkFirst()); + writeAtomLink(eventWriter, "previous", theBundle.getLinkPrevious()); + writeAtomLink(eventWriter, "next", theBundle.getLinkNext()); + writeAtomLink(eventWriter, "last", theBundle.getLinkLast()); + writeAtomLink(eventWriter, "fhir-base", theBundle.getLinkBase()); + eventWriter.writeEnd(); + + writeOptionalTagWithTextNode(eventWriter, "totalResults", theBundle.getTotalResults()); + + writeAuthor(theBundle, eventWriter); + + eventWriter.writeStartArray("entry"); + for (BundleEntry nextEntry : theBundle.getEntries()) { + eventWriter.writeStartObject(); + + writeTagWithTextNode(eventWriter, "title", nextEntry.getTitle()); + writeTagWithTextNode(eventWriter, "id", nextEntry.getEntryId()); + + eventWriter.writeStartArray("link"); + writeAtomLink(eventWriter, "self", theBundle.getLinkSelf()); + eventWriter.writeEnd(); + + writeOptionalTagWithTextNode(eventWriter, "updated", nextEntry.getUpdated()); + writeOptionalTagWithTextNode(eventWriter, "published", nextEntry.getPublished()); + + writeAuthor(nextEntry, eventWriter); + + IResource resource = nextEntry.getResource(); + encodeResourceToJsonStreamWriter(resource, eventWriter, "content"); + + eventWriter.writeEnd(); //entry object + } + eventWriter.writeEnd(); // entry array + + eventWriter.writeEnd(); + eventWriter.close(); + } + + private void writeAuthor(BaseBundle theBundle, JsonGenerator eventWriter) { + if (StringUtils.isNotBlank(theBundle.getAuthorName().getValue())) { + eventWriter.writeStartArray("author"); + eventWriter.writeStartObject(); + writeTagWithTextNode(eventWriter, "name", theBundle.getAuthorName()); + writeOptionalTagWithTextNode(eventWriter, "uri", theBundle.getAuthorUri()); + eventWriter.writeEnd(); + eventWriter.writeEnd(); + } + } + + private void writeAtomLink(JsonGenerator theEventWriter, String theRel, StringDt theLink) { + if (isNotBlank(theLink.getValue())) { + theEventWriter.writeStartObject(); + theEventWriter.write("rel", theRel); + theEventWriter.write("href", theLink.getValue()); + theEventWriter.writeEnd(); + } + } + + @Override + public String encodeResourceToString(IResource theResource) throws DataFormatException, IOException { + Writer stringWriter = new StringWriter(); + encodeResourceToWriter(theResource, stringWriter); + return stringWriter.toString(); + } + + @Override + public void encodeResourceToWriter(IResource theResource, Writer theWriter) throws IOException { + JsonGenerator eventWriter = createJsonGenerator(theWriter); + // try { - // XMLStreamWriter eventWriter; - // eventWriter = myXmlOutputFactory.createXMLStreamWriter(theWriter); - // eventWriter = decorateStreamWriter(eventWriter); - // - // eventWriter.writeStartElement("feed"); - // eventWriter.writeDefaultNamespace(ATOM_NS); - // - // writeTagWithTextNode(eventWriter, "title", theBundle.getTitle()); - // writeTagWithTextNode(eventWriter, "id", theBundle.getId()); - // - // writeAtomLink(eventWriter, "self", theBundle.getLinkSelf()); - // writeAtomLink(eventWriter, "first", theBundle.getLinkFirst()); - // writeAtomLink(eventWriter, "previous", theBundle.getLinkPrevious()); - // writeAtomLink(eventWriter, "next", theBundle.getLinkNext()); - // writeAtomLink(eventWriter, "last", theBundle.getLinkLast()); - // writeAtomLink(eventWriter, "fhir-base", theBundle.getLinkBase()); - // - // if (theBundle.getTotalResults().getValue() != null) { - // eventWriter.writeStartElement("os", OPENSEARCH_NS, "totalResults"); - // eventWriter.writeNamespace("os", OPENSEARCH_NS); - // eventWriter.writeCharacters(theBundle.getTotalResults().getValue().toString()); - // eventWriter.writeEndElement(); - // } - // - // writeOptionalTagWithTextNode(eventWriter, "updated", - // theBundle.getUpdated()); - // writeOptionalTagWithTextNode(eventWriter, "published", - // theBundle.getPublished()); - // - // if (StringUtils.isNotBlank(theBundle.getAuthorName().getValue())) { - // eventWriter.writeStartElement("author"); - // writeTagWithTextNode(eventWriter, "name", theBundle.getAuthorName()); - // writeOptionalTagWithTextNode(eventWriter, "uri", - // theBundle.getAuthorUri()); - // eventWriter.writeEndElement(); - // } - // - // for (BundleEntry nextEntry : theBundle.getEntries()) { - // eventWriter.writeStartElement("entry"); - // - // eventWriter.writeStartElement("content"); - // eventWriter.writeAttribute("type", "text/xml"); - // - // IResource resource = nextEntry.getResource(); - // encodeResourceToJsonStreamWriter(resource, eventWriter); - // - // eventWriter.writeEndElement(); // content - // eventWriter.writeEndElement(); // entry - // } - // - // eventWriter.writeEndElement(); - // eventWriter.close(); + encodeResourceToJsonStreamWriter(theResource, eventWriter,null); + eventWriter.flush(); // } catch (XMLStreamException e) { // throw new // ConfigurationException("Failed to initialize STaX event factory", e); // } } - private void encodeCompositeElementToStreamWriter(IElement theElement, JsonWriter theEventWriter, BaseRuntimeElementCompositeDefinition resDef) throws IOException, DataFormatException { - encodeExtensionsIfPresent(theEventWriter, theElement); - encodeCompositeElementChildrenToStreamWriter(theElement, theEventWriter, resDef.getExtensions()); - encodeCompositeElementChildrenToStreamWriter(theElement, theEventWriter, resDef.getChildren()); + private JsonGenerator createJsonGenerator(Writer theWriter) { + Map properties = new HashMap(1); + if (myPrettyPrint) { + properties.put(JsonGenerator.PRETTY_PRINTING, myPrettyPrint); + } + JsonGeneratorFactory jgf = Json.createGeneratorFactory(properties); + JsonGenerator eventWriter = jgf.createGenerator(theWriter); + return eventWriter; } - private class HeldExtension { + @Override + public Bundle parseBundle(Reader theReader) { + // TODO Auto-generated method stub + return null; + } - public HeldExtension(UndeclaredExtension theUndeclaredExtension) { + @Override + public Bundle parseBundle(String theMessageString) throws ConfigurationException, DataFormatException { + // TODO Auto-generated method stub + return null; + } + @Override + public IResource parseResource(Class theResourceType, Reader theReader) { + // TODO Auto-generated method stub + return null; + } + + @Override + public T parseResource(Class theResourceType, String theMessageString) { + // TODO Auto-generated method stub + return null; + } + + @Override + public IResource parseResource(Reader theReader) throws ConfigurationException, DataFormatException { + // TODO Auto-generated method stub + return null; + } + + @Override + public IResource parseResource(String theMessageString) throws ConfigurationException, DataFormatException { + // TODO Auto-generated method stub + return null; + } + + @Override + public IParser setPrettyPrint(boolean thePrettyPrint) { + myPrettyPrint = thePrettyPrint; + return this; + } + + private void addToHeldExtensions(int valueIdx, List ext, ArrayList> list) { + if (ext.size() > 0) { + list.ensureCapacity(valueIdx); + while (list.size() <= valueIdx) { + list.add(null); + } + if (list.get(valueIdx) == null) { + list.set(valueIdx, new ArrayList()); + } + for (UndeclaredExtension next : ext) { + list.get(valueIdx).add(new HeldExtension(next)); + } + } + } + + private void encodeChildElementToStreamWriter(JsonGenerator theWriter, IElement theValue, BaseRuntimeElementDefinition theChildDef, String theChildName) throws IOException { + + switch (theChildDef.getChildType()) { + case PRIMITIVE_DATATYPE: { + IPrimitiveDatatype value = (IPrimitiveDatatype) theValue; + if (value instanceof IntegerDt) { + if (theChildName != null) { + theWriter.write(theChildName, ((IntegerDt) value).getValue()); + } else { + theWriter.write(((IntegerDt) value).getValue()); + } + } else if (value instanceof DecimalDt) { + if (theChildName != null) { + theWriter.write(theChildName, ((DecimalDt) value).getValue()); + } else { + theWriter.write(((DecimalDt) value).getValue()); + } + } else if (value instanceof BooleanDt) { + if (theChildName != null) { + theWriter.write(theChildName, ((BooleanDt) value).getValue()); + } else { + theWriter.write(((BooleanDt) value).getValue()); + } + } else { + String valueStr = value.getValueAsString(); + if (theChildName != null) { + theWriter.write(theChildName, valueStr); + } else { + theWriter.write(valueStr); + } + } + break; + } + case RESOURCE_BLOCK: + case COMPOSITE_DATATYPE: { + BaseRuntimeElementCompositeDefinition childCompositeDef = (BaseRuntimeElementCompositeDefinition) theChildDef; + if (theChildName != null) { + theWriter.writeStartObject(theChildName); + } else { + theWriter.writeStartObject(); + } + encodeCompositeElementToStreamWriter(theValue, theWriter, childCompositeDef); + theWriter.writeEnd(); + break; + } + case RESOURCE_REF: { + ResourceReferenceDt value = (ResourceReferenceDt) theValue; + if (theChildName != null) { + theWriter.writeStartObject(theChildName); + } else { + theWriter.writeStartObject(); + } + if (value.getReference().isEmpty() == false) { + theWriter.write("resource", value.getReference().getValueAsString()); + } + if (value.getDisplay().isEmpty() == false) { + theWriter.write("display", value.getDisplay().getValueAsString()); + } + theWriter.writeEnd(); + break; + } + case PRIMITIVE_XHTML: { + XhtmlDt dt = (XhtmlDt) theValue; + if (theChildName != null) { + theWriter.write(theChildName, dt.getValueAsString()); + } else { + theWriter.write(dt.getValueAsString()); + } + break; + } + case UNDECL_EXT: + default: + throw new IllegalStateException("Should not have this state here: " + theChildDef.getChildType().name()); } } - private void encodeCompositeElementChildrenToStreamWriter(IElement theElement, JsonWriter theEventWriter, List theChildren) throws IOException { + private void encodeCompositeElementChildrenToStreamWriter(IElement theElement, JsonGenerator theEventWriter, List theChildren) throws IOException { for (BaseRuntimeChildDefinition nextChild : theChildren) { List values = nextChild.getAccessor().getValues(theElement); if (values == null || values.isEmpty()) { @@ -161,37 +338,38 @@ public class JsonParser implements IParser { if (nextChild instanceof RuntimeChildDeclaredExtensionDefinition) { // TODO: hold and return - RuntimeChildDeclaredExtensionDefinition extDef = (RuntimeChildDeclaredExtensionDefinition) nextChild; - if (extDef.isModifier()) { - theEventWriter.name("modifierExtension"); - } else { - theEventWriter.name("extension"); - } - - theEventWriter.beginObject(); - theEventWriter.name("url"); - String extensionUrl = nextChild.getExtensionUrl(); - theEventWriter.value(extensionUrl); - theEventWriter.name(childName); - encodeChildElementToStreamWriter(theEventWriter, nextValue, childName, childDef); - theEventWriter.endObject(); + RuntimeChildDeclaredExtensionDefinition extDef = (RuntimeChildDeclaredExtensionDefinition) nextChild; + if (extDef.isModifier()) { + theEventWriter.writeStartObject("modifierExtension"); + } else { + theEventWriter.writeStartObject("extension"); + } + + String extensionUrl = nextChild.getExtensionUrl(); + theEventWriter.write("url", extensionUrl); + // theEventWriter.writeName(childName); + encodeChildElementToStreamWriter(theEventWriter, nextValue, childDef, childName); + + theEventWriter.writeEnd(); } else { if (currentChildName == null || !currentChildName.equals(childName)) { if (inArray) { - theEventWriter.endArray(); + theEventWriter.writeEnd(); } - theEventWriter.name(childName); if (nextChild.getMax() > 1 || nextChild.getMax() == Child.MAX_UNLIMITED) { - theEventWriter.beginArray(); + theEventWriter.writeStartArray(childName); inArray = true; + encodeChildElementToStreamWriter(theEventWriter, nextValue, childDef, null); + } else { + encodeChildElementToStreamWriter(theEventWriter, nextValue, childDef, childName); } currentChildName = childName; + } else { + encodeChildElementToStreamWriter(theEventWriter, nextValue, childDef, null); } - encodeChildElementToStreamWriter(theEventWriter, nextValue, childName, childDef); - if (nextValue instanceof ISupportsUndeclaredExtensions) { List ext = ((ISupportsUndeclaredExtensions) nextValue).getUndeclaredExtensions(); addToHeldExtensions(valueIdx, ext, extensions); @@ -206,55 +384,62 @@ public class JsonParser implements IParser { } if (inArray) { - theEventWriter.endArray(); + theEventWriter.writeEnd(); } - - String extType = "extension"; + if (extensions.size() > 0 || modifierExtensions.size() > 0) { - theEventWriter.name('_' + currentChildName); - theEventWriter.beginObject(); + theEventWriter.writeStartArray('_' + currentChildName); - if (extensions.size() > 0) { - - theEventWriter.name(extType); - theEventWriter.beginArray(); - for (ArrayList next : extensions) { - if (next == null || next.isEmpty()) { - theEventWriter.nullValue(); - }else { - theEventWriter.beginArray(); -// next.write(theEventWriter); - theEventWriter.endArray(); + for (int i = 0; i < valueIdx; i++) { + boolean haveContent = false; + if (extensions.size() > i && extensions.get(i) != null && extensions.get(i).isEmpty() == false) { + haveContent = true; + theEventWriter.writeStartObject(); + theEventWriter.writeStartArray("extension"); + for (HeldExtension nextExt : extensions.get(i)) { + nextExt.write(theEventWriter); } + theEventWriter.writeEnd(); } - for (int i = extensions.size(); i < valueIdx; i++) { - theEventWriter.nullValue(); + + if (!haveContent) { + theEventWriter.writeEnd(); + theEventWriter.writeNull(); } - theEventWriter.endArray(); } - - theEventWriter.endObject(); + + // if (extensions.size() > 0) { + // + // theEventWriter.name(extType); + // theEventWriter.beginArray(); + // for (ArrayList next : extensions) { + // if (next == null || next.isEmpty()) { + // theEventWriter.nullValue(); + // } else { + // theEventWriter.beginArray(); + // // next.write(theEventWriter); + // theEventWriter.endArray(); + // } + // } + // for (int i = extensions.size(); i < valueIdx; i++) { + // theEventWriter.nullValue(); + // } + // theEventWriter.endArray(); + // } + + theEventWriter.writeEnd(); } } } - private void addToHeldExtensions(int valueIdx, List ext, ArrayList> list) { - if (ext.size() > 0) { - list.ensureCapacity(valueIdx); - while (list.size() <= valueIdx) { - list.add(null); - } - if (list.get(valueIdx) == null) { - list.set(valueIdx, new ArrayList()); - } - for (UndeclaredExtension next : ext) { - list.get(valueIdx).add(new HeldExtension(next)); - } - } + private void encodeCompositeElementToStreamWriter(IElement theElement, JsonGenerator theEventWriter, BaseRuntimeElementCompositeDefinition resDef) throws IOException, DataFormatException { + encodeExtensionsIfPresent(theEventWriter, theElement); + encodeCompositeElementChildrenToStreamWriter(theElement, theEventWriter, resDef.getExtensions()); + encodeCompositeElementChildrenToStreamWriter(theElement, theEventWriter, resDef.getChildren()); } - private void encodeExtensionsIfPresent(JsonWriter theWriter, IElement theResource) throws IOException { + private void encodeExtensionsIfPresent(JsonGenerator theWriter, IElement theResource) throws IOException { if (theResource instanceof ISupportsUndeclaredExtensions) { ISupportsUndeclaredExtensions res = (ISupportsUndeclaredExtensions) theResource; encodeUndeclaredExtensions(theWriter, res.getUndeclaredExtensions(), "extension"); @@ -262,155 +447,90 @@ public class JsonParser implements IParser { } } - private void encodeUndeclaredExtensions(JsonWriter theWriter, List extensions, String theTagName) throws IOException { + private void encodeResourceToJsonStreamWriter(IResource theResource, JsonGenerator theEventWriter, String theObjectNameOrNull) throws IOException { + RuntimeResourceDefinition resDef = myContext.getResourceDefinition(theResource); + + if(theObjectNameOrNull==null) { + theEventWriter.writeStartObject(); + }else { + theEventWriter.writeStartObject(theObjectNameOrNull); + } + + theEventWriter.write("resourceType", resDef.getName()); + + encodeCompositeElementToStreamWriter(theResource, theEventWriter, resDef); + + theEventWriter.writeEnd(); + } + + private void encodeUndeclaredExtensions(JsonGenerator theWriter, List extensions, String theTagName) throws IOException { if (extensions.isEmpty()) { return; } - theWriter.name(theTagName); - theWriter.beginArray(); + theWriter.writeStartArray(theTagName); for (UndeclaredExtension next : extensions) { - theWriter.beginObject(); - theWriter.name("url"); - theWriter.value(next.getUrl()); + theWriter.writeStartObject(); + + theWriter.write("url", next.getUrl()); if (next.getValue() != null) { IElement nextValue = next.getValue(); RuntimeChildUndeclaredExtensionDefinition extDef = myContext.getRuntimeChildUndeclaredExtensionDefinition(); - String childName = extDef.getChildNameByDatatype(nextValue.getClass()); BaseRuntimeElementDefinition childDef = extDef.getChildElementDefinitionByDatatype(nextValue.getClass()); - encodeChildElementToStreamWriter(theWriter, nextValue, childName, childDef); + // theWriter.writeName("value" + childDef.getName()); + encodeChildElementToStreamWriter(theWriter, nextValue, childDef, "value" + childDef.getName()); } encodeUndeclaredExtensions(theWriter, next.getUndeclaredExtensions(), "extension"); encodeUndeclaredExtensions(theWriter, next.getUndeclaredModifierExtensions(), "modifierExtension"); - theWriter.endObject(); + theWriter.writeEnd(); } - theWriter.endArray(); + theWriter.writeEnd(); } - private void encodeChildElementToStreamWriter(JsonWriter theWriter, IElement theValue, String theChildName, BaseRuntimeElementDefinition theChildDef) throws IOException { + private class HeldExtension { - switch (theChildDef.getChildType()) { - case PRIMITIVE_DATATYPE: { - IPrimitiveDatatype value = (IPrimitiveDatatype) theValue; - if (value instanceof IntegerDt) { - theWriter.value(((IntegerDt) value).getValue()); - } else if (value instanceof DecimalDt) { - theWriter.value(((DecimalDt) value).getValue()); - } else if (value instanceof BooleanDt) { - theWriter.value(((BooleanDt) value).getValue()); + private UndeclaredExtension myUndeclaredExtension; + + public HeldExtension(UndeclaredExtension theUndeclaredExtension) { + myUndeclaredExtension = theUndeclaredExtension; + } + + public void write(JsonGenerator theEventWriter) throws IOException { + if (myUndeclaredExtension != null) { + writeUndeclaredExt(theEventWriter, myUndeclaredExtension); + } + } + + private void writeUndeclaredExt(JsonGenerator theEventWriter, UndeclaredExtension ext) throws IOException { + theEventWriter.writeStartObject(); + theEventWriter.write("url", ext.getUrl()); + + IElement value = ext.getValue(); + if (value == null && ext.getAllUndeclaredExtensions().isEmpty()) { + theEventWriter.writeNull(); + } else if (value == null) { + theEventWriter.writeStartArray(); + for (UndeclaredExtension next : ext.getUndeclaredExtensions()) { + writeUndeclaredExt(theEventWriter, next); + } + theEventWriter.writeEnd(); } else { - String valueStr = value.getValueAsString(); - theWriter.value(valueStr); + BaseRuntimeElementDefinition def = myContext.getElementDefinition(value.getClass()); + // theEventWriter.writeName("value" + def.getName()); + encodeChildElementToStreamWriter(theEventWriter, value, def, "value" + def.getName()); } - break; - } - case RESOURCE_BLOCK: - case COMPOSITE_DATATYPE: { - BaseRuntimeElementCompositeDefinition childCompositeDef = (BaseRuntimeElementCompositeDefinition) theChildDef; - theWriter.beginObject(); - encodeCompositeElementToStreamWriter(theValue, theWriter, childCompositeDef); - theWriter.endObject(); - break; - } - case RESOURCE_REF: { - ResourceReferenceDt value = (ResourceReferenceDt) theValue; - theWriter.beginObject(); - if (value.getReference().isEmpty() == false) { - theWriter.name("resource"); - theWriter.value(value.getReference().getValueAsString()); - } - if (value.getDisplay().isEmpty() == false) { - theWriter.name("display"); - theWriter.value(value.getDisplay().getValueAsString()); - } - theWriter.endObject(); - break; - } - case PRIMITIVE_XHTML: { - XhtmlDt dt = (XhtmlDt) theValue; - theWriter.value(dt.getValueAsString()); - break; - } - case UNDECL_EXT: - default: - throw new IllegalStateException("Should not have this state here: " + theChildDef.getChildType().name()); + + // theEventWriter.name(myUndeclaredExtension.get); + + theEventWriter.writeEnd(); } } - @Override - public String encodeResourceToString(IResource theResource) throws DataFormatException, IOException { - Writer stringWriter = new StringWriter(); - encodeResourceToWriter(theResource, stringWriter); - return stringWriter.toString(); - } - - @Override - public void encodeResourceToWriter(IResource theResource, Writer theWriter) throws IOException { - JsonWriter eventWriter = new JsonWriter(theWriter); - eventWriter.setIndent(" "); - // try { - encodeResourceToJsonStreamWriter(theResource, eventWriter); - eventWriter.flush(); - // } catch (XMLStreamException e) { - // throw new - // ConfigurationException("Failed to initialize STaX event factory", e); - // } - } - - private void encodeResourceToJsonStreamWriter(IResource theResource, JsonWriter theEventWriter) throws IOException { - RuntimeResourceDefinition resDef = myContext.getResourceDefinition(theResource); - - theEventWriter.beginObject(); - - theEventWriter.name("resourceType"); - theEventWriter.value(resDef.getName()); - - encodeCompositeElementToStreamWriter(theResource, theEventWriter, resDef); - - theEventWriter.endObject(); - } - - @Override - public Bundle parseBundle(Reader theReader) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Bundle parseBundle(String theMessageString) throws ConfigurationException, DataFormatException { - // TODO Auto-generated method stub - return null; - } - - @Override - public IResource parseResource(String theMessageString) throws ConfigurationException, DataFormatException { - // TODO Auto-generated method stub - return null; - } - - @Override - public IResource parseResource(Reader theReader) throws ConfigurationException, DataFormatException { - // TODO Auto-generated method stub - return null; - } - - @Override - public T parseResource(Class theResourceType, String theMessageString) { - // TODO Auto-generated method stub - return null; - } - - @Override - public IResource parseResource(Class theResourceType, Reader theReader) { - // TODO Auto-generated method stub - return null; - } - } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/ParserState.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/ParserState.java index 671a79bc77b..3b8e3b2bfc9 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/ParserState.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/ParserState.java @@ -1,13 +1,19 @@ package ca.uhn.fhir.parser; + +import static org.apache.commons.lang3.StringUtils.*; + import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.xml.stream.events.EndElement; import javax.xml.stream.events.StartElement; import javax.xml.stream.events.XMLEvent; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.Validate; import ca.uhn.fhir.context.BaseRuntimeChildDefinition; import ca.uhn.fhir.context.BaseRuntimeElementCompositeDefinition; @@ -30,9 +36,9 @@ import ca.uhn.fhir.model.api.IPrimitiveDatatype; import ca.uhn.fhir.model.api.IResource; import ca.uhn.fhir.model.api.IResourceBlock; import ca.uhn.fhir.model.api.ISupportsUndeclaredExtensions; -import ca.uhn.fhir.model.api.BaseResourceReference; import ca.uhn.fhir.model.api.UndeclaredExtension; import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.primitive.IdDt; import ca.uhn.fhir.model.primitive.XhtmlDt; class ParserState { @@ -40,7 +46,6 @@ class ParserState { private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(ParserState.class); private FhirContext myContext; private T myObject; - private BaseState myState; private ParserState(FhirContext theContext) { @@ -80,7 +85,9 @@ class ParserState { } /** - * Invoked after any new XML event is individually processed, containing a copy of the XML event. This is basically intended for embedded XHTML content + * Invoked after any new XML event is individually processed, containing a + * copy of the XML event. This is basically intended for embedded XHTML + * content */ public void xmlEvent(XMLEvent theNextEvent) { myState.xmlEvent(theNextEvent); @@ -117,6 +124,7 @@ class ParserState { private BaseBundle myInstance; public AtomAuthorState(BaseBundle theEntry) { + super(null); myInstance = theEntry; } @@ -143,19 +151,10 @@ class ParserState { private BundleCategory myInstance; public AtomCategoryState(BundleCategory theEntry) { + super(null); myInstance = theEntry; } - @Override - public void endingElement(EndElement theElem) throws DataFormatException { - pop(); - } - - @Override - public void enteringNewElement(String theNamespaceURI, String theLocalPart) throws DataFormatException { - throw new DataFormatException("Unexpected element: " + theLocalPart); - } - @Override public void attributeValue(String theName, String theValue) throws DataFormatException { if ("term".equals(theName)) { @@ -167,6 +166,16 @@ class ParserState { } } + @Override + public void endingElement(EndElement theElem) throws DataFormatException { + pop(); + } + + @Override + public void enteringNewElement(String theNamespaceURI, String theLocalPart) throws DataFormatException { + throw new DataFormatException("Unexpected element: " + theLocalPart); + } + } public class AtomEntryState extends BaseState { @@ -174,6 +183,7 @@ class ParserState { private BundleEntry myEntry; public AtomEntryState(Bundle theInstance) { + super(null); myEntry = new BundleEntry(); theInstance.getEntries().add(myEntry); } @@ -188,7 +198,7 @@ class ParserState { if ("title".equals(theLocalPart)) { push(new AtomPrimitiveState(myEntry.getTitle())); } else if ("id".equals(theLocalPart)) { - push(new AtomPrimitiveState(myEntry.getId())); + push(new AtomPrimitiveState(myEntry.getEntryId())); } else if ("link".equals(theLocalPart)) { push(new AtomLinkState(myEntry)); } else if ("updated".equals(theLocalPart)) { @@ -200,7 +210,7 @@ class ParserState { } else if ("content".equals(theLocalPart)) { push(new PreResourceState(myEntry)); } else if ("summary".equals(theLocalPart)) { - push(new XhtmlState(myEntry.getSummary(), false)); + push(new XhtmlState(getPreResourceState(),myEntry.getSummary(), false)); } else if ("category".equals(theLocalPart)) { push(new AtomCategoryState(myEntry.addCategory())); } else { @@ -220,10 +230,12 @@ class ParserState { private String myRel; public AtomLinkState(Bundle theInstance) { + super(null); myInstance = theInstance; } public AtomLinkState(BundleEntry theEntry) { + super(null); myEntry = theEntry; } @@ -271,7 +283,8 @@ class ParserState { private IPrimitiveDatatype myPrimitive; public AtomPrimitiveState(IPrimitiveDatatype thePrimitive) { - assert thePrimitive != null; + super(null); + Validate.notNull(thePrimitive, "thePrimitive"); myPrimitive = thePrimitive; } @@ -309,6 +322,7 @@ class ParserState { private Bundle myInstance; public AtomState(Bundle theInstance) { + super(null); myInstance = theInstance; } @@ -326,7 +340,7 @@ class ParserState { } else if (theLocalPart.equals("title")) { push(new AtomPrimitiveState(myInstance.getTitle())); } else if ("id".equals(theLocalPart)) { - push(new AtomPrimitiveState(myInstance.getId())); + push(new AtomPrimitiveState(myInstance.getBundleId())); } else if ("link".equals(theLocalPart)) { push(new AtomLinkState(myInstance)); } else if ("totalResults".equals(theLocalPart) && verifyNamespace(XmlParser.OPENSEARCH_NS, theNamespaceURI)) { @@ -351,8 +365,14 @@ class ParserState { private abstract class BaseState { + private PreResourceState myPreResourceState; private BaseState myStack; + public BaseState(PreResourceState thePreResourceState) { + super(); + myPreResourceState = thePreResourceState; + } + @SuppressWarnings("unused") public void attributeValue(String theName, String theValue) throws DataFormatException { // ignore by default @@ -372,7 +392,7 @@ class ParserState { * Default implementation just handles undeclared extensions */ public void enteringNewElementExtension(@SuppressWarnings("unused") StartElement theElement, String theUrlAttr, boolean theIsModifier) { - if (getCurrentElement() instanceof ISupportsUndeclaredExtensions) { + if (myPreResourceState != null && getCurrentElement() instanceof ISupportsUndeclaredExtensions) { UndeclaredExtension newExtension = new UndeclaredExtension(theIsModifier, theUrlAttr); ISupportsUndeclaredExtensions elem = (ISupportsUndeclaredExtensions) getCurrentElement(); if (theIsModifier) { @@ -380,13 +400,17 @@ class ParserState { } else { elem.getUndeclaredExtensions().add(newExtension); } - ExtensionState newState = new ExtensionState(newExtension); + ExtensionState newState = new ExtensionState(myPreResourceState, newExtension); push(newState); } else { throw new DataFormatException("Type " + getCurrentElement() + " does not support undeclared extentions, and found an extension with URL: " + theUrlAttr); } } + public PreResourceState getPreResourceState() { + return myPreResourceState; + } + public void setStack(BaseState theState) { myStack = theState; } @@ -409,13 +433,42 @@ class ParserState { } + private class ContainedResourcesState extends PreResourceState + { + + public ContainedResourcesState(PreResourceState thePreResourcesState) { + super(thePreResourcesState); + } + + @Override + public void endingElement(EndElement theElem) throws DataFormatException { + pop(); + } + + @Override + public void wereBack() { + IResource res = (IResource) getCurrentElement(); + assert res != null; + if (res.getId()==null || res.getId().isEmpty()) { + ourLog.warn("Discarding contained resource with no ID!"); + } else { + getPreResourceState().getContainedResources().put(res.getId().getValueAsString(), res); + } + } + + + } + private class DeclaredExtensionState extends BaseState { private IElement myChildInstance; private RuntimeChildDeclaredExtensionDefinition myDefinition; private IElement myParentInstance; + private PreResourceState myPreResourceState; - public DeclaredExtensionState(RuntimeChildDeclaredExtensionDefinition theDefinition, IElement theParentInstance) { + public DeclaredExtensionState(PreResourceState thePreResourceState, RuntimeChildDeclaredExtensionDefinition theDefinition, IElement theParentInstance) { + super(thePreResourceState); + myPreResourceState=thePreResourceState; myDefinition = theDefinition; myParentInstance = theParentInstance; } @@ -437,7 +490,7 @@ class ParserState { BaseRuntimeElementCompositeDefinition compositeTarget = (BaseRuntimeElementCompositeDefinition) target; ICompositeDatatype newChildInstance = (ICompositeDatatype) compositeTarget.newInstance(); myDefinition.getMutator().addValue(myParentInstance, newChildInstance); - ElementCompositeState newState = new ElementCompositeState(compositeTarget, newChildInstance); + ElementCompositeState newState = new ElementCompositeState(myPreResourceState, compositeTarget, newChildInstance); push(newState); return; } @@ -445,7 +498,7 @@ class ParserState { RuntimePrimitiveDatatypeDefinition primitiveTarget = (RuntimePrimitiveDatatypeDefinition) target; IPrimitiveDatatype newChildInstance = primitiveTarget.newInstance(); myDefinition.getMutator().addValue(myParentInstance, newChildInstance); - PrimitiveState newState = new PrimitiveState(newChildInstance); + PrimitiveState newState = new PrimitiveState(getPreResourceState(), newChildInstance); push(newState); return; } @@ -453,7 +506,7 @@ class ParserState { RuntimeResourceReferenceDefinition resourceRefTarget = (RuntimeResourceReferenceDefinition) target; ResourceReferenceDt newChildInstance = new ResourceReferenceDt(); myDefinition.getMutator().addValue(myParentInstance, newChildInstance); - ResourceReferenceState newState = new ResourceReferenceState(resourceRefTarget, newChildInstance); + ResourceReferenceState newState = new ResourceReferenceState(getPreResourceState(), resourceRefTarget, newChildInstance); push(newState); return; } @@ -475,7 +528,7 @@ class ParserState { myChildInstance = myDefinition.newInstance(); myDefinition.getMutator().addValue(myParentInstance, myChildInstance); } - BaseState newState = new DeclaredExtensionState(declaredExtension, myChildInstance); + BaseState newState = new DeclaredExtensionState(getPreResourceState(), declaredExtension, myChildInstance); push(newState); } else { super.enteringNewElementExtension(theElement, theUrlAttr, theIsModifier); @@ -494,11 +547,19 @@ class ParserState { private BaseRuntimeElementCompositeDefinition myDefinition; private ICompositeElement myInstance; - public ElementCompositeState(BaseRuntimeElementCompositeDefinition theDef, ICompositeElement theInstance) { + public ElementCompositeState(PreResourceState thePreResourceState, BaseRuntimeElementCompositeDefinition theDef, ICompositeElement theInstance) { + super(thePreResourceState); myDefinition = theDef; myInstance = theInstance; } + @Override + public void attributeValue(String theName, String theValue) throws DataFormatException { + if ("id".equals(theName)) { + myInstance.setId(new IdDt(theValue)); + } + } + @SuppressWarnings("unchecked") @Override public void endingElement(EndElement theElem) { @@ -521,7 +582,7 @@ class ParserState { BaseRuntimeElementCompositeDefinition compositeTarget = (BaseRuntimeElementCompositeDefinition) target; ICompositeDatatype newChildInstance = (ICompositeDatatype) compositeTarget.newInstance(child.getInstanceConstructorArguments()); child.getMutator().addValue(myInstance, newChildInstance); - ElementCompositeState newState = new ElementCompositeState(compositeTarget, newChildInstance); + ElementCompositeState newState = new ElementCompositeState(getPreResourceState(), compositeTarget, newChildInstance); push(newState); return; } @@ -530,15 +591,16 @@ class ParserState { IPrimitiveDatatype newChildInstance; newChildInstance = primitiveTarget.newInstance(child.getInstanceConstructorArguments()); child.getMutator().addValue(myInstance, newChildInstance); - PrimitiveState newState = new PrimitiveState(newChildInstance); + PrimitiveState newState = new PrimitiveState(getPreResourceState(), newChildInstance); push(newState); return; } case RESOURCE_REF: { RuntimeResourceReferenceDefinition resourceRefTarget = (RuntimeResourceReferenceDefinition) target; ResourceReferenceDt newChildInstance = new ResourceReferenceDt(); + getPreResourceState().getResourceReferences().add(newChildInstance); child.getMutator().addValue(myInstance, newChildInstance); - ResourceReferenceState newState = new ResourceReferenceState(resourceRefTarget, newChildInstance); + ResourceReferenceState newState = new ResourceReferenceState(getPreResourceState(), resourceRefTarget, newChildInstance); push(newState); return; } @@ -546,7 +608,7 @@ class ParserState { RuntimeResourceBlockDefinition blockTarget = (RuntimeResourceBlockDefinition) target; IResourceBlock newBlockInstance = blockTarget.newInstance(); child.getMutator().addValue(myInstance, newBlockInstance); - ElementCompositeState newState = new ElementCompositeState(blockTarget, newBlockInstance); + ElementCompositeState newState = new ElementCompositeState(getPreResourceState(), blockTarget, newBlockInstance); push(newState); return; } @@ -554,7 +616,7 @@ class ParserState { RuntimePrimitiveDatatypeNarrativeDefinition xhtmlTarget = (RuntimePrimitiveDatatypeNarrativeDefinition) target; XhtmlDt newDt = xhtmlTarget.newInstance(); child.getMutator().addValue(myInstance, newDt); - XhtmlState state = new XhtmlState(newDt, true); + XhtmlState state = new XhtmlState(getPreResourceState(), newDt, true); push(state); return; } @@ -572,7 +634,7 @@ class ParserState { public void enteringNewElementExtension(StartElement theElement, String theUrlAttr, boolean theIsModifier) { RuntimeChildDeclaredExtensionDefinition declaredExtension = myDefinition.getDeclaredExtension(theUrlAttr); if (declaredExtension != null) { - BaseState newState = new DeclaredExtensionState(declaredExtension, myInstance); + BaseState newState = new DeclaredExtensionState(getPreResourceState(), declaredExtension, myInstance); push(newState); } else { super.enteringNewElementExtension(theElement, theUrlAttr, theIsModifier); @@ -590,7 +652,8 @@ class ParserState { private UndeclaredExtension myExtension; - public ExtensionState(UndeclaredExtension theExtension) { + public ExtensionState(PreResourceState thePreResourceState, UndeclaredExtension theExtension) { + super(thePreResourceState); myExtension = theExtension; } @@ -614,7 +677,7 @@ class ParserState { BaseRuntimeElementCompositeDefinition compositeTarget = (BaseRuntimeElementCompositeDefinition) target; ICompositeDatatype newChildInstance = (ICompositeDatatype) compositeTarget.newInstance(); myExtension.setValue(newChildInstance); - ElementCompositeState newState = new ElementCompositeState(compositeTarget, newChildInstance); + ElementCompositeState newState = new ElementCompositeState(getPreResourceState(), compositeTarget, newChildInstance); push(newState); return; } @@ -622,7 +685,7 @@ class ParserState { RuntimePrimitiveDatatypeDefinition primitiveTarget = (RuntimePrimitiveDatatypeDefinition) target; IPrimitiveDatatype newChildInstance = primitiveTarget.newInstance(); myExtension.setValue(newChildInstance); - PrimitiveState newState = new PrimitiveState(newChildInstance); + PrimitiveState newState = new PrimitiveState(getPreResourceState(), newChildInstance); push(newState); return; } @@ -630,7 +693,7 @@ class ParserState { RuntimeResourceReferenceDefinition resourceRefTarget = (RuntimeResourceReferenceDefinition) target; ResourceReferenceDt newChildInstance = new ResourceReferenceDt(); myExtension.setValue(newChildInstance); - ResourceReferenceState newState = new ResourceReferenceState(resourceRefTarget, newChildInstance); + ResourceReferenceState newState = new ResourceReferenceState(getPreResourceState(), resourceRefTarget, newChildInstance); push(newState); return; } @@ -649,10 +712,15 @@ class ParserState { } + private class PreAtomState extends BaseState { private Bundle myInstance; + public PreAtomState() { + super(null); + } + @Override public void endingElement(EndElement theElem) throws DataFormatException { // ignore @@ -682,30 +750,39 @@ class ParserState { } } - + private class PreResourceState extends BaseState { - private IResource myInstance; + private Map myContainedResources = new HashMap(); private BundleEntry myEntry; + private IResource myInstance; + private List myResourceReferences = new ArrayList(); + private Class myResourceType; + public PreResourceState(BundleEntry theEntry) { + super(null); + myEntry = theEntry; + } + /** * @param theResourceType * May be null */ public PreResourceState(Class theResourceType) { + super(null); myResourceType = theResourceType; } - public PreResourceState(BundleEntry theEntry) { - myEntry = theEntry; + public PreResourceState(PreResourceState thePreResourcesState) { + super(thePreResourcesState); } @Override public void endingElement(EndElement theElem) throws DataFormatException { pop(); } - + @Override public void enteringNewElement(String theNamespaceURI, String theLocalPart) throws DataFormatException { BaseRuntimeElementDefinition definition; @@ -727,7 +804,15 @@ class ParserState { myEntry.setResource(myInstance); } - push(new ElementCompositeState(def, myInstance)); + push(new ResourceState(this, def, myInstance)); + } + + public Map getContainedResources() { + return myContainedResources; + } + + public List getResourceReferences() { + return myResourceReferences; } @SuppressWarnings("unchecked") @@ -736,6 +821,21 @@ class ParserState { if (myEntry == null) { myObject = (T) myInstance; } + + for (ResourceReferenceDt nextRef : myResourceReferences) { + String ref = nextRef.getReference().getValue(); + if (isNotBlank(ref)){ + if (ref.startsWith("#")) { + IResource target = myContainedResources.get(ref.substring(1)); + if (target != null) { + nextRef.setResource(target); + } else { + ourLog.warn("Resource contains unknown local ref: " + ref); + } + } + } + } + } @Override @@ -748,8 +848,8 @@ class ParserState { private class PrimitiveState extends BaseState { private IPrimitiveDatatype myInstance; - public PrimitiveState(IPrimitiveDatatype theInstance) { - super(); + public PrimitiveState(PreResourceState thePreResourceState, IPrimitiveDatatype theInstance) { + super(thePreResourceState); myInstance = theInstance; } @@ -766,10 +866,12 @@ class ParserState { } // @Override - // public void enteringNewElementExtension(StartElement theElement, String theUrlAttr) { + // public void enteringNewElementExtension(StartElement theElement, + // String theUrlAttr) { // if (myInstance instanceof ISupportsUndeclaredExtensions) { // UndeclaredExtension ext = new UndeclaredExtension(theUrlAttr); - // ((ISupportsUndeclaredExtensions) myInstance).getUndeclaredExtensions().add(ext); + // ((ISupportsUndeclaredExtensions) + // myInstance).getUndeclaredExtensions().add(ext); // push(new ExtensionState(ext)); // } // } @@ -792,7 +894,8 @@ class ParserState { private ResourceReferenceDt myInstance; private ResourceReferenceSubState mySubState; - public ResourceReferenceState(RuntimeResourceReferenceDefinition theDefinition, ResourceReferenceDt theInstance) { + public ResourceReferenceState(PreResourceState thePreResourceState, RuntimeResourceReferenceDefinition theDefinition, ResourceReferenceDt theInstance) { + super(thePreResourceState); myDefinition = theDefinition; myInstance = theInstance; mySubState = ResourceReferenceSubState.INITIAL; @@ -857,13 +960,32 @@ class ParserState { DISPLAY, INITIAL, REFERENCE } + private class ResourceState extends ElementCompositeState { + + public ResourceState(PreResourceState thePreResourceState, RuntimeResourceDefinition theDef, IResource theInstance) { + super(thePreResourceState, theDef, theInstance); + } + + @Override + public void enteringNewElement(String theNamespace, String theChildName) throws DataFormatException { + if ("contained".equals(theChildName)) { + push(new ContainedResourcesState(getPreResourceState())); + }else { + super.enteringNewElement(theNamespace, theChildName); + } + } + + + } + private class XhtmlState extends BaseState { private int myDepth; private XhtmlDt myDt; private List myEvents = new ArrayList(); private boolean myIncludeOuterEvent; - private XhtmlState(XhtmlDt theXhtmlDt, boolean theIncludeOuterEvent) throws DataFormatException { + private XhtmlState(PreResourceState thePreResourceState, XhtmlDt theXhtmlDt, boolean theIncludeOuterEvent) throws DataFormatException { + super(thePreResourceState); myDepth = 0; myDt = theXhtmlDt; myIncludeOuterEvent = theIncludeOuterEvent; diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/XmlParser.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/XmlParser.java index bfdd7595238..f335cc48b21 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/XmlParser.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/XmlParser.java @@ -62,6 +62,7 @@ public class XmlParser implements IParser { private FhirContext myContext; private XMLInputFactory myXmlInputFactory; private XMLOutputFactory myXmlOutputFactory; + private boolean myPrettyPrint; public XmlParser(FhirContext theContext) { myContext = theContext; @@ -70,8 +71,12 @@ public class XmlParser implements IParser { } private XMLStreamWriter decorateStreamWriter(XMLStreamWriter eventWriter) { - PrettyPrintWriterWrapper retVal = new PrettyPrintWriterWrapper(eventWriter); - return retVal; + if (myPrettyPrint) { + PrettyPrintWriterWrapper retVal = new PrettyPrintWriterWrapper(eventWriter); + return retVal; + } else { + return eventWriter; + } } private T doXmlLoop(XMLEventReader streamReader, ParserState parserState) { @@ -89,13 +94,13 @@ public class XmlParser implements IParser { if (urlAttr == null || isBlank(urlAttr.getValue())) { throw new DataFormatException("Extension element has no 'url' attribute"); } - parserState.enteringNewElementExtension(elem, urlAttr.getValue(),false); + parserState.enteringNewElementExtension(elem, urlAttr.getValue(), false); } else if ("modifierExtension".equals(elem.getName().getLocalPart())) { Attribute urlAttr = elem.getAttributeByName(new QName("url")); if (urlAttr == null || isBlank(urlAttr.getValue())) { throw new DataFormatException("Extension element has no 'url' attribute"); } - parserState.enteringNewElementExtension(elem, urlAttr.getValue(),true); + parserState.enteringNewElementExtension(elem, urlAttr.getValue(), true); } else { @@ -166,7 +171,7 @@ public class XmlParser implements IParser { eventWriter.writeDefaultNamespace(ATOM_NS); writeTagWithTextNode(eventWriter, "title", theBundle.getTitle()); - writeTagWithTextNode(eventWriter, "id", theBundle.getId()); + writeTagWithTextNode(eventWriter, "id", theBundle.getBundleId()); writeAtomLink(eventWriter, "self", theBundle.getLinkSelf()); writeAtomLink(eventWriter, "first", theBundle.getLinkFirst()); @@ -176,7 +181,7 @@ public class XmlParser implements IParser { writeAtomLink(eventWriter, "fhir-base", theBundle.getLinkBase()); if (theBundle.getTotalResults().getValue() != null) { - eventWriter.writeStartElement("os", OPENSEARCH_NS, "totalResults"); + eventWriter.writeStartElement("os", "totalResults",OPENSEARCH_NS); eventWriter.writeNamespace("os", OPENSEARCH_NS); eventWriter.writeCharacters(theBundle.getTotalResults().getValue().toString()); eventWriter.writeEndElement(); @@ -212,8 +217,7 @@ public class XmlParser implements IParser { } } - private void encodeChildElementToStreamWriter(XMLStreamWriter theEventWriter, IElement nextValue, String childName, BaseRuntimeElementDefinition childDef, String theExtensionUrl) - throws XMLStreamException, DataFormatException { + private void encodeChildElementToStreamWriter(XMLStreamWriter theEventWriter, IElement nextValue, String childName, BaseRuntimeElementDefinition childDef, String theExtensionUrl) throws XMLStreamException, DataFormatException { if (nextValue.isEmpty()) { return; } @@ -268,8 +272,7 @@ public class XmlParser implements IParser { } - private void encodeCompositeElementChildrenToStreamWriter(IElement theElement, XMLStreamWriter theEventWriter, List children) throws XMLStreamException, - DataFormatException { + private void encodeCompositeElementChildrenToStreamWriter(IElement theElement, XMLStreamWriter theEventWriter, List children) throws XMLStreamException, DataFormatException { for (BaseRuntimeChildDefinition nextChild : children) { List values = nextChild.getAccessor().getValues(theElement); if (values == null || values.isEmpty()) { @@ -292,10 +295,10 @@ public class XmlParser implements IParser { RuntimeChildDeclaredExtensionDefinition extDef = (RuntimeChildDeclaredExtensionDefinition) nextChild; if (extDef.isModifier()) { theEventWriter.writeStartElement("modifierExtension"); - }else { + } else { theEventWriter.writeStartElement("extension"); } - + theEventWriter.writeAttribute("url", extensionUrl); encodeChildElementToStreamWriter(theEventWriter, nextValue, childName, childDef, null); theEventWriter.writeEndElement(); @@ -306,8 +309,7 @@ public class XmlParser implements IParser { } } - private void encodeCompositeElementToStreamWriter(IElement theElement, XMLStreamWriter theEventWriter, BaseRuntimeElementCompositeDefinition resDef) throws XMLStreamException, - DataFormatException { + private void encodeCompositeElementToStreamWriter(IElement theElement, XMLStreamWriter theEventWriter, BaseRuntimeElementCompositeDefinition resDef) throws XMLStreamException, DataFormatException { encodeExtensionsIfPresent(theEventWriter, theElement); encodeCompositeElementChildrenToStreamWriter(theElement, theEventWriter, resDef.getExtensions()); encodeCompositeElementChildrenToStreamWriter(theElement, theEventWriter, resDef.getChildren()); @@ -330,6 +332,9 @@ public class XmlParser implements IParser { IElement nextValue = next.getValue(); RuntimeChildUndeclaredExtensionDefinition extDef = myContext.getRuntimeChildUndeclaredExtensionDefinition(); String childName = extDef.getChildNameByDatatype(nextValue.getClass()); + if (childName==null) { + throw new ConfigurationException("Unable to encode extension, unregognized child element type: " + nextValue.getClass().getCanonicalName()); + } BaseRuntimeElementDefinition childDef = extDef.getChildElementDefinitionByDatatype(nextValue.getClass()); encodeChildElementToStreamWriter(theWriter, nextValue, childName, childDef, null); } @@ -354,7 +359,6 @@ public class XmlParser implements IParser { } } - @Override public String encodeResourceToString(IResource theResource) throws DataFormatException { Writer stringWriter = new StringWriter(); @@ -376,7 +380,6 @@ public class XmlParser implements IParser { } } - private void encodeResourceToXmlStreamWriter(IResource theResource, XMLStreamWriter eventWriter) throws XMLStreamException, DataFormatException { RuntimeResourceDefinition resDef = myContext.getResourceDefinition(theResource); eventWriter.writeStartElement(resDef.getName()); @@ -574,4 +577,10 @@ public class XmlParser implements IParser { StringReader reader = new StringReader(theMessageString); return (T) parseResource(theResourceType, reader); } + + @Override + public IParser setPrettyPrint(boolean thePrettyPrint) { + myPrettyPrint = thePrettyPrint; + return this; + } } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/client/ClientInvocationHandler.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/client/ClientInvocationHandler.java index c4e55f09c00..d2ee77e31c8 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/client/ClientInvocationHandler.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/client/ClientInvocationHandler.java @@ -27,7 +27,7 @@ import ca.uhn.fhir.parser.IParser; import ca.uhn.fhir.rest.client.api.IRestfulClient; import ca.uhn.fhir.rest.client.exceptions.InvalidResponseException; import ca.uhn.fhir.rest.client.exceptions.NonFhirResponseException; -import ca.uhn.fhir.rest.common.BaseMethodBinding; +import ca.uhn.fhir.rest.method.BaseMethodBinding; import ca.uhn.fhir.rest.server.Constants; public class ClientInvocationHandler implements InvocationHandler { diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/client/GetClientInvocation.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/client/GetClientInvocation.java index f814bfec9ac..6b80e9e49b8 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/client/GetClientInvocation.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/client/GetClientInvocation.java @@ -3,6 +3,7 @@ package ca.uhn.fhir.rest.client; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -14,10 +15,10 @@ import ca.uhn.fhir.context.ConfigurationException; public class GetClientInvocation extends BaseClientInvocation { - private final Map myParameters; + private final Map> myParameters; private final String myUrlPath; - public GetClientInvocation(Map theParameters, String... theUrlFragments) { + public GetClientInvocation(Map> theParameters, String... theUrlFragments) { myParameters = theParameters; myUrlPath = StringUtils.join(theUrlFragments, '/'); } @@ -27,7 +28,7 @@ public class GetClientInvocation extends BaseClientInvocation { myUrlPath = StringUtils.join(theUrlFragments, '/'); } - public Map getParameters() { + public Map> getParameters() { return myParameters; } @@ -42,24 +43,25 @@ public class GetClientInvocation extends BaseClientInvocation { b.append(myUrlPath); boolean first = true; - for (Entry next : myParameters.entrySet()) { - if (next.getValue()==null) { + for (Entry> next : myParameters.entrySet()) { + if (next.getValue() == null || next.getValue().isEmpty()) { continue; } - if (first) { - b.append('?'); - first = false; - } else { - b.append('&'); + for (String nextValue : next.getValue()) { + if (first) { + b.append('?'); + first = false; + } else { + b.append('&'); + } + try { + b.append(URLEncoder.encode(next.getKey(), "UTF-8")); + b.append('='); + b.append(URLEncoder.encode(nextValue, "UTF-8")); + } catch (UnsupportedEncodingException e) { + throw new ConfigurationException("Could not find UTF-8 encoding. This shouldn't happen.", e); + } } - try { - b.append(URLEncoder.encode(next.getKey(), "UTF-8")); - b.append('='); - b.append(URLEncoder.encode(next.getValue(), "UTF-8")); - } catch (UnsupportedEncodingException e) { - throw new ConfigurationException("Could not find UTF-8 encoding. This shouldn't happen.", e); - } - } return new HttpGet(b.toString()); } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/client/RestfulClientFactory.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/client/RestfulClientFactory.java index 8e07d83eb8f..a2cf2219218 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/client/RestfulClientFactory.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/client/RestfulClientFactory.java @@ -13,7 +13,8 @@ import ca.uhn.fhir.context.ConfigurationException; import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.model.api.IResource; import ca.uhn.fhir.rest.client.api.IRestfulClient; -import ca.uhn.fhir.rest.common.BaseMethodBinding; +import ca.uhn.fhir.rest.method.BaseMethodBinding; +import ca.uhn.fhir.util.ReflectionUtil; public class RestfulClientFactory implements IRestfulClientFactory { @@ -76,6 +77,12 @@ public class RestfulClientFactory implements IRestfulClientFactory { Class returnType = nextMethod.getReturnType(); if (IResource.class.isAssignableFrom(returnType)) { resReturnType = (Class) returnType; + } else if (java.util.Collection.class.isAssignableFrom(returnType)) { + Class returnTypeColl = ReflectionUtil.getGenericCollectionTypeOfMethodReturnType(nextMethod); + if (!IResource.class.isAssignableFrom(returnTypeColl)) { + throw new ConfigurationException("Generic type of collection for method '" + nextMethod + "' is not a subclass of IResource"); + } + resReturnType = (Class) returnTypeColl; } BaseMethodBinding binding = BaseMethodBinding.bindMethod(resReturnType, nextMethod); invocationHandler.addBinding(nextMethod, binding); diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/common/BaseMethodBinding.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/method/BaseMethodBinding.java similarity index 98% rename from hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/common/BaseMethodBinding.java rename to hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/method/BaseMethodBinding.java index c911f64c12e..f2b6ae88dca 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/common/BaseMethodBinding.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/method/BaseMethodBinding.java @@ -1,4 +1,4 @@ -package ca.uhn.fhir.rest.common; +package ca.uhn.fhir.rest.method; import java.lang.reflect.Method; import java.util.ArrayList; @@ -74,11 +74,11 @@ public abstract class BaseMethodBinding { returnType = search.type(); } - if (returnType == null) { + if (returnType == IResource.class) { throw new ConfigurationException("Could not determine return type for method '" + theMethod.getName() + "'. Try explicitly specifying one in the operation annotation."); } } - + if (read != null) { return new ReadMethodBinding(methodReturnTypeEnum, returnType, theMethod); } else if (search != null) { diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/common/ConformanceMethodBinding.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/method/ConformanceMethodBinding.java similarity index 93% rename from hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/common/ConformanceMethodBinding.java rename to hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/method/ConformanceMethodBinding.java index 78887b36e65..6504c33b963 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/common/ConformanceMethodBinding.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/method/ConformanceMethodBinding.java @@ -1,4 +1,4 @@ -package ca.uhn.fhir.rest.common; +package ca.uhn.fhir.rest.method; import java.util.List; import java.util.Map; @@ -7,7 +7,7 @@ import ca.uhn.fhir.model.api.IResource; import ca.uhn.fhir.model.dstu.resource.Conformance; import ca.uhn.fhir.model.primitive.IdDt; import ca.uhn.fhir.rest.client.GetClientInvocation; -import ca.uhn.fhir.rest.common.SearchMethodBinding.RequestType; +import ca.uhn.fhir.rest.method.SearchMethodBinding.RequestType; import ca.uhn.fhir.rest.server.IResourceProvider; import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException; diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/common/ReadMethodBinding.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/method/ReadMethodBinding.java similarity index 97% rename from hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/common/ReadMethodBinding.java rename to hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/method/ReadMethodBinding.java index 4e8ce7a6194..ac659931949 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/common/ReadMethodBinding.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/method/ReadMethodBinding.java @@ -1,4 +1,4 @@ -package ca.uhn.fhir.rest.common; +package ca.uhn.fhir.rest.method; import java.lang.reflect.Method; import java.util.List; @@ -10,7 +10,7 @@ import ca.uhn.fhir.context.ConfigurationException; import ca.uhn.fhir.model.api.IResource; import ca.uhn.fhir.model.primitive.IdDt; import ca.uhn.fhir.rest.client.GetClientInvocation; -import ca.uhn.fhir.rest.common.SearchMethodBinding.RequestType; +import ca.uhn.fhir.rest.method.SearchMethodBinding.RequestType; import ca.uhn.fhir.rest.server.Constants; import ca.uhn.fhir.rest.server.IResourceProvider; import ca.uhn.fhir.rest.server.Util; diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/common/Request.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/method/Request.java similarity index 93% rename from hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/common/Request.java rename to hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/method/Request.java index d40f2056077..feb26dc41c9 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/common/Request.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/method/Request.java @@ -1,9 +1,9 @@ -package ca.uhn.fhir.rest.common; +package ca.uhn.fhir.rest.method; import java.util.Set; import ca.uhn.fhir.model.primitive.IdDt; -import ca.uhn.fhir.rest.common.SearchMethodBinding.RequestType; +import ca.uhn.fhir.rest.method.SearchMethodBinding.RequestType; public class Request { @@ -12,7 +12,6 @@ public class Request { private Set myParameterNames; private RequestType myRequestType; private String myResourceName; - private IdDt myVersion; public IdDt getId() { diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/common/SearchMethodBinding.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/method/SearchMethodBinding.java similarity index 81% rename from hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/common/SearchMethodBinding.java rename to hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/method/SearchMethodBinding.java index 10e152e2ae5..6819eb02c88 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/common/SearchMethodBinding.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/method/SearchMethodBinding.java @@ -1,24 +1,24 @@ -package ca.uhn.fhir.rest.common; +package ca.uhn.fhir.rest.method; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.HashMap; +import java.util.ArrayList; +import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; -import org.apache.commons.lang3.StringUtils; - import ca.uhn.fhir.model.api.IResource; import ca.uhn.fhir.model.primitive.IdDt; import ca.uhn.fhir.rest.client.GetClientInvocation; +import ca.uhn.fhir.rest.param.Parameter; import ca.uhn.fhir.rest.server.IResourceProvider; -import ca.uhn.fhir.rest.server.Parameter; import ca.uhn.fhir.rest.server.Util; import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException; +import ca.uhn.fhir.util.QueryUtil; /** * Created by dsotnikov on 2/25/2014. @@ -35,7 +35,7 @@ public class SearchMethodBinding extends BaseMethodBinding { super(theMethodReturnTypeEnum, theReturnResourceType); this.method = theMethod; this.myParameters = Util.getResourceParameters(theMethod); - + this.myDeclaredResourceType = theMethod.getReturnType(); } @@ -59,27 +59,37 @@ public class SearchMethodBinding extends BaseMethodBinding { @Override public GetClientInvocation invokeClient(Object[] theArgs) throws InternalErrorException { assert theArgs.length == myParameters.size() : "Wrong number of arguments: " + theArgs.length; - - Map args = new LinkedHashMap(); - + + Map> args = new LinkedHashMap>(); + for (int idx = 0; idx < theArgs.length; idx++) { Object object = theArgs[idx]; Parameter nextParam = myParameters.get(idx); - String value; if (object == null) { if (nextParam.isRequired()) { throw new NullPointerException("Parameter '" + nextParam.getName() + "' is required and may not be null"); - }else { - value=null; } - }else { - value = nextParam.encode(object); + } else { + List> value = nextParam.encode(object); + ArrayList paramValues = new ArrayList(value.size()); + args.put(nextParam.getName(), paramValues); + + for (List nextParamEntry : value) { + StringBuilder b = new StringBuilder(); + for (String str : nextParamEntry) { + if (b.length() > 0) { + b.append(","); + } + b.append(str.replace(",", "\\,")); + } + paramValues.add(b.toString()); + } + } - - args.put(nextParam.getName(), value); + } - + return new GetClientInvocation(args, getResourceName()); } @@ -92,13 +102,21 @@ public class SearchMethodBinding extends BaseMethodBinding { for (int i = 0; i < myParameters.size(); i++) { Parameter param = myParameters.get(i); String[] value = parameterValues.get(param.getName()); - if (value == null || value.length == 0 || StringUtils.isBlank(value[0])) { + if (value == null || value.length == 0) { continue; } - if (value.length > 1) { - throw new InvalidRequestException("Multiple values specified for parameter: " + param.getName()); + + List> paramList=new ArrayList>(value.length); + for (String nextParam : value) { + if (nextParam.contains(",")==false) { + paramList.add(Collections.singletonList(nextParam)); + }else { + paramList.add(QueryUtil.splitQueryStringByCommasIgnoreEscape(nextParam)); + } } - params[i] = param.parse(value[0]); + + params[i] = param.parse(paramList); + } Object response; @@ -134,7 +152,7 @@ public class SearchMethodBinding extends BaseMethodBinding { ourLog.trace("Method {} doesn't match because request type is POST but operation is not _search: {}", theRequest.getId(), theRequest.getOperation()); return false; } - + Set methodParamsTemp = new HashSet(); for (int i = 0; i < this.myParameters.size(); i++) { Parameter temp = this.myParameters.get(i); diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/CodingListParam.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/CodingListParam.java new file mode 100644 index 00000000000..200a06ae372 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/CodingListParam.java @@ -0,0 +1,49 @@ +package ca.uhn.fhir.rest.param; + +import java.util.ArrayList; +import java.util.List; + +import ca.uhn.fhir.model.api.IQueryParameterOr; +import ca.uhn.fhir.model.dstu.composite.CodingDt; + +public class CodingListParam implements IQueryParameterOr { + + private List myCodings = new ArrayList(); + + /** + * Returns all Codings associated with this list + */ + public List getCodings() { + return myCodings; + } + + @Override + public List getValuesAsQueryTokens() { + ArrayList retVal = new ArrayList(); + for (CodingDt next : myCodings) { + retVal.add(next.getValueAsQueryToken()); + } + return retVal; + } + + /** + * Returns all Codings associated with this list + */ + public void setCodings(List theCodings) { + myCodings = theCodings; + } + + @Override + public void setValuesAsQueryTokens(List theParameters) { + for (String string : theParameters) { + CodingDt dt = new CodingDt(); + dt.setValueAsQueryToken(string); + myCodings.add(dt); + } + } + + public void add(CodingDt theCodingDt) { + myCodings.add(theCodingDt); + } + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/CollectionBinder.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/CollectionBinder.java new file mode 100644 index 00000000000..efba64933bf --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/CollectionBinder.java @@ -0,0 +1,57 @@ +package ca.uhn.fhir.rest.param; + + +public class CollectionBinder +//implements IParamBinder +{ + +// private Class myCollectionType; +// private IParamBinder myWrap; +// +// public CollectionBinder(IParamBinder theWrap, Class> theCollectionType) { +// myWrap = theWrap; +// if (theCollectionType == List.class || theCollectionType == ArrayList.class) { +// myCollectionType = ArrayList.class; +// } else if (theCollectionType == Set.class || theCollectionType == HashSet.class) { +// myCollectionType = HashSet.class; +// } else if (theCollectionType == Collection.class) { +// myCollectionType = ArrayList.class; +// } else { +// throw new ConfigurationException("Unsupported binding collection type: " + theCollectionType.getCanonicalName()); +// } +// } + +// @Override +// public String encode(Object theString) throws InternalErrorException { +// Collection obj = (Collection) theString; +// StringBuilder b = new StringBuilder(); +// for (Object object : obj) { +// String next = myWrap.encode(object); +// if (b.length() > 0) { +// b.append(","); +// } +// b.append(next.replace(",", "\\,")); +// } +// return b.toString(); +// } +// +// @SuppressWarnings("unchecked") +// @Override +// public Object parse(String theString) throws InternalErrorException { +// Collection retVal; +// try { +// retVal = (Collection) myCollectionType.newInstance(); +// } catch (Exception e) { +// throw new InternalErrorException("Failed to instantiate " + myCollectionType, e); +// } +// +// List params = QueryUtil.splitQueryStringByCommasIgnoreEscape(theString); +// for (String string : params) { +// Object nextParsed = myWrap.parse(string); +// retVal.add(nextParsed); +// } +// +// return retVal; +// } + +} \ No newline at end of file diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/IParamBinder.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/IParamBinder.java new file mode 100644 index 00000000000..3a5c8b935f4 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/IParamBinder.java @@ -0,0 +1,14 @@ +package ca.uhn.fhir.rest.param; + +import java.util.List; + +import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; +import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException; + +interface IParamBinder { + + List> encode(Object theString) throws InternalErrorException; + + Object parse(List> theString) throws InternalErrorException, InvalidRequestException; + +} \ No newline at end of file diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/IdentifierListParam.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/IdentifierListParam.java new file mode 100644 index 00000000000..3bf15dc1e22 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/IdentifierListParam.java @@ -0,0 +1,45 @@ +package ca.uhn.fhir.rest.param; + +import java.util.ArrayList; +import java.util.List; + +import ca.uhn.fhir.model.api.IQueryParameterOr; +import ca.uhn.fhir.model.dstu.composite.IdentifierDt; + +public class IdentifierListParam implements IQueryParameterOr { + + private List myIdentifiers = new ArrayList(); + + /** + * Returns all identifiers associated with this list + */ + public List getIdentifiers() { + return myIdentifiers; + } + + @Override + public List getValuesAsQueryTokens() { + ArrayList retVal = new ArrayList(); + for (IdentifierDt next : myIdentifiers) { + retVal.add(next.getValueAsQueryToken()); + } + return retVal; + } + + /** + * Returns all identifiers associated with this list + */ + public void setIdentifiers(List theIdentifiers) { + myIdentifiers = theIdentifiers; + } + + @Override + public void setValuesAsQueryTokens(List theParameters) { + for (String string : theParameters) { + IdentifierDt dt = new IdentifierDt(); + dt.setValueAsQueryToken(string); + myIdentifiers.add(dt); + } + } + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/Parameter.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/Parameter.java new file mode 100644 index 00000000000..f7ac3b40827 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/Parameter.java @@ -0,0 +1,79 @@ +package ca.uhn.fhir.rest.param; + +import java.util.Collection; +import java.util.List; + +import ca.uhn.fhir.context.ConfigurationException; +import ca.uhn.fhir.model.api.IQueryParameterOr; +import ca.uhn.fhir.model.api.IQueryParameterType; +import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; +import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException; + +/** + * Created by dsotnikov on 2/25/2014. + */ +public class Parameter { + + private String name; + private IParamBinder parser; + private boolean required; + private Class type; + + public Parameter() { + } + + public Parameter(String name, boolean required) { + this.name = name; + this.required = required; + } + + public List> encode(Object theObject) throws InternalErrorException { + return parser.encode(theObject); + } + + public String getName() { + return name; + } + + public Class getType() { + return type; + } + + public boolean isRequired() { + return required; + } + + public Object parse(List> theString) throws InternalErrorException, InvalidRequestException { + return parser.parse(theString); + } + + public void setName(String name) { + this.name = name; + } + + public void setRequired(boolean required) { + this.required = required; + } + + @SuppressWarnings("unchecked") + public void setType(final Class type, Class> theInnerCollectionType, Class> theOuterCollectionType) { + this.type = type; + if (IQueryParameterType.class.isAssignableFrom(type)) { + this.parser = new QueryParameterTypeBinder((Class) type); + } else if (IQueryParameterOr.class.isAssignableFrom(type)) { + this.parser = new QueryParameterOrBinder((Class) type); + } else { + throw new ConfigurationException("Unsupported data type for parameter: " + type.getCanonicalName()); + } + +// if (theInnerCollectionType != null) { +// this.parser = new CollectionBinder(this.parser, theInnerCollectionType); +// } +// +// if (theOuterCollectionType != null) { +// this.parser = new CollectionBinder(this.parser, theOuterCollectionType); +// } + + } + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/QualifiedDateParam.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/QualifiedDateParam.java new file mode 100644 index 00000000000..61cb0ebea50 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/QualifiedDateParam.java @@ -0,0 +1,85 @@ +package ca.uhn.fhir.rest.param; + +import java.util.Date; + +import ca.uhn.fhir.model.api.IQueryParameterType; +import ca.uhn.fhir.model.dstu.valueset.QuantityCompararatorEnum; +import ca.uhn.fhir.model.primitive.DateTimeDt; + +public class QualifiedDateParam extends DateTimeDt implements IQueryParameterType { + + private QuantityCompararatorEnum myComparator; + + /** + * Constructor + */ + public QualifiedDateParam() { + } + + /** + * Constructor + */ + public QualifiedDateParam(QuantityCompararatorEnum theComparator, Date theDate) { + myComparator = theComparator; + setValue(theDate); + } + + /** + * Constructor + */ + public QualifiedDateParam(QuantityCompararatorEnum theComparator, String theDate) { + myComparator = theComparator; + setValueAsString(theDate); + } + + /** + * Returns the comparator, or null if none has been set + */ + public QuantityCompararatorEnum getComparator() { + return myComparator; + } + + @Override + public String getValueAsQueryToken() { + if (myComparator != null && getValue() != null) { + return myComparator.getCode() + getValueAsString(); + } else if (myComparator == null && getValue() != null) { + return getValueAsString(); + } + return ""; + } + + public void setComparator(QuantityCompararatorEnum theComparator) { + myComparator = theComparator; + } + + @Override + public void setValueAsQueryToken(String theParameter) { + if (theParameter.length() < 2) { + throw new IllegalArgumentException("Invalid qualified date parameter: "+theParameter); + } + + char char0 = theParameter.charAt(0); + char char1 = theParameter.charAt(1); + if (Character.isDigit(char0)) { + setValueAsString(theParameter); + } else { + int dateStart = 2; + if (Character.isDigit(char1)) { + dateStart = 1; + } + + String comparatorString = theParameter.substring(0, dateStart); + QuantityCompararatorEnum comparator = QuantityCompararatorEnum.VALUESET_BINDER.fromCodeString(comparatorString); + if (comparator==null) { + throw new IllegalArgumentException("Invalid date qualifier: "+comparatorString); + } + + String dateString = theParameter.substring(dateStart); + setValueAsString(dateString); + setComparator(comparator); + } + + } + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/QueryParameterOrBinder.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/QueryParameterOrBinder.java new file mode 100644 index 00000000000..9911d45e05a --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/QueryParameterOrBinder.java @@ -0,0 +1,45 @@ +package ca.uhn.fhir.rest.param; + +import java.util.Collections; +import java.util.List; + +import ca.uhn.fhir.model.api.IQueryParameterOr; +import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; +import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException; + +final class QueryParameterOrBinder implements IParamBinder { + private final Class myType; + + QueryParameterOrBinder(Class theType) { + myType = theType; + } + + @Override + public List> encode(Object theString) throws InternalErrorException { + List retVal = ((IQueryParameterOr) theString).getValuesAsQueryTokens(); + return Collections.singletonList(retVal); + } + + @Override + public Object parse(List> theString) throws InternalErrorException, InvalidRequestException { + IQueryParameterOr dt; + try { + dt = myType.newInstance(); + if (theString.size() == 0 || theString.get(0).size() == 0) { + return dt; + } + if (theString.size() > 1) { + throw new InvalidRequestException("Multiple values detected"); + } + + dt.setValuesAsQueryTokens(theString.get(0)); + } catch (InstantiationException e) { + throw new InternalErrorException(e); + } catch (IllegalAccessException e) { + throw new InternalErrorException(e); + } catch (SecurityException e) { + throw new InternalErrorException(e); + } + return dt; + } +} \ No newline at end of file diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/QueryParameterTypeBinder.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/QueryParameterTypeBinder.java new file mode 100644 index 00000000000..db7c5c63118 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/param/QueryParameterTypeBinder.java @@ -0,0 +1,45 @@ +package ca.uhn.fhir.rest.param; + +import java.util.Collections; +import java.util.List; + +import ca.uhn.fhir.model.api.IQueryParameterType; +import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; +import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException; + +final class QueryParameterTypeBinder implements IParamBinder { + private final Class myType; + + QueryParameterTypeBinder(Class theType) { + myType = theType; + } + + @Override + public List> encode(Object theString) throws InternalErrorException { + String retVal = ((IQueryParameterType) theString).getValueAsQueryToken(); + return Collections.singletonList(Collections.singletonList(retVal)); + } + + @Override + public Object parse(List> theString) throws InternalErrorException, InvalidRequestException { + IQueryParameterType dt; + try { + dt = myType.newInstance(); + if (theString.size() == 0 || theString.get(0).size() == 0) { + return dt; + } + if (theString.size() > 1 || theString.get(0).size() > 1) { + throw new InvalidRequestException("Multiple values detected"); + } + + dt.setValueAsQueryToken(theString.get(0).get(0)); + } catch (InstantiationException e) { + throw new InternalErrorException(e); + } catch (IllegalAccessException e) { + throw new InternalErrorException(e); + } catch (SecurityException e) { + throw new InternalErrorException(e); + } + return dt; + } +} \ No newline at end of file diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Constants.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Constants.java index 3868f075ca3..0d3e15c972a 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Constants.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Constants.java @@ -1,10 +1,44 @@ package ca.uhn.fhir.rest.server; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + public class Constants { + public static final String CT_FHIR_JSON = "application/json+fhir"; public static final String CT_FHIR_XML = "application/xml+fhir"; public static final String PARAM_FORMAT = "_format"; public static final String URL_TOKEN_HISTORY = "_history"; public static final String CT_ATOM_XML = "application/atom+xml"; + public static final Set FORMAT_VAL_XML; + public static final Set FORMAT_VAL_JSON; + public static final Map FORMAT_VAL_TO_ENCODING; + + static { + Map valToEncoding = new HashMap(); + + HashSet valXml = new HashSet(); + valXml.add(CT_FHIR_XML); + valXml.add("application/xml"); + valXml.add("xml"); + FORMAT_VAL_XML = Collections.unmodifiableSet(valXml); + for (String string : valXml) { + valToEncoding.put(string, EncodingUtil.XML); + } + + HashSet valJson = new HashSet(); + valJson.add(CT_FHIR_JSON); + valJson.add("application/json"); + valJson.add("json"); + FORMAT_VAL_JSON = Collections.unmodifiableSet(valJson); + for (String string : valJson) { + valToEncoding.put(string, EncodingUtil.JSON); + } + + FORMAT_VAL_TO_ENCODING=Collections.unmodifiableMap(valToEncoding); + } } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/EncodingUtil.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/EncodingUtil.java index b150c94562b..f9e7b3c4abc 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/EncodingUtil.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/EncodingUtil.java @@ -2,6 +2,24 @@ package ca.uhn.fhir.rest.server; public enum EncodingUtil { - XML, JSON - + XML(Constants.CT_FHIR_XML, Constants.CT_ATOM_XML), + + JSON(Constants.CT_FHIR_JSON, Constants.CT_FHIR_JSON); + + private String myResourceContentType; + private String myBundleContentType; + + EncodingUtil(String theResourceContentType, String theBundleContentType) { + myResourceContentType = theResourceContentType; + myBundleContentType = theBundleContentType; + } + + public String getBundleContentType() { + return myBundleContentType; + } + + public String getResourceContentType() { + return myResourceContentType; + } + } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/ISecurityManager.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/ISecurityManager.java index 59f6b202323..3f4e62319b1 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/ISecurityManager.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/ISecurityManager.java @@ -1,9 +1,9 @@ package ca.uhn.fhir.rest.server; -import ca.uhn.fhir.rest.server.exceptions.AuthenticationException; - import javax.servlet.http.HttpServletRequest; +import ca.uhn.fhir.rest.server.exceptions.AuthenticationException; + /** * Created by dsotnikov on 3/7/2014. */ diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Parameter.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Parameter.java deleted file mode 100644 index 12d94a28eeb..00000000000 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Parameter.java +++ /dev/null @@ -1,104 +0,0 @@ -package ca.uhn.fhir.rest.server; - -import ca.uhn.fhir.context.ConfigurationException; -import ca.uhn.fhir.model.api.IQueryParameterType; -import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; - -/** - * Created by dsotnikov on 2/25/2014. - */ -public class Parameter { - - private String name; - private IParamBinder parser; - private boolean required; - private Class type; - public Parameter(){} - - public Parameter(String name, boolean required) { - this.name = name; - this.required = required; - } - - public String getName() { - return name; - } - - public Class getType() { - return type; - } - - public boolean isRequired() { - return required; - } - - public Object parse(String theString) throws InternalErrorException { - return parser.parse(theString); - } - - public void setName(String name) { - this.name = name; - } - - public void setRequired(boolean required) { - this.required = required; - } - - @SuppressWarnings("unchecked") - public void setType(final Class type) { - this.type = type; - if (IQueryParameterType.class.isAssignableFrom(type)) { - this.parser = new IdentifierParamBinder((Class) type); - } else { - throw new ConfigurationException("Unsupported data type for parameter: " + type.getCanonicalName()); - } - } - - - - private final class IdentifierParamBinder implements IParamBinder { - private final Class myType; - - private IdentifierParamBinder(Class theType) { - myType = theType; - } - - @Override - public Object parse(String theString) throws InternalErrorException { - IQueryParameterType dt; - try { - dt = myType.newInstance(); - dt.setValueAsQueryToken(theString); - } catch (InstantiationException e) { - throw new InternalErrorException(e); - } catch (IllegalAccessException e) { - throw new InternalErrorException(e); - } catch (SecurityException e) { - throw new InternalErrorException(e); - } - return dt; - } - - @Override - public String encode(Object theString) throws InternalErrorException { - return ((IQueryParameterType)theString).getValueAsQueryToken(); - } - } - - - - private interface IParamBinder - { - Object parse(String theString) throws InternalErrorException; - - String encode(Object theString) throws InternalErrorException; - - } - - - - public String encode(Object theObject) throws InternalErrorException { - return parser.encode(theObject); - } - -} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Resource.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Resource.java index 710830adefe..d856c19dc40 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Resource.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Resource.java @@ -2,11 +2,9 @@ package ca.uhn.fhir.rest.server; import java.util.ArrayList; import java.util.List; -import java.util.Set; -import ca.uhn.fhir.model.primitive.IdDt; -import ca.uhn.fhir.rest.common.BaseMethodBinding; -import ca.uhn.fhir.rest.common.Request; +import ca.uhn.fhir.rest.method.BaseMethodBinding; +import ca.uhn.fhir.rest.method.Request; /** * Created by dsotnikov on 2/25/2014. diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/RestfulServer.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/RestfulServer.java index 1f0261cfec3..6363323b4af 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/RestfulServer.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/RestfulServer.java @@ -5,7 +5,9 @@ import java.io.PrintWriter; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Collection; +import java.util.Enumeration; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.StringTokenizer; @@ -16,8 +18,6 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import ca.uhn.fhir.rest.server.exceptions.*; - import org.apache.commons.lang3.StringUtils; import ca.uhn.fhir.context.FhirContext; @@ -26,57 +26,102 @@ import ca.uhn.fhir.model.api.Bundle; import ca.uhn.fhir.model.api.BundleEntry; import ca.uhn.fhir.model.api.IResource; import ca.uhn.fhir.model.primitive.IdDt; -import ca.uhn.fhir.rest.common.BaseMethodBinding; -import ca.uhn.fhir.rest.common.Request; -import ca.uhn.fhir.rest.common.SearchMethodBinding; +import ca.uhn.fhir.parser.IParser; +import ca.uhn.fhir.rest.method.BaseMethodBinding; +import ca.uhn.fhir.rest.method.Request; +import ca.uhn.fhir.rest.method.SearchMethodBinding; +import ca.uhn.fhir.rest.server.exceptions.AuthenticationException; +import ca.uhn.fhir.rest.server.exceptions.BaseServerResponseException; +import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; +import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException; +import ca.uhn.fhir.rest.server.exceptions.MethodNotFoundException; +import ca.uhn.fhir.rest.server.exceptions.ResourceNotFoundException; public abstract class RestfulServer extends HttpServlet { + private static HashSet FORMAT_VAL_XML; + private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(RestfulServer.class); private static final long serialVersionUID = 1L; - private ISecurityManager securityManager; - private FhirContext myFhirContext; private Map, IResourceProvider> myTypeToProvider = new HashMap, IResourceProvider>(); - @Override - protected void doOptions(HttpServletRequest theReq, HttpServletResponse theResp) throws ServletException, IOException { - handleRequest(SearchMethodBinding.RequestType.OPTIONS, theReq, theResp); - } - // map of request handler resources keyed by resource name private Map resources = new HashMap(); - @SuppressWarnings("unused") - private EncodingUtil determineResponseEncoding(Map theParams) { + private ISecurityManager securityManager; + + /** + * This method must be overridden to provide one or more resource providers + */ + public abstract Collection getResourceProviders(); + + /** + * This method should be overridden to provide a security manager instance. + * By default, returns null. + */ + public ISecurityManager getSecurityManager() { + return null; + } + + @Override + public void init() throws ServletException { + try { + ourLog.info("Initializing HAPI FHIR restful server"); + + securityManager = getSecurityManager(); + if (null == securityManager) { + ourLog.warn("No security manager has been provided, requests will not be authenticated!"); + } + + Collection resourceProvider = getResourceProviders(); + for (IResourceProvider nextProvider : resourceProvider) { + if (myTypeToProvider.containsKey(nextProvider.getResourceType())) { + throw new ServletException("Multiple providers for type: " + nextProvider.getResourceType().getCanonicalName()); + } + myTypeToProvider.put(nextProvider.getResourceType(), nextProvider); + } + + ourLog.info("Got {} resource providers", myTypeToProvider.size()); + + myFhirContext = new FhirContext(myTypeToProvider.keySet()); + + for (IResourceProvider provider : myTypeToProvider.values()) { + findResourceMethods(provider); + } + + } catch (Exception ex) { + ourLog.error("An error occurred while loading request handlers!", ex); + throw new ServletException("Failed to initialize FHIR Restful server", ex); + } + } + + private EncodingUtil determineResponseEncoding(HttpServletRequest theRequest, Map theParams) { String[] format = theParams.remove(Constants.PARAM_FORMAT); - // TODO: handle this once we support JSON + if (format != null) { + for (String nextFormat : format) { + EncodingUtil retVal = Constants.FORMAT_VAL_TO_ENCODING.get(nextFormat); + if (retVal != null) { + return retVal; + } + } + } + + Enumeration acceptValues = theRequest.getHeaders("Accept"); + if (acceptValues != null) { + while (acceptValues.hasMoreElements()) { + EncodingUtil retVal = Constants.FORMAT_VAL_TO_ENCODING.get(acceptValues.nextElement()); + if (retVal != null) { + return retVal; + } + } + } return EncodingUtil.XML; } - @Override - protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - handleRequest(SearchMethodBinding.RequestType.DELETE, request, response); - } - - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - handleRequest(SearchMethodBinding.RequestType.GET, request, response); - } - - @Override - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - handleRequest(SearchMethodBinding.RequestType.POST, request, response); - } - - @Override - protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - handleRequest(SearchMethodBinding.RequestType.PUT, request, response); - } - private void findResourceMethods(IResourceProvider theProvider) throws Exception { Class resourceType = theProvider.getResourceType(); @@ -105,25 +150,87 @@ public abstract class RestfulServer extends HttpServlet { } } - /** - * This method must be overridden to provide one or more resource providers - */ - public abstract Collection getResourceProviders(); + private void streamResponseAsBundle(HttpServletResponse theHttpResponse, List theResult, EncodingUtil theResponseEncoding) throws IOException { + theHttpResponse.setStatus(200); + theHttpResponse.setContentType(theResponseEncoding.getBundleContentType()); + theHttpResponse.setCharacterEncoding("UTF-8"); - /** - * This method should be overridden to provide a security manager - * instance. By default, returns null. - */ - public ISecurityManager getSecurityManager() { - return null; - } + Bundle bundle = new Bundle(); + bundle.getAuthorName().setValue(getClass().getCanonicalName()); + bundle.getId().setValue(UUID.randomUUID().toString()); + bundle.getPublished().setToCurrentTimeInLocalTimeZone(); + + for (IResource next : theResult) { + BundleEntry entry = new BundleEntry(); + bundle.getEntries().add(entry); + + entry.setResource(next); + } + + bundle.getTotalResults().setValue(theResult.size()); + + PrintWriter writer = theHttpResponse.getWriter(); + getNewParser(theResponseEncoding).encodeBundleToWriter(bundle, writer); + writer.close(); + } + + private IParser getNewParser(EncodingUtil theResponseEncoding) { + IParser parser; + switch (theResponseEncoding) { + case JSON: + parser = myFhirContext.newJsonParser(); + break; + case XML: + default: + parser = myFhirContext.newXmlParser(); + break; + } + return parser; + } + + private void streamResponseAsResource(HttpServletResponse theHttpResponse, IResource theResource, Resource theResourceBinding, EncodingUtil theResponseEncoding) throws IOException { + + theHttpResponse.setStatus(200); + theHttpResponse.setContentType(theResponseEncoding.getResourceContentType()); + theHttpResponse.setCharacterEncoding("UTF-8"); + + PrintWriter writer = theHttpResponse.getWriter(); + getNewParser(theResponseEncoding).encodeResourceToWriter(theResource, writer); + writer.close(); + + } + + @Override + protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + handleRequest(SearchMethodBinding.RequestType.DELETE, request, response); + } + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + handleRequest(SearchMethodBinding.RequestType.GET, request, response); + } + + @Override + protected void doOptions(HttpServletRequest theReq, HttpServletResponse theResp) throws ServletException, IOException { + handleRequest(SearchMethodBinding.RequestType.OPTIONS, theReq, theResp); + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + handleRequest(SearchMethodBinding.RequestType.POST, request, response); + } + + @Override + protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + handleRequest(SearchMethodBinding.RequestType.PUT, request, response); + } protected void handleRequest(SearchMethodBinding.RequestType requestType, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - if (null != securityManager) { - securityManager.authenticate(request); - } + if (null != securityManager) { + securityManager.authenticate(request); + } String resourceName = null; String requestPath = StringUtils.defaultString(request.getRequestURI()); @@ -136,7 +243,7 @@ public abstract class RestfulServer extends HttpServlet { ourLog.info("Request URI: {}", requestPath); Map params = new HashMap(request.getParameterMap()); - EncodingUtil responseEncoding = determineResponseEncoding(params); + EncodingUtil responseEncoding = determineResponseEncoding(request, params); StringTokenizer tok = new StringTokenizer(requestPath, "/"); if (!tok.hasMoreTokens()) { @@ -156,7 +263,7 @@ public abstract class RestfulServer extends HttpServlet { String nextString = tok.nextToken(); if (nextString.startsWith("_")) { operation = nextString; - }else { + } else { id = new IdDt(nextString); } } @@ -166,12 +273,12 @@ public abstract class RestfulServer extends HttpServlet { if (nextString.startsWith("_history")) { if (tok.hasMoreTokens()) { versionId = new IdDt(tok.nextToken()); - }else { + } else { throw new InvalidRequestException("_history search specified but no version requested in URL"); } } } - + // TODO: look for more tokens for version, compartments, etc... // @@ -219,10 +326,9 @@ public abstract class RestfulServer extends HttpServlet { // resourceMethod.get } catch (AuthenticationException e) { - response.setStatus(e.getStatusCode()); - response.getWriter().write(e.getMessage()); - } - catch (BaseServerResponseException e) { + response.setStatus(e.getStatusCode()); + response.getWriter().write(e.getMessage()); + } catch (BaseServerResponseException e) { if (e instanceof InternalErrorException) { ourLog.error("Failure during REST processing", e); @@ -244,72 +350,4 @@ public abstract class RestfulServer extends HttpServlet { } - @Override - public void init() throws ServletException { - try { - ourLog.info("Initializing HAPI FHIR restful server"); - - securityManager = getSecurityManager(); - if (null == securityManager) { - ourLog.warn("No security manager has been provided, requests will not be authenticated!"); - } - - Collection resourceProvider = getResourceProviders(); - for (IResourceProvider nextProvider : resourceProvider) { - if (myTypeToProvider.containsKey(nextProvider.getResourceType())) { - throw new ServletException("Multiple providers for type: " + nextProvider.getResourceType().getCanonicalName()); - } - myTypeToProvider.put(nextProvider.getResourceType(), nextProvider); - } - - ourLog.info("Got {} resource providers", myTypeToProvider.size()); - - myFhirContext = new FhirContext(myTypeToProvider.keySet()); - - for (IResourceProvider provider : myTypeToProvider.values()) { - findResourceMethods(provider); - } - - } catch (Exception ex) { - ourLog.error("An error occurred while loading request handlers!", ex); - throw new ServletException("Failed to initialize FHIR Restful server", ex); - } - } - - private void streamResponseAsBundle(HttpServletResponse theHttpResponse, List theResult, EncodingUtil theResponseEncoding) throws IOException { - theHttpResponse.setStatus(200); - theHttpResponse.setContentType(Constants.CT_FHIR_XML); - theHttpResponse.setCharacterEncoding("UTF-8"); - - Bundle bundle = new Bundle(); - bundle.getAuthorName().setValue(getClass().getCanonicalName()); - bundle.getId().setValue(UUID.randomUUID().toString()); - bundle.getPublished().setToCurrentTimeInLocalTimeZone(); - - for (IResource next : theResult) { - BundleEntry entry = new BundleEntry(); - bundle.getEntries().add(entry); - - entry.setResource(next); - } - - bundle.getTotalResults().setValue(theResult.size()); - - PrintWriter writer = theHttpResponse.getWriter(); - myFhirContext.newXmlParser().encodeBundleToWriter(bundle, writer); - writer.close(); - } - - private void streamResponseAsResource(HttpServletResponse theHttpResponse, IResource theResource, Resource theResourceBinding, EncodingUtil theResponseEncoding) throws IOException { - - theHttpResponse.setStatus(200); - theHttpResponse.setContentType(Constants.CT_FHIR_XML); - theHttpResponse.setCharacterEncoding("UTF-8"); - - PrintWriter writer = theHttpResponse.getWriter(); - myFhirContext.newXmlParser().encodeResourceToWriter(theResource, writer); - writer.close(); - - } - } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Util.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Util.java index ecad86de9e5..26a58ab040d 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Util.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/Util.java @@ -5,6 +5,7 @@ import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.net.URLDecoder; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -12,6 +13,8 @@ import java.util.Map; import ca.uhn.fhir.rest.annotation.Optional; import ca.uhn.fhir.rest.annotation.Read; import ca.uhn.fhir.rest.annotation.Required; +import ca.uhn.fhir.rest.param.Parameter; +import ca.uhn.fhir.util.ReflectionUtil; /** * Created by dsotnikov on 2/25/2014. @@ -34,6 +37,7 @@ public class Util { } } + @SuppressWarnings("unchecked") public static List getResourceParameters(Method method) { List parameters = new ArrayList(); @@ -42,15 +46,31 @@ public class Util { for (int i = 0; i < annotations.length; i++) { Annotation nextAnnotation = annotations[i]; Parameter parameter = new Parameter(); + Class parameterType = parameterTypes[i]; + + Class> outerCollectionType = null; + Class> innerCollectionType = null; + + if (Collection.class.isAssignableFrom(parameterType)) { + innerCollectionType = (Class>) parameterType; + parameterType = ReflectionUtil.getGenericCollectionTypeOfMethodParameter(method, i); + } + + if (Collection.class.isAssignableFrom(parameterType)) { + outerCollectionType = innerCollectionType; + innerCollectionType = (Class>) parameterType; + parameterType = ReflectionUtil.getGenericCollectionTypeOfMethodParameter(method, i); + } + if (nextAnnotation instanceof Required) { parameter.setName(((Required) nextAnnotation).name()); parameter.setRequired(true); - parameter.setType(parameterTypes[i]); + parameter.setType(parameterType, innerCollectionType, outerCollectionType); } else if (nextAnnotation instanceof Optional) { parameter.setName(((Optional) nextAnnotation).name()); parameter.setRequired(false); - parameter.setType(parameterTypes[i]); + parameter.setType(parameterType, innerCollectionType, innerCollectionType); } parameters.add(parameter); } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/exceptions/AuthenticationException.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/exceptions/AuthenticationException.java index bd49917fcf1..7d9b0ddfdb7 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/exceptions/AuthenticationException.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/rest/server/exceptions/AuthenticationException.java @@ -1,6 +1,5 @@ package ca.uhn.fhir.rest.server.exceptions; -import javax.servlet.ServletException; /** * Created by dsotnikov on 3/10/2014. diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/ElementUtil.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/ElementUtil.java index 77aa1151660..6c2883fe840 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/ElementUtil.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/ElementUtil.java @@ -1,5 +1,6 @@ package ca.uhn.fhir.util; +import java.util.ArrayList; import java.util.List; import ca.uhn.fhir.model.api.IElement; @@ -50,4 +51,26 @@ public class ElementUtil { return true; } + public static List allPopulatedChildElements(Object... theElements) { + ArrayList retVal = new ArrayList(); + for (Object next : theElements) { + if (next == null) { + continue; + }else if (next instanceof IElement) { + retVal.add((IElement) next); + } else if (next instanceof List) { + for (Object nextElement : ((List)next)) { + if (!(nextElement instanceof IElement)) { + throw new IllegalArgumentException("Found element of "+nextElement.getClass()); + } + retVal.add((IElement) nextElement); + } + } else { + throw new IllegalArgumentException("Found element of "+next.getClass()); + } + + } + return retVal; + } + } diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/PrettyPrintWriterWrapper.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/PrettyPrintWriterWrapper.java index a790f9c4c36..67ded980931 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/PrettyPrintWriterWrapper.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/PrettyPrintWriterWrapper.java @@ -4,7 +4,6 @@ import java.util.HashMap; import java.util.Map; import javax.xml.namespace.NamespaceContext; -import javax.xml.stream.XMLEventFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/QueryUtil.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/QueryUtil.java new file mode 100644 index 00000000000..3b542464d7e --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/QueryUtil.java @@ -0,0 +1,30 @@ +package ca.uhn.fhir.util; + +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; + +public class QueryUtil { + + public static List splitQueryStringByCommasIgnoreEscape(String theInput){ + ArrayList retVal = new ArrayList(); + + StringTokenizer tok = new StringTokenizer(theInput,","); + String prev=null; + while (tok.hasMoreElements()) { + String str = tok.nextToken(); + if (prev!=null&&prev.endsWith("\\")) { + int idx = retVal.size()-1; + String existing = retVal.get(idx); + retVal.set(idx, existing.substring(0, existing.length()-1) + "," + str); + }else { + retVal.add(str); + } + + prev=str; + } + + return retVal; + } + +} diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/ReflectionUtil.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/ReflectionUtil.java new file mode 100644 index 00000000000..a83d3c3c820 --- /dev/null +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/ReflectionUtil.java @@ -0,0 +1,49 @@ +package ca.uhn.fhir.util; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; + +public class ReflectionUtil { + + public static Class getGenericCollectionTypeOfField(Field next) { + Class type; + ParameterizedType collectionType = (ParameterizedType) next.getGenericType(); + Type firstArg = collectionType.getActualTypeArguments()[0]; + if (ParameterizedType.class.isAssignableFrom(firstArg.getClass())) { + ParameterizedType pt = ((ParameterizedType) firstArg); + type = (Class) pt.getRawType(); + } else { + type = (Class) firstArg; + } + return type; + } + + public static Class getGenericCollectionTypeOfMethodParameter(Method theMethod, int theParamIndex) { + Class type; + ParameterizedType collectionType = (ParameterizedType) theMethod.getGenericParameterTypes()[theParamIndex]; + Type firstArg = collectionType.getActualTypeArguments()[0]; + if (ParameterizedType.class.isAssignableFrom(firstArg.getClass())) { + ParameterizedType pt = ((ParameterizedType) firstArg); + type = (Class) pt.getRawType(); + } else { + type = (Class) firstArg; + } + return type; + } + + public static Class getGenericCollectionTypeOfMethodReturnType(Method theMethod) { + Class type; + ParameterizedType collectionType = (ParameterizedType) theMethod.getGenericReturnType(); + Type firstArg = collectionType.getActualTypeArguments()[0]; + if (ParameterizedType.class.isAssignableFrom(firstArg.getClass())) { + ParameterizedType pt = ((ParameterizedType) firstArg); + type = (Class) pt.getRawType(); + } else { + type = (Class) firstArg; + } + return type; + } + +} diff --git a/hapi-fhir-base/src/site/example/java/example/FhirContextIntro.java b/hapi-fhir-base/src/site/example/java/example/FhirContextIntro.java index bee810214bf..2e131ce1550 100644 --- a/hapi-fhir-base/src/site/example/java/example/FhirContextIntro.java +++ b/hapi-fhir-base/src/site/example/java/example/FhirContextIntro.java @@ -2,6 +2,7 @@ package example; import java.io.IOException; +import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.model.dstu.composite.HumanNameDt; import ca.uhn.fhir.model.dstu.composite.IdentifierDt; import ca.uhn.fhir.model.dstu.resource.Observation; @@ -11,7 +12,6 @@ import ca.uhn.fhir.model.primitive.CodeDt; import ca.uhn.fhir.model.primitive.StringDt; import ca.uhn.fhir.parser.DataFormatException; import ca.uhn.fhir.parser.IParser; -import ca.uhn.fhir.context.FhirContext; public class FhirContextIntro { diff --git a/hapi-fhir-base/src/site/example/java/example/RestfulPatientResourceProviderMore.java b/hapi-fhir-base/src/site/example/java/example/RestfulPatientResourceProviderMore.java index 384cd76c543..4f579c271dd 100644 --- a/hapi-fhir-base/src/site/example/java/example/RestfulPatientResourceProviderMore.java +++ b/hapi-fhir-base/src/site/example/java/example/RestfulPatientResourceProviderMore.java @@ -1,18 +1,26 @@ package example; import java.util.ArrayList; +import java.util.Date; import java.util.List; import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.TemporalPrecisionEnum; +import ca.uhn.fhir.model.dstu.composite.CodingDt; import ca.uhn.fhir.model.dstu.composite.IdentifierDt; +import ca.uhn.fhir.model.dstu.resource.Observation; import ca.uhn.fhir.model.dstu.resource.Organization; import ca.uhn.fhir.model.dstu.resource.Patient; +import ca.uhn.fhir.model.dstu.valueset.QuantityCompararatorEnum; import ca.uhn.fhir.model.primitive.IdDt; import ca.uhn.fhir.model.primitive.StringDt; import ca.uhn.fhir.rest.annotation.Optional; import ca.uhn.fhir.rest.annotation.Read; import ca.uhn.fhir.rest.annotation.Required; import ca.uhn.fhir.rest.annotation.Search; +import ca.uhn.fhir.rest.client.ITestClient; +import ca.uhn.fhir.rest.param.CodingListParam; +import ca.uhn.fhir.rest.param.QualifiedDateParam; import ca.uhn.fhir.rest.server.IResourceProvider; @SuppressWarnings("unused") @@ -21,17 +29,17 @@ public class RestfulPatientResourceProviderMore implements IResourceProvider { //START SNIPPET: searchAll @Search public List getAllOrganizations() { - List retVal=new ArrayList(); // populate this - return retVal; + List retVal=new ArrayList(); // populate this + return retVal; } //END SNIPPET: searchAll //START SNIPPET: read @Read() public Patient getResourceById(@Read.IdParam IdDt theId) { - Patient retVal = new Patient(); - // ...populate... - return retVal; + Patient retVal = new Patient(); + // ...populate... + return retVal; } //END SNIPPET: read @@ -39,30 +47,30 @@ public Patient getResourceById(@Read.IdParam IdDt theId) { @Read() public Patient getResourceById(@Read.IdParam IdDt theId, @Read.VersionIdParam IdDt theVersionId) { - Patient retVal = new Patient(); - // ...populate... - return retVal; + Patient retVal = new Patient(); + // ...populate... + return retVal; } //END SNIPPET: vread //START SNIPPET: searchStringParam @Search() public List searchByLastName(@Required(name=Patient.SP_FAMILY) StringDt theId) { - List retVal = new ArrayList(); - // ...populate... - return retVal; + List retVal = new ArrayList(); + // ...populate... + return retVal; } //END SNIPPET: searchStringParam //START SNIPPET: searchIdentifierParam @Search() public List searchByIdentifier(@Required(name=Patient.SP_IDENTIFIER) IdentifierDt theId) { - String identifierSystem = theId.getSystem().getValueAsString(); - String identifier = theId.getValue().getValue(); - - List retVal = new ArrayList(); - // ...populate... - return retVal; + String identifierSystem = theId.getSystem().getValueAsString(); + String identifier = theId.getValue().getValue(); + + List retVal = new ArrayList(); + // ...populate... + return retVal; } //END SNIPPET: searchIdentifierParam @@ -70,19 +78,56 @@ public List searchByIdentifier(@Required(name=Patient.SP_IDENTIFIER) Id @Search() public List searchByNames( @Required(name=Patient.SP_FAMILY) StringDt theFamilyName, @Optional(name=Patient.SP_GIVEN) StringDt theGivenName ) { - String familyName = theFamilyName.getValue(); - String givenName = theGivenName != null ? theGivenName.getValue() : null; - - List retVal = new ArrayList(); - // ...populate... - return retVal; + String familyName = theFamilyName.getValue(); + String givenName = theGivenName != null ? theGivenName.getValue() : null; + + List retVal = new ArrayList(); + // ...populate... + return retVal; } //END SNIPPET: searchOptionalParam -@Override -public Class getResourceType() { +//START SNIPPET: searchMultiple +@Search() +public List searchByObservationNames( @Required(name=Observation.SP_NAME) CodingListParam theCodings ) { + // This search should return any observations matching one or more + // of the codings here. + List wantedCodings = theCodings.getCodings(); + + List retVal = new ArrayList(); + // ...populate... + return retVal; +} +//END SNIPPET: searchMultiple + +//START SNIPPET: dates +@Search() +public List searchByObservationNames( @Required(name=Patient.SP_BIRTHDATE) QualifiedDateParam theDate ) { + QuantityCompararatorEnum comparator = theDate.getComparator(); // e.g. <= + Date date = theDate.getValue(); // e.g. 2011-01-02 + TemporalPrecisionEnum precision = theDate.getPrecision(); // e.g. DAY + + List retVal = new ArrayList(); + // ...populate... + return retVal; +} +//END SNIPPET: dates + +public void dateClientExample() { +ITestClient client = provideTc(); +//START SNIPPET: dateClient +QualifiedDateParam param = new QualifiedDateParam(QuantityCompararatorEnum.GREATERTHAN_OR_EQUALS, "2011-01-02"); +List response = client.getPatientByDob(param); +//END SNIPPET: dateClient +} + +private ITestClient provideTc() { return null; } +@Override +public Class getResourceType() { + return null; +} } diff --git a/hapi-fhir-base/src/site/resources/hapi.css b/hapi-fhir-base/src/site/resources/hapi.css index 496ff2d656b..16c9f75ce5d 100644 --- a/hapi-fhir-base/src/site/resources/hapi.css +++ b/hapi-fhir-base/src/site/resources/hapi.css @@ -57,7 +57,7 @@ } tt { - margin-left: 20px; + margin-left: 10px; white-space: pre; color: #448; padding: 4px; @@ -71,6 +71,7 @@ h1,h2,h3,h4,h5 { } h4 { + font-size: 1.2em; padding: 0px; margin-bottom: -15px; } diff --git a/hapi-fhir-base/src/site/xdoc/doc_rest_operations.xml b/hapi-fhir-base/src/site/xdoc/doc_rest_operations.xml index 3afa79caf9e..da1fbd0355f 100644 --- a/hapi-fhir-base/src/site/xdoc/doc_rest_operations.xml +++ b/hapi-fhir-base/src/site/xdoc/doc_rest_operations.xml @@ -152,7 +152,7 @@

- +

Search methods may take multiple parameters, and these parameters @@ -163,6 +163,12 @@ is supplied), annotate the method with @Optional.

+ +

+ You may annotate a method with any combination of as many @Required and as many @Optional + parameters as you want. It is valid to have no @Required parameters, or + no @Optional parameters as well. +

@@ -176,7 +182,94 @@

+ + + +

+ It is possible to accept multiple values of a single parameter + as well. This is useful in cases when you want to return a list + of resources with criteria matching a list of possible values. + See the FHIR Specification + for more information. +

+ +

+ The FHIR specification allows two types of composite parameters: +

+
    +
  • + Where a parameter may accept multiple comma separated values within a single value string + (e.g. ?language=FR,NL) this is treated as an OR relationship, and + the search should return elements matching either one or the other. +
  • +
  • + Where a parameter may accept multiple value strings for the same parameter name + (e.g. ?language=FR&language=NL) this is treated as an AND relationship, + and the search should return only elements matching both. +
  • +
+ +

OR Relationship Query Parameters

+ +

+ To accept a composite parameter, use a parameter type which implements the + IQueryParameterOr + interface. For example, to accept searches for + Observations matching any of a collection of names: +

+ + + + + + +

+ Example URL to invoke this method:
+ http://fhir.example.com/Observation?name=urn:fakenames|123,urn:fakenames|456 +

+ +
+ + +

+ The FHIR specification provides a sytax for specifying + dates (and date/times as well, but for simplicity we will just say dates here) + as search criteria. +

+ +

+ Dates may be optionally prefixed with a qualifier. For example, the + string >=2011-01-02 means any date on or after 2011-01-02. +

+ +

+ To accept a qualified date parameter, use the + QualifiedDateParam + parameter type. +

+ + + + + + +

+ Example URL to invoke this method:
+ http://fhir.example.com/Observation?birthdate=>=2011-01-02 +

+ +

+ Invoking a client of thie type involves the following syntax: +

+ + + + + + +
+ diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/context/ModelScannerTest.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/context/ModelScannerTest.java index 898dd445194..5b3b519ee83 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/context/ModelScannerTest.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/context/ModelScannerTest.java @@ -2,12 +2,8 @@ package ca.uhn.fhir.context; import static org.junit.Assert.*; -import java.util.Collection; -import java.util.Collections; - import org.junit.Test; -import ca.uhn.fhir.model.api.IResource; import ca.uhn.fhir.parser.DataFormatException; public class ModelScannerTest { diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/context/ResourceWithExtensionsA.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/context/ResourceWithExtensionsA.java index 1c27cb31adc..9087302b1a9 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/context/ResourceWithExtensionsA.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/context/ResourceWithExtensionsA.java @@ -2,6 +2,7 @@ package ca.uhn.fhir.context; import java.util.List; +import ca.uhn.fhir.model.api.IElement; import ca.uhn.fhir.model.api.IExtension; import ca.uhn.fhir.model.api.IResource; import ca.uhn.fhir.model.api.annotation.Block; @@ -10,6 +11,7 @@ import ca.uhn.fhir.model.api.annotation.Extension; import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.model.dstu.composite.IdentifierDt; import ca.uhn.fhir.model.primitive.DateDt; +import ca.uhn.fhir.model.primitive.IdDt; import ca.uhn.fhir.model.primitive.StringDt; @ResourceDef(name = "ResourceWithExtensionsA", id="0001") @@ -39,6 +41,8 @@ public class ResourceWithExtensionsA implements IResource { @Child(name = "identifier", type = IdentifierDt.class, order = 0, min = 0, max = Child.MAX_UNLIMITED) private List myIdentifier; + private IdDt myId; + public List getBar1() { return myBar1; } @@ -94,10 +98,17 @@ public class ResourceWithExtensionsA implements IResource { @Extension(url = "http://bar/#b1/2", definedLocally=true, isModifier=false) private List myBar12; + private IdDt myId; + @Override public boolean isEmpty() { return false; // TODO: implement } + @Override + public List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( ); // TODO: implement + } + public List getBar11() { return myBar11; @@ -114,6 +125,18 @@ public class ResourceWithExtensionsA implements IResource { public void setBar12(List theBar12) { myBar12 = theBar12; } + + @Override + public void setId(IdDt theId) { + myId=theId; + } + + @Override + public IdDt getId() { + return myId; + } + + } @@ -128,10 +151,17 @@ public class ResourceWithExtensionsA implements IResource { @Extension(url = "http://bar/#b1/2/2", definedLocally=true, isModifier=false) private List myBar122; + private IdDt myId; + @Override public boolean isEmpty() { return false; // TODO: implement } + @Override + public List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( ); // TODO: implement + } + public List getBar121() { return myBar121; @@ -149,6 +179,17 @@ public class ResourceWithExtensionsA implements IResource { myBar122 = theBar122; } + @Override + public void setId(IdDt theId) { + myId=theId; + } + + @Override + public IdDt getId() { + return myId; + } + + } @Override @@ -156,4 +197,19 @@ public class ResourceWithExtensionsA implements IResource { return false; // TODO: implement } + @Override + public List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( ); // TODO: implement + } + + @Override + public void setId(IdDt theId) { + myId=theId; + } + + @Override + public IdDt getId() { + return myId; + } + } \ No newline at end of file diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/context/RuntimeResourceDefinitionTest.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/context/RuntimeResourceDefinitionTest.java index 168345aeca2..e09329e8458 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/context/RuntimeResourceDefinitionTest.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/context/RuntimeResourceDefinitionTest.java @@ -2,8 +2,6 @@ package ca.uhn.fhir.context; import static org.junit.Assert.*; -import java.io.IOException; - import org.junit.Test; import ca.uhn.fhir.model.dstu.resource.Patient; @@ -11,7 +9,6 @@ import ca.uhn.fhir.model.dstu.resource.Profile; import ca.uhn.fhir.model.dstu.resource.Profile.ExtensionDefn; import ca.uhn.fhir.model.dstu.resource.Profile.Structure; import ca.uhn.fhir.model.dstu.valueset.DataTypeEnum; -import ca.uhn.fhir.parser.DataFormatException; public class RuntimeResourceDefinitionTest { private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(RuntimeResourceDefinitionTest.class); diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/model/primitive/Base64BinaryDtTest.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/model/primitive/Base64BinaryDtTest.java index 8c906f4a342..ff1e3d02a52 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/model/primitive/Base64BinaryDtTest.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/model/primitive/Base64BinaryDtTest.java @@ -2,8 +2,6 @@ package ca.uhn.fhir.model.primitive; import org.junit.Test; -import ca.uhn.fhir.model.primitive.Base64BinaryDt; - public class Base64BinaryDtTest { diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/model/primitive/BaseDateTimeDtTest.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/model/primitive/BaseDateTimeDtTest.java index f03a790f319..57793769f05 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/model/primitive/BaseDateTimeDtTest.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/model/primitive/BaseDateTimeDtTest.java @@ -10,8 +10,6 @@ import org.junit.Before; import org.junit.Test; import ca.uhn.fhir.model.api.TemporalPrecisionEnum; -import ca.uhn.fhir.model.primitive.DateTimeDt; -import ca.uhn.fhir.model.primitive.InstantDt; import ca.uhn.fhir.parser.DataFormatException; public class BaseDateTimeDtTest { diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/parser/JsonParserTest.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/parser/JsonParserTest.java index 9b76cda57c5..95b8bfb9412 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/parser/JsonParserTest.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/parser/JsonParserTest.java @@ -3,13 +3,19 @@ package ca.uhn.fhir.parser; import static org.junit.Assert.*; import java.io.IOException; +import java.nio.charset.Charset; import java.util.List; +import net.sf.json.JSON; +import net.sf.json.JSONSerializer; + import org.apache.commons.io.IOUtils; import org.junit.Test; import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.model.api.Bundle; import ca.uhn.fhir.model.api.UndeclaredExtension; +import ca.uhn.fhir.model.dstu.resource.DiagnosticReport; import ca.uhn.fhir.model.dstu.resource.Observation; import ca.uhn.fhir.model.dstu.resource.Patient; @@ -17,21 +23,55 @@ public class JsonParserTest { private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(JsonParserTest.class); @Test - public void testSimpleEncode() throws IOException { + public void testSimpleResourceEncode() throws IOException { FhirContext ctx = new FhirContext(Observation.class); -// String name = "/observation-example-eeg.xml"; - String name = "/example-patient-general.xml"; - Patient obs = ctx.newXmlParser().parseResource(Patient.class, IOUtils.toString(JsonParser.class.getResourceAsStream(name))); - String encoded = ctx.newJsonParser().encodeResourceToString(obs); + // String name = "/observation-example-eeg.xml"; + String xmlString = IOUtils.toString(JsonParser.class.getResourceAsStream("/example-patient-general.xml"), Charset.forName("UTF-8")); + Patient obs = ctx.newXmlParser().parseResource(Patient.class, xmlString); List undeclaredExtensions = obs.getContact().get(0).getName().getFamily().get(0).getUndeclaredExtensions(); UndeclaredExtension undeclaredExtension = undeclaredExtensions.get(0); assertEquals("http://hl7.org/fhir/Profile/iso-21090#qualifier", undeclaredExtension.getUrl()); + + String encoded = ctx.newJsonParser().encodeResourceToString(obs); ourLog.info(encoded); + + String jsonString = IOUtils.toString(JsonParser.class.getResourceAsStream("/example-patient-general.json")); + + JSON expected = JSONSerializer.toJSON(jsonString); + JSON actual = JSONSerializer.toJSON(encoded.trim()); + + assertEquals(expected.toString(), actual.toString()); + + } + + @Test + public void testSimpleBundleEncode() throws IOException { + + FhirContext ctx = new FhirContext(Observation.class, Patient.class); + String xmlString = IOUtils.toString(JsonParser.class.getResourceAsStream("/atom-document-large.xml"), Charset.forName("UTF-8")); + Bundle obs = ctx.newXmlParser().parseBundle(xmlString); + + String encoded = ctx.newJsonParser().encodeBundleToString(obs); + ourLog.info(encoded); + + + } + + + @Test + public void testEncodeContainedResources() throws IOException { + String msg = IOUtils.toString(XmlParser.class.getResourceAsStream("/contained-diagnosticreport.xml")); + FhirContext ctx = new FhirContext(DiagnosticReport.class); + IParser p = ctx.newXmlParser(); + DiagnosticReport res = p.parseResource(DiagnosticReport.class, msg); + String encoded = ctx.newJsonParser().setPrettyPrint(true).encodeResourceToString(res); + ourLog.info(encoded); } + } diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/parser/XmlParserTest.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/parser/XmlParserTest.java index 42c279d9e83..bb6e5132e49 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/parser/XmlParserTest.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/parser/XmlParserTest.java @@ -1,7 +1,6 @@ package ca.uhn.fhir.parser; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import java.io.IOException; import java.io.StringReader; @@ -19,6 +18,8 @@ import ca.uhn.fhir.context.ResourceWithExtensionsA; import ca.uhn.fhir.model.api.Bundle; import ca.uhn.fhir.model.api.BundleEntry; import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.dstu.composite.ResourceReferenceDt; +import ca.uhn.fhir.model.dstu.resource.DiagnosticReport; import ca.uhn.fhir.model.dstu.resource.Observation; import ca.uhn.fhir.model.dstu.resource.Patient; import ca.uhn.fhir.model.dstu.resource.ValueSet; @@ -38,6 +39,22 @@ public class XmlParserTest { } + @Test + public void testParseContainedResources() throws IOException { + + String msg = IOUtils.toString(XmlParser.class.getResourceAsStream("/contained-diagnosticreport.xml")); + IParser p = new FhirContext(DiagnosticReport.class).newXmlParser(); + DiagnosticReport bundle = p.parseResource(DiagnosticReport.class, msg); + + ResourceReferenceDt result0 = bundle.getResult().get(0); + Observation obs = (Observation) result0.getResource(); + + assertNotNull(obs); + assertEquals("718-7", obs.getName().getCoding().get(0).getCode().getValue()); + + } + + @Test public void testParseBundle() { diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/client/ClientTest.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/client/ClientTest.java index 0ef04f21293..773219cbf23 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/client/ClientTest.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/client/ClientTest.java @@ -1,11 +1,11 @@ package ca.uhn.fhir.rest.client; -import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; +import static org.junit.Assert.*; +import static org.mockito.Mockito.*; import java.io.StringReader; import java.nio.charset.Charset; +import java.util.List; import org.apache.commons.io.IOUtils; import org.apache.commons.io.input.ReaderInputStream; @@ -22,12 +22,15 @@ import org.mockito.internal.stubbing.defaultanswers.ReturnsDeepStubs; import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.model.api.Bundle; -import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.dstu.composite.CodingDt; import ca.uhn.fhir.model.dstu.composite.IdentifierDt; import ca.uhn.fhir.model.dstu.resource.Conformance; import ca.uhn.fhir.model.dstu.resource.Patient; +import ca.uhn.fhir.model.dstu.valueset.QuantityCompararatorEnum; import ca.uhn.fhir.model.primitive.IdDt; import ca.uhn.fhir.model.primitive.StringDt; +import ca.uhn.fhir.rest.param.CodingListParam; +import ca.uhn.fhir.rest.param.QualifiedDateParam; import ca.uhn.fhir.rest.server.Constants; public class ClientTest { @@ -128,7 +131,46 @@ public class ClientTest { assertEquals("PRP1660", response.getIdentifier().get(0).getValue().getValue()); } + + @Test + public void testSearchByDob() throws Exception { + String msg = getPatientFeedWithOneResult(); + + ArgumentCaptor capt = ArgumentCaptor.forClass(HttpUriRequest.class); + when(httpClient.execute(capt.capture())).thenReturn(httpResponse); + when(httpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 200, "OK")); + when(httpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", Constants.CT_FHIR_XML + "; charset=UTF-8")); + when(httpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader(msg), Charset.forName("UTF-8"))); + + ITestClient client = clientFactory.newClient(ITestClient.class, "http://foo"); + List response = client.getPatientByDob(new QualifiedDateParam(QuantityCompararatorEnum.GREATERTHAN_OR_EQUALS, "2011-01-02")); + + assertEquals("http://foo/Patient?birthdate=%3E%3D2011-01-02", capt.getValue().getURI().toString()); + assertEquals("PRP1660", response.get(0).getIdentifier().get(0).getValue().getValue()); + + } + @Test + public void testSearchComposite() throws Exception { + + String msg = getPatientFeedWithOneResult(); + + ArgumentCaptor capt = ArgumentCaptor.forClass(HttpUriRequest.class); + when(httpClient.execute(capt.capture())).thenReturn(httpResponse); + when(httpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 200, "OK")); + when(httpResponse.getEntity().getContentType()).thenReturn(new BasicHeader("content-type", Constants.CT_FHIR_XML + "; charset=UTF-8")); + when(httpResponse.getEntity().getContent()).thenReturn(new ReaderInputStream(new StringReader(msg), Charset.forName("UTF-8"))); + + ITestClient client = clientFactory.newClient(ITestClient.class, "http://foo"); + CodingListParam identifiers = new CodingListParam(); + identifiers.add(new CodingDt("foo", "bar")); + identifiers.add(new CodingDt("baz", "boz")); + List response = client.getPatientMultipleIdentifiers(identifiers); + + assertEquals("http://foo/Patient?ids=foo%7Cbar%2Cbaz%7Cboz", capt.getValue().getURI().toString()); + + } + @Test public void testGetConformance() throws Exception { diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/client/ITestClient.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/client/ITestClient.java index 9473533417b..a8937bc6825 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/client/ITestClient.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/client/ITestClient.java @@ -1,5 +1,7 @@ package ca.uhn.fhir.rest.client; +import java.util.List; + import ca.uhn.fhir.model.api.Bundle; import ca.uhn.fhir.model.dstu.composite.IdentifierDt; import ca.uhn.fhir.model.dstu.resource.Patient; @@ -10,6 +12,8 @@ import ca.uhn.fhir.rest.annotation.Read; import ca.uhn.fhir.rest.annotation.Required; import ca.uhn.fhir.rest.annotation.Search; import ca.uhn.fhir.rest.client.api.IBasicClient; +import ca.uhn.fhir.rest.param.CodingListParam; +import ca.uhn.fhir.rest.param.QualifiedDateParam; public interface ITestClient extends IBasicClient { @@ -25,5 +29,10 @@ public interface ITestClient extends IBasicClient { @Search(type=Patient.class) Bundle findPatientByName(@Required(name = Patient.SP_FAMILY) StringDt theId, @Optional(name=Patient.SP_GIVEN) StringDt theGiven); + @Search() + public List getPatientMultipleIdentifiers(@Required(name = "ids") CodingListParam theIdentifiers); + + @Search() + public List getPatientByDob(@Required(name=Patient.SP_BIRTHDATE) QualifiedDateParam theBirthDate); } diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/client/Tester.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/client/Tester.java index 499a329d793..c9801badea7 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/client/Tester.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/client/Tester.java @@ -3,8 +3,6 @@ package ca.uhn.fhir.rest.client; import java.io.IOException; import ca.uhn.fhir.context.FhirContext; -import ca.uhn.fhir.model.api.Bundle; -import ca.uhn.fhir.model.dstu.composite.IdentifierDt; import ca.uhn.fhir.model.dstu.resource.Patient; import ca.uhn.fhir.model.primitive.IdDt; import ca.uhn.fhir.parser.DataFormatException; diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/DummyPatientResourceProvider.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/DummyPatientResourceProvider.java index 299059a56e6..034396d5640 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/DummyPatientResourceProvider.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/DummyPatientResourceProvider.java @@ -6,6 +6,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import ca.uhn.fhir.model.dstu.composite.CodingDt; import ca.uhn.fhir.model.dstu.composite.HumanNameDt; import ca.uhn.fhir.model.dstu.composite.IdentifierDt; import ca.uhn.fhir.model.dstu.resource.Patient; @@ -17,6 +18,8 @@ import ca.uhn.fhir.rest.annotation.Optional; import ca.uhn.fhir.rest.annotation.Read; import ca.uhn.fhir.rest.annotation.Required; import ca.uhn.fhir.rest.annotation.Search; +import ca.uhn.fhir.rest.param.CodingListParam; +import ca.uhn.fhir.rest.param.QualifiedDateParam; /** * Created by dsotnikov on 2/25/2014. @@ -63,6 +66,18 @@ public class DummyPatientResourceProvider implements IResourceProvider { } return null; } + + @Search() + public Patient getPatientWithDOB(@Required(name = "dob") QualifiedDateParam theDob) { + Patient next = getIdToPatient().get("1"); + if (theDob.getComparator()!=null) { + next.addIdentifier().setValue(theDob.getComparator().getCode()); + }else { + next.addIdentifier().setValue("NONE"); + } + next.addIdentifier().setValue(theDob.getValueAsString()); + return next; + } @Search() public List getPatientWithOptionalName(@Required(name = "name1") StringDt theName1, @Optional(name = "name2") StringDt theName2) { @@ -77,6 +92,20 @@ public class DummyPatientResourceProvider implements IResourceProvider { return retVal; } + @Search() + public List getPatientMultipleIdentifiers(@Required(name = "ids") CodingListParam theIdentifiers) { + List retVal = new ArrayList(); + Patient next = getIdToPatient().get("1"); + + for (CodingDt nextId : theIdentifiers.getCodings()) { + next.getIdentifier().add(new IdentifierDt(nextId.getSystem().getValueAsString(), nextId.getCode().getValue())); + } + + retVal.add(next); + + return retVal; + } + /** * Retrieve the resource by its identifier * @@ -89,13 +118,6 @@ public class DummyPatientResourceProvider implements IResourceProvider { return getIdToPatient().get(theId.getValue()); } - /** - * Retrieve the resource by its identifier - * - * @param theId - * The resource identity - * @return The resource - */ @Read() public Patient getResourceById(@Read.IdParam IdDt theId, @Read.VersionIdParam IdDt theVersionId) { Patient retVal = getIdToPatient().get(theId.getValue()); diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/DummyRestfulServer.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/DummyRestfulServer.java index 1364e6152e2..9640983bb79 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/DummyRestfulServer.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/DummyRestfulServer.java @@ -3,9 +3,6 @@ package ca.uhn.fhir.rest.server; import java.util.Arrays; import java.util.Collection; -import ca.uhn.fhir.rest.server.IResourceProvider; -import ca.uhn.fhir.rest.server.RestfulServer; - public class DummyRestfulServer extends RestfulServer { private static final long serialVersionUID = 1L; diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/ResfulServerTest.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/ResfulServerTest.java index f075d96b78d..cc6eec94e81 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/ResfulServerTest.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/ResfulServerTest.java @@ -1,6 +1,6 @@ package ca.uhn.fhir.rest.server; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.*; import java.util.concurrent.TimeUnit; @@ -78,11 +78,11 @@ public class ResfulServerTest { Patient patient = (Patient) bundle.getEntries().get(0).getResource(); assertEquals("AAA", patient.getName().get(0).getFamily().get(0).getValue()); assertEquals("PatientOne", patient.getName().get(0).getGiven().get(0).getValue()); - + /* * Now with optional value populated */ - + httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient?name1=AAA&name2=BBB"); status = ourClient.execute(httpGet); @@ -97,9 +97,67 @@ public class ResfulServerTest { patient = (Patient) bundle.getEntries().get(0).getResource(); assertEquals("AAA", patient.getName().get(0).getFamily().get(0).getValue()); assertEquals("BBB", patient.getName().get(0).getGiven().get(0).getValue()); - + } + @Test + public void testSearchByMultipleIdentifiers() throws Exception { + + HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient?ids=urn:aaa%7Caaa,urn:bbb%7Cbbb"); + HttpResponse status = ourClient.execute(httpGet); + + String responseContent = IOUtils.toString(status.getEntity().getContent()); + ourLog.info("Response was:\n{}", responseContent); + + assertEquals(200, status.getStatusLine().getStatusCode()); + Bundle bundle = ourCtx.newXmlParser().parseBundle(responseContent); + + assertEquals(1, bundle.getEntries().size()); + + Patient patient = (Patient) bundle.getEntries().get(0).getResource(); + assertEquals("urn:aaa|aaa", patient.getIdentifier().get(1).getValueAsQueryToken()); + assertEquals("urn:bbb|bbb", patient.getIdentifier().get(2).getValueAsQueryToken()); + } + + @Test + public void testSearchByDob() throws Exception { + + HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient?dob=2011-01-02"); + HttpResponse status = ourClient.execute(httpGet); + + String responseContent = IOUtils.toString(status.getEntity().getContent()); + ourLog.info("Response was:\n{}", responseContent); + + assertEquals(200, status.getStatusLine().getStatusCode()); + Bundle bundle = ourCtx.newXmlParser().parseBundle(responseContent); + + assertEquals(1, bundle.getEntries().size()); + + Patient patient = (Patient) bundle.getEntries().get(0).getResource(); + assertEquals("NONE", patient.getIdentifier().get(1).getValue().getValue()); + assertEquals("2011-01-02", patient.getIdentifier().get(2).getValue().getValue()); + + /* + * With comparator + */ + + httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient?dob=%3E%3D2011-01-02"); + status = ourClient.execute(httpGet); + + responseContent = IOUtils.toString(status.getEntity().getContent()); + ourLog.info("Response was:\n{}", responseContent); + + assertEquals(200, status.getStatusLine().getStatusCode()); + bundle = ourCtx.newXmlParser().parseBundle(responseContent); + + assertEquals(1, bundle.getEntries().size()); + + patient = (Patient) bundle.getEntries().get(0).getResource(); + assertEquals(">=", patient.getIdentifier().get(1).getValue().getValue()); + assertEquals("2011-01-02", patient.getIdentifier().get(2).getValue().getValue()); + + } + @Test public void testSearchByParamIdentifier() throws Exception { @@ -174,11 +232,57 @@ public class ResfulServerTest { } + @Test + public void testFormatParamXml() throws Exception { + + // HttpPost httpPost = new HttpPost("http://localhost:" + ourPort + + // "/Patient/1"); + // httpPost.setEntity(new StringEntity("test", + // ContentType.create(Constants.CT_FHIR_XML, "UTF-8"))); + + HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient/1?_format=xml"); + HttpResponse status = ourClient.execute(httpGet); + + String responseContent = IOUtils.toString(status.getEntity().getContent()); + ourLog.info("Response was:\n{}", responseContent); + + assertEquals(200, status.getStatusLine().getStatusCode()); + Patient patient = (Patient) ourCtx.newXmlParser().parseResource(responseContent); + assertEquals("PatientOne", patient.getName().get(0).getGiven().get(0).getValue()); + + } + + @Test + public void testFormatParamJson() throws Exception { + + // HttpPost httpPost = new HttpPost("http://localhost:" + ourPort + + // "/Patient/1"); + // httpPost.setEntity(new StringEntity("test", + // ContentType.create(Constants.CT_FHIR_XML, "UTF-8"))); + + HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient/1?_format=json"); + HttpResponse status = ourClient.execute(httpGet); + + String responseContent = IOUtils.toString(status.getEntity().getContent()); + ourLog.info("Response was:\n{}", responseContent); + + assertEquals(200, status.getStatusLine().getStatusCode()); + + // TODO: enable once JSON parser is written + // Patient patient = (Patient) + // ourCtx.newJsonParser().parseResource(responseContent); + // assertEquals("PatientOne", + // patient.getName().get(0).getGiven().get(0).getValue()); + + } + @Test public void testGetById() throws Exception { - // HttpPost httpPost = new HttpPost("http://localhost:" + ourPort + "/Patient/1"); - // httpPost.setEntity(new StringEntity("test", ContentType.create(Constants.CT_FHIR_XML, "UTF-8"))); + // HttpPost httpPost = new HttpPost("http://localhost:" + ourPort + + // "/Patient/1"); + // httpPost.setEntity(new StringEntity("test", + // ContentType.create(Constants.CT_FHIR_XML, "UTF-8"))); HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient/1"); HttpResponse status = ourClient.execute(httpGet); @@ -221,8 +325,10 @@ public class ResfulServerTest { @Test public void testGetByVersionId() throws Exception { - // HttpPost httpPost = new HttpPost("http://localhost:" + ourPort + "/Patient/1"); - // httpPost.setEntity(new StringEntity("test", ContentType.create(Constants.CT_FHIR_XML, "UTF-8"))); + // HttpPost httpPost = new HttpPost("http://localhost:" + ourPort + + // "/Patient/1"); + // httpPost.setEntity(new StringEntity("test", + // ContentType.create(Constants.CT_FHIR_XML, "UTF-8"))); HttpGet httpGet = new HttpGet("http://localhost:" + ourPort + "/Patient/1/_history/999"); HttpResponse status = ourClient.execute(httpGet); diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/ResourceMethodTest.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/ResourceMethodTest.java index 26f88b035f6..54cdbae413a 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/ResourceMethodTest.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/rest/server/ResourceMethodTest.java @@ -11,11 +11,11 @@ import org.junit.Before; import org.junit.Test; import ca.uhn.fhir.model.dstu.resource.Patient; -import ca.uhn.fhir.rest.common.Request; -import ca.uhn.fhir.rest.common.SearchMethodBinding; -import ca.uhn.fhir.rest.common.BaseMethodBinding.MethodReturnTypeEnum; -import ca.uhn.fhir.rest.common.SearchMethodBinding.RequestType; -import ca.uhn.fhir.rest.server.Parameter; +import ca.uhn.fhir.rest.method.BaseMethodBinding.MethodReturnTypeEnum; +import ca.uhn.fhir.rest.method.Request; +import ca.uhn.fhir.rest.method.SearchMethodBinding; +import ca.uhn.fhir.rest.method.SearchMethodBinding.RequestType; +import ca.uhn.fhir.rest.param.Parameter; public class ResourceMethodTest { diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/testmodel/IdentifierDt.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/testmodel/IdentifierDt.java index e7b08c77624..e0b71a4e5de 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/testmodel/IdentifierDt.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/testmodel/IdentifierDt.java @@ -16,8 +16,11 @@ package ca.uhn.fhir.testmodel; +import java.util.List; + import ca.uhn.fhir.model.api.BaseElement; import ca.uhn.fhir.model.api.ICompositeDatatype; +import ca.uhn.fhir.model.api.IElement; import ca.uhn.fhir.model.api.IQueryParameterType; import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.DatatypeDef; @@ -114,6 +117,12 @@ public class IdentifierDt return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( myUse, myLabel, mySystem, myValue, myPeriod, myAssigner); } + @Override + public List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myUse, myLabel, mySystem, myValue, myPeriod, myAssigner); + } + + /** * Gets the value(s) for use (usual | official | temp | secondary (If known)). * creating it if it does diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/testmodel/Patient.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/testmodel/Patient.java index f2f557c0711..c762404cd49 100644 --- a/hapi-fhir-base/src/test/java/ca/uhn/fhir/testmodel/Patient.java +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/testmodel/Patient.java @@ -16,9 +16,15 @@ package ca.uhn.fhir.testmodel; -import java.util.*; -import ca.uhn.fhir.model.api.*; -import ca.uhn.fhir.model.api.annotation.*; +import java.util.ArrayList; +import java.util.List; + +import ca.uhn.fhir.model.api.BaseResource; +import ca.uhn.fhir.model.api.IElement; +import ca.uhn.fhir.model.api.IResource; +import ca.uhn.fhir.model.api.annotation.Child; +import ca.uhn.fhir.model.api.annotation.Description; +import ca.uhn.fhir.model.api.annotation.ResourceDef; /** * HAPI/FHIR Patient Resource @@ -45,6 +51,11 @@ public class Patient extends BaseResource implements IResource { ) private List myIdentifier; + @Override + public List getAllPopulatedChildElements() { + return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements( myIdentifier ); + } + @Override public boolean isEmpty() { diff --git a/hapi-fhir-base/src/test/java/ca/uhn/fhir/testutil/QueryUtilTest.java b/hapi-fhir-base/src/test/java/ca/uhn/fhir/testutil/QueryUtilTest.java new file mode 100644 index 00000000000..e6a60846b05 --- /dev/null +++ b/hapi-fhir-base/src/test/java/ca/uhn/fhir/testutil/QueryUtilTest.java @@ -0,0 +1,37 @@ +package ca.uhn.fhir.testutil; + +import static org.junit.Assert.*; + +import java.util.List; + +import org.junit.Test; + +import ca.uhn.fhir.util.QueryUtil; + +public class QueryUtilTest { + + @Test + public void testSplit1() { + List actual = QueryUtil.splitQueryStringByCommasIgnoreEscape("aaa"); + assertEquals(1, actual.size()); + assertEquals("aaa", actual.get(0)); + } + + @Test + public void testSplit2() { + List actual = QueryUtil.splitQueryStringByCommasIgnoreEscape("aaa,bbb"); + assertEquals(2, actual.size()); + assertEquals("aaa", actual.get(0)); + assertEquals("bbb", actual.get(1)); + } + + @Test + public void testSplit3() { + List actual = QueryUtil.splitQueryStringByCommasIgnoreEscape("aaa,b\\,bb"); + System.out.println(actual); + assertEquals(2, actual.size()); + assertEquals("aaa", actual.get(0)); + assertEquals("b,bb", actual.get(1)); + } + +} diff --git a/hapi-fhir-base/src/test/resources/contained-diagnosticreport.json b/hapi-fhir-base/src/test/resources/contained-diagnosticreport.json new file mode 100644 index 00000000000..237d67b5f25 --- /dev/null +++ b/hapi-fhir-base/src/test/resources/contained-diagnosticreport.json @@ -0,0 +1,778 @@ +{ + "resourceType" : "DiagnosticReport", + "text" : { + "status" : "generated", + "div" : "\r\n
\r\n

CBC Report for Wile. E. COYOTE (MRN: 23453) issued 3-Mar 2011 11:45

\r\n \r\n
Test                  Units       Value       Reference Range
Haemoglobin           g/L         176         135 - 180
Red Cell Count        x10*12/L    5.9         4.2 - 6.0
Haematocrit                       0.55+       0.38 - 0.52
Mean Cell Volume      fL          99+         80 - 98
Mean Cell Haemoglobin pg          36+         27 - 35
Platelet Count        x10*9/L     444         150 - 450
White Cell Count      x10*9/L     4.6         4.0 - 11.0
Neutrophils           %           20 
Neutrophils           x10*9/L     0.9---      2.0 - 7.5
Lymphocytes           %           20  
Lymphocytes           x10*9/L     0.9-        1.1 - 4.0
Monocytes             %           20 
Monocytes             x10*9/L     0.9         0.2 - 1.0
Eosinophils           %           20 
Eosinophils           x10*9/L     0.92++      0.04 - 0.40
Basophils             %           20 
Basophils             x10*9/L     0.92+++     <0.21
      
\r\n

Acme Laboratory, Inc signed: Dr Pete Pathologist

" + }, + "contained" : [ + { + "resourceType" : "Observation", + "id" : "r1", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "718-7", + "display" : "Hemoglobin [Mass/volume] in Blood" + } + ], + "text" : "Haemoglobin" + }, + "valueQuantity" : { + "value" : "176", + "units" : "g/L", + "system" : "http://unitsofmeasure.org", + "code" : "g/L" + }, + "status" : "final", + "reliability" : "ok", + "referenceRange" : [ + { + "low" : { + "value" : "135", + "units" : "g/L", + "system" : "http://unitsofmeasure.org", + "code" : "g/L" + }, + "high" : { + "value" : "180", + "units" : "g/L", + "system" : "http://unitsofmeasure.org", + "code" : "g/L" + } + } + ] + }, + { + "resourceType" : "Observation", + "id" : "r2", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "789-8", + "display" : "Erythrocytes [#/volume] in Blood by Automated count" + } + ], + "text" : "Red Cell Count" + }, + "valueQuantity" : { + "value" : "5.9", + "units" : "x10*12/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*12/L" + }, + "status" : "final", + "reliability" : "ok", + "referenceRange" : [ + { + "low" : { + "value" : "4.2", + "units" : "x10*12/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*12/L" + }, + "high" : { + "value" : "6.0", + "units" : "x10*12/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*12/L" + } + } + ] + }, + { + "resourceType" : "Observation", + "id" : "r3", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "4544-3", + "display" : "Hematocrit [Volume Fraction] of Blood by Automated count" + } + ], + "text" : "Haematocrit" + }, + "valueQuantity" : { + "value" : "55", + "units" : "%" + }, + "interpretation" : { + "coding" : [ + { + "system" : "http://hl7.org/fhir/v2/0078", + "code" : "H" + } + ] + }, + "status" : "final", + "reliability" : "ok", + "referenceRange" : [ + { + "low" : { + "value" : "38", + "units" : "%" + }, + "high" : { + "value" : "52", + "units" : "%" + } + } + ] + }, + { + "resourceType" : "Observation", + "id" : "r4", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "787-2", + "display" : "Erythrocyte mean corpuscular volume [Entitic volume] by Automated count" + } + ], + "text" : "Mean Cell Volume" + }, + "valueQuantity" : { + "value" : "99", + "units" : "fL", + "system" : "http://unitsofmeasure.org", + "code" : "fL" + }, + "interpretation" : { + "coding" : [ + { + "system" : "http://hl7.org/fhir/v2/0078", + "code" : "H" + } + ] + }, + "status" : "final", + "reliability" : "ok", + "referenceRange" : [ + { + "low" : { + "value" : "80", + "units" : "fL", + "system" : "http://unitsofmeasure.org", + "code" : "fL" + }, + "high" : { + "value" : "98", + "units" : "fL", + "system" : "http://unitsofmeasure.org", + "code" : "fL" + } + } + ] + }, + { + "resourceType" : "Observation", + "id" : "r5", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "785-6", + "display" : "Erythrocyte mean corpuscular hemoglobin [Entitic mass] by Automated count" + } + ], + "text" : "Mean Cell Haemoglobin" + }, + "valueQuantity" : { + "value" : "36", + "units" : "pg", + "system" : "http://unitsofmeasure.org", + "code" : "pg" + }, + "interpretation" : { + "coding" : [ + { + "system" : "http://hl7.org/fhir/v2/0078", + "code" : "H" + } + ] + }, + "status" : "final", + "reliability" : "ok", + "referenceRange" : [ + { + "low" : { + "value" : "27", + "units" : "pg", + "system" : "http://unitsofmeasure.org", + "code" : "pg" + }, + "high" : { + "value" : "35", + "units" : "pg", + "system" : "http://unitsofmeasure.org", + "code" : "pg" + } + } + ] + }, + { + "resourceType" : "Observation", + "id" : "r6", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "777-3", + "display" : "Platelets [#/volume] in Blood by Automated count" + } + ], + "text" : "Platelet Count" + }, + "valueQuantity" : { + "value" : "444", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + }, + "status" : "final", + "reliability" : "ok", + "referenceRange" : [ + { + "low" : { + "value" : "150", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + }, + "high" : { + "value" : "450", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + } + } + ] + }, + { + "resourceType" : "Observation", + "id" : "r7", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "6690-2", + "display" : "Leukocytes [#/volume] in Blood by Automated count" + } + ], + "text" : "White Cell Count" + }, + "valueQuantity" : { + "value" : "4.6", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + }, + "status" : "final", + "reliability" : "ok", + "referenceRange" : [ + { + "low" : { + "value" : "4.0", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + }, + "high" : { + "value" : "11.0", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + } + } + ] + }, + { + "resourceType" : "Observation", + "id" : "r8", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "770-8", + "display" : "Neutrophils/100 leukocytes in Blood by Automated count" + } + ], + "text" : "Neutrophils" + }, + "valueQuantity" : { + "value" : "20", + "units" : "%", + "system" : "http://unitsofmeasure.org", + "code" : "%" + }, + "status" : "final", + "reliability" : "ok" + }, + { + "resourceType" : "Observation", + "id" : "r9", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "751-8", + "display" : "Neutrophils [#/volume] in Blood by Automated count" + } + ], + "text" : "Neutrophils" + }, + "valueQuantity" : { + "value" : "0.9", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + }, + "interpretation" : { + "coding" : [ + { + "system" : "http://hl7.org/fhir/v2/0078", + "code" : "LL" + } + ] + }, + "status" : "final", + "reliability" : "ok", + "referenceRange" : [ + { + "low" : { + "value" : "2.0", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + }, + "high" : { + "value" : "7.5", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + } + } + ] + }, + { + "resourceType" : "Observation", + "id" : "r10", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "736-9", + "display" : "Lymphocytes/100 leukocytes in Blood by Automated count" + } + ], + "text" : "Lymphocytes" + }, + "valueQuantity" : { + "value" : "20", + "units" : "%", + "system" : "http://unitsofmeasure.org", + "code" : "%" + }, + "status" : "final", + "reliability" : "ok" + }, + { + "resourceType" : "Observation", + "id" : "r11", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "731-0", + "display" : "Lymphocytes [#/volume] in Blood by Automated count" + } + ], + "text" : "Lymphocytes" + }, + "valueQuantity" : { + "value" : "0.9", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + }, + "interpretation" : { + "coding" : [ + { + "system" : "http://hl7.org/fhir/v2/0078", + "code" : "L" + } + ] + }, + "status" : "final", + "reliability" : "ok", + "referenceRange" : [ + { + "low" : { + "value" : "1.1", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + }, + "high" : { + "value" : "4.0", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + } + } + ] + }, + { + "resourceType" : "Observation", + "id" : "r12", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "5905-5", + "display" : "Monocytes/100 leukocytes in Blood by Automated count" + } + ], + "text" : "Monocytes" + }, + "valueQuantity" : { + "value" : "20", + "units" : "%", + "system" : "http://unitsofmeasure.org", + "code" : "%" + }, + "status" : "final", + "reliability" : "ok" + }, + { + "resourceType" : "Observation", + "id" : "r13", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "742-7", + "display" : "Monocytes [#/volume] in Blood by Automated count" + } + ], + "text" : "Monocytes" + }, + "valueQuantity" : { + "value" : "0.9", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + }, + "status" : "final", + "reliability" : "ok", + "referenceRange" : [ + { + "low" : { + "value" : "0.2", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + }, + "high" : { + "value" : "1.0", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + } + } + ] + }, + { + "resourceType" : "Observation", + "id" : "r14", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "713-8", + "display" : "Eosinophils/100 leukocytes in Blood by Automated count" + } + ], + "text" : "Eosinophils" + }, + "valueQuantity" : { + "value" : "20", + "units" : "%", + "system" : "http://unitsofmeasure.org", + "code" : "%" + }, + "status" : "final", + "reliability" : "ok" + }, + { + "resourceType" : "Observation", + "id" : "r15", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "711-2", + "display" : "Eosinophils [#/volume] in Blood by Automated count" + } + ], + "text" : "Eosinophils" + }, + "valueQuantity" : { + "value" : "0.92", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + }, + "interpretation" : { + "coding" : [ + { + "system" : "http://hl7.org/fhir/v2/0078", + "code" : "HH" + } + ] + }, + "status" : "final", + "reliability" : "ok", + "referenceRange" : [ + { + "low" : { + "value" : "0.04", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + }, + "high" : { + "value" : "0.40", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + } + } + ] + }, + { + "resourceType" : "Observation", + "id" : "r16", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "706-2", + "display" : "Basophils/100 leukocytes in Blood by Automated count" + } + ], + "text" : "Basophils" + }, + "valueQuantity" : { + "value" : "20", + "units" : "%", + "system" : "http://unitsofmeasure.org", + "code" : "%" + }, + "status" : "final", + "reliability" : "ok" + }, + { + "resourceType" : "Observation", + "id" : "r17", + "text" : { + "status" : "empty", + "div" : "\r\n
Missing
" + }, + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "704-7", + "display" : "Basophils [#/volume] in Blood by Automated count" + } + ], + "text" : "Basophils" + }, + "valueQuantity" : { + "value" : "0.92", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + }, + "status" : "final", + "reliability" : "ok", + "referenceRange" : [ + { + "high" : { + "value" : "0.21", + "units" : "x10*9/L", + "system" : "http://unitsofmeasure.org", + "code" : "10*9/L" + } + } + ] + } + ], + "name" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "58410-2", + "display" : "Complete blood count (hemogram) panel - Blood by Automated count" + }, + { + "code" : "CBC", + "display" : "MASTER FULL BLOOD COUNT" + } + ], + "text" : "Complete Blood Count" + }, + "status" : "final", + "issued" : "2011-03-04T11:45:33+11:00", + "_issued" : { + }, + "subject" : { + "reference" : "Patient/pat2" + }, + "performer" : { + "reference" : "Organization/1832473e-2fe0-452d-abe9-3cdb9879522f", + "display" : "Acme Laboratory, Inc" + }, + "identifier" : { + "system" : "http://acme.com/lab/reports", + "value" : "5234342" + }, + "serviceCategory" : { + "coding" : [ + { + "system" : "http://hl7.org/fhir/v2/0074", + "code" : "HM" + } + ] + }, + "diagnosticDateTime" : "2011-03-04T08:30:00+11:00", + "result" : [ + { + "reference" : "#r1" + }, + { + "reference" : "#r2" + }, + { + "reference" : "#r3" + }, + { + "reference" : "#r4" + }, + { + "reference" : "#r5" + }, + { + "reference" : "#r6" + }, + { + "reference" : "#r7" + }, + { + "reference" : "#r8" + }, + { + "reference" : "#r9" + }, + { + "reference" : "#r10" + }, + { + "reference" : "#r11" + }, + { + "reference" : "#r12" + }, + { + "reference" : "#r13" + }, + { + "reference" : "#r14" + }, + { + "reference" : "#r15" + }, + { + "reference" : "#r16" + }, + { + "reference" : "#r17" + } + ], + "presentedForm" : [ + { + "contentType" : "application/pdf", + "language" : "en-AU", + "data" : "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PSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJz48cGRmOlByb2R1Y2VyPkdQTCBHaG9zdHNjcmlwdCA5LjA0PC9wZGY6UHJvZHVjZXI+CjxwZGY6S2V5d29yZHM+KCk8L3BkZjpLZXl3b3Jkcz4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSdlOTA4ODRhMy0zYzlhLTExZTEtMDAwMC02NDI2MDMzYWE1MCYjODsnIHhtbG5zOnhtcD0naHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyc+PHhtcDpNb2RpZnlEYXRlPjIwMTItMDEtMDlUMDg6MjU6NTQrMTE6MDA8L3htcDpNb2RpZnlEYXRlPgo8eG1wOkNyZWF0ZURhdGU+MjAxMi0wMS0wOVQwODoyNTo1NCsxMTowMDwveG1wOkNyZWF0ZURhdGU+Cjx4bXA6Q3JlYXRvclRvb2w+UERGQ3JlYXRvciBWZXJzaW9uIDEuMi4zPC94bXA6Q3JlYXRvclRvb2w+PC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSdlOTA4ODRhMy0zYzlhLTExZTEtMDAwMC02NDI2MDMzYWE1MCYjODsnIHhtbG5zOnhhcE1NPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vJyB4YXBNTTpEb2N1bWVudElEPSd1dWlkOmU5MDg4NGEzLTNjOWEtMTFlMS0wMDAwLTY0MjYwMzNhYTUwJiMxMzg7pyYjMTU3O+7SYyYjMzE7JiMxNjsnLz4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9J2U5MDg4NGEzLTNjOWEtMTFlMS0wMDAwLTY0MjYwMzNhYTUwJiM4OycgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJyBkYzpmb3JtYXQ9J2FwcGxpY2F0aW9uL3BkZic+PGRjOnRpdGxlPjxyZGY6QWx0PjxyZGY6bGkgeG1sOmxhbmc9J3gtZGVmYXVsdCc+Q0JDIFJlcG9ydCBmb3IgV2lsZS4gRS4gQ09ZT1RFIChNUk46IDIzNDUzKSBpc3N1ZWQgMy1NYXIgMjAxMSAxMTo0NTwvcmRmOmxpPjwvcmRmOkFsdD48L2RjOnRpdGxlPjxkYzpjcmVhdG9yPjxyZGY6U2VxPjxyZGY6bGk+R3JhaGFtZTwvcmRmOmxpPjwvcmRmOlNlcT48L2RjOmNyZWF0b3I+PGRjOmRlc2NyaXB0aW9uPjxyZGY6U2VxPjxyZGY6bGk+KCk8L3JkZjpsaT48L3JkZjpTZXE+PC9kYzpkZXNjcmlwdGlvbj48L3JkZjpEZXNjcmlwdGlvbj4KPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSd3Jz8+CmVuZHN0cmVhbQplbmRvYmoKMiAwIG9iago8PC9Qcm9kdWNlcihHUEwgR2hvc3RzY3JpcHQgOS4wNCkKL0NyZWF0aW9uRGF0ZShEOjIwMTIwMTA5MDgyNTU0KzExJzAwJykKL01vZERhdGUoRDoyMDEyMDEwOTA4MjU1NCsxMScwMCcpCi9UaXRsZShcMzc2XDM3N1wwMDBDXDAwMEJcMDAwQ1wwMDAgXDAwMFJcMDAwZVwwMDBwXDAwMG9cMDAwclwwMDB0XDAwMCBcMDAwZlwwMDBvXDAwMHJcMDAwIFwwMDBXXDAwMGlcMDAwbFwwMDBlXDAwMC5cMDAwIFwwMDBFXDAwMC5cMDAwIFwwMDBDXDAwME9cMDAwWVwwMDBPXDAwMFRcMDAwRVwwMDAgXDAwMFwoXDAwME1cMDAwUlwwMDBOXDAwMDpcMDAwIFwwMDAyXDAwMDNcMDAwNFwwMDA1XDAwMDNcMDAwXClcMDAwIFwwMDBpXDAwMHNcMDAwc1wwMDB1XDAwMGVcMDAwZFwwMDAgXDAwMDNcMDAwLVwwMDBNXDAwMGFcMDAwclwwMDAgXDAwMDJcMDAwMFwwMDAxXDAwMDFcMDAwIFwwMDAxXDAwMDFcMDAwOlwwMDA0XDAwMDUpCi9DcmVhdG9yKFwzNzZcMzc3XDAwMFBcMDAwRFwwMDBGXDAwMENcMDAwclwwMDBlXDAwMGFcMDAwdFwwMDBvXDAwMHJcMDAwIFwwMDBWXDAwMGVcMDAwclwwMDBzXDAwMGlcMDAwb1wwMDBuXDAwMCBcMDAwMVwwMDAuXDAwMDJcMDAwLlwwMDAzKQovQXV0aG9yKFwzNzZcMzc3XDAwMEdcMDAwclwwMDBhXDAwMGhcMDAwYVwwMDBtXDAwMGUpCi9LZXl3b3JkcygpCi9TdWJqZWN0KCk+PmVuZG9iagp4cmVmCjAgMjEKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAyMTM3IDAwMDAwIG4gCjAwMDAwNjg3OTMgMDAwMDAgbiAKMDAwMDAwMjA3OCAwMDAwMCBuIAowMDAwMDAxOTM2IDAwMDAwIG4gCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMTkxNiAwMDAwMCBuIAowMDAwMDAyNjU2IDAwMDAwIG4gCjAwMDAwMDQ2ODEgMDAwMDAgbiAKMDAwMDAwMzQ3OSAwMDAwMCBuIAowMDAwMDIxNTc3IDAwMDAwIG4gCjAwMDAwMDQzMjkgMDAwMDAgbiAKMDAwMDA0MTMwNyAwMDAwMCBuIAowMDAwMDAyMjAyIDAwMDAwIG4gCjAwMDAwMDQ5MDUgMDAwMDAgbiAKMDAwMDAyMTc5MyAwMDAwMCBuIAowMDAwMDQxNTI5IDAwMDAwIG4gCjAwMDAwMDIyNTIgMDAwMDAgbiAKMDAwMDAwMjk0OCAwMDAwMCBuIAowMDAwMDAzODMxIDAwMDAwIG4gCjAwMDAwNjcwODggMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAyMSAvUm9vdCAxIDAgUiAvSW5mbyAyIDAgUgovSUQgWzw4RDdGNzc5QTAwQzcwOTc5NTg3MDQyRjA5MkJBQjhDNj48OEQ3Rjc3OUEwMEM3MDk3OTU4NzA0MkYwOTJCQUI4QzY+XQo+PgpzdGFydHhyZWYKNjk0ODUKJSVFT0YK", + "title" : "HTML Report" + } + ] +} diff --git a/hapi-fhir-base/src/test/resources/contained-diagnosticreport.xml b/hapi-fhir-base/src/test/resources/contained-diagnosticreport.xml new file mode 100644 index 00000000000..fd9fb10defd --- /dev/null +++ b/hapi-fhir-base/src/test/resources/contained-diagnosticreport.xml @@ -0,0 +1,718 @@ + + + + +
+

CBC Report for Wile. E. COYOTE (MRN: 23453) issued 3-Mar 2011 11:45

+ +
Test                  Units       Value       Reference Range
Haemoglobin           g/L         176         135 - 180
Red Cell Count        x10*12/L    5.9         4.2 - 6.0
Haematocrit                       0.55+       0.38 - 0.52
Mean Cell Volume      fL          99+         80 - 98
Mean Cell Haemoglobin pg          36+         27 - 35
Platelet Count        x10*9/L     444         150 - 450
White Cell Count      x10*9/L     4.6         4.0 - 11.0
Neutrophils           %           20 
Neutrophils           x10*9/L     0.9---      2.0 - 7.5
Lymphocytes           %           20  
Lymphocytes           x10*9/L     0.9-        1.1 - 4.0
Monocytes             %           20 
Monocytes             x10*9/L     0.9         0.2 - 1.0
Eosinophils           %           20 
Eosinophils           x10*9/L     0.92++      0.04 - 0.40
Basophils             %           20 
Basophils             x10*9/L     0.92+++     <0.21
      
+

Acme Laboratory, Inc signed: Dr Pete Pathologist

+
+ + + + + + +
Missing
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + +
+
+ + + + +
Missing
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + </presentedForm> +</DiagnosticReport> \ No newline at end of file diff --git a/hapi-fhir-base/src/test/resources/example-patient-general.json b/hapi-fhir-base/src/test/resources/example-patient-general.json new file mode 100644 index 00000000000..0ca689ceabe --- /dev/null +++ b/hapi-fhir-base/src/test/resources/example-patient-general.json @@ -0,0 +1,448 @@ +{ + "resourceType":"Patient", + "extension":[ + { + "url":"urn:patientext:att", + "valueAttachment":{ + "contentType":"aaaa", + "data":"AAAA" + } + }, + { + "url":"urn:patientext:moreext", + "extension":[ + { + "url":"urn:patientext:moreext:1", + "valuestring":"str1" + }, + { + "url":"urn:patientext:moreext:2", + "valuestring":"str2" + } + ] + } + ], + "modifierExtension":[ + { + "url":"urn:modext", + "valuedate":"2011-01-02" + } + ], + "text":{ + "status":"generated", + "div":"<div xmlns=\"http://www.w3.org/1999/xhtml\">\n <table>\n <tbody>\n <tr>\n <td>Name</td>\n <td>Peter James <b>Chalmers</b> (\"Jim\")</td>\n </tr>\n <tr>\n <td>Address</td>\n <td>534 Erewhon, Pleasantville, Vic, 3999</td>\n </tr>\n <tr>\n <td>Contacts</td>\n <td>Home: unknown. Work: (03) 5555 6473</td>\n </tr>\n <tr>\n <td>Id</td>\n <td>MRN: 12345 (Acme Healthcare)</td>\n </tr>\n </tbody>\n </table>\n </div>" + }, + "identifier":[ + { + "use":"usual", + "label":"MRN", + "system":"urn:oid:1.2.36.146.595.217.0.1", + "value":"12345", + "period":{ + "start":"2001-05-06" + }, + "assigner":{ + "display":"Acme Healthcare" + } + } + ], + "name":[ + { + "use":"official", + "family":[ + "Chalmers" + ], + "given":[ + "Peter", + "James" + ] + }, + { + "use":"usual", + "given":[ + "Jim" + ] + } + ], + "telecom":[ + { + "use":"home" + }, + { + "system":"phone", + "value":"(03) 5555 6473", + "use":"work" + } + ], + "gender":{ + "coding":[ + { + "system":"http://hl7.org/fhir/v3/AdministrativeGender", + "code":"M", + "display":"Male" + } + ] + }, + "birthDate":"1974-12-25", + "deceasedBoolean":false, + "address":[ + { + "use":"home", + "line":[ + "534 Erewhon St" + ], + "city":"PleasantVille", + "state":"Vic", + "zip":"3999" + }, + { + "use":"old", + "line":[ + "SecondAddress" + ] + } + ], + "contact":[ + { + "relationship":[ + { + "coding":[ + { + "system":"http://hl7.org/fhir/patient-contact-relationship", + "code":"partner" + } + ] + } + ], + "name":{ + "family":[ + "du", + "Marché" + ], + "_family":[ + { + "extension":[ + { + "url":"http://hl7.org/fhir/Profile/iso-21090#qualifier", + "valuecode":"VV" + } + ] + }, + null + ], + "given":[ + "Bénédicte" + ] + }, + "telecom":[ + { + "system":"phone", + "value":"+33 (237) 998327" + } + ] + } + ], + "managingOrganization":{ + "resource":"Organization/1" + }, + "active":true +}13:16:59.119 [main] INFO ca.uhn.fhir.parser.JsonParserTest - +{ + "resourceType":"Patient", + "extension":[ + { + "url":"urn:patientext:att", + "valueAttachment":{ + "contentType":"aaaa", + "data":"AAAA" + } + }, + { + "url":"urn:patientext:moreext", + "extension":[ + { + "url":"urn:patientext:moreext:1", + "valuestring":"str1" + }, + { + "url":"urn:patientext:moreext:2", + "valuestring":"str2" + } + ] + } + ], + "modifierExtension":[ + { + "url":"urn:modext", + "valuedate":"2011-01-02" + } + ], + "text":{ + "status":"generated", + "div":"<div xmlns=\"http://www.w3.org/1999/xhtml\">\n <table>\n <tbody>\n <tr>\n <td>Name</td>\n <td>Peter James <b>Chalmers</b> (\"Jim\")</td>\n </tr>\n <tr>\n <td>Address</td>\n <td>534 Erewhon, Pleasantville, Vic, 3999</td>\n </tr>\n <tr>\n <td>Contacts</td>\n <td>Home: unknown. Work: (03) 5555 6473</td>\n </tr>\n <tr>\n <td>Id</td>\n <td>MRN: 12345 (Acme Healthcare)</td>\n </tr>\n </tbody>\n </table>\n </div>" + }, + "identifier":[ + { + "use":"usual", + "label":"MRN", + "system":"urn:oid:1.2.36.146.595.217.0.1", + "value":"12345", + "period":{ + "start":"2001-05-06" + }, + "assigner":{ + "display":"Acme Healthcare" + } + } + ], + "name":[ + { + "use":"official", + "family":[ + "Chalmers" + ], + "given":[ + "Peter", + "James" + ] + }, + { + "use":"usual", + "given":[ + "Jim" + ] + } + ], + "telecom":[ + { + "use":"home" + }, + { + "system":"phone", + "value":"(03) 5555 6473", + "use":"work" + } + ], + "gender":{ + "coding":[ + { + "system":"http://hl7.org/fhir/v3/AdministrativeGender", + "code":"M", + "display":"Male" + } + ] + }, + "birthDate":"1974-12-25", + "deceasedBoolean":false, + "address":[ + { + "use":"home", + "line":[ + "534 Erewhon St" + ], + "city":"PleasantVille", + "state":"Vic", + "zip":"3999" + }, + { + "use":"old", + "line":[ + "SecondAddress" + ] + } + ], + "contact":[ + { + "relationship":[ + { + "coding":[ + { + "system":"http://hl7.org/fhir/patient-contact-relationship", + "code":"partner" + } + ] + } + ], + "name":{ + "family":[ + "du", + "March??" + ], + "_family":[ + { + "extension":[ + { + "url":"http://hl7.org/fhir/Profile/iso-21090#qualifier", + "valuecode":"VV" + } + ] + }, + null + ], + "given":[ + "B??n??dicte" + ] + }, + "telecom":[ + { + "system":"phone", + "value":"+33 (237) 998327" + } + ] + } + ], + "managingOrganization":{ + "resource":"Organization/1" + }, + "active":true +} +13:16:59.122 [main] INFO ca.uhn.fhir.parser.JsonParserTest - +{ + "resourceType":"Patient", + "extension":[ + { + "url":"urn:patientext:att", + "valueAttachment":{ + "contentType":"aaaa", + "data":"AAAA" + } + }, + { + "url":"urn:patientext:moreext", + "extension":[ + { + "url":"urn:patientext:moreext:1", + "valuestring":"str1" + }, + { + "url":"urn:patientext:moreext:2", + "valuestring":"str2" + } + ] + } + ], + "modifierExtension":[ + { + "url":"urn:modext", + "valuedate":"2011-01-02" + } + ], + "text":{ + "status":"generated", + "div":"<div xmlns=\"http://www.w3.org/1999/xhtml\">\n <table>\n <tbody>\n <tr>\n <td>Name</td>\n <td>Peter James <b>Chalmers</b> (\"Jim\")</td>\n </tr>\n <tr>\n <td>Address</td>\n <td>534 Erewhon, Pleasantville, Vic, 3999</td>\n </tr>\n <tr>\n <td>Contacts</td>\n <td>Home: unknown. Work: (03) 5555 6473</td>\n </tr>\n <tr>\n <td>Id</td>\n <td>MRN: 12345 (Acme Healthcare)</td>\n </tr>\n </tbody>\n </table>\n </div>" + }, + "identifier":[ + { + "use":"usual", + "label":"MRN", + "system":"urn:oid:1.2.36.146.595.217.0.1", + "value":"12345", + "period":{ + "start":"2001-05-06" + }, + "assigner":{ + "display":"Acme Healthcare" + } + } + ], + "name":[ + { + "use":"official", + "family":[ + "Chalmers" + ], + "given":[ + "Peter", + "James" + ] + }, + { + "use":"usual", + "given":[ + "Jim" + ] + } + ], + "telecom":[ + { + "use":"home" + }, + { + "system":"phone", + "value":"(03) 5555 6473", + "use":"work" + } + ], + "gender":{ + "coding":[ + { + "system":"http://hl7.org/fhir/v3/AdministrativeGender", + "code":"M", + "display":"Male" + } + ] + }, + "birthDate":"1974-12-25", + "deceasedBoolean":false, + "address":[ + { + "use":"home", + "line":[ + "534 Erewhon St" + ], + "city":"PleasantVille", + "state":"Vic", + "zip":"3999" + }, + { + "use":"old", + "line":[ + "SecondAddress" + ] + } + ], + "contact":[ + { + "relationship":[ + { + "coding":[ + { + "system":"http://hl7.org/fhir/patient-contact-relationship", + "code":"partner" + } + ] + } + ], + "name":{ + "family":[ + "du", + "Marché" + ], + "_family":[ + { + "extension":[ + { + "url":"http://hl7.org/fhir/Profile/iso-21090#qualifier", + "valuecode":"VV" + } + ] + }, + null + ], + "given":[ + "Bénédicte" + ] + }, + "telecom":[ + { + "system":"phone", + "value":"+33 (237) 998327" + } + ] + } + ], + "managingOrganization":{ + "resource":"Organization/1" + }, + "active":true +} \ No newline at end of file diff --git a/hapi-fhir-base/src/test/resources/example-patient-general.xml b/hapi-fhir-base/src/test/resources/example-patient-general.xml index b3a96adaac2..28f49ab3b0d 100644 --- a/hapi-fhir-base/src/test/resources/example-patient-general.xml +++ b/hapi-fhir-base/src/test/resources/example-patient-general.xml @@ -1,4 +1,24 @@ -<Patient xmlns="http://hl7.org/fhir"> +<Patient xmlns="http://hl7.org/fhir" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hl7.org/fhir ./fhir-single.xsd"> + <extension url="urn:patientext:att"> + <valueAttachment> + <contentType value="aaaa"/> + <data value="AAAA"/> + </valueAttachment> + </extension> + + <extension url="urn:patientext:moreext"> + <extension url="urn:patientext:moreext:1"> + <valueString value="str1"/> + </extension> + <extension url="urn:patientext:moreext:2"> + <valueString value="str2"/> + </extension> + </extension> + + <modifierExtension url="urn:modext"> + <valueDate value="2011-01-02"/> + </modifierExtension> + <text> <status value="generated"/> <div xmlns="http://www.w3.org/1999/xhtml"> @@ -80,6 +100,11 @@ <zip value="3999"/> </address> + <address> + <use value="old"/> + <line value="SecondAddress"/> + </address> + <contact> <relationship> <coding> diff --git a/hapi-fhir-base/src/test/resources/observation-example-eeg.xml b/hapi-fhir-base/src/test/resources/observation-example-eeg.xml index 30a3c0fad3a..cbfd8986153 100644 --- a/hapi-fhir-base/src/test/resources/observation-example-eeg.xml +++ b/hapi-fhir-base/src/test/resources/observation-example-eeg.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- This example is taken from the v3 data types (SLIST) --> -<Observation xmlns="http://hl7.org/fhir" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hl7.org/fhir ..\..\schema\observation.xsd"> +<Observation xmlns="http://hl7.org/fhir" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hl7.org/fhir ./fhir-single.xsd"> <extension url="http://acme.org/fhir/Profile/main#trial-status"> <extension url="http://acme.org/fhir/Profile/main#trial-status-code"> <valueCode value="unsure" /> @@ -50,5 +50,6 @@ <subject> <reference value="Patient/example" /> + </subject> </Observation> \ No newline at end of file diff --git a/hapi-fhir-structures-dstu/pom.xml b/hapi-fhir-structures-dstu/pom.xml index fe3cdd86062..1aaf910904e 100644 --- a/hapi-fhir-structures-dstu/pom.xml +++ b/hapi-fhir-structures-dstu/pom.xml @@ -41,14 +41,20 @@ <baseResourceNames> <baseResourceName>conformance</baseResourceName> <baseResourceName>device</baseResourceName> + <baseResourceName>diagnosticorder</baseResourceName> + <baseResourceName>diagnosticreport</baseResourceName> + <baseResourceName>encounter</baseResourceName> <baseResourceName>group</baseResourceName> + <baseResourceName>imagingstudy</baseResourceName> <baseResourceName>location</baseResourceName> + <baseResourceName>media</baseResourceName> <baseResourceName>medication</baseResourceName> <baseResourceName>observation</baseResourceName> <baseResourceName>organization</baseResourceName> <baseResourceName>patient</baseResourceName> <baseResourceName>practitioner</baseResourceName> <baseResourceName>profile</baseResourceName> + <baseResourceName>relatedperson</baseResourceName> <baseResourceName>specimen</baseResourceName> <baseResourceName>substance</baseResourceName> <baseResourceName>valueset</baseResourceName> diff --git a/hapi-tinder-plugin/src/main/java/ca/uhn/fhir/tinder/ResourceGeneratorUsingSpreadsheet.java b/hapi-tinder-plugin/src/main/java/ca/uhn/fhir/tinder/ResourceGeneratorUsingSpreadsheet.java index 1d0022b6321..19ec06fbba4 100644 --- a/hapi-tinder-plugin/src/main/java/ca/uhn/fhir/tinder/ResourceGeneratorUsingSpreadsheet.java +++ b/hapi-tinder-plugin/src/main/java/ca/uhn/fhir/tinder/ResourceGeneratorUsingSpreadsheet.java @@ -37,7 +37,7 @@ public class ResourceGeneratorUsingSpreadsheet extends BaseStructureSpreadsheetP public static void main(String[] args) throws Exception { ResourceGeneratorUsingSpreadsheet p = new ResourceGeneratorUsingSpreadsheet(); - p.setBaseResourceNames(Collections.singletonList("patient")); + p.setBaseResourceNames(Collections.singletonList("encounter")); p.parse(); p.writeAll(new File("tmp"), "ca.test"); // diff --git a/hapi-tinder-plugin/src/main/java/ca/uhn/fhir/tinder/model/Child.java b/hapi-tinder-plugin/src/main/java/ca/uhn/fhir/tinder/model/Child.java index 8c1e19d83eb..9dd7e8dc5da 100644 --- a/hapi-tinder-plugin/src/main/java/ca/uhn/fhir/tinder/model/Child.java +++ b/hapi-tinder-plugin/src/main/java/ca/uhn/fhir/tinder/model/Child.java @@ -37,7 +37,7 @@ public abstract class Child extends BaseElement { if (elementName.endsWith("[x]")) { elementName = elementName.substring(0, elementName.length() - 3); } - return elementName; + return elementName.trim(); } public String getMethodName() { diff --git a/hapi-tinder-plugin/src/main/resources/res/diagnosticorder-spreadsheet.xml b/hapi-tinder-plugin/src/main/resources/res/diagnosticorder-spreadsheet.xml new file mode 100644 index 00000000000..77ec92d3b29 --- /dev/null +++ b/hapi-tinder-plugin/src/main/resources/res/diagnosticorder-spreadsheet.xml @@ -0,0 +1,1032 @@ +<?xml version="1.0"?> +<?mso-application progid="Excel.Sheet"?> +<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" + xmlns:o="urn:schemas-microsoft-com:office:office" + xmlns:x="urn:schemas-microsoft-com:office:excel" + xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" + xmlns:html="http://www.w3.org/TR/REC-html40"> + <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> + <Author>Grahame</Author> + <LastAuthor>Grahame</LastAuthor> + <Created>2012-03-19T11:17:14Z</Created> + <LastSaved>2013-05-20T04:33:02Z</LastSaved> + <Version>14.00</Version> + </DocumentProperties> + <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"> + <AllowPNG/> + </OfficeDocumentSettings> + <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> + <WindowHeight>5190</WindowHeight> + <WindowWidth>13680</WindowWidth> + <WindowTopX>5520</WindowTopX> + <WindowTopY>6195</WindowTopY> + <ProtectStructure>False</ProtectStructure> + <ProtectWindows>False</ProtectWindows> + </ExcelWorkbook> + <Styles> + <Style ss:ID="Default" ss:Name="Normal"> + <Alignment ss:Vertical="Bottom"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s62"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + </Style> + <Style ss:ID="s63"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + </Style> + <Style ss:ID="s64"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#EEECE1" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s65"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Interior ss:Color="#D9D9D9" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s66"> + <Alignment ss:Vertical="Bottom" ss:ShrinkToFit="1" ss:WrapText="1"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s67"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top"/> + <Font ss:FontName="Verdana" x:Family="Swiss" ss:Size="9" ss:Color="#000000"/> + </Style> + <Style ss:ID="s68"> + <Alignment ss:Vertical="Top"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + </Style> + <Style ss:ID="s70"> + <Alignment ss:Vertical="Bottom" ss:ShrinkToFit="1" ss:WrapText="1"/> + </Style> + <Style ss:ID="s71"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + </Style> + <Style ss:ID="s72"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + </Style> + <Style ss:ID="s73"> + <Alignment ss:Vertical="Top"/> + </Style> + <Style ss:ID="s74"> + <Alignment ss:Vertical="Top"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + </Style> + <Style ss:ID="s75"> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#F2F2F2" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s77"> + <Alignment ss:Vertical="Top" ss:ShrinkToFit="1" ss:WrapText="1"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + </Styles> + <Worksheet ss:Name="Data Elements"> + <Names> + <NamedRange ss:Name="_FilterDatabase" ss:RefersTo="='Data Elements'!R1C1:R43C16" + ss:Hidden="1"/> + </Names> + <Table ss:ExpandedColumnCount="17" ss:ExpandedRowCount="30" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s62" ss:DefaultRowHeight="15"> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="156"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="30"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="25.5"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="36.75" ss:Span="1"/> + <Column ss:Index="6" ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="117.75"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="82.5"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="213.75" ss:Span="1"/> + <Column ss:Index="10" ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="132"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="75.75"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="290.25"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="224.25"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="135" ss:Span="1"/> + <Column ss:Index="16" ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="164.25"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="722.25"/> + <Row ss:Height="45" ss:StyleID="s64"> + <Cell><Data ss:Type="String">Element</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Card.</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Inv.</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Must Understand</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">UML</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Type</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Binding</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Short Label</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Definition</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Aliases</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Requirements</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Comments</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">RIM Mapping</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">v2 Mapping</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">To Do</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Committee Notes</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Notes on mapping</Data></Cell> + </Row> + <Row ss:Height="30"> + <Cell><Data ss:Type="String">DiagnosticOrder</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s65"><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s65"><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s65"><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s65"><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Resource</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">A request for a diagnostic service</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">A request for a diagnostic investigation service to be performed</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Report, Test, Result, Results, Labs, Laboratory</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="13"><Data ss:Type="String">Observation[classCode=OBS, moodCode=RQO, code<"diagnostic order"]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="105"> + <Cell><Data ss:Type="String">DiagnosticOrder.subject</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">1..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Patient|Group|Location|Device)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Who and/or what test is about</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Who or what the investigation is to be performed on. This is usually a human patient, but diagnostic tests can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="13" ss:StyleID="s77"><Data ss:Type="String">.participation[typeCode=SBJ].role</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="30"> + <Cell><Data ss:Type="String">DiagnosticOrder.orderer</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Practitioner)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Who ordered the test</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The practitioner that holds legal responsibility for ordering the investigation</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="13"><Data ss:Type="String">.participation[typeCode=AUT].role</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s63"/> + </Row> + <Row ss:Height="30"> + <Cell><Data ss:Type="String">DiagnosticOrder.identifier</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Identifier</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Identifiers assigned to this order</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Identifiers assigned to this order by the order or by the receiver</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="13"><Data ss:Type="String">.id</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="45"> + <Cell><Data ss:Type="String">DiagnosticOrder.encounter</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Encounter)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">The encounter that this diagnostic order is associated with</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">An encounter that provides additional informaton about the healthcare context in which this request is made</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="13"><Data ss:Type="String">.inboundRelationship[typeCode=COMP].source[classCode=ENC, moodCode=EVN]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="45"> + <Cell><Data ss:Type="String">DiagnosticOrder.clinicalNotes</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">string</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Explanation/Justification for test</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">An explanation or justification for why this diagnostic investigation is being requested</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">This may be used to decide how the diagnostic investigation will be performed, or even if it will be performed at all</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">.reasonCode.originalText</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="60"> + <Cell><Data ss:Type="String">DiagnosticOrder.specimen</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Specimen)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">If the whole order relates to specific specimens</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">One or more specimens that the diagnostic investigation is about</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Many investigation requests will create a need for specimens, but the request itself is not actually about the specimens. This is provided for when the diagnostic investigation is requested on already existing specimens</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">.participation[typeCode=SPC].role</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="90"> + <Cell><Data ss:Type="String">DiagnosticOrder.status</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">code</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">DiagnosticOrderStatus</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">requested | received | accepted | in progress | review | completed | suspended | rejected | failed</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The status of the order</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Typically the system placing the order sets the status to requested. There after, the order is maintained by the receiver that updates the status as the request is handled</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">.statusCode also influenced by whether a ControlAct fulfillment requeste exists, whether a promise exists, status of the review component, whether a fulfilling observation exists, whether a refusal exists</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="90"> + <Cell><Data ss:Type="String">DiagnosticOrder.priority</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">code</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">DiagnosticOrderPriority</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">routine | urgent | stat | asap</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The clinical priority associated with this order</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">The Order resource also has a priority. Generally, these should be the same, but they can be different, for instance in the case where the clinician indicates that the order is urgent, but the subsequent workflow process overrule this priority for some reason. The effective default value is "normal"</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">.priorityCode</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="75"> + <Cell><Data ss:Type="String">DiagnosticOrder.event</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="5"><Data ss:Type="String">down</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">A list of events of interest in the lifecycle</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">A summary of the events of interest that have occurred as the request is processed. E.g. when the order was made, various processing steps (specimens received), when it was completed</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">This is not the same as an audit trail - it is a view of the important things that happened in the past. Typically, there would only be one entry for any given status, and systems may not record all the status events</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">.inboundRelationship[typeCode=FLFS].source</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="90"> + <Cell><Data ss:Type="String">DiagnosticOrder.event.status</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">1..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">code</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">DiagnosticOrderStatus</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">requested | received | accepted | in progress | review | completed | suspended | rejected | failed</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The status for the event</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="13"><Data ss:Type="String">.statusCode also influenced by whether a ControlAct fulfillment requeste exists, whether a promise exists, status of the review component, whether a fulfilling observation exists, whether a refusal exists</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="45"> + <Cell><Data ss:Type="String">DiagnosticOrder.event.description</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">CodeableConcept</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">DIagnosticOrderEventDescription</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">More information about the event and it's context</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Additional information about the event that occurred - e.g. if the status remained unchanged</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="13"><Data ss:Type="String">.text</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="30"> + <Cell><Data ss:Type="String">DiagnosticOrder.event.dateTime</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">1..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">dateTime</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">The date at which the event happened</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The date/time at which the event occurred</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="13"><Data ss:Type="String">.effectiveTime</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="30"> + <Cell><Data ss:Type="String">DiagnosticOrder.event.actor</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Practitioner|Device)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Who recorded or did this</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The person who was responsible for performing or recording the action</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="13"><Data ss:Type="String">.participation[AUT or PFM]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="75"> + <Cell><Data ss:Type="String">DiagnosticOrder.item</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="5"><Data ss:Type="String">right</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">The items the orderer requested</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">There would always be at least one item in normal usage, but this is optional so that a workflow can quote order details without having to list the items</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">.outboundRelationship[typeCode=COMP].target[classCode=OBS, moodCode=OBS]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="75"> + <Cell><Data ss:Type="String">DiagnosticOrder.item.code</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">1..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">CodeableConcept</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s67"><Data ss:Type="String">DiagnosticRequests</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Code to indicate the item (test or panel) being ordered</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">A code that identifies a particular diagnostic investigation, or panel of investigations, that have been requested</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Many laboratory tests and radiology tests embed the specimen/organ system in the test name, for example, serum or serum/plasma glucose, or a chest xray. The specimen may not be recorded separately from the test code.</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">.code</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">OBX-4</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + </Row> + <Row ss:Height="45"> + <Cell><Data ss:Type="String">DiagnosticOrder.item.specimen</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Specimen)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">If this item relates to specific specimens</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">If the item is related to a specific speciment</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">A single specimen should not appear in both DIagnosticOrder.specimen and DiagnosticOrder.item.specimen</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">.participation[typeCode=SPC].role</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="30"> + <Cell><Data ss:Type="String">DiagnosticOrder.item.bodySite</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">CodeableConcept</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">BodySite</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Location of requested test (if applicable)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Anatomical location where the request test should be performed</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">location</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="13"><Data ss:Type="String">targetSiteCode</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="15"><Data ss:Type="String">Is this approach or target site?</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="90"> + <Cell><Data ss:Type="String">DiagnosticOrder.item.status</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">code</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">DiagnosticOrderStatus</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">requested | received | accepted | in progress | review | completed | suspended | rejected | failed</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The status of this individual item within the order</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">If the request has multiple items that have their own life cycles, then the items will have their own status while the overall diagnostic order is (usually) "in progress"</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">.statusCode also influenced by whether a ControlAct fulfillment requeste exists, whether a promise exists, status of the review component, whether a fulfilling observation exists, whether a refusal exists</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Height="45"> + <Cell><Data ss:Type="String">DiagnosticOrder.item.event</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String" x:Ticked="1">@DiagnosticOrder.event</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s68"><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Events specific to this item</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">A summary of the events of interest that have occurred as this item of the request is processed</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="13"><Data ss:Type="String">.inboundRelationship[typeCode=FLFS].source</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row> + <Cell ss:Index="7" ss:StyleID="s68"><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Index="25"> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row> + <Cell ss:Index="17" ss:StyleID="s66"/> + </Row> + <Row ss:Index="30"> + <Cell ss:Index="13" ss:StyleID="s66"><NamedCell ss:Name="_FilterDatabase"/></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Print> + <ValidPrinterInfo/> + <HorizontalResolution>600</HorizontalResolution> + <VerticalResolution>600</VerticalResolution> + </Print> + <Selected/> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>1</SplitVertical> + <LeftColumnRightPane>1</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Invariants"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="2" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s70" ss:DefaultRowHeight="15"> + <Column ss:Index="4" ss:StyleID="s70" ss:AutoFitWidth="0" ss:Width="143.25"/> + <Column ss:Index="6" ss:StyleID="s70" ss:AutoFitWidth="0" ss:Width="179.25"/> + <Row ss:AutoFitHeight="0" ss:StyleID="s64"> + <Cell><Data ss:Type="String">Id</Data></Cell> + <Cell><Data ss:Type="String">Name</Data></Cell> + <Cell><Data ss:Type="String">Context</Data></Cell> + <Cell><Data ss:Type="String">English</Data></Cell> + <Cell><Data ss:Type="String">OCL</Data></Cell> + <Cell><Data ss:Type="String">XPath</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="3" ss:StyleID="s71"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>-3</HorizontalResolution> + <VerticalResolution>-3</VerticalResolution> + </Print> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>1</ActiveRow> + <RangeSelection>R2</RangeSelection> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Events"> + <Table ss:ExpandedColumnCount="8" ss:ExpandedRowCount="2" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s72" ss:DefaultRowHeight="15"> + <Column ss:StyleID="s72" ss:AutoFitWidth="0" ss:Width="73.5"/> + <Column ss:StyleID="s72" ss:AutoFitWidth="0" ss:Width="130.5"/> + <Column ss:StyleID="s72" ss:AutoFitWidth="0" ss:Width="118.5"/> + <Column ss:StyleID="s72" ss:AutoFitWidth="0" ss:Width="156.75" ss:Span="1"/> + <Column ss:Index="6" ss:StyleID="s72" ss:AutoFitWidth="0" ss:Width="125.25" + ss:Span="1"/> + <Column ss:Index="8" ss:StyleID="s72" ss:AutoFitWidth="0" ss:Width="102"/> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Event Code</Data></Cell> + <Cell><Data ss:Type="String">Description</Data></Cell> + <Cell><Data ss:Type="String">Notes</Data></Cell> + <Cell><Data ss:Type="String">Request Resources</Data></Cell> + <Cell><Data ss:Type="String">Request Aggregations</Data></Cell> + <Cell><Data ss:Type="String">Response Resources</Data></Cell> + <Cell><Data ss:Type="String">Response Aggregations</Data></Cell> + <Cell><Data ss:Type="String">Follow Ups</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="120"/> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>600</HorizontalResolution> + <VerticalResolution>0</VerticalResolution> + </Print> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>1</ActiveRow> + <RangeSelection>R2</RangeSelection> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Search"> + <Table ss:ExpandedColumnCount="4" ss:ExpandedRowCount="32" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="91.5"/> + <Column ss:AutoFitWidth="0" ss:Width="117"/> + <Column ss:AutoFitWidth="0" ss:Width="90.75"/> + <Column ss:AutoFitWidth="0" ss:Width="351.75"/> + <Row ss:AutoFitHeight="0" ss:Height="16.5" ss:StyleID="s64"> + <Cell><Data ss:Type="String">Name</Data></Cell> + <Cell><Data ss:Type="String">Description</Data></Cell> + <Cell><Data ss:Type="String">Type</Data></Cell> + <Cell><Data ss:Type="String">Path</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">actor</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">reference</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">DiagnosticOrder.event.actor | DiagnosticOrder.item.event.actor</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">bodysite</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">DiagnosticOrder.item.bodySite</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">code</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">DiagnosticOrder.item.code</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">event-date</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">date</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">DiagnosticOrder.event.dateTime</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">encounter</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">reference</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">DiagnosticOrder.encounter</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">identifier</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">DiagnosticOrder.identifier</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">item-date</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">date</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">DiagnosticOrder.item.event.dateTime</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">item-past-status</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">DiagnosticOrder.item.event.status</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">item-status</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">DiagnosticOrder.item.status</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">item-status-date</Data></Cell> + <Cell><Data ss:Type="String">A combination of item-past-status and item-date</Data></Cell> + <Cell><Data ss:Type="String">composite</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">item-past-status & item-date</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">orderer</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">reference</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">DiagnosticOrder.orderer</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">event-status</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">DiagnosticOrder.event.status</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">specimen</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">reference</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">DiagnosticOrder.specimen | DiagnosticOrder.item.specimen</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">status</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">DiagnosticOrder.status</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">event-status-date</Data></Cell> + <Cell><Data ss:Type="String">A combination of past-status and date</Data></Cell> + <Cell><Data ss:Type="String">composite</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">event-status & event-date</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">subject</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">reference</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">DiagnosticOrder.subject</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:Index="22" ss:AutoFitHeight="0"> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:Index="27" ss:AutoFitHeight="0"> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:Index="29" ss:AutoFitHeight="0"> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:Index="31" ss:AutoFitHeight="0"> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>600</HorizontalResolution> + <VerticalResolution>0</VerticalResolution> + </Print> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>16</ActiveRow> + <ActiveCol>3</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Bindings"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="7" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s73" ss:DefaultRowHeight="15"> + <Column ss:StyleID="s73" ss:AutoFitWidth="0" ss:Width="149.25"/> + <Column ss:StyleID="s73" ss:AutoFitWidth="0" ss:Width="336.75"/> + <Column ss:StyleID="s73" ss:AutoFitWidth="0" ss:Width="52.5" ss:Span="1"/> + <Column ss:Index="5" ss:StyleID="s73" ss:AutoFitWidth="0" ss:Width="126.75"/> + <Column ss:StyleID="s73" ss:AutoFitWidth="0" ss:Width="346.5"/> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s64"><Data ss:Type="String">Binding Name</Data></Cell> + <Cell ss:StyleID="s64"><Data ss:Type="String">Definition</Data></Cell> + <Cell ss:StyleID="s64"><Data ss:Type="String">Binding</Data></Cell> + <Cell ss:StyleID="s64"><Data ss:Type="String">Example</Data></Cell> + <Cell ss:StyleID="s64"><Data ss:Type="String">Reference</Data></Cell> + <Cell ss:StyleID="s64"><Data ss:Type="String">Description</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s63"><Data ss:Type="String">DiagnosticOrderStatus</Data></Cell> + <Cell ss:StyleID="s72"><Data ss:Type="String">The status of a diagnostic order</Data></Cell> + <Cell ss:StyleID="s72"><Data ss:Type="String">code list</Data></Cell> + <Cell ss:StyleID="s72"/> + <Cell><Data ss:Type="String">#diagnostic-order-status</Data></Cell> + <Cell ss:StyleID="s72"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s62"><Data ss:Type="String">DiagnosticOrderPriority</Data></Cell> + <Cell ss:StyleID="s72"><Data ss:Type="String">The clinical priority of a diagnostic order</Data></Cell> + <Cell ss:StyleID="s72"><Data ss:Type="String">code list</Data></Cell> + <Cell ss:StyleID="s72"/> + <Cell><Data ss:Type="String">#diagnostic-order-priority</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s63"><Data ss:Type="String">DiagnosticRequests</Data></Cell> + <Cell ss:StyleID="s72"><Data ss:Type="String">Codes for tests/services that can be performed by diagnostic services</Data></Cell> + <Cell ss:StyleID="s72"><Data ss:Type="String">value set</Data></Cell> + <Cell ss:StyleID="s72"/> + <Cell><Data ss:Type="String">valueset-diagnostic-requests</Data></Cell> + <Cell><Data ss:Type="String">LOINC Order Codes</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s62"><Data ss:Type="String">DIagnosticOrderEventDescription</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">Additional information about an event that occurred to a diagnostic order - e.g. if the status remained unchanged</Data></Cell> + <Cell ss:StyleID="s72"><Data ss:Type="String">value set</Data></Cell> + <Cell ss:StyleID="s72"><Data ss:Type="String">y</Data></Cell> + <Cell><Data ss:Type="String">valueset-diagnostic-order-event</Data></Cell> + <Cell ss:StyleID="s72"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s63"/> + <Cell ss:StyleID="s72"/> + <Cell ss:StyleID="s72"/> + <Cell ss:StyleID="s72"/> + <Cell ss:Index="6" ss:StyleID="s72"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s74"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>-3</HorizontalResolution> + <VerticalResolution>-3</VerticalResolution> + </Print> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>4</ActiveRow> + <ActiveCol>1</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="!Examples"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="1" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="76.5"/> + <Column ss:AutoFitWidth="0" ss:Width="219.75"/> + <Column ss:AutoFitWidth="0" ss:Width="44.25"/> + <Column ss:AutoFitWidth="0" ss:Width="228"/> + <Column ss:AutoFitWidth="0" ss:Width="68.25"/> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell ss:StyleID="s64"><Data ss:Type="String">Name</Data></Cell> + <Cell ss:StyleID="s64"><Data ss:Type="String">Description</Data></Cell> + <Cell ss:StyleID="s64"><Data ss:Type="String">Identity</Data></Cell> + <Cell ss:StyleID="s64"><Data ss:Type="String">Filename</Data></Cell> + <Cell ss:StyleID="s64"><Data ss:Type="String">Type</Data></Cell> + <Cell ss:StyleID="s64"><Data ss:Type="String">In Book</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>1</ActiveRow> + <RangeSelection>R2:R4</RangeSelection> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="diagnostic-order-status"> + <Table ss:ExpandedColumnCount="4" ss:ExpandedRowCount="21" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:Index="2" ss:AutoFitWidth="0" ss:Width="113.25"/> + <Column ss:AutoFitWidth="0" ss:Width="229.5"/> + <Row ss:AutoFitHeight="0" ss:StyleID="s75"> + <Cell><Data ss:Type="String">Id</Data></Cell> + <Cell><Data ss:Type="String">Code</Data></Cell> + <Cell><Data ss:Type="String">Definition</Data></Cell> + <Cell><Data ss:Type="String">Comments</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">1</Data></Cell> + <Cell><Data ss:Type="String">requested</Data></Cell> + <Cell><Data ss:Type="String">The request has been placed</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">2</Data></Cell> + <Cell><Data ss:Type="String">received</Data></Cell> + <Cell><Data ss:Type="String">The receiving system has received the order, but not yet decided whether it will be performed</Data></Cell> + <Cell><Data ss:Type="String">This may require waiting for a patient to actually attend</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">3</Data></Cell> + <Cell><Data ss:Type="String">accepted</Data></Cell> + <Cell><Data ss:Type="String">The receiving system has accepted the order, but work has not yet commenced</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">4</Data></Cell> + <Cell><Data ss:Type="String">in progress</Data></Cell> + <Cell><Data ss:Type="String">The work to fulfill the order is happening</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">5</Data></Cell> + <Cell><Data ss:Type="String">review</Data></Cell> + <Cell><Data ss:Type="String">The work is complete, and the outcomes are being reviewed for approval</Data></Cell> + <Cell><Data ss:Type="String">An interim/preliminary report may be released while the order is in this state</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">6</Data></Cell> + <Cell><Data ss:Type="String">completed</Data></Cell> + <Cell><Data ss:Type="String">The work has been complete, the report(s) released, and no further work is planned</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">7</Data></Cell> + <Cell><Data ss:Type="String">suspended</Data></Cell> + <Cell><Data ss:Type="String">The request has been held by originating system/user request</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">8</Data></Cell> + <Cell><Data ss:Type="String">rejected</Data></Cell> + <Cell><Data ss:Type="String">The receiving system has declined to fulfill the request</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">9</Data></Cell> + <Cell><Data ss:Type="String">failed</Data></Cell> + <Cell><Data ss:Type="String">The diagnostic investigation was attempted, but due to some procedural error, it could not be completed</Data></Cell> + </Row> + <Row ss:Index="21" ss:AutoFitHeight="0"> + <Cell ss:Index="3" ss:StyleID="s62"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>11</ActiveRow> + <ActiveCol>1</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="diagnostic-order-priority"> + <Table ss:ExpandedColumnCount="5" ss:ExpandedRowCount="5" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="34.5"/> + <Column ss:AutoFitWidth="0" ss:Width="108" ss:Span="1"/> + <Column ss:Index="4" ss:AutoFitWidth="0" ss:Width="276.75"/> + <Column ss:AutoFitWidth="0" ss:Width="130.5"/> + <Row ss:AutoFitHeight="0" ss:StyleID="s75"> + <Cell><Data ss:Type="String">Id</Data></Cell> + <Cell><Data ss:Type="String">Code</Data></Cell> + <Cell><Data ss:Type="String">Display</Data></Cell> + <Cell><Data ss:Type="String">Definition</Data></Cell> + <Cell><Data ss:Type="String">Comments</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">1</Data></Cell> + <Cell><Data ss:Type="String">routine</Data></Cell> + <Cell><Data ss:Type="String">Routine</Data></Cell> + <Cell><Data ss:Type="String">The order has a normal priority </Data></Cell> + <Cell><Data ss:Type="String">This is the effective default if no code is specified</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">2</Data></Cell> + <Cell><Data ss:Type="String">urgent</Data></Cell> + <Cell><Data ss:Type="String">Urgent</Data></Cell> + <Cell><Data ss:Type="String">The order should be urgently</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">3</Data></Cell> + <Cell><Data ss:Type="String">stat</Data></Cell> + <Cell><Data ss:Type="String">Stat</Data></Cell> + <Cell><Data ss:Type="String">The order is time-critical</Data></Cell> + <Cell><Data ss:Type="String">Usually the patient's life depends on the outcome of the diagnostic investigation</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">4</Data></Cell> + <Cell><Data ss:Type="String">asap</Data></Cell> + <Cell><Data ss:Type="String">ASAP</Data></Cell> + <Cell><Data ss:Type="String">The order should be acted on as soon as possible</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>4</ActiveRow> + <ActiveCol>4</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> +</Workbook> diff --git a/hapi-tinder-plugin/src/main/resources/res/diagnosticreport-spreadsheet.xml b/hapi-tinder-plugin/src/main/resources/res/diagnosticreport-spreadsheet.xml new file mode 100644 index 00000000000..320d382eebc --- /dev/null +++ b/hapi-tinder-plugin/src/main/resources/res/diagnosticreport-spreadsheet.xml @@ -0,0 +1,1197 @@ +<?xml version="1.0"?> +<?mso-application progid="Excel.Sheet"?> +<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" + xmlns:o="urn:schemas-microsoft-com:office:office" + xmlns:x="urn:schemas-microsoft-com:office:excel" + xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" + xmlns:html="http://www.w3.org/TR/REC-html40"> + <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> + <Author>Grahame</Author> + <LastAuthor>Grahame</LastAuthor> + <Created>2012-03-19T11:17:14Z</Created> + <LastSaved>2014-01-15T13:07:51Z</LastSaved> + <Version>14.00</Version> + </DocumentProperties> + <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"> + <AllowPNG/> + </OfficeDocumentSettings> + <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> + <WindowHeight>1620</WindowHeight> + <WindowWidth>9570</WindowWidth> + <WindowTopX>5520</WindowTopX> + <WindowTopY>6255</WindowTopY> + <ProtectStructure>False</ProtectStructure> + <ProtectWindows>False</ProtectWindows> + </ExcelWorkbook> + <Styles> + <Style ss:ID="Default" ss:Name="Normal"> + <Alignment ss:Vertical="Bottom"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s62" ss:Name="Normal 2"> + <Alignment ss:Vertical="Bottom"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s63"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + </Style> + <Style ss:ID="s64"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + </Style> + <Style ss:ID="s65"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#EEECE1" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s66"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Interior ss:Color="#D9D9D9" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s67"> + <Alignment ss:Vertical="Top" ss:ShrinkToFit="1" ss:WrapText="1"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s68"> + <Alignment ss:Vertical="Top" ss:ShrinkToFit="1" ss:WrapText="1"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s70" ss:Parent="s62"> + <Alignment ss:Vertical="Top"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s72"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + </Style> + <Style ss:ID="s73"> + <Alignment ss:Vertical="Bottom" ss:ShrinkToFit="1" ss:WrapText="1"/> + </Style> + <Style ss:ID="s74"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + </Style> + <Style ss:ID="s75"> + <Alignment ss:Vertical="Top"/> + </Style> + <Style ss:ID="s76"> + <Alignment ss:Vertical="Top"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + </Style> + <Style ss:ID="s77"> + <Alignment ss:Vertical="Top" ss:ShrinkToFit="1" ss:WrapText="1"/> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#EEECE1" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s78" ss:Parent="s62"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + </Styles> + <Worksheet ss:Name="Data Elements"> + <Names> + <NamedRange ss:Name="_FilterDatabase" ss:RefersTo="='Data Elements'!R1C1:R23C18" + ss:Hidden="1"/> + </Names> + <Table ss:ExpandedColumnCount="19" ss:ExpandedRowCount="23" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s63" ss:DefaultRowHeight="15"> + <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="196.5"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="30"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="25.5"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="36.75" ss:Span="1"/> + <Column ss:Index="6" ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="98.25"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="82.5"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="213.75" ss:Span="2"/> + <Column ss:Index="11" ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="54.75"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="161.25"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="290.25"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="279"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="666.75"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="135" ss:Span="1"/> + <Column ss:Index="18" ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="164.25"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="722.25"/> + <Row ss:AutoFitHeight="0" ss:Height="45" ss:StyleID="s65"> + <Cell><Data ss:Type="String">Element</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Card.</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Inv.</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Is Modifier</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">UML</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Type</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Binding</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Short Name</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Definition</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Aliases</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Summary</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Requirements</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Comments</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">RIM Mapping</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">RIM Mapping (old)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">v2 Mapping</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">To Do</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Committee Notes</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Notes on mapping</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="33"> + <Cell><Data ss:Type="String">DiagnosticReport</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s66"><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s66"><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s66"><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s66"><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Resource</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">A Diagnostic report - a combination of request information, atomic results, images, interpretation, as well as formatted reports</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">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 interpretation, and formatted representation of diagnostic reports</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Report, Test, Result, Results, Labs, Laboratory</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">To support reporting for any diagnostic report into a clinical data repository.</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">This is intended to capture a single report,and is not suitable for use in displaying summary information that covers multiple reports. For example, this resource has not been designed for laboratory cumulative reporting formats nor detailed structured reports for sequencing.</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Observation[classCode=OBS, moodCode=EVN]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Observation[isNormalAct() and subsumesCode("ActClass#OBS", classCode) and moodCode="EVN" and domainMember("LabObservationType", code)]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="18"><Data ss:Type="String">It's not clear how to handle cumulative reports</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s67"><ss:Data ss:Type="String" + xmlns="http://www.w3.org/TR/REC-html40"><B><Font html:Color="#000000">isNormalAct</Font></B><Font + html:Color="#000000"> is a short-cut meaning: not(actionNegationInd="true" or isCriterionInd="true")</Font></ss:Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="60"> + <Cell><Data ss:Type="String">DiagnosticReport.name</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">1..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">CodeableConcept</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s72"><Data ss:Type="String">DiagnosticReportNames</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Name/Code for this diagnostic report</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">A code or name that describes this diagnostic report</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="14"><Data ss:Type="String">code</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">./code</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">OBR-4-Universal Service ID (V2 doesn't provide an easy way to indicate both the ordered test and the performed panel)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30.75"> + <Cell><Data ss:Type="String">DiagnosticReport.status</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">1..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="4"><Data ss:Type="String">y</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">code</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">DiagnosticReportStatus</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">registered | partial | final | corrected +</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The status of the diagnostic report as a whole</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="11"><Data ss:Type="String">y</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Diagnostic services routinely issue provisional/incomplete reports, and sometimes withdraw previously released reports.</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">This is labeled as "Is Modifier" because applications need to take appropriate action if a report is withdrawn</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">statusCode Note: final and amended are distinguished by whether observation is the subject of a ControlAct event of type "revise"</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s67"><ss:Data ss:Type="String" + xmlns="http://www.w3.org/TR/REC-html40"><B><Font html:Color="#000000">registered: </Font></B><Font + html:Color="#000000">./statusCode[isNormalDatatype()]="new"; </Font><B><Font + html:Color="#000000">interim:</Font></B><Font html:Color="#000000"> ./statusCode[isNormalDatatype()]="active"; </Font><B><Font + html:Color="#000000">final:</Font></B><Font html:Color="#000000"> ./statusCode[isNormalDatatype()]="complete" and not(./inboundRelationship[typeCode="SUBJ" and isNormalActRelationship()]/source[subsumesCode("ActClass#CACT") and moodCode="EVN" and domainMember("ReviseLabOrder", code) and isNormalAct()]); </Font><B><Font + html:Color="#000000">amended: </Font></B><Font html:Color="#000000">./statusCode[isNormalDatatype()]="complete" and ./inboundRelationship[typeCode="SUBJ" and isNormalActRelationship()]/source[subsumesCode("ActClass#CACT") and moodCode="EVN" and domainMember("ReviseLabOrder", code) and isNormalAct() and statusCode="completed"]; </Font><B><Font + html:Color="#000000">cancelled: </Font></B><Font html:Color="#000000">./statusCode[isNormalDatatype()]="aborted"; </Font><B><Font + html:Color="#000000">withdrawn: </Font></B><Font html:Color="#000000">./statusCode[isNormalDatatype()]="obsolete"</Font></ss:Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">OBR-25-Result Status (not 1:1 mapping)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="19" ss:StyleID="s67"><ss:Data ss:Type="String" + xmlns="http://www.w3.org/TR/REC-html40"><B><Font html:Color="#000000">isNormalActRelationship</Font></B><Font + html:Color="#000000"> is a short-cut meaning: not(inversionInd="true" or negationInd="true" or subsetCode[not(nullFlavor="NA")])</Font></ss:Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="31.5"> + <Cell><Data ss:Type="String">DiagnosticReport.issued</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">1..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">dateTime</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Date this version was released</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The date and/or time that this version of the report was released from the source diagnostic service</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Date Created, Date published, Date Issued</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">y</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Clinicians need to be able to check the date that the report was released</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">May be different from the update time of the resource itself, because that is the status of the record (potentially a secondary copy), not the actual release time of the report </Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">participation[typeCode=VRF or AUT].time</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">firstOf(unique(./participation[isHighest(priorityCode) and typeCode="VRF" and isNormalParticipation()]/time[type="TS"]), unique(./participation[isHighest(priorityCode) and typeCode="AUT" and isNormalParticipation()]/time[type="TS"]))</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">OBR-22-Results Rpt/Status Chng - Date/Time</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="19" ss:StyleID="s64"><ss:Data ss:Type="String" + xmlns="http://www.w3.org/TR/REC-html40"><B><Font html:Color="#000000">isHighest</Font></B><Font + html:Color="#000000"> is a short-cut that indicates that, in the event there are multiple occurrences that match the remaining constraints, the data element is the one with the highest non-null value for the indicated property. </Font><B><Font + html:Color="#000000">isNormalParticipation</Font></B><Font + html:Color="#000000"> is a short-cut meaning: not(negationInd="true" or subsetCode[not(nullFlavor="NA")]) </Font><B><Font + html:Color="#000000">firstOf</Font></B><Font html:Color="#000000"> is a short-cut meaning that the semantics could come from multiple places, but the most precise semantic is listed first. (This generally means that the value for the first semantic is assumed to default to the value of a later semantic if not explicitly stated.) </Font><B><Font + html:Color="#000000">Question: </Font></B><Font html:Color="#000000">Said this should be highest priority. Is that appropriate?</Font></ss:Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="45"> + <Cell><Data ss:Type="String">DiagnosticReport.subject</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">1..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Patient|Group|Device|Location)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">The subject of the report, usually, but not always, the patient</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The subject of the report. Usually, but not always, this is a patient. However diagnostic services also perform analyses on specimens collected from a variety of other sources</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Patient</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">y</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">SHALL know the subject context</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="14"><Data ss:Type="String">participation[typeCode=SBJ]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">unique(./participation[isHighest(priorityCode) and typeCode="SBJ" and isNormalParticipation()]/role[classCode="PAT"])</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PID-3-Patient ID List (no V2 mapping for Group or Device)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="19" ss:StyleID="s67"><ss:Data ss:Type="String" + xmlns="http://www.w3.org/TR/REC-html40"><B><Font html:Color="#000000">Question: </Font></B><Font + html:Color="#000000">Said this should be highest priority. Is that appropriate?</Font></ss:Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="31.5"> + <Cell><Data ss:Type="String">DiagnosticReport.performer</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">1..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Practitioner|Organization)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Responsible Diagnostic Service</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The diagnostic service that is responsible for issuing the report</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Laboratory, Service, Practitioner, Department, Company</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">y</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Need to know whom to contact if there are queries about the results. Also may need to track the source of reports for secondary data analysis</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">This is not necessarily the source of the atomic data items - it is the entity that takes responsibility for the clinical report</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">participation[typeCode=AUT].role[classCode=ASSIGN].scoper</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">unique(./participation[isHighest(priorityCode) and typeCode="AUT" and isNormalParticipation()]/role[subsumesCode("RoleClass#ASSIGN", classCode)]/scoper[subsumesCode("EntityClass#ORG", classCode) and determinerCode="INSTANCE"])</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PRT-8-Participation Organization (where this PRT-4-Participation = "PO")</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="19" ss:StyleID="s67"><ss:Data ss:Type="String" + xmlns="http://www.w3.org/TR/REC-html40"><B><Font html:Color="#000000">Question: </Font></B><Font + html:Color="#000000">Said this should be highest priority. Is that appropriate?</Font></ss:Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="33"> + <Cell><Data ss:Type="String">DiagnosticReport.identifier</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Identifier</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Id for external references to this report</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The local ID assigned to the report by the order filler, usually by the Information System of the diagnostic service provider</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">ReportID</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">y</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Need to know what identifier to use when making queries about this report from the source laboratory, and for linking to the report outside FHIR context</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="14"><Data ss:Type="String">id</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">unique(./id[displayable="true" and scope="OBJ"])</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">OBR-51-Observation Group ID (todo: check semantic intent of OBR-51 with OOWG)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="33.75"> + <Cell><Data ss:Type="String">DiagnosticReport.requestDetail</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(DiagnosticOrder)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">What was requested</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Details concerning a test requested.</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Need to be able to track completion of requests based on reports issued and also to report what diagnostic tests were requested (not always the same as what is delivered)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Note: Usually there is one test request for each result, however in some circumstances multiple test requests may be represented using a single test result resource. Note that there are also cases where one request leads to multiple reports</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">outboundRelationship[typeCode=FLFS].target</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">unique(./outboundRelationship[typeCode="FLFS" and isNormalActRelationship()]/target[subsumesCode("ActClass#OBS", classCode) and subsumes("ActMood#PRMS", moodCode) and isNormalAct()])</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="19" ss:StyleID="s67"><ss:Data ss:Type="String" + xmlns="http://www.w3.org/TR/REC-html40"><B><Font html:Color="#000000">Question: </Font></B><Font + html:Color="#000000">Should this be by priorityCode too?</Font></ss:Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="45"> + <Cell><Data ss:Type="String">DiagnosticReport.serviceCategory</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">CodeableConcept</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">DiagnosticServiceSection</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Biochemistry, Hematology etc.</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The section of the diagnostic service that performs the examination e.g. biochemistry, hematology, MRI</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Department, Sub-department, service, discipline</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">y</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Help clinicians filter/find the reports they are looking for</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="14"><Data ss:Type="String">inboundRelationship[typeCode=COMP].source[classCode=LIST, moodCode=EVN, code < LabService].code</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">unique(./inboundRelationship[typeCode="COMP" and isNormalActRelationship()]/source[subsumesCode("ActClass#LIST", classCode) and moodCode="EVN" and inDomain(code,"Lab Service") and isNormalAct()]/code</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">OBR-24-Diagnostic Service Section ID</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="19"><Data ss:Type="String">Could also model this via observation</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="90"> + <Cell><Data ss:Type="String">DiagnosticReport.diagnostic[x]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">1..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">dateTime|Period</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Physiologically Relevant time/time-period for report</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The time or time-period the observed values are related to. This is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Observation time, Effective Time</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">y</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Need to know where in the patient history to file/present this report</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">If the diagnostic procedure was performed on the patient, this is the time it was performed. If there are specimens, the diagnostically relevant time can be derived from the specimen collection times, but the specimen information is not always available, and the exact relationship between the specimens and the diagnostically relevant time is not always automatic</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">effectiveTime</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">./effectiveTime[type="TS"]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">OBR-7-Observation Date/Time</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="60"> + <Cell><Data ss:Type="String">!DiagnosticReport.specimen</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Specimen)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Specimen (incl. time of collection)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Details about the specimen if all individual atomic results are derived from the same specimen</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Need to be able to report information about the collected specimens on which the report is based</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="14"><Data ss:Type="String">participation[typeCode=SUBJ]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">unique(./participation[typeCode="SUBJ" and isNormalParticipation()]/role[subsumesCode("RoleClass#SPEC", classCode)])</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">SPM</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="60"> + <Cell><Data ss:Type="String">DiagnosticReport.specimen</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Specimen)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Specimens this report is based on</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Details about the specimens on which this Disagnostic report is based</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Need to be able to report information about the collected specimens on which the report is based</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">If the specimen is sufficiently specified with a code in the Test result name, then this additional data may be redundant. If there are multiple specimens, these may be represented per Observation or group</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">participation[typeCode=SBJ]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">unique(./participation[typeCode="SBJ" and isNormalParticipation()]/role[subsumesCode("RoleClass#SPEC", classCode)])</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">SPM</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="75"> + <Cell><Data ss:Type="String">DiagnosticReport.result</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Observation)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Observations - simple, or complex nested groups</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Observations that are part of this diagnostic report. Observations can be simple name/value pairs (e.g. "atomic" results), or they can be grouping observations that include references to other members of the group (e.g. "panels")</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Data, Atomic Value, Result, Atomic result, Data, Test, Analyte,Battery, Organiser</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Need to be able to individual results, or report groups of results, where the result grouping is arbitrary, but meaningful. This structure is recursive - observations can contain observations</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="14"><Data ss:Type="String">outboundRelationship[typeCode=COMP].target</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">./outboundRelationship[typeCode="COMP" and isNormalActRelationship()]/target[isNormalAct() and subsumesCode("ActClass#OBS", classCode) and moodCode="EVN" and fromDomain(code, "LabObservationBattery")]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="60"> + <Cell><Data ss:Type="String">!DiagnosticReport.results.group</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String" x:Ticked="1">@DiagnosticReport.results</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Nested Report Group</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">A subgroup in a report group. Subgroups can be grouped in arbitrary ways. The group.name defines the purpose and interpretation of the grouping</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Battery, Organiser</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="13"><Data ss:Type="String">Nested report groups beyond the first level are not used often, but arise in structured pathology reports, and where there are more than one sensitivity assessment per discovered organism</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">outboundRelationship[typeCode=COMP].target</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="105"> + <Cell><Data ss:Type="String">!DiagnosticReport.results.result</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Observation)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">An atomic data result</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Specific detailed result, including both the value of the result item and additional information that may be useful for clinical interpretation. Results include whatever specific data items pathology labs report as part of the clinical service; it is not confined to measurements.</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Atomic result, Data, Test, Analyte</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Need to report results with information that assist with interpretation</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="14"><Data ss:Type="String">outboundRelationship[typeCode=COMP].target</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">./outboundRelationship[typeCode="COMP" and isNormalActRelationship()]/target[subsumesCode("ActClass#OBS", classCode) and moodCode="EVN" and isNormalAct() and fromDomain(code, "LabObservationResult")]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">OBX</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="105"> + <Cell><Data ss:Type="String">DiagnosticReport.imagingStudy</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(ImagingStudy)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Reference to full details of imaging associated with the diagnostic report</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">One or more links to full details of any imaging performed during the diagnostic investigation. Typically, this is imaging performed by DICOM enabled modalities, but this is not required. A fully enabled PACS viewer can use this information to provide views of the source images</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="13"><Data ss:Type="String">ImagingStudy and image are somewhat overlapping - typically, an image in the image list will also be found in the imaging study resource. However the imaging study and image lists cater to different types of displays for different types of purposes. Neither, either, or both may be provided</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">outboundRelationship[typeCode=COMP].target[classsCode=DGIMG, moodCode=EVN]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">./outboundRelationship[typeCode="COMP" and isNormalActRelationship()]/target[subsumesCode("ActClass#DGIMG", classCode) and moodCode="EVN" and isNormalAct()]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><NamedCell ss:Name="_FilterDatabase"/></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="75"> + <Cell><Data ss:Type="String">DiagnosticReport.image</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="5"><Data ss:Type="String">360;125</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Key images associated with this report</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">A list of key images associated with this report. The images are generally created during the diagnostic process, and may be directly of the patient, or of treated specimens (i.e. slides of interest)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">DICOM, Slides, Scans</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Y</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Many diagnostic services include images in the report as part of their service</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="14"><Data ss:Type="String">outboundRelationship[typeCode=COMP].target</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">./outboundRelationship[typeCode="COMP" and isNormalActRelationship()]/target[subsumesCode("ActClass#DGIMG", classCode) and moodCode="EVN" and isNormalAct()]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">OBX?</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="75"> + <Cell><Data ss:Type="String">DiagnosticReport.image.comment</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">string</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Comment about the image (e.g. explanation)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">A comment about the image. Typically, this is used to provide an explanation for why the image is included, or to draw the viewer's attention to important features</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">The provider of the report should make a comment about each image included in the report</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">The comment should be displayed with the image. It would be common for the report to include additional discussion of the image contents in other sections such as the conclusion</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">.inboundRelationship[typeCode=COMP].source[classCode=OBS, moodCode=EVN, code="annotation"].value</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">./outboundRelationship[typeCode="COMP" and isNormalActRelationship()]/target[subsumesCode("ActClass#DGIMG", classCode) and moodCode="EVN" and isNormalAct()]/inboundRelationship[typeCode="COMP" and isNormalActRelationship()]/source[subsumesCode("ActClass#OBS", classCode) and subsumesCode("ActCode#ANNGEN") and moodCode="EVN" and isNormalAct()]/value[@xsi:type='ST']</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><NamedCell ss:Name="_FilterDatabase"/></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="75"> + <Cell><Data ss:Type="String">DiagnosticReport.image.link</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">1..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Media)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Reference to the image source</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="11"><Data ss:Type="String">Y</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.value.reference</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">./outboundRelationship[typeCode="COMP" and isNormalActRelationship()]/target[subsumesCode("ActClass#DGIMG", classCode) and moodCode="EVN" and isNormalAct()]/value[@xsi:type='ED']/reference</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><NamedCell ss:Name="_FilterDatabase"/></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="75"> + <Cell><Data ss:Type="String">DiagnosticReport.conclusion</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..1</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">string</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Clinical Interpretation of test results</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Concise and clinically contextualized narrative interpretation of the diagnostic report</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Report</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Need to be able to provide a conclusion that is not lost amongst the basic result data</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Typically, a report is either [all data, no narrative (e.g. Core lab)] or [a mix of data with some concluding narrative (e.g. Structured Pathology Report, Bone Density)], or [all narrative (e.g. typical imaging report, histopathology)]. In all of these cases, the narrative goes in "text"</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">inboundRelationship[typeCode="SPRT"].source[classCode=OBS, moodCode=EVN, code=LOINC:48767-8].value (type=ST)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">unique(./inboundRelationship[typeCode="SPRT" and isNormalActRelationship()]/source[subsumesCode("ActClass#OBS", classCode) and moodCode="EVN" and mapsTo(code, "LOINC# 48767-8") and isNormalAct()]/value[type="ST"])</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">OBX</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="45"> + <Cell><Data ss:Type="String">DiagnosticReport.codedDiagnosis</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">CodeableConcept</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s72"><Data ss:Type="String">AdjunctDiagnosis</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Codes for the conclusion</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="14"><Data ss:Type="String">inboundRelationship[typeCode=SPRT].source[classCode=OBS, moodCode=EVN, code=LOINC:54531-9].value (type=CD)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">unique(./inboundRelationship[typeCode="SPRT" and isNormalActRelationship()]/source[subsumesCode("ActClass#OBS", classCode) and moodCode="EVN" and subsumesCode(code, "LOINC# 54531-9") and isNormalAct()]/value[type="CD"])</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">OBX</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="43.5"> + <Cell><Data ss:Type="String">DiagnosticReport.presentedForm</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">0..*</Data><NamedCell ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Attachment</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Entire Report as issued</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Rich text representation of the entire result as issued by the diagnostic service. Multiple formats are allowed but they SHALL be semantically equivalent.</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Gives Laboratory the ability to provide its own fully formatted report for clinical fidelity</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">Application/pdf is recommended as the most reliable and interoperable in this context</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">text (type=ED)</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell><Data ss:Type="String">./text[type="ED"]</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">OBX</Data><NamedCell + ss:Name="_FilterDatabase"/></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <HorizontalResolution>600</HorizontalResolution> + <VerticalResolution>600</VerticalResolution> + </Print> + <Selected/> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>3</TopRowBottomPane> + <SplitVertical>1</SplitVertical> + <LeftColumnRightPane>7</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + <ActiveCol>1</ActiveCol> + </Pane> + <Pane> + <Number>2</Number> + <ActiveRow>1</ActiveRow> + </Pane> + <Pane> + <Number>0</Number> + <ActiveRow>11</ActiveRow> + <ActiveCol>0</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Invariants"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="2" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s73" ss:DefaultRowHeight="15"> + <Column ss:Index="4" ss:StyleID="s73" ss:AutoFitWidth="0" ss:Width="143.25"/> + <Column ss:Index="6" ss:StyleID="s73" ss:AutoFitWidth="0" ss:Width="179.25"/> + <Row ss:AutoFitHeight="0" ss:StyleID="s65"> + <Cell><Data ss:Type="String">Id</Data></Cell> + <Cell><Data ss:Type="String">Name</Data></Cell> + <Cell><Data ss:Type="String">Context</Data></Cell> + <Cell><Data ss:Type="String">English</Data></Cell> + <Cell><Data ss:Type="String">OCL</Data></Cell> + <Cell><Data ss:Type="String">XPath</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="3" ss:StyleID="s72"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>-3</HorizontalResolution> + <VerticalResolution>-3</VerticalResolution> + </Print> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>26</ActiveRow> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Events"> + <Table ss:ExpandedColumnCount="9" ss:ExpandedRowCount="2" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s74" ss:DefaultRowHeight="15"> + <Column ss:StyleID="s74" ss:AutoFitWidth="0" ss:Width="73.5" ss:Span="1"/> + <Column ss:Index="3" ss:StyleID="s74" ss:AutoFitWidth="0" ss:Width="130.5"/> + <Column ss:StyleID="s74" ss:AutoFitWidth="0" ss:Width="118.5"/> + <Column ss:StyleID="s74" ss:AutoFitWidth="0" ss:Width="156.75" ss:Span="1"/> + <Column ss:Index="7" ss:StyleID="s74" ss:AutoFitWidth="0" ss:Width="125.25" + ss:Span="1"/> + <Column ss:Index="9" ss:StyleID="s74" ss:AutoFitWidth="0" ss:Width="102"/> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Event Code</Data></Cell> + <Cell><Data ss:Type="String">Category</Data></Cell> + <Cell><Data ss:Type="String">Description</Data></Cell> + <Cell><Data ss:Type="String">Notes</Data></Cell> + <Cell><Data ss:Type="String">Request Resources</Data></Cell> + <Cell><Data ss:Type="String">Request Aggregations</Data></Cell> + <Cell><Data ss:Type="String">Response Resources</Data></Cell> + <Cell><Data ss:Type="String">Response Aggregations</Data></Cell> + <Cell><Data ss:Type="String">Follow Ups</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="120"> + <Cell><Data ss:Type="String">diagnosticreport-provide</Data></Cell> + <Cell><Data ss:Type="String">Notification</Data></Cell> + <Cell><Data ss:Type="String">Provide a diagnostic report, or update a previously provided diagnostic report</Data></Cell> + <Cell ss:Index="5"><Data ss:Type="String">DiagnosticReport</Data></Cell> + <Cell><Data ss:Type="String">.patient .perfomer .results.specimen .results.result .image</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>600</HorizontalResolution> + <VerticalResolution>0</VerticalResolution> + </Print> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>2</ActiveRow> + <ActiveCol>1</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Search"> + <Table ss:ExpandedColumnCount="4" ss:ExpandedRowCount="14" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="70.5"/> + <Column ss:AutoFitWidth="0" ss:Width="382.5"/> + <Column ss:Index="4" ss:AutoFitWidth="0" ss:Width="230.25"/> + <Row ss:AutoFitHeight="0" ss:Height="16.5" ss:StyleID="s65"> + <Cell><Data ss:Type="String">Name</Data></Cell> + <Cell><Data ss:Type="String">Description</Data></Cell> + <Cell><Data ss:Type="String">Type</Data></Cell> + <Cell><Data ss:Type="String">Path</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">status</Data></Cell> + <Cell><Data ss:Type="String">The status of the report</Data></Cell> + <Cell><Data ss:Type="String">token</Data></Cell> + <Cell><Data ss:Type="String">DiagnosticReport.status</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">issued</Data></Cell> + <Cell><Data ss:Type="String">When the report was issued</Data></Cell> + <Cell><Data ss:Type="String">date</Data></Cell> + <Cell><Data ss:Type="String">DiagnosticReport.issued</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">subject</Data></Cell> + <Cell><Data ss:Type="String">The subject of the report</Data></Cell> + <Cell><Data ss:Type="String">reference</Data></Cell> + <Cell><Data ss:Type="String">DiagnosticReport.subject</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">performer</Data></Cell> + <Cell><Data ss:Type="String">Who was the source of the report (organization)</Data></Cell> + <Cell><Data ss:Type="String">reference</Data></Cell> + <Cell><Data ss:Type="String">DiagnosticReport.performer</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">identifier</Data></Cell> + <Cell><Data ss:Type="String">An identifier for the report</Data></Cell> + <Cell><Data ss:Type="String">token</Data></Cell> + <Cell><Data ss:Type="String">DiagnosticReport.identifier</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">service</Data></Cell> + <Cell><Data ss:Type="String">Which diagnostic discipline/department created the report</Data></Cell> + <Cell><Data ss:Type="String">token</Data></Cell> + <Cell><Data ss:Type="String">DiagnosticReport.serviceCategory</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">date</Data></Cell> + <Cell><Data ss:Type="String">The clinically relevant time of the report</Data></Cell> + <Cell><Data ss:Type="String">date</Data></Cell> + <Cell><Data ss:Type="String">DiagnosticReport.diagnostic[x]</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">specimen</Data></Cell> + <Cell><Data ss:Type="String">The specimen details</Data></Cell> + <Cell><Data ss:Type="String">reference</Data></Cell> + <Cell><Data ss:Type="String">DiagnosticReport.specimen</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">name</Data></Cell> + <Cell><Data ss:Type="String">The name of the report (e.g. the code for the report as a whole, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result)</Data></Cell> + <Cell><Data ss:Type="String">token</Data></Cell> + <Cell><Data ss:Type="String">DiagnosticReport.name</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">result</Data></Cell> + <Cell><Data ss:Type="String">Link to an atomic result (observation resource)</Data></Cell> + <Cell><Data ss:Type="String">reference</Data></Cell> + <Cell><Data ss:Type="String">DiagnosticReport.result</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">diagnosis</Data></Cell> + <Cell><Data ss:Type="String">A coded diagnosis on the report</Data></Cell> + <Cell><Data ss:Type="String">token</Data></Cell> + <Cell><Data ss:Type="String">DiagnosticReport.codedDiagnosis</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">image</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">reference</Data></Cell> + <Cell ss:StyleID="s72"><Data ss:Type="String">DiagnosticReport.image.link</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">request</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">reference</Data></Cell> + <Cell ss:StyleID="s72"><Data ss:Type="String">DiagnosticReport.requestDetail</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>6</ActiveRow> + <ActiveCol>1</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Bindings"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="6" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s75" ss:DefaultRowHeight="15"> + <Column ss:StyleID="s75" ss:AutoFitWidth="0" ss:Width="149.25"/> + <Column ss:StyleID="s75" ss:AutoFitWidth="0" ss:Width="336.75"/> + <Column ss:StyleID="s75" ss:AutoFitWidth="0" ss:Width="52.5" ss:Span="1"/> + <Column ss:Index="5" ss:StyleID="s75" ss:AutoFitWidth="0" ss:Width="126.75"/> + <Column ss:StyleID="s75" ss:AutoFitWidth="0" ss:Width="346.5"/> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s65"><Data ss:Type="String">Binding Name</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Definition</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Binding</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Example</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Reference</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Description</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s64"><Data ss:Type="String">AdjunctDiagnosis</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Diagnoses codes provided as adjuncts to the report</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">value set</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">y</Data></Cell> + <Cell><Data ss:Type="String">valueset-clinical-findings</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">SNOMED CT Clinical Findings</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s64"><Data ss:Type="String">DiagnosticReportNames</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Codes that describe Diagnostic Reports</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">value set</Data></Cell> + <Cell ss:StyleID="s74"/> + <Cell><Data ss:Type="String">valueset-report-names</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">LOINC Codes for Diagnostic Reports</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s64"><Data ss:Type="String">DiagnosticServiceSection</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Codes for diagnostic service sections</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">value set</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">y</Data></Cell> + <Cell><Data ss:Type="String">valueset-diagnostic-service-sections</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">HL7 v2 table 0074</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s76"><Data ss:Type="String">BodySite</Data></Cell> + <Cell><Data ss:Type="String">Codes describing anatomical locations. May include laterality</Data></Cell> + <Cell><Data ss:Type="String">value set</Data></Cell> + <Cell><Data ss:Type="String">y</Data></Cell> + <Cell><Data ss:Type="String">valueset-body-site</Data></Cell> + <Cell><Data ss:Type="String">SNOMED CT Body site concepts</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">DiagnosticReportStatus</Data></Cell> + <Cell ss:StyleID="s63"><Data ss:Type="String">The status of the diagnostic report as a whole</Data></Cell> + <Cell><Data ss:Type="String">code list</Data></Cell> + <Cell ss:Index="5"><Data ss:Type="String">#diagnostic-report-status</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>-3</HorizontalResolution> + <VerticalResolution>-3</VerticalResolution> + </Print> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>3</ActiveRow> + <ActiveCol>1</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Examples"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="9" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="100.5"/> + <Column ss:AutoFitWidth="0" ss:Width="219.75"/> + <Column ss:AutoFitWidth="0" ss:Width="44.25"/> + <Column ss:AutoFitWidth="0" ss:Width="228"/> + <Column ss:AutoFitWidth="0" ss:Width="68.25"/> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell ss:StyleID="s65"><Data ss:Type="String">Name</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Description</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Identity</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Filename</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Type</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">In Book</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">General</Data></Cell> + <Cell><Data ss:Type="String">General Lab Report Example</Data></Cell> + <Cell><Data ss:Type="Number">101</Data></Cell> + <Cell><Data ss:Type="String">diagnosticreport-example.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">y</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Assorted Collection</Data></Cell> + <Cell><Data ss:Type="String">Various reports gathered from v2 messages</Data></Cell> + <Cell ss:Index="4"><Data ss:Type="String">diagnosticreport-examples.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">n</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Report Feed</Data></Cell> + <Cell><Data ss:Type="String">Snapshot of a live feed from a laboratory</Data></Cell> + <Cell ss:Index="4"><Data ss:Type="String">diagnosticreport-examples-lab-text.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">n</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Blood examination</Data></Cell> + <Cell><Data ss:Type="String">Real-world patient example</Data></Cell> + <Cell><Data ss:Type="String">f001</Data></Cell> + <Cell><Data ss:Type="String">diagnosticreport-example-f001-bloodexam.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">n</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">CT of the brain</Data></Cell> + <Cell><Data ss:Type="String">Real-world patient example</Data></Cell> + <Cell><Data ss:Type="String">f201</Data></Cell> + <Cell><Data ss:Type="String">diagnosticreport-example-f201-brainct.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">n</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Blood culture</Data></Cell> + <Cell><Data ss:Type="String">Real-world patient example</Data></Cell> + <Cell><Data ss:Type="String">f202</Data></Cell> + <Cell><Data ss:Type="String">diagnosticreport-example-f202-bloodculture.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">n</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Bone Density</Data></Cell> + <Cell><Data ss:Type="String">Imaging Example (Bone Density DXA)</Data></Cell> + <Cell><Data ss:Type="Number">102</Data></Cell> + <Cell><Data ss:Type="String">diagnosticreport-example-dxa.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">n</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Micro Isolate and Sensitivities</Data></Cell> + <Cell><Data ss:Type="String">An example of a complex Micro Isolate and Sensitivities</Data></Cell> + <Cell><Data ss:Type="String">micro</Data></Cell> + <Cell><Data ss:Type="String">diagnosticreport-micro1.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">n</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>9</ActiveRow> + <ActiveCol>5</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Profiles"> + <Table ss:ExpandedColumnCount="5" ss:ExpandedRowCount="2" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="114.75"/> + <Column ss:AutoFitWidth="0" ss:Width="208.5"/> + <Column ss:AutoFitWidth="0" ss:Width="184.5"/> + <Column ss:AutoFitWidth="0" ss:Width="75"/> + <Column ss:AutoFitWidth="0" ss:Width="297.75"/> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s65"><Data ss:Type="String">Name</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Description</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Filename</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Type</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Example</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Example Lipid Profile</Data></Cell> + <Cell><Data ss:Type="String">General Profile for a simple lipid panel</Data></Cell> + <Cell><Data ss:Type="String">diagnosticreport-profile-lipids.xml</Data></Cell> + <Cell><Data ss:Type="String">spreadsheet</Data></Cell> + <Cell><Data ss:Type="String">diagnosticreport-example-lipids.xml</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>1</ActiveRow> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="diagnostic-report-status"> + <Table ss:ExpandedColumnCount="4" ss:ExpandedRowCount="9" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:Index="2" ss:AutoFitWidth="0" ss:Width="65.25"/> + <Column ss:AutoFitWidth="0" ss:Width="594"/> + <Column ss:AutoFitWidth="0" ss:Width="563.25"/> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s77"><Data ss:Type="String">Id</Data></Cell> + <Cell ss:StyleID="s77"><Data ss:Type="String">Code</Data></Cell> + <Cell ss:StyleID="s77"><Data ss:Type="String">Definition</Data></Cell> + <Cell ss:StyleID="s77"><Data ss:Type="String">Comments</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="Number">1</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">registered</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">The existence of the report is registered, but there is nothing yet available</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">This is used where an observation record is created before it is made as a place holder. Some times called "To Follow"</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">2</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">partial</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">This is a partial (e.g. initial, interim or preliminary) report: data in the report may be incomplete or unverified</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">3</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">final</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">The report is complete and verified by an authorized person</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">4</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">corrected</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">The report has been modified subsequent to being Final, and is complete and verified by an authorized person</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="Number">5</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">amended</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">The report has been modified subsequent to being Final, and is complete and verified by an authorized person, and data has been changed</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="Number">6</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">appended</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">The report has been modified subsequent to being Final, and is complete and verified by an authorized person. New content has been added, but existing content hasn't changed</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">7</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">cancelled</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">The report is unavailable because the measurement was not started or not completed (also sometimes called "aborted")</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="Number">8</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">entered in error</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">The report has been withdrawn following previous Final release</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Usually this is because the report was entered against the wrong patient</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>1</ActiveRow> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> +</Workbook> diff --git a/hapi-tinder-plugin/src/main/resources/res/encounter-spreadsheet.xml b/hapi-tinder-plugin/src/main/resources/res/encounter-spreadsheet.xml new file mode 100644 index 00000000000..1e729613788 --- /dev/null +++ b/hapi-tinder-plugin/src/main/resources/res/encounter-spreadsheet.xml @@ -0,0 +1,1330 @@ +<?xml version="1.0"?> +<?mso-application progid="Excel.Sheet"?> +<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" + xmlns:o="urn:schemas-microsoft-com:office:office" + xmlns:x="urn:schemas-microsoft-com:office:excel" + xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" + xmlns:html="http://www.w3.org/TR/REC-html40"> + <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> + <Author>Grahame</Author> + <LastAuthor>Grahame</LastAuthor> + <Created>2012-03-19T11:12:07Z</Created> + <LastSaved>2014-01-15T21:31:36Z</LastSaved> + <Version>14.00</Version> + </DocumentProperties> + <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"> + <AllowPNG/> + </OfficeDocumentSettings> + <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> + <WindowHeight>6345</WindowHeight> + <WindowWidth>15600</WindowWidth> + <WindowTopX>5520</WindowTopX> + <WindowTopY>6075</WindowTopY> + <TabRatio>654</TabRatio> + <ProtectStructure>False</ProtectStructure> + <ProtectWindows>False</ProtectWindows> + </ExcelWorkbook> + <Styles> + <Style ss:ID="Default" ss:Name="Normal"> + <Alignment ss:Vertical="Bottom"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s62" ss:Name="Normal 2"> + <Alignment ss:Vertical="Bottom"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s63" ss:Name="Normal 3"> + <Alignment ss:Vertical="Bottom"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s64"> + <Alignment ss:Vertical="Top" ss:ShrinkToFit="1" ss:WrapText="1"/> + </Style> + <Style ss:ID="s65"> + <Alignment ss:Vertical="Top" ss:ShrinkToFit="1" ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + </Style> + <Style ss:ID="s66"> + <Alignment ss:Vertical="Top" ss:ShrinkToFit="1" ss:WrapText="1"/> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#EEECE1" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s67"> + <Alignment ss:Vertical="Top" ss:ShrinkToFit="1" ss:WrapText="1"/> + <Interior ss:Color="#D9D9D9" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s68"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s70" ss:Parent="s63"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + <Interior/> + </Style> + <Style ss:ID="s71"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + </Style> + <Style ss:ID="s72"> + <Alignment ss:Vertical="Top" ss:ShrinkToFit="1" ss:WrapText="1"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s73"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + </Style> + <Style ss:ID="s74"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + </Style> + <Style ss:ID="s75"> + <Alignment ss:Vertical="Bottom" ss:ShrinkToFit="1" ss:WrapText="1"/> + </Style> + <Style ss:ID="s76"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#EEECE1" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s78"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + </Style> + <Style ss:ID="s79"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#EEECE1" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s80"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + </Style> + <Style ss:ID="s81"> + <Alignment ss:Vertical="Top"/> + </Style> + <Style ss:ID="s82"> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + </Style> + <Style ss:ID="s83"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s86"> + <Font ss:FontName="Verdana" x:Family="Swiss" ss:Color="#000000"/> + </Style> + <Style ss:ID="s87"> + <Font ss:FontName="Verdana" x:Family="Swiss" ss:Size="9" ss:Color="#333333"/> + </Style> + </Styles> + <Worksheet ss:Name="Data Elements"> + <Table ss:ExpandedColumnCount="17" ss:ExpandedRowCount="37" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s64" ss:DefaultRowHeight="15"> + <Column ss:StyleID="s65" ss:AutoFitWidth="0" ss:Width="266.25"/> + <Column ss:StyleID="s64" ss:Width="29.25"/> + <Column ss:StyleID="s64" ss:Width="22.5"/> + <Column ss:StyleID="s64" ss:Width="60"/> + <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="54.75"/> + <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="225"/> + <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="106.5"/> + <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="197.25"/> + <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="222.75"/> + <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="77.25" ss:Span="1"/> + <Column ss:Index="12" ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="114"/> + <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="153.75"/> + <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="135"/> + <Column ss:StyleID="s64" ss:Width="625.5"/> + <Row ss:AutoFitHeight="0" ss:Height="30" ss:StyleID="s66"> + <Cell><Data ss:Type="String">Element</Data></Cell> + <Cell><Data ss:Type="String">Card.</Data></Cell> + <Cell><Data ss:Type="String">Inv.</Data></Cell> + <Cell><Data ss:Type="String">Is modifier</Data></Cell> + <Cell><Data ss:Type="String">UML</Data></Cell> + <Cell><Data ss:Type="String">Type</Data></Cell> + <Cell><Data ss:Type="String">Binding</Data></Cell> + <Cell><Data ss:Type="String">Short Name</Data></Cell> + <Cell><Data ss:Type="String">Definition</Data></Cell> + <Cell><Data ss:Type="String">Aliases</Data></Cell> + <Cell><Data ss:Type="String">Summary</Data></Cell> + <Cell><Data ss:Type="String">Requirements</Data></Cell> + <Cell><Data ss:Type="String">Comments</Data></Cell> + <Cell><Data ss:Type="String">RIM Mapping</Data></Cell> + <Cell><Data ss:Type="String">v2 Mapping</Data></Cell> + <Cell><Data ss:Type="String">To Do</Data></Cell> + <Cell><Data ss:Type="String">Committee Notes</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="60"> + <Cell><Data ss:Type="String">Encounter</Data></Cell> + <Cell ss:StyleID="s67"/> + <Cell ss:StyleID="s67"/> + <Cell ss:StyleID="s67"/> + <Cell ss:StyleID="s67"/> + <Cell><Data ss:Type="String">Resource</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">An interaction during which services are provided to the patient</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">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.</Data></Cell> + <Cell><Data ss:Type="String">Visit</Data></Cell> + <Cell ss:Index="12" ss:StyleID="s68"/> + <Cell ss:Index="14" ss:StyleID="s68"><Data ss:Type="String">Encounter[moodCode=EVN]</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="String">Encounter.identifier</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Identifier</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Identifier(s) by which this encounter is known</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="11"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="14" ss:StyleID="s68"><Data ss:Type="String">.id</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PV1-19-visit number</Data></Cell> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="String">Encounter.status</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">code</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">EncounterState</Data></Cell> + <Cell><Data ss:Type="String">planned | in progress | onleave | finished | cancelled</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="11"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="14" ss:StyleID="s68"><Data ss:Type="String">.statusCode</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">No clear equivalent in V2.x; active/finished could be inferred from PV1-44, PV1-45, PV2-24; inactive could be inferred from PV2-16</Data></Cell> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="45"> + <Cell><Data ss:Type="String">Encounter.class</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">code</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">EncounterClass</Data></Cell> + <Cell><Data ss:Type="String">inpatient | outpatient | ambulatory | emergency +</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="11"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="14"><Data ss:Type="String">.inboundRelationship[typeCode=SUBJ].source[classCode=LIST].code</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PV1-2-patient class</Data></Cell> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="45"> + <Cell><Data ss:Type="String">Encounter.type</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">CodeableConcept</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">EncounterType</Data></Cell> + <Cell><Data ss:Type="String">Specific type of encounter</Data></Cell> + <Cell><Data ss:Type="String">Specific type of encounter (e.g. e-mail consultation, surgical day-care, skilled nursing, rehabilitation)</Data></Cell> + <Cell ss:Index="11"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Since there are many ways to further classify encounters, this element is 0..*</Data></Cell> + <Cell><Data ss:Type="String">.code</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PV1-4-admission type</Data></Cell> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="60"> + <Cell><Data ss:Type="String">Encounter.subject</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Resource(Patient)</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">The patient present at the encounter</Data></Cell> + <Cell ss:Index="10"><Data ss:Type="String">patient</Data></Cell> + <Cell><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">While the encounter is always about the patient, the patient may not actually be known in all contexts of use</Data></Cell> + <Cell><Data ss:Type="String">.participation[typeCode=SBJ]/role[classCode=PAT]</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PID-3-patient ID list</Data></Cell> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="String">Encounter.participant</Data></Cell> + <Cell><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">right</Data></Cell> + <Cell ss:Index="7" ss:StyleID="s68"/> + <Cell><Data ss:Type="String">List of participants involved in the encounter</Data></Cell> + <Cell><Data ss:Type="String">The main practitioner responsible for providing the service</Data></Cell> + <Cell ss:Index="11"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="14"><Data ss:Type="String">.participation[typeCode=PFM]</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Encounter.participant.type</Data></Cell> + <Cell><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">CodeableConcept</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">ParticipantType</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">Role of participant in encounter</Data></Cell> + <Cell ss:Index="11"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="14"><Data ss:Type="String">.functionCode</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PRT-4-participation</Data></Cell> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="String">Encounter.participant.individual</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Resource(Practitioner|RelatedPerson)</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Persons involved in the encounter other than the patient</Data></Cell> + <Cell ss:Index="11"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="14"><Data ss:Type="String">.role</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PRT-5-participation person</Data></Cell> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="45"> + <Cell><Data ss:Type="String">!Encounter.fulfills</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Resource(Appointment)</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">The appointment that scheduled this encounter</Data></Cell> + <Cell ss:Index="11"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="14"><Data ss:Type="String">.outboundRelationship[typeCode=FLFS].target[classCode=ENC, moodCode=APT]</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">SCH-1-placer appointment ID / SCH-2-filler appointment ID</Data></Cell> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="String">Encounter.period</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Period</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">The start and end time of the encounter</Data></Cell> + <Cell><Data ss:Type="String">The start and end time of the encounter</Data></Cell> + <Cell ss:Index="12" ss:StyleID="s68"/> + <Cell><Data ss:Type="String">If not (yet) known, the end of the Period may be omitted</Data></Cell> + <Cell><Data ss:Type="String">.effectiveTime (low & high)</Data></Cell> + <Cell ss:StyleID="s70"/> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="45"> + <Cell><Data ss:Type="String">Encounter.length</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Duration</Data></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Quantity of time the encounter lasted</Data></Cell> + <Cell><Data ss:Type="String">Quantity of time the encounter lasted. This excludes the time during leaves of absence.</Data></Cell> + <Cell ss:Index="12" ss:StyleID="s68"/> + <Cell><Data ss:Type="String">May differ from the time the Encounter.period lasted because of leave of absence.</Data></Cell> + <Cell><Data ss:Type="String">.lengthOfStayQuantity</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">(PV1-45 less PV1-44) iff ( (PV1-44 not empty) and (PV1-45 not empty) ); units in minutes </Data></Cell> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="60"> + <Cell><Data ss:Type="String">Encounter.reason</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">CodeableConcept</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">EncounterReason</Data></Cell> + <Cell><Data ss:Type="String">Reason the encounter takes place (code)</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">Reason the encounter takes place, expressed as a code. For admissions, this can be used for a coded admission diagnosis.</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s72"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">.reasonCode</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">EVN-4-event reason code / PV2-3-admit reason (note: PV2-3 is nominally constrained to inpatient admissions; V2.x makes no vocabulary suggestions for PV2-3; would not expect PV2 segment or PV2-3 to be in use in all implementations ) </Data></Cell> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="60"> + <Cell><Data ss:Type="String">Encounter.indication</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Any)</Data></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Reason the encounter takes place (resource)</Data></Cell> + <Cell><Data ss:Type="String">Reason the encounter takes place, as specified using information from another resource. For admissions, this is the admission diagnosis.</Data></Cell> + <Cell><Data ss:Type="String">Admission diagnosis</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.outboundRelationship[typeCode=RSON].target</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Encounter.priority</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">CodeableConcept</Data></Cell> + <Cell><Data ss:Type="String">Priority</Data></Cell> + <Cell><Data ss:Type="String">Indicates the urgency of the encounter</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.priorityCode</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PV2-25-visit priority code</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="60"> + <Cell><Data ss:Type="String">Encounter.hospitalization</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">down</Data></Cell> + <Cell ss:Index="7" ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Details about an admission to a clinic</Data></Cell> + <Cell><Data ss:Type="String">Details about an admission to a clinic</Data></Cell> + <Cell ss:Index="12" ss:StyleID="s68"/> + <Cell ss:Index="14"><Data ss:Type="String">.outboundRelationship[typeCode=COMP].target[classCode=ENC, moodCode=EVN]</Data></Cell> + <Cell ss:Index="16" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Encounter.hospitalization.preAdmissionIdentifier</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Identifier</Data></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Pre-admission identifier</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.id</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PV1-5-preadmit number</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="60"> + <Cell><Data ss:Type="String">!Encounter.hospitalization.preAdmissionTest</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">CodeableConcept</Data></Cell> + <Cell><Data ss:Type="String">PreAdminTest</Data></Cell> + <Cell><Data ss:Type="String">Tests to be done before admission</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.outboundRelationship[typeCode=PRCN].target[classCode=OBS, moodCode=EVN, isCriterion=true]</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PV1-12-preadmit test indicator</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="String">Encounter.hospitalization.origin</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Resource(Location)</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">The location from which the patient came before admission</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="14" ss:StyleID="s68"><Data ss:Type="String">.participation[typeCode=ORG].role</Data></Cell> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="String">Encounter.hospitalization.admitSource</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">CodeableConcept</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">AdmitSource</Data></Cell> + <Cell><Data ss:Type="String">From where patient was admitted (physician referral, transfer)</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="14" ss:StyleID="s68"><Data ss:Type="String">.admissionReferralSourceCode</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PV1-14-admit source</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="45"> + <Cell><Data ss:Type="String">Encounter.hospitalization.period</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Period</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Period during which the patient was admitted</Data></Cell> + <Cell><Data ss:Type="String">Period during which the patient was admitted</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">May differ from start + length, since length excludes leaves of absence.</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">.effectiveTime</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PV2-11-actual length of inpatient stay / PV1-44-admit date/time / PV1-45-discharge date/time </Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="60"> + <Cell><Data ss:Type="String">Encounter.hospitalization.accomodation</Data></Cell> + <Cell><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">right</Data></Cell> + <Cell ss:Index="7" ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Where the patient stays during this encounter</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">.outboundRelationship[typeCode=COMP].target[classCode=ACCOM, moodCode=EVN]</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="45"> + <Cell><Data ss:Type="String">Encounter.hospitalization.accomodation.bed</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Resource(Location)</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">The bed that is assigned to the patient </Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="14" ss:StyleID="s68"><Data ss:Type="String">.participation[typeCode=LOC].role.player[classCode=PLC, code=BED]</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PV1-3-assigned patient location</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="String">Encounter.hospitalization.accomodation.period</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Period</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell><Data ss:Type="String">Period during which the patient was assigned the bed</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">.effectiveTime</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="75"> + <Cell ss:StyleID="s73"><Data ss:Type="String">Encounter.hospitalization.diet</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s74"><Data ss:Type="String">CodeableConcept</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">PatientDiet</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Dietary restrictions for the patient</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Dietary restrictions for the patient</Data></Cell> + <Cell ss:Index="12" ss:StyleID="s74"><Data ss:Type="String">Track patients reported dietary restrictions to help with catering requirements</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.outboundRelationship[typeCode=COMP].target[classCode=SBADM, moodCode=EVN, code="diet"]</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PV1-38-diet type</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Encounter.hospitalization.specialCourtesy</Data></Cell> + <Cell><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">CodeableConcept</Data></Cell> + <Cell><Data ss:Type="String">Courtesies</Data></Cell> + <Cell><Data ss:Type="String">Special courtesies (VIP, board member)</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.specialCourtesiesCode</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PV1-16-VIP indicator</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Encounter.hospitalization.specialArrangement</Data></Cell> + <Cell><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">CodeableConcept</Data></Cell> + <Cell><Data ss:Type="String">Arrangements</Data></Cell> + <Cell><Data ss:Type="String">Wheelchair, translator, stretcher, etc</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.specialArrangementCode</Data></Cell> + <Cell><Data ss:Type="String">PV1-15-ambulatory status / OBR-30-transportation mode / OBR-43-planned patient transport comment</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="String">Encounter.hospitalization.destination</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Location)</Data></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Location to which the patient is discharged</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.participation[typeCode=DST]</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="String">Encounter.hospitalization.dischargeDisposition</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">CodeableConcept</Data></Cell> + <Cell><Data ss:Type="String">DischargeDisp</Data></Cell> + <Cell><Data ss:Type="String">Category or kind of location after discharge</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.dischargeDispositionCode</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PV1-36-discharge disposition</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="60"> + <Cell><Data ss:Type="String">Encounter.hospitalization.dischargeDiagnosis</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Any)</Data></Cell> + <Cell ss:Index="8"><Data ss:Type="String">The final diagnosis given a patient before release from the hospital after all testing, surgery, and workup are complete</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.outboundRelationship[typeCode=OUT].target[classCode=OBS, moodCode=EVN, code=ASSERTION].value</Data></Cell> + <Cell ss:StyleID="s70"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="75"> + <Cell><Data ss:Type="String">Encounter.hospitalization.reAdmission</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">boolean</Data></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Is this hospitalization a readmission?</Data></Cell> + <Cell><Data ss:Type="String">Whether this hospitalization is a readmission</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">Propose at harmonization</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">PV1-13-re-admission indicator</Data></Cell> + <Cell><Data ss:Type="String">Need a harmonization proposal for this</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="String">Encounter.location</Data></Cell> + <Cell><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:Index="5"><Data ss:Type="String">left</Data></Cell> + <Cell ss:Index="8"><Data ss:Type="String">List of locations the patient has been at</Data></Cell> + <Cell><Data ss:Type="String">List of locations at which the patient has been</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.participation[typeCode=LOC]</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="String">Encounter.location.location</Data></Cell> + <Cell><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Location)</Data></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Location the encounter takes place</Data></Cell> + <Cell><Data ss:Type="String">The location where the encounter takes place</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.role</Data></Cell> + <Cell><Data ss:Type="String">PV1-3-assigned patient location / PV1-6-prior patient location / PV1-11-temporary location / PV1-42-pending location / PV1-43-prior temporary location</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell><Data ss:Type="String">Encounter.location.period</Data></Cell> + <Cell><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Period</Data></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Time period during which the patient was present at the location</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.time</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="60"> + <Cell><Data ss:Type="String">Encounter.serviceProvider</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Organization)</Data></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Department or team providing care</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.particiaption[typeCode=PFM].role</Data></Cell> + <Cell><Data ss:Type="String">PV1-10-hospital service / PL.6 Person Location Type & PL.1 Point of Care (note: V2.x definition is "the treatment or type of surgery that the patient is scheduled to receive"; seems slightly out of alignment with the concept name 'hospital service'. Would not trust that implementations apply this semantic by default) </Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="60"> + <Cell><Data ss:Type="String">Encounter.partOf</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Encounter)</Data></Cell> + <Cell ss:Index="8"><Data ss:Type="String">Another Encounter this encounter is part of</Data></Cell> + <Cell><Data ss:Type="String">Another Encounter of which this encounter is a part of (administratively or in time).</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">.inboundRelationship[typeCode=COMP].source[classCode=COMP, moodCode=EVN]</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>-3</HorizontalResolution> + <VerticalResolution>-3</VerticalResolution> + </Print> + <Selected/> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>1</SplitVertical> + <LeftColumnRightPane>1</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + <ActiveRow>11</ActiveRow> + <ActiveCol>5</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Invariants"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="6" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s75" ss:DefaultRowHeight="15"> + <Column ss:Index="2" ss:StyleID="s75" ss:AutoFitWidth="0" ss:Width="115.5"/> + <Column ss:StyleID="s75" ss:AutoFitWidth="0" ss:Width="153"/> + <Column ss:StyleID="s75" ss:AutoFitWidth="0" ss:Width="204.75"/> + <Column ss:StyleID="s75" ss:AutoFitWidth="0" ss:Width="198.75"/> + <Column ss:StyleID="s75" ss:AutoFitWidth="0" ss:Width="188.25"/> + <Row ss:AutoFitHeight="0" ss:StyleID="s76"> + <Cell><Data ss:Type="String">Id</Data></Cell> + <Cell><Data ss:Type="String">Name</Data></Cell> + <Cell><Data ss:Type="String">Context</Data></Cell> + <Cell><Data ss:Type="String">English</Data></Cell> + <Cell><Data ss:Type="String">OCL</Data></Cell> + <Cell><Data ss:Type="String">XPath</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="s78"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="s78"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="s78"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="s78"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="s78"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>2</SplitVertical> + <LeftColumnRightPane>2</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + <ActiveCol>0</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Events"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="2" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="82.5"/> + <Column ss:AutoFitWidth="0" ss:Width="198.75"/> + <Column ss:AutoFitWidth="0" ss:Width="157.5"/> + <Column ss:AutoFitWidth="0" ss:Width="162.75"/> + <Column ss:AutoFitWidth="0" ss:Width="195.75"/> + <Column ss:AutoFitWidth="0" ss:Width="74.25"/> + <Row ss:AutoFitHeight="0" ss:Height="33"> + <Cell ss:StyleID="s76"><Data ss:Type="String">Event Code</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">Description</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">Notes</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">Request Resources</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">Response Resources</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">Follow Ups</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s74"/> + <Cell ss:StyleID="s74"/> + <Cell ss:StyleID="s74"/> + <Cell ss:StyleID="s74"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>1</SplitVertical> + <LeftColumnRightPane>1</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Search"> + <Table ss:ExpandedColumnCount="8" ss:ExpandedRowCount="26" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:Width="78"/> + <Column ss:AutoFitWidth="0" ss:Width="382.5"/> + <Column ss:Index="4" ss:AutoFitWidth="0" ss:Width="419.25"/> + <Row ss:AutoFitHeight="0" ss:Height="16.5" ss:StyleID="s76"> + <Cell><Data ss:Type="String">Name</Data></Cell> + <Cell><Data ss:Type="String">Description</Data></Cell> + <Cell><Data ss:Type="String">Type</Data></Cell> + <Cell><Data ss:Type="String">Path</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">identifier</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">Encounter.identifier</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">status</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">Encounter.status</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">date</Data></Cell> + <Cell><Data ss:Type="String">A date within the period the Encounter lasted</Data></Cell> + <Cell><Data ss:Type="String">date</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">Encounter.period</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">subject</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">reference</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">Encounter.subject</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">!fulfills</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">reference</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">Encounter.fulfills</Data></Cell> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">length</Data></Cell> + <Cell><Data ss:Type="String">Length of encounter in days</Data></Cell> + <Cell><Data ss:Type="String">number</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">Encounter.length</Data></Cell> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">indication</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">reference</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">Encounter.indication</Data></Cell> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">location</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">reference</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">Encounter.location.location</Data></Cell> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">location-period</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">date</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Encounter.location.period</Data></Cell> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s78"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>1</SplitVertical> + <LeftColumnRightPane>1</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + <ActiveRow>27</ActiveRow> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Bindings"> + <Table ss:ExpandedColumnCount="7" ss:ExpandedRowCount="12" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:Width="102.75"/> + <Column ss:AutoFitWidth="0" ss:Width="221.25"/> + <Column ss:AutoFitWidth="0" ss:Width="81.75"/> + <Column ss:AutoFitWidth="0" ss:Width="64.5"/> + <Column ss:AutoFitWidth="0" ss:Width="274.5"/> + <Column ss:Width="243.75"/> + <Row ss:AutoFitHeight="0" ss:Height="15.75"> + <Cell ss:StyleID="s76"><Data ss:Type="String">Binding Name</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">Definition</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">Binding</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">Example</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">Reference</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">Description</Data></Cell> + <Cell ss:StyleID="s79"><Data ss:Type="String">Comments</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s74"><Data ss:Type="String">EncounterState</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Current state of the encounter</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">code list</Data></Cell> + <Cell ss:Index="5" ss:StyleID="s74"><Data ss:Type="String">#encounter-state</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s80"><Data ss:Type="String">EncounterType</Data></Cell> + <Cell ss:StyleID="s80"><Data ss:Type="String">The type of encounter</Data></Cell> + <Cell ss:StyleID="s81"><Data ss:Type="String">value set</Data></Cell> + <Cell><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s81"><Data ss:Type="String">valueset-encounter-type</Data></Cell> + <Cell><Data ss:Type="String">A specific code indicating type of service provided</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">EncounterClass</Data></Cell> + <Cell><Data ss:Type="String">Classification of the encounter</Data></Cell> + <Cell><Data ss:Type="String">code list</Data></Cell> + <Cell ss:Index="5"><Data ss:Type="String">#encounter-class</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">ParticipantType</Data></Cell> + <Cell ss:StyleID="s82"><Data ss:Type="String">Role of participant in encounter</Data></Cell> + <Cell><Data ss:Type="String">value set</Data></Cell> + <Cell ss:Index="5"><Data ss:Type="String">valueset-encounter-participant-type</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Courtesies</Data></Cell> + <Cell><Data ss:Type="String">Special courtesies</Data></Cell> + <Cell><Data ss:Type="String">value set</Data></Cell> + <Cell ss:Index="5" ss:StyleID="s81"><Data ss:Type="String">valueset-encounter-special-courtesy</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Arrangements</Data></Cell> + <Cell><Data ss:Type="String">Special arrangements</Data></Cell> + <Cell><Data ss:Type="String">value set</Data></Cell> + <Cell ss:Index="5"><Data ss:Type="String">valueset-encounter-special-arrangements</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s81"><Data ss:Type="String">PatientDiet</Data></Cell> + <Cell ss:StyleID="s81"><Data ss:Type="String">Medical, cultural or ethical food preferences to help with catering requirements</Data></Cell> + <Cell ss:StyleID="s81"><Data ss:Type="String">value set</Data></Cell> + <Cell ss:Index="5" ss:StyleID="s81"><Data ss:Type="String">valueset-encounter-diet</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Priority</Data></Cell> + <Cell><Data ss:Type="String">Indicates the urgency of the encounter</Data></Cell> + <Cell><Data ss:Type="String">value set</Data></Cell> + <Cell><Data ss:Type="String">y</Data></Cell> + <Cell><Data ss:Type="String">valueset-encounter-priority</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">AdmitSource</Data></Cell> + <Cell><Data ss:Type="String">From where the patient was admitted</Data></Cell> + <Cell><Data ss:Type="String">value set</Data></Cell> + <Cell ss:Index="5"><Data ss:Type="String">valueset-encounter-admit-source</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">DischargeDisp</Data></Cell> + <Cell><Data ss:Type="String">Discharge Disposition</Data></Cell> + <Cell><Data ss:Type="String">value set</Data></Cell> + <Cell ss:Index="5"><Data ss:Type="String">valueset-encounter-discharge-disposition</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">EncounterReason</Data></Cell> + <Cell><Data ss:Type="String">Reason why the encounter takes place</Data></Cell> + <Cell><Data ss:Type="String">value set</Data></Cell> + <Cell><Data ss:Type="String">y</Data></Cell> + <Cell><Data ss:Type="String">valueset-encounter-reason</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>-3</HorizontalResolution> + <VerticalResolution>-3</VerticalResolution> + </Print> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>1</SplitVertical> + <LeftColumnRightPane>1</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + <ActiveRow>10</ActiveRow> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="encounter-class"> + <Table ss:ExpandedColumnCount="3" ss:ExpandedRowCount="9" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:Index="2" ss:AutoFitWidth="0" ss:Width="102.75"/> + <Column ss:Width="639"/> + <Row ss:AutoFitHeight="0" ss:Height="18"> + <Cell><Data ss:Type="String">Id</Data></Cell> + <Cell ss:StyleID="s83"><Data ss:Type="String">Code</Data></Cell> + <Cell ss:StyleID="s83"><Data ss:Type="String">Definition</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">1</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">inpatient</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">An encounter during which the patient is hospitalized and stays overnight</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">2</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">outpatient</Data></Cell> + <Cell ss:StyleID="s86"><Data ss:Type="String">An encounter during which the patient is not hospitalized overnight</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">3</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">ambulatory</Data></Cell> + <Cell ss:StyleID="s87"><Data ss:Type="String">An encounter where the patient visits the practitioner in his/her office, e.g. a G.P. visit</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">4</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">emergency</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">An encounter where the patient needs urgent care</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">5</Data></Cell> + <Cell><Data ss:Type="String">home</Data></Cell> + <Cell><Data ss:Type="String">An encounter where the practitioner visits the patient at his/her home</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">6</Data></Cell> + <Cell><Data ss:Type="String">field</Data></Cell> + <Cell><Data ss:Type="String">An encounter taking place outside the regular environment for giving care</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">7</Data></Cell> + <Cell><Data ss:Type="String">daytime</Data></Cell> + <Cell><Data ss:Type="String">An encounter where the patient needs more prolonged treatment or investigations than outpatients, but who do not need to stay in the hospital overnight</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">8</Data></Cell> + <Cell><Data ss:Type="String">virtual</Data></Cell> + <Cell><Data ss:Type="String">An encounter that takes place where the patient and practitioner do not physically meet but use electronic means for contact</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>-3</HorizontalResolution> + <VerticalResolution>-3</VerticalResolution> + </Print> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>1</ActiveRow> + <ActiveCol>1</ActiveCol> + <RangeSelection>R2C2:R9C2</RangeSelection> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="encounter-state"> + <Table ss:ExpandedColumnCount="3" ss:ExpandedRowCount="6" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:Index="2" ss:AutoFitWidth="0" ss:Width="102.75"/> + <Column ss:AutoFitWidth="0" ss:Width="438.75"/> + <Row ss:AutoFitHeight="0" ss:Height="18"> + <Cell><Data ss:Type="String">Id</Data></Cell> + <Cell ss:StyleID="s83"><Data ss:Type="String">Code</Data></Cell> + <Cell ss:StyleID="s83"><Data ss:Type="String">Definition</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">1</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">planned</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">The Encounter has not yet started</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">2</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">in progress</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">The Encounter has begun and the patient is present / the practitioner and the patient are meeting</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">3</Data></Cell> + <Cell><Data ss:Type="String">onleave</Data></Cell> + <Cell><Data ss:Type="String">The Encounter has begun, but the patient is temporarily on leave</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">4</Data></Cell> + <Cell><Data ss:Type="String">finished</Data></Cell> + <Cell><Data ss:Type="String">The Encounter has ended</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">5</Data></Cell> + <Cell><Data ss:Type="String">cancelled</Data></Cell> + <Cell><Data ss:Type="String">The Encounter has ended before it has begun</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>1</ActiveRow> + <ActiveCol>1</ActiveCol> + <RangeSelection>R2C2:R6C2</RangeSelection> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Examples"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="8" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="81"/> + <Column ss:Width="154.5"/> + <Column ss:Width="42"/> + <Column ss:AutoFitWidth="0" ss:Width="191.25"/> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell ss:StyleID="s83"><Data ss:Type="String">Name</Data></Cell> + <Cell ss:StyleID="s83"><Data ss:Type="String">Description</Data></Cell> + <Cell ss:StyleID="s83"><Data ss:Type="String">Identity</Data></Cell> + <Cell ss:StyleID="s83"><Data ss:Type="String">Filename</Data></Cell> + <Cell ss:StyleID="s83"><Data ss:Type="String">Type</Data></Cell> + <Cell ss:StyleID="s83"><Data ss:Type="String">In Book</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">example</Data></Cell> + <Cell><Data ss:Type="String">Encounter example</Data></Cell> + <Cell><Data ss:Type="String">example</Data></Cell> + <Cell><Data ss:Type="String">encounter-example.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">y</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">April 4th 2013</Data></Cell> + <Cell><Data ss:Type="String">Real-world encounter example</Data></Cell> + <Cell><Data ss:Type="String">f201</Data></Cell> + <Cell><Data ss:Type="String">encounter-example-f201-20130404.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">n</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">January 28th 2013</Data></Cell> + <Cell><Data ss:Type="String">Real-world encounter example</Data></Cell> + <Cell><Data ss:Type="String">f202</Data></Cell> + <Cell><Data ss:Type="String">encounter-example-f202-20130128.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">n</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">March 11th 2013</Data></Cell> + <Cell><Data ss:Type="String">Real-world encounter example</Data></Cell> + <Cell><Data ss:Type="String">f203</Data></Cell> + <Cell><Data ss:Type="String">encounter-example-f203-20130311.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">n</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Heart</Data></Cell> + <Cell><Data ss:Type="String">Real-world encounter example</Data></Cell> + <Cell><Data ss:Type="String">f001</Data></Cell> + <Cell><Data ss:Type="String">encounter-example-f001-heart.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">n</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Lung</Data></Cell> + <Cell><Data ss:Type="String">Real-world encounter example</Data></Cell> + <Cell><Data ss:Type="String">f002</Data></Cell> + <Cell><Data ss:Type="String">encounter-example-f002-lung.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">n</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Abscess</Data></Cell> + <Cell><Data ss:Type="String">Real-world encounter example</Data></Cell> + <Cell><Data ss:Type="String">f003</Data></Cell> + <Cell><Data ss:Type="String">encounter-example-f003-abscess.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">n</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>7</ActiveRow> + <ActiveCol>3</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> +</Workbook> diff --git a/hapi-tinder-plugin/src/main/resources/res/imagingstudy-spreadsheet.xml b/hapi-tinder-plugin/src/main/resources/res/imagingstudy-spreadsheet.xml new file mode 100644 index 00000000000..3d2e3801b8c --- /dev/null +++ b/hapi-tinder-plugin/src/main/resources/res/imagingstudy-spreadsheet.xml @@ -0,0 +1,1956 @@ +<?xml version="1.0"?> +<?mso-application progid="Excel.Sheet"?> +<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" + xmlns:o="urn:schemas-microsoft-com:office:office" + xmlns:x="urn:schemas-microsoft-com:office:excel" + xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" + xmlns:html="http://www.w3.org/TR/REC-html40"> + <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> + <Author>Grahame</Author> + <LastAuthor>Lloyd McKenzie</LastAuthor> + <Created>2012-03-19T11:12:07Z</Created> + <LastSaved>2014-01-28T21:29:06Z</LastSaved> + <Version>14.00</Version> + </DocumentProperties> + <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"> + <AllowPNG/> + </OfficeDocumentSettings> + <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> + <WindowHeight>12480</WindowHeight> + <WindowWidth>28815</WindowWidth> + <WindowTopX>-15</WindowTopX> + <WindowTopY>45</WindowTopY> + <ProtectStructure>False</ProtectStructure> + <ProtectWindows>False</ProtectWindows> + </ExcelWorkbook> + <Styles> + <Style ss:ID="Default" ss:Name="Normal"> + <Alignment ss:Vertical="Bottom"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s62"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Interior/> + </Style> + <Style ss:ID="s63"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior/> + </Style> + <Style ss:ID="s64"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Interior/> + <NumberFormat ss:Format="@"/> + </Style> + <Style ss:ID="s65"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior/> + </Style> + <Style ss:ID="s66"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior/> + <NumberFormat ss:Format="@"/> + </Style> + <Style ss:ID="s68"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + </Style> + <Style ss:ID="s69"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <NumberFormat ss:Format="@"/> + </Style> + <Style ss:ID="s73"> + <Alignment ss:Vertical="Bottom" ss:ShrinkToFit="1" ss:WrapText="1"/> + </Style> + <Style ss:ID="s74"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s75"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + </Style> + <Style ss:ID="s76"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + </Style> + <Style ss:ID="s77"> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + </Style> + <Style ss:ID="s78"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s79"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + </Style> + <Style ss:ID="s80"> + <Alignment ss:Vertical="Top"/> + </Style> + <Style ss:ID="s81"> + <Font ss:FontName="Arial" x:Family="Swiss" ss:Color="#333333"/> + </Style> + <Style ss:ID="s82"> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#D9D9D9" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s83"> + <Alignment ss:Vertical="Bottom" ss:WrapText="1"/> + </Style> + <Style ss:ID="s106"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s107"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + <Borders/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s114"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#D9D9D9" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s115"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Interior ss:Color="#D9D9D9" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s116"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + <Borders/> + <Interior ss:Color="#D9D9D9" ss:Pattern="Solid"/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s117"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Interior ss:Color="#D9D9D9" ss:Pattern="Solid"/> + <NumberFormat ss:Format="@"/> + </Style> + <Style ss:ID="s118"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior ss:Color="#D9D9D9" ss:Pattern="Solid"/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s119"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior ss:Color="#D9D9D9" ss:Pattern="Solid"/> + <NumberFormat/> + <Protection/> + </Style> + </Styles> + <Worksheet ss:Name="Data Elements"> + <Table ss:ExpandedColumnCount="18" ss:ExpandedRowCount="49" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s62" ss:DefaultColumnWidth="65.25" + ss:DefaultRowHeight="15"> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="337.5"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="39"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="24.75"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="32.25"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="33.75"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="95.25"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="78"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="327"/> + <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="161.25" ss:Span="1"/> + <Column ss:Index="11" ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="278.25"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="184.5"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="114"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="135" ss:Span="1"/> + <Row ss:Height="60" ss:StyleID="s65"> + <Cell><Data ss:Type="String">Element</Data></Cell> + <Cell><Data ss:Type="String">Card.</Data></Cell> + <Cell><Data ss:Type="String">Inv.</Data></Cell> + <Cell><Data ss:Type="String">Must Understand</Data></Cell> + <Cell><Data ss:Type="String">UML</Data></Cell> + <Cell><Data ss:Type="String">Type</Data></Cell> + <Cell><Data ss:Type="String">Binding</Data></Cell> + <Cell><Data ss:Type="String">Short Name</Data></Cell> + <Cell ss:StyleID="s66"><Data ss:Type="String">DICOM Mapping</Data></Cell> + <Cell ss:StyleID="s66"><Data ss:Type="String">Aliases</Data></Cell> + <Cell ss:StyleID="s66"><Data ss:Type="String">Value</Data></Cell> + <Cell><Data ss:Type="String">Definition</Data></Cell> + <Cell><Data ss:Type="String">Requirements</Data></Cell> + <Cell><Data ss:Type="String">Comments</Data></Cell> + <Cell><Data ss:Type="String">RIM Mapping</Data></Cell> + <Cell><Data ss:Type="String">v2 Mapping</Data></Cell> + <Cell><Data ss:Type="String">To Do</Data></Cell> + <Cell><Data ss:Type="String">Committee Notes</Data></Cell> + </Row> + <Row ss:Height="75"> + <Cell><Data ss:Type="String">ImagingStudy</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">A set of images produced in single study (one or more series of references images)</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">Reference IHE radiology TF vol 2 table 4.14.1</Data></Cell> + <Cell><Data ss:Type="String">Manifest,XDS-I summary, Key Images</Data></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Manifest of a set of images produced in study. The set of images may include every image in the study, or it may be an incomplete sample, such as a list of key images</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">Act[classCode=COMPOSITION, moodCode=EVN]</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row> + <Cell ss:StyleID="s68"><Data ss:Type="String">ImagingStudy.dateTime</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">dateTime</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">When the study was performed</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">0008,0020+0008,0030</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">StudyDate, StudyTime</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">2011-01-01T11:01:20.000000</Data></Cell> + <Cell><Data ss:Type="String">Date and Time the study took place</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.effectiveTime</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="30"> + <Cell><Data ss:Type="String">ImagingStudy.subject</Data></Cell> + <Cell><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Patient)</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Who the images are of</Data></Cell> + <Cell><Data ss:Type="String">0010/*</Data></Cell> + <Cell ss:Index="11" ss:StyleID="s62"/> + <Cell><Data ss:Type="String">Who the images are of</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.participation[typeCode=SBJ].role</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="30"> + <Cell><Data ss:Type="String">ImagingStudy.uid</Data></Cell> + <Cell><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">oid</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Formal identifier for the study (0020,000D)</Data></Cell> + <Cell><Data ss:Type="String">0020,000D</Data></Cell> + <Cell><Data ss:Type="String">StudyInstanceUID</Data></Cell> + <Cell><Data ss:Type="String">urn:oid:2.16.124.113543.6003.1154777499.30246.19789.3503430045</Data></Cell> + <Cell><Data ss:Type="String">Formal identifier for the study</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.id</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="60"> + <Cell><Data ss:Type="String">ImagingStudy.accessionNo</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Identifier</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Accession Number (0008,0050)</Data></Cell> + <Cell><Data ss:Type="String">0008,0050</Data></Cell> + <Cell><Data ss:Type="String">AccessionNumber</Data></Cell> + <Cell><Data ss:Type="String">n/a</Data></Cell> + <Cell><Data ss:Type="String">Accession Number</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.inboundRelationship[typeCode=COMP].source[classCode=ACSN, moodCode=EVN].id</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="30"> + <Cell><Data ss:Type="String">ImagingStudy.identifier</Data></Cell> + <Cell><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Identifier</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Other identifiers for the study (0020,0010)</Data></Cell> + <Cell><Data ss:Type="String">0020,0010</Data></Cell> + <Cell><Data ss:Type="String">Study ID</Data></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Other identifiers for the study</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.id (no means to distinguish from uid)</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="150"> + <Cell><Data ss:Type="String">ImagingStudy.order</Data></Cell> + <Cell><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(DiagnosticOrder)</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Order(s) that caused this study to be performed</Data></Cell> + <Cell ss:Index="12"><Data ss:Type="String">A list of the diagnostic orders that resulted in this imaging study being performed</Data></Cell> + <Cell ss:StyleID="s106"><Data ss:Type="String">To support grouped procedures (one imaging study supporting multiple ordered procedures, e.g., chest/abdomen/pelvis CT)</Data></Cell> + <Cell><Data ss:Type="String">The order(s) can be inferred from information such as accession numbers, but the details of this depend on local workflow management. Note that there is a many-many relationship between orders and studies</Data></Cell> + <Cell ss:StyleID="s106"><Data ss:Type="String">.outboundRelationship[typeCode=FLFS].target[classCode=DGIMG, moodCode=RQO]</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="75"> + <Cell><Data ss:Type="String">ImagingStudy.modality</Data></Cell> + <Cell><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">code</Data></Cell> + <Cell ss:StyleID="s106"><Data ss:Type="String">ImagingModality</Data></Cell> + <Cell><Data ss:Type="String">All series.modality if actual acquisition modalities</Data></Cell> + <Cell><Data ss:Type="String">0008,0061</Data></Cell> + <Cell><Data ss:Type="String">ModalitiesInStudy</Data></Cell> + <Cell><Data ss:Type="String">n/a</Data></Cell> + <Cell><Data ss:Type="String">A list of all the Series.ImageModality values that are actual acquisition modalities, i.e. those in the DICOM Context Group 29 (value set OID 1.2.840.10008.6.1.19)</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.code</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="75"> + <Cell><Data ss:Type="String">ImagingStudy.referrer</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Practitioner)</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Referring physician (0008,0090)</Data></Cell> + <Cell><Data ss:Type="String">0008,0090</Data></Cell> + <Cell><Data ss:Type="String">ReferringPhysiciansName</Data></Cell> + <Cell><Data ss:Type="String">n/a</Data></Cell> + <Cell><Data ss:Type="String">The requesting/referring physician</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.outboundRelationship[typeCode=FLFS].target[classCode=DGIMG, moodCode=RQO].participation[typeCode=AUT].role</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="30"> + <Cell><Data ss:Type="String">ImagingStudy.availability</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">code</Data></Cell> + <Cell ss:StyleID="s107"><Data ss:Type="String">InstanceAvailability</Data></Cell> + <Cell><Data ss:Type="String">ONLINE | OFFLINE | NEARLINE | UNAVAILABLE (0008,0056)</Data></Cell> + <Cell><Data ss:Type="String">0008,0056</Data></Cell> + <Cell><Data ss:Type="String">InstanceAvailability</Data></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Availability of study (online, offline or nearline)</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">Not supported</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="30"> + <Cell><Data ss:Type="String">ImagingStudy.url</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">uri</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Retrieve URI (0008,1190)</Data></Cell> + <Cell><Data ss:Type="String">0008,1190</Data></Cell> + <Cell><Data ss:Type="String">RetrieveURI</Data></Cell> + <Cell ss:Index="12"><Data ss:Type="String">WADO-RS URI where Study is available</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.text.reference</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="90"> + <Cell><Data ss:Type="String">ImagingStudy.numberOfSeries</Data></Cell> + <Cell><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">integer</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Number of Study Related Series (0020,1206)</Data></Cell> + <Cell><Data ss:Type="String">(0020,1206)</Data></Cell> + <Cell><Data ss:Type="String">NumberOfStudyRelatedSeries</Data></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Number of Series in Study</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.outboundRelationship[typeCode=COMP, subsetCode=SUMM].target[classCode=OBSSER, moodCode=EVN].repeatNumber</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="90"> + <Cell><Data ss:Type="String">ImagingStudy.numberOfInstances</Data></Cell> + <Cell><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">integer</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Number of Study Related Instances (0020,1208)</Data></Cell> + <Cell><Data ss:Type="String">(0020,1208)</Data></Cell> + <Cell><Data ss:Type="String">NumberOfStudyRelatedInstances</Data></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Number of SOP Instances in Study</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.outboundRelationship[typeCode=COMP, subsetCode=SUMM].target[classCode=DGIMG, moodCode=EVN].repeatNumber</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="30"> + <Cell><Data ss:Type="String">ImagingStudy.clinicalInformation</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">string</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Diagnoses etc with request (0040,1002)</Data></Cell> + <Cell><Data ss:Type="String" x:Ticked="1">0040,1002, 0008,1080</Data></Cell> + <Cell><Data ss:Type="String">Admitting Diagnoses Description</Data></Cell> + <Cell><Data ss:Type="String">n/a</Data></Cell> + <Cell><Data ss:Type="String">Diagnoses etc provided with request</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.outboundRelationship[typeCode=PERT].target</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="60"> + <Cell><Data ss:Type="String">ImagingStudy.procedure</Data></Cell> + <Cell><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Coding</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Type of procedure performed (0008,1032)</Data></Cell> + <Cell><Data ss:Type="String">0008,1032</Data></Cell> + <Cell><Data ss:Type="String">Procedure Code Sequence</Data></Cell> + <Cell><Data ss:Type="String">n/a</Data></Cell> + <Cell><Data ss:Type="String">Type of procedure performed</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.outboundRelationship[typeCode=COMP].target[classCode=PROC, moodCode=EVN]</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="30"> + <Cell><Data ss:Type="String">ImagingStudy.interpreter</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Practitioner)</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Who interpreted images (0008,1060)</Data></Cell> + <Cell><Data ss:Type="String" x:Ticked="1">0008,1060</Data></Cell> + <Cell><Data ss:Type="String">Name of Physician(s) Reading Study</Data></Cell> + <Cell><Data ss:Type="String">n/a</Data></Cell> + <Cell><Data ss:Type="String">Who read study and interpreted the images</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">or is this 4008,010C?</Data></Cell> + <Cell ss:StyleID="s106"><Data ss:Type="String">.participation[typeCode=PRF].role</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="45"> + <Cell><Data ss:Type="String">ImagingStudy.description</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">string</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Institution-generated description (0008,1030)</Data></Cell> + <Cell><Data ss:Type="String">0008,1030</Data></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Institution-generated description or classification of the Study (component) performed</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.text</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="60"> + <Cell><Data ss:Type="String">ImagingStudy.series</Data></Cell> + <Cell><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:Index="5"><Data ss:Type="String">right</Data></Cell> + <Cell ss:Index="7" ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Each study has one or more series of instances</Data></Cell> + <Cell ss:StyleID="s62"/> + <Cell ss:StyleID="s62"/> + <Cell ss:StyleID="s62"/> + <Cell><Data ss:Type="String">Each study has one or more series of image instances</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.outboundRelationship[typeCode=COMP].target[classCode=OBSSER, moodCode=EVN]</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="90"> + <Cell><Data ss:Type="String">ImagingStudy.series.number</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">integer</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Number of this series in overall sequence (0020,0011)</Data></Cell> + <Cell><Data ss:Type="String">0020,0011</Data></Cell> + <Cell><Data ss:Type="String">SeriesNumber</Data></Cell> + <Cell><Data ss:Type="String">3</Data></Cell> + <Cell><Data ss:Type="String">The number of this series in the overall sequence</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.inboundRelationship[type=COMP, source[classCode=COMPOSITION, moodCode=EVN]].sequenceNumber</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row> + <Cell><Data ss:Type="String">ImagingStudy.series.modality</Data></Cell> + <Cell><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">code</Data></Cell> + <Cell ss:StyleID="s106"><Data ss:Type="String">Modality</Data></Cell> + <Cell><Data ss:Type="String">The modality of the instances in the series (0008,0060)</Data></Cell> + <Cell><Data ss:Type="String">0008,0060</Data></Cell> + <Cell><Data ss:Type="String">Modality</Data></Cell> + <Cell><Data ss:Type="String">CT</Data></Cell> + <Cell><Data ss:Type="String">The modality of this series sequence</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.code</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row> + <Cell><Data ss:Type="String">ImagingStudy.series.uid</Data></Cell> + <Cell><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">oid</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Formal identifier for this series (0020,000E)</Data></Cell> + <Cell><Data ss:Type="String">0020,000E</Data></Cell> + <Cell><Data ss:Type="String">SeriesInstanceUID</Data></Cell> + <Cell><Data ss:Type="String">2.16.124.113543.6003.2588828330.45298.17418.2723805630</Data></Cell> + <Cell><Data ss:Type="String">Formal identifier for this series</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.id</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row> + <Cell><Data ss:Type="String">ImagingStudy.series.description</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">string</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">A description of the series (0008,103E)</Data></Cell> + <Cell><Data ss:Type="String">0008,103E</Data></Cell> + <Cell><Data ss:Type="String">SeriesDescription </Data></Cell> + <Cell><Data ss:Type="String">CT Surview 180</Data></Cell> + <Cell><Data ss:Type="String">A description of the series</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.text</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="90"> + <Cell><Data ss:Type="String">ImagingStudy.series.numberOfInstances</Data></Cell> + <Cell><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">integer</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Number of Series Related Instances (0020,1209)</Data></Cell> + <Cell><Data ss:Type="String">0020,1209</Data></Cell> + <Cell><Data ss:Type="String">NumberOfSeriesRelatedInstances</Data></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Sequence that contains attributes from the</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.outboundRelationship[typeCode=COMP, subsetCode=SUMM].target[classCode=DGIMG, moodCode=EVN].repeatNumber</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:StyleID="s115"> + <Cell ss:StyleID="s114"><Data ss:Type="String">!ImagingStudy.series.requestSequence</Data></Cell> + <Cell><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:Index="7" ss:StyleID="s118"/> + <Cell><Data ss:Type="String">Request Attributes Sequence (0040,0275)</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">(0040,0275)</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">RequestAttributesSequence</Data></Cell> + <Cell ss:StyleID="s117"/> + <Cell ss:Index="13" ss:StyleID="s118"/> + <Cell ss:Index="15" ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + </Row> + <Row ss:StyleID="s115"> + <Cell ss:StyleID="s114"><Data ss:Type="String">!ImagingStudy.series.requestSequence.requestedProcedureStepId</Data></Cell> + <Cell><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">string</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">Requested Procedure Step ID (0040,1001)</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">(0040,1001)</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">RequestedProcedureID</Data></Cell> + <Cell ss:StyleID="s117"/> + <Cell ss:Index="13" ss:StyleID="s118"/> + <Cell ss:Index="15" ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + </Row> + <Row ss:StyleID="s115"> + <Cell ss:StyleID="s114"><Data ss:Type="String">!ImagingStudy.series.requestSequence.scheduledProcedureStepId</Data></Cell> + <Cell><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">string</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">Scheduled Procedure Step ID (0040,0009)</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">(0040,0009)</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">ScheduledProcedureID</Data></Cell> + <Cell ss:StyleID="s117"/> + <Cell ss:Index="13" ss:StyleID="s118"/> + <Cell ss:Index="15" ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + </Row> + <Row ss:Height="30" ss:StyleID="s115"> + <Cell ss:StyleID="s114"><Data ss:Type="String">!ImagingStudy.series.ppsdateTime</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">dateTime</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">Performed Procedure Step Start Date (0040,0244) + Performed Procedure Step Start Time (0040,0245)</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">(0040,0244) + (0040,0245)</Data></Cell> + <Cell ss:StyleID="s117"/> + <Cell ss:StyleID="s117"/> + <Cell ss:Index="13" ss:StyleID="s118"/> + <Cell ss:Index="15" ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + </Row> + <Row ss:Height="75"> + <Cell><Data ss:Type="String">ImagingStudy.series.availability</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">code</Data></Cell> + <Cell ss:StyleID="s107"><Data ss:Type="String">InstanceAvailability</Data></Cell> + <Cell><Data ss:Type="String">ONLINE | OFFLINE | NEARLINE | UNAVAILABLE (0008,0056)</Data></Cell> + <Cell><Data ss:Type="String">0008,0056</Data></Cell> + <Cell><Data ss:Type="String">InstanceAvailability</Data></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Availability of series (online, offline or nearline)</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.inboundRelationship[typeCode=COMP]. source[classCode=OBS, moodCode=EVN, code="availability"].value</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="30"> + <Cell><Data ss:Type="String">ImagingStudy.series.url</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">uri</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Retrieve URI (0008,1115 > 0008,1190)</Data></Cell> + <Cell><Data ss:Type="String">0008,1115 > 0008,1190</Data></Cell> + <Cell><Data ss:Type="String">RetrieveURI</Data></Cell> + <Cell ss:Index="12"><Data ss:Type="String">WADO-RS URI where Series is available</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.text.reference</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:StyleID="s115"> + <Cell ss:StyleID="s114"><Data ss:Type="String">!ImagingStudy.series.retrieveAE</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">string</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">Retrieve AE Title (0008,0054)</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">0008,0054</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">RetrieveAETitle</Data></Cell> + <Cell ss:StyleID="s117"/> + <Cell ss:Index="13" ss:StyleID="s118"/> + <Cell ss:Index="15" ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + </Row> + <Row ss:StyleID="s115"> + <Cell ss:StyleID="s114"><Data ss:Type="String">!ImagingStudy.series.locationUID</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">oid</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">Retrieve Location UID (0040,E011)</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">0040,E011</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">RetrieveLocationUID</Data></Cell> + <Cell ss:StyleID="s117"/> + <Cell ss:Index="13" ss:StyleID="s118"/> + <Cell ss:Index="15" ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + </Row> + <Row ss:Height="45"> + <Cell><Data ss:Type="String">ImagingStudy.series.bodySite</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Coding</Data></Cell> + <Cell ss:StyleID="s106"><Data ss:Type="String">BodySite</Data></Cell> + <Cell><Data ss:Type="String">Body part examined (Map from 0018,0015)</Data></Cell> + <Cell><Data ss:Type="String">0018,0015</Data></Cell> + <Cell><Data ss:Type="String">BodyPartExamined</Data></Cell> + <Cell ss:Index="12"><Data ss:Type="String">Body part examined. See DICOM Part 16 Annex L for the mapping from DICOM to Snomed</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.targetSiteCode</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row> + <Cell><Data ss:Type="String">ImagingStudy.series.dateTime</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">dateTime</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">When the series started</Data></Cell> + <Cell ss:Index="13" ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.effectiveTime</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="60"> + <Cell><Data ss:Type="String">ImagingStudy.series.instance</Data></Cell> + <Cell ss:StyleID="s106"><Data ss:Type="String">1..*</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"><Data ss:Type="String">right</Data></Cell> + <Cell ss:Index="7" ss:StyleID="s106"/> + <Cell><Data ss:Type="String">A single instance taken from a patient (image or other)</Data></Cell> + <Cell ss:Index="12"><Data ss:Type="String">A single image taken from a patient</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.outboundRelationship[typeCode=COMP].target[classCode=DGIMG, moodCode=EVN]</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="75"> + <Cell><Data ss:Type="String">ImagingStudy.series.instance.number</Data></Cell> + <Cell ss:StyleID="s107"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">integer</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">The number of this instance in the series (0020,0013)</Data></Cell> + <Cell><Data ss:Type="String">0020,0013</Data></Cell> + <Cell><Data ss:Type="String">Instance Number</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="Number">1</Data></Cell> + <Cell><Data ss:Type="String">The number of this image in the series</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.inboundRelationship[typeCode=COMP, source[classCode=OBSSER, moodCode=EVN]].sequenceNumber</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row> + <Cell><Data ss:Type="String">ImagingStudy.series.instance.uid</Data></Cell> + <Cell ss:StyleID="s107"><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">oid</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Formal identifier for this instance (0008,0018)</Data></Cell> + <Cell><Data ss:Type="String">0008,0018</Data></Cell> + <Cell><Data ss:Type="String">SOP Instance UID</Data></Cell> + <Cell><Data ss:Type="String">2.16.124.113543.6003.189642796.63084.16748.2599092903</Data></Cell> + <Cell><Data ss:Type="String">Formal identifier for this image</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.id</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="75"> + <Cell><Data ss:Type="String">ImagingStudy.series.instance.sopclass</Data></Cell> + <Cell ss:StyleID="s107"><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">oid</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">DICOM class type (0008,0016)</Data></Cell> + <Cell><Data ss:Type="String">0008,0016</Data></Cell> + <Cell><Data ss:Type="String">SOP Class UID</Data></Cell> + <Cell><Data ss:Type="String">1.2.840.10008.5.1.4.1.1.2</Data></Cell> + <Cell><Data ss:Type="String">DICOM Image type</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.inboundRelationship[typeCode=COMP]. source[classCode=OBS, moodCode=EVN, code="sop class"].value</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row> + <Cell><Data ss:Type="String">ImagingStudy.series.instance.type </Data></Cell> + <Cell ss:StyleID="s107"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">string</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Type of instance (image etc) (0004,1430)</Data></Cell> + <Cell><Data ss:Type="String" x:Ticked="1">0004,1430</Data></Cell> + <Cell><Data ss:Type="String">Directory Record Type</Data></Cell> + <Cell ss:Index="13" ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.code</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="45"> + <Cell><Data ss:Type="String">ImagingStudy.series.instance.title</Data></Cell> + <Cell ss:StyleID="s107"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">string</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Description (0070,0080 | 0040,A043 > 0008,0104 | 0042,0010 | 0008,0008)</Data></Cell> + <Cell><Data ss:Type="String">0070,0080 | 0040,A043 > 0008,0104 | 0042,0010 | 0008,0008</Data></Cell> + <Cell ss:Index="13" ss:StyleID="s106"/> + <Cell ss:Index="15" ss:StyleID="s106"><Data ss:Type="String">.title</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="30" ss:StyleID="s115"> + <Cell ss:StyleID="s114"><Data ss:Type="String">!ImagingStudy.series.instance.availability</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">code</Data></Cell> + <Cell ss:StyleID="s116"><Data ss:Type="String">InstanceAvailability</Data></Cell> + <Cell><Data ss:Type="String">ONLINE | OFFLINE | NEARLINE | UNAVAILABLE (0008,0056)</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">0008,0056</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">InstanceAvailability</Data></Cell> + <Cell ss:StyleID="s117"/> + <Cell><Data ss:Type="String">Availability of instance (online, offline or nearline)</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell ss:Index="15" ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + </Row> + <Row ss:StyleID="s115"> + <Cell ss:StyleID="s114"><Data ss:Type="String">!ImagingStudy.series.instance.dateTime</Data></Cell> + <Cell ss:StyleID="s119"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">dateTime</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">When this image was taken</Data></Cell> + <Cell ss:StyleID="s117"/> + <Cell ss:StyleID="s117"/> + <Cell ss:Index="13" ss:StyleID="s118"/> + <Cell ss:Index="15" ss:StyleID="s118"><Data ss:Type="String">.effectiveTime</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + </Row> + <Row ss:Height="60" ss:StyleID="s115"> + <Cell ss:StyleID="s114"><Data ss:Type="String">!ImagingStudy.series.instance.image</Data></Cell> + <Cell ss:StyleID="s116"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"><Data ss:Type="String">left</Data></Cell> + <Cell ss:Index="7" ss:StyleID="s118"/> + <Cell><Data ss:Type="String">When instance is an image</Data></Cell> + <Cell ss:StyleID="s117"/> + <Cell ss:StyleID="s117"/> + <Cell ss:StyleID="s117"/> + <Cell ss:Index="13" ss:StyleID="s118"/> + <Cell ss:Index="15" ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">This is deletd until a use case is found</Data></Cell> + </Row> + <Row ss:StyleID="s115"> + <Cell ss:StyleID="s114"><Data ss:Type="String">!ImagingStudy.series.instance.image.rows</Data></Cell> + <Cell ss:StyleID="s116"><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">integer</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">Rows (0028,0010)</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">(0028,0010)</Data></Cell> + <Cell ss:StyleID="s117"/> + <Cell ss:StyleID="s117"/> + <Cell ss:Index="13" ss:StyleID="s118"/> + <Cell ss:Index="15" ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + </Row> + <Row ss:StyleID="s115"> + <Cell ss:StyleID="s114"><Data ss:Type="String">!ImagingStudy.series.instance.image.columns</Data></Cell> + <Cell ss:StyleID="s116"><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">integer</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">Columns (0028,0011)</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">(0028,0011)</Data></Cell> + <Cell ss:StyleID="s117"/> + <Cell ss:StyleID="s117"/> + <Cell ss:Index="13" ss:StyleID="s118"/> + <Cell ss:Index="15" ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + </Row> + <Row ss:StyleID="s115"> + <Cell ss:StyleID="s114"><Data ss:Type="String">!ImagingStudy.series.instance.image.bitsAllocated</Data></Cell> + <Cell ss:StyleID="s116"><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">integer</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">Bits Allocated (0028,0100)</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">(0028,0100)</Data></Cell> + <Cell ss:StyleID="s117"/> + <Cell ss:StyleID="s117"/> + <Cell ss:Index="13" ss:StyleID="s118"/> + <Cell ss:Index="15" ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + </Row> + <Row ss:StyleID="s115"> + <Cell ss:StyleID="s114"><Data ss:Type="String">!ImagingStudy.series.instance.image.numberOfFrames</Data></Cell> + <Cell ss:StyleID="s116"><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">integer</Data></Cell> + <Cell ss:StyleID="s118"/> + <Cell><Data ss:Type="String">Number of Frames (0028,0008)</Data></Cell> + <Cell ss:StyleID="s117"><Data ss:Type="String">(0028,0008)</Data></Cell> + <Cell ss:StyleID="s117"/> + <Cell ss:StyleID="s117"/> + <Cell ss:Index="13" ss:StyleID="s118"/> + <Cell ss:Index="15" ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + <Cell ss:StyleID="s118"/> + </Row> + <Row ss:Height="135"> + <Cell><Data ss:Type="String">ImagingStudy.series.instance.url</Data></Cell> + <Cell ss:StyleID="s107"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">uri</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">WADO-RS service where instance is available (0008,1199 > 0008,1190)</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">0008,1199 > 0008,1190</Data></Cell> + <Cell ss:StyleID="s62"/> + <Cell ss:StyleID="s62"/> + <Cell><Data ss:Type="String">WADO-RS url where image is available</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell><Data ss:Type="String">Each instance may have a url and an attachment. Both represent the same information, but using different approaches. The URL is a reference to a WADO-RS service that makes the instance available</Data></Cell> + <Cell ss:StyleID="s106"><Data ss:Type="String">.text.reference</Data></Cell> + <Cell ss:StyleID="s106"/> + <Cell ss:StyleID="s106"/> + </Row> + <Row ss:Height="120"> + <Cell><Data ss:Type="String">ImagingStudy.series.instance.attachment</Data></Cell> + <Cell><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">Resource(Any)</Data></Cell> + <Cell ss:Index="8"><Data ss:Type="String">A FHIR resource with content for this instance</Data></Cell> + <Cell ss:Index="14"><Data ss:Type="String">Each instance may have a url and an attachment. Both represent the same information, but using different approaches. The attachment is a reference to a FHIR resource (Media, Document, etc).</Data></Cell> + <Cell><Data ss:Type="String">.text.binary</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>-3</HorizontalResolution> + <VerticalResolution>-3</VerticalResolution> + </Print> + <Zoom>110</Zoom> + <Selected/> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>26</TopRowBottomPane> + <SplitVertical>1</SplitVertical> + <LeftColumnRightPane>11</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + <ActiveCol>1</ActiveCol> + </Pane> + <Pane> + <Number>2</Number> + <ActiveRow>1</ActiveRow> + </Pane> + <Pane> + <Number>0</Number> + <ActiveRow>29</ActiveRow> + <ActiveCol>14</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + <x:PageLayoutZoom>0</x:PageLayoutZoom> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Invariants"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="6" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s73" ss:DefaultColumnWidth="65.25" + ss:DefaultRowHeight="15"> + <Column ss:Index="2" ss:StyleID="s73" ss:AutoFitWidth="0" ss:Width="116.25"/> + <Column ss:StyleID="s73" ss:AutoFitWidth="0" ss:Width="153"/> + <Column ss:StyleID="s73" ss:AutoFitWidth="0" ss:Width="204.75"/> + <Column ss:StyleID="s73" ss:AutoFitWidth="0" ss:Width="198.75"/> + <Column ss:StyleID="s73" ss:AutoFitWidth="0" ss:Width="188.25"/> + <Row ss:AutoFitHeight="0" ss:StyleID="s74"> + <Cell><Data ss:Type="String">Id</Data></Cell> + <Cell><Data ss:Type="String">Name</Data></Cell> + <Cell><Data ss:Type="String">Context</Data></Cell> + <Cell><Data ss:Type="String">English</Data></Cell> + <Cell><Data ss:Type="String">OCL</Data></Cell> + <Cell><Data ss:Type="String">XPath</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>-3</HorizontalResolution> + <VerticalResolution>-3</VerticalResolution> + </Print> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>2</SplitVertical> + <LeftColumnRightPane>2</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + <x:PageLayoutZoom>0</x:PageLayoutZoom> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Events"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="2" x:FullColumns="1" + x:FullRows="1" ss:DefaultColumnWidth="65.25" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="83.25"/> + <Column ss:AutoFitWidth="0" ss:Width="198.75"/> + <Column ss:AutoFitWidth="0" ss:Width="158.25"/> + <Column ss:AutoFitWidth="0" ss:Width="162.75"/> + <Column ss:AutoFitWidth="0" ss:Width="195.75"/> + <Column ss:AutoFitWidth="0" ss:Width="74.25"/> + <Row ss:AutoFitHeight="0" ss:Height="33"> + <Cell ss:StyleID="s74"><Data ss:Type="String">Event Code</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Description</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Notes</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Request Resources</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Response Resources</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Follow Ups</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s75"/> + <Cell ss:StyleID="s75"/> + <Cell ss:StyleID="s75"/> + <Cell ss:StyleID="s75"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>1</SplitVertical> + <LeftColumnRightPane>1</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + <x:PageLayoutZoom>0</x:PageLayoutZoom> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Search"> + <Table ss:ExpandedColumnCount="8" ss:ExpandedRowCount="41" x:FullColumns="1" + x:FullRows="1" ss:DefaultColumnWidth="65.25" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="105.75"/> + <Column ss:AutoFitWidth="0" ss:Width="383.25"/> + <Column ss:Index="4" ss:AutoFitWidth="0" ss:Width="317.25"/> + <Column ss:AutoFitWidth="0" ss:Width="375"/> + <Row ss:AutoFitHeight="0" ss:Height="15.9375" ss:StyleID="s74"> + <Cell><Data ss:Type="String">Name</Data></Cell> + <Cell><Data ss:Type="String">Description</Data></Cell> + <Cell><Data ss:Type="String">Type</Data></Cell> + <Cell><Data ss:Type="String">Path</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">subject</Data></Cell> + <Cell><Data ss:Type="String">Who the study is about</Data></Cell> + <Cell><Data ss:Type="String">reference</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">ImagingStudy.subject</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">date</Data></Cell> + <Cell><Data ss:Type="String">The date the study was done was taken</Data></Cell> + <Cell><Data ss:Type="String">date</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">ImagingStudy.dateTime</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">accession</Data></Cell> + <Cell><Data ss:Type="String">The accession id for the image</Data></Cell> + <Cell><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">ImagingStudy.accessionNo</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">study</Data></Cell> + <Cell><Data ss:Type="String">The study id for the image</Data></Cell> + <Cell><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">ImagingStudy.uid</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">series</Data></Cell> + <Cell><Data ss:Type="String">The series id for the image</Data></Cell> + <Cell><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">ImagingStudy.series.uid</Data></Cell> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">modality</Data></Cell> + <Cell><Data ss:Type="String">The modality of the image</Data></Cell> + <Cell><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">ImagingStudy.series.modality</Data></Cell> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">size</Data></Cell> + <Cell><Data ss:Type="String">The size of the image in MB - may include > or < in the value</Data></Cell> + <Cell><Data ss:Type="String">number</Data></Cell> + <Cell ss:StyleID="s77"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">bodysite</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">ImagingStudy.series.bodySite</Data></Cell> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">uid</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">ImagingStudy.series.instance.uid</Data></Cell> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s76"><Data ss:Type="String">dicom-class</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">ImagingStudy.series.instance.sopclass</Data></Cell> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s68"/> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="5" ss:StyleID="s68"/> + <Cell ss:Index="8" ss:StyleID="s68"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>-3</HorizontalResolution> + <VerticalResolution>-3</VerticalResolution> + </Print> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>1</SplitVertical> + <LeftColumnRightPane>1</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + <ActiveRow>8</ActiveRow> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + <x:PageLayoutZoom>0</x:PageLayoutZoom> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Bindings"> + <Table ss:ExpandedColumnCount="8" ss:ExpandedRowCount="4" x:FullColumns="1" + x:FullRows="1" ss:DefaultColumnWidth="65.25" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="93"/> + <Column ss:AutoFitWidth="0" ss:Width="221.25"/> + <Column ss:AutoFitWidth="0" ss:Width="81.75"/> + <Column ss:AutoFitWidth="0" ss:Width="107.25"/> + <Column ss:AutoFitWidth="0" ss:Width="275.25"/> + <Column ss:AutoFitWidth="0" ss:Width="120.75"/> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s74"><Data ss:Type="String">Binding Name</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Definition</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Binding</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Reference</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Description</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">Oid</Data></Cell> + <Cell ss:StyleID="s78"><Data ss:Type="String">Copyright</Data></Cell> + <Cell ss:StyleID="s78"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s79"><Data ss:Type="String">Modality</Data></Cell> + <Cell ss:StyleID="s79"><Data ss:Type="String">Type of data in the instance</Data></Cell> + <Cell ss:StyleID="s80"><Data ss:Type="String">code list</Data></Cell> + <Cell><Data ss:Type="String">#modality</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">1.2.840.10008.6.1.811</Data></Cell> + <Cell><Data ss:Type="String">These codes are excerpted from Digital Imaging and Communications in Medicine (DICOM) Standard, Part 16: Content Mapping Resource, Copyright 2011 by the National Electrical Manufacturers Association</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s79"><Data ss:Type="String">InstanceAvailability</Data></Cell> + <Cell ss:StyleID="s79"><Data ss:Type="String">Availability of the resource</Data></Cell> + <Cell ss:StyleID="s80"><Data ss:Type="String">code list</Data></Cell> + <Cell ss:StyleID="s80"><Data ss:Type="String">#instance-availability</Data></Cell> + <Cell ss:Index="7"><Data ss:Type="String">These codes are excerpted from Digital Imaging and Communications in Medicine (DICOM) Standard, Part 16: Content Mapping Resource, Copyright 2011 by the National Electrical Manufacturers Association</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s79"><Data ss:Type="String">ImagingModality</Data></Cell> + <Cell ss:StyleID="s79"><Data ss:Type="String">Type of acquired image data in the instance</Data></Cell> + <Cell ss:StyleID="s80"><Data ss:Type="String">code list</Data></Cell> + <Cell><Data ss:Type="String">#imaging-modality</Data></Cell> + <Cell ss:Index="6" ss:StyleID="s81"><Data ss:Type="String">1.2.840.10008.6.1.19</Data></Cell> + <Cell><Data ss:Type="String">These codes are excerpted from Digital Imaging and Communications in Medicine (DICOM) Standard, Part 16: Content Mapping Resource, Copyright 2011 by the National Electrical Manufacturers Association</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>600</HorizontalResolution> + <VerticalResolution>600</VerticalResolution> + </Print> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>1</SplitVertical> + <LeftColumnRightPane>1</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + <ActiveRow>2</ActiveRow> + <ActiveCol>6</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + <x:PageLayoutZoom>0</x:PageLayoutZoom> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="modality"> + <Table ss:ExpandedColumnCount="3" ss:ExpandedRowCount="54" x:FullColumns="1" + x:FullRows="1" ss:DefaultColumnWidth="65.25" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="166.5"/> + <Column ss:AutoFitWidth="0" ss:Width="44.25"/> + <Column ss:AutoFitWidth="0" ss:Width="251.25"/> + <Row ss:AutoFitHeight="0" ss:StyleID="s82"> + <Cell><Data ss:Type="String">System</Data></Cell> + <Cell><Data ss:Type="String">Code</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">AR</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">AU</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">BDUS</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">BI</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">BMD</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">CR</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">CT</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">DG</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">DX</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">ECG</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">EPS</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">ES</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">GM</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">HC</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">HD</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">IO</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">IVOCT</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">IVUS</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">KER</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">KO</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">LEN</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">LS</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">MG</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">MR</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">NM</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OAM</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OCT</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OP</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OPM</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OPT</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OPV</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OT</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">PR</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">PT</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">PX</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">REG</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">RF</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">RG</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">RTDOSE</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">RTIMAGE</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">RTPLAN</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">RTRECORD</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">RTSTRUCT</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">SEG</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">SM</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">SMR</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">SR</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">SRF</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">TG</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">US</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">VA</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">XA</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">XC</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>34</ActiveRow> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + <x:PageLayoutZoom>0</x:PageLayoutZoom> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="instance-availability"> + <Table ss:ExpandedColumnCount="4" ss:ExpandedRowCount="5" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="210"/> + <Column ss:AutoFitWidth="0" ss:Width="76.5"/> + <Column ss:AutoFitWidth="0" ss:Width="368.25"/> + <Row ss:AutoFitHeight="0" ss:StyleID="s82"> + <Cell><Data ss:Type="String">System</Data></Cell> + <Cell><Data ss:Type="String">Code</Data></Cell> + <Cell><Data ss:Type="String">Definition</Data></Cell> + <Cell><Data ss:Type="String">Comments</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">ONLINE</Data></Cell> + <Cell><Data ss:Type="String">Resources are immediately available,</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OFFLINE</Data></Cell> + <Cell ss:StyleID="s83"><Data ss:Type="String">Resources need to be retrieved by manual intervention</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">NEARLINE</Data></Cell> + <Cell ss:StyleID="s83"><Data ss:Type="String">Resources need to be retrieved from relatively slow media</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">UNAVAILABLE</Data></Cell> + <Cell><Data ss:Type="String">Resources cannot be retrieved.</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>600</HorizontalResolution> + <VerticalResolution>600</VerticalResolution> + </Print> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>1</ActiveRow> + <ActiveCol>1</ActiveCol> + <RangeSelection>R2C2:R5C2</RangeSelection> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="imaging-modality"> + <Table ss:ExpandedColumnCount="5" ss:ExpandedRowCount="37" x:FullColumns="1" + x:FullRows="1" ss:DefaultColumnWidth="65.25" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="166.5"/> + <Column ss:AutoFitWidth="0" ss:Width="44.25"/> + <Column ss:AutoFitWidth="0" ss:Width="338.25"/> + <Column ss:AutoFitWidth="0" ss:Width="167.25"/> + <Column ss:AutoFitWidth="0" ss:Width="60.75"/> + <Row ss:AutoFitHeight="0" ss:Height="14.4375" ss:StyleID="s82"> + <Cell><Data ss:Type="String">System</Data></Cell> + <Cell><Data ss:Type="String">Code</Data></Cell> + <Cell><Data ss:Type="String">Comment</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="14.4375"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">AR</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">BMD </Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">BDUS</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">EPS</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">CR</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">CT</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">DX</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">ECG</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">ES</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">XC</Data></Cell> + <Cell><Data ss:Type="String">Use this for general photography</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">GM</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">HD</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">IO</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">IVOCT </Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">IVUS</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">KER</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">LEN</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">MR</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">MG</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">NM</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OAM </Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OCT </Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OPM</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OP</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OPR</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OPT</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OPV </Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">PX</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">PT </Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">RF</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">RG</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">SM</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">SRF</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">US</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">VA</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">XA</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>11</ActiveRow> + <ActiveCol>2</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + <x:PageLayoutZoom>0</x:PageLayoutZoom> + </WorksheetOptions> + </Worksheet> +</Workbook> diff --git a/hapi-tinder-plugin/src/main/resources/res/media-spreadsheet.xml b/hapi-tinder-plugin/src/main/resources/res/media-spreadsheet.xml new file mode 100644 index 00000000000..68421c121ae --- /dev/null +++ b/hapi-tinder-plugin/src/main/resources/res/media-spreadsheet.xml @@ -0,0 +1,1086 @@ +<?xml version="1.0"?> +<?mso-application progid="Excel.Sheet"?> +<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" + xmlns:o="urn:schemas-microsoft-com:office:office" + xmlns:x="urn:schemas-microsoft-com:office:excel" + xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" + xmlns:html="http://www.w3.org/TR/REC-html40"> + <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> + <Author>Grahame</Author> + <LastAuthor>Grahame</LastAuthor> + <Created>2012-03-19T11:12:07Z</Created> + <LastSaved>2013-06-28T02:59:01Z</LastSaved> + <Version>14.00</Version> + </DocumentProperties> + <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"> + <AllowPNG/> + </OfficeDocumentSettings> + <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> + <WindowHeight>6285</WindowHeight> + <WindowWidth>22755</WindowWidth> + <WindowTopX>5520</WindowTopX> + <WindowTopY>6135</WindowTopY> + <ProtectStructure>False</ProtectStructure> + <ProtectWindows>False</ProtectWindows> + </ExcelWorkbook> + <Styles> + <Style ss:ID="Default" ss:Name="Normal"> + <Alignment ss:Vertical="Bottom"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s62"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + </Style> + <Style ss:ID="s63"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + </Style> + <Style ss:ID="s64"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <NumberFormat ss:Format="@"/> + </Style> + <Style ss:ID="s65"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#EEECE1" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s66"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#EEECE1" ss:Pattern="Solid"/> + <NumberFormat ss:Format="@"/> + </Style> + <Style ss:ID="s67"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Interior ss:Color="#D9D9D9" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s70"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s71"> + <Alignment ss:Vertical="Bottom" ss:ShrinkToFit="1" ss:WrapText="1"/> + </Style> + <Style ss:ID="s72"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + </Style> + <Style ss:ID="s73"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + </Style> + <Style ss:ID="s74"> + <Alignment ss:Vertical="Top"/> + </Style> + <Style ss:ID="s75"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s76"> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#D9D9D9" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s77"> + <Font ss:FontName="Arial" x:Family="Swiss" ss:Color="#333333"/> + </Style> + </Styles> + <Worksheet ss:Name="Data Elements"> + <Table ss:ExpandedColumnCount="18" ss:ExpandedRowCount="16" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s62" ss:DefaultRowHeight="15"> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="150.75"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="56.25"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="29.25"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="54.75"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="61.5"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="96.75"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="117.75"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="229.5"/> + <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="96.75"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="161.25"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="77.25"/> + <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="114" ss:Span="1"/> + <Column ss:Index="14" ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="135" + ss:Span="1"/> + <Row ss:AutoFitHeight="0" ss:Height="45" ss:StyleID="s65"> + <Cell><Data ss:Type="String">Element</Data></Cell> + <Cell><Data ss:Type="String">Card.</Data></Cell> + <Cell><Data ss:Type="String">Inv.</Data></Cell> + <Cell><Data ss:Type="String">Is Modifier</Data></Cell> + <Cell><Data ss:Type="String">UML</Data></Cell> + <Cell><Data ss:Type="String">Type</Data></Cell> + <Cell><Data ss:Type="String">Binding</Data></Cell> + <Cell><Data ss:Type="String">Short Name</Data></Cell> + <Cell ss:StyleID="s66"><Data ss:Type="String">DICOM Mapping</Data></Cell> + <Cell><Data ss:Type="String">Definition</Data></Cell> + <Cell><Data ss:Type="String">Aliases</Data></Cell> + <Cell><Data ss:Type="String">Requirements</Data></Cell> + <Cell><Data ss:Type="String">Summary</Data></Cell> + <Cell><Data ss:Type="String">Comments</Data></Cell> + <Cell><Data ss:Type="String">RIM Mapping</Data></Cell> + <Cell><Data ss:Type="String">v2 Mapping</Data></Cell> + <Cell><Data ss:Type="String">To Do</Data></Cell> + <Cell><Data ss:Type="String">Committee Notes</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Media</Data></Cell> + <Cell ss:StyleID="s67"/> + <Cell ss:StyleID="s67"/> + <Cell ss:StyleID="s67"/> + <Cell ss:StyleID="s67"/> + <Cell><Data ss:Type="String">Resource</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">A photo, video, or audio recording acquired or used in healthcare. The actual content may be inline or provided by direct reference</Data></Cell> + <Cell ss:Index="10"><Data ss:Type="String">A photo, video, or audio recording acquired or used in healthcare. The actual content may be inline or provided by direct reference</Data></Cell> + <Cell ss:Index="12" ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:Index="15" ss:StyleID="Default"><Data ss:Type="String">Act[classCode="DGIMG", moodCode="EVN"]</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Media.type</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">code</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">MediaType</Data></Cell> + <Cell><Data ss:Type="String">photo | video | audio</Data></Cell> + <Cell ss:Index="10"><Data ss:Type="String">Whether the media is a photo (still image), an audio recording, or a video recording</Data></Cell> + <Cell ss:Index="12" ss:StyleID="Default"/> + <Cell ss:StyleID="Default"><Data ss:Type="String">y</Data></Cell> + <Cell ss:Index="15" ss:StyleID="Default"><Data ss:Type="String">.code</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Media.subtype</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">CodeableConcept</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">MediaSubtype</Data></Cell> + <Cell><Data ss:Type="String">The type of acquisition equipment/process</Data></Cell> + <Cell><Data ss:Type="String" x:Ticked="1">0008,0060 | 0008,1032</Data></Cell> + <Cell><Data ss:Type="String">Details of the type of the media - usually, how it was acquired (what type of device). If images sourced from a DICOM system, are wrapped in a Media resource, then this is the modality</Data></Cell> + <Cell ss:Index="12" ss:StyleID="Default"/> + <Cell ss:StyleID="s70"><Data ss:Type="String">y</Data></Cell> + <Cell ss:Index="15"><Data ss:Type="String">.outboundRelationship[typeCode="COMP].target[classCode="LIST", moodCode="EVN"].code</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Media.identifier</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">Identifier</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">Identifier(s) for the image</Data></Cell> + <Cell><Data ss:Type="String">0008,0018 | ~0008,0050 | 0020,000D | 0020,000E </Data></Cell> + <Cell><Data ss:Type="String">Identifiers associated with the image - these may include identifiers for the image itself, identifiers for the context of its collection (e.g. series ids) and context ids such as accession numbers or other workflow identifiers</Data></Cell> + <Cell ss:Index="12" ss:StyleID="Default"/> + <Cell ss:StyleID="s70"><Data ss:Type="String">y</Data></Cell> + <Cell><Data ss:Type="String">The identifier label and use can be used to determine what kind of identifier it is</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">.id</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Media.dateTime</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">dateTime</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">When the media was taken/recorded (end)</Data></Cell> + <Cell><Data ss:Type="String" x:Ticked="1">0008,0020 + 0008,0030</Data></Cell> + <Cell><Data ss:Type="String">When the media was originally recorded. For video and audio, if the length of the recording is not insignificant, this is the end of the recording</Data></Cell> + <Cell ss:Index="12" ss:StyleID="Default"/> + <Cell ss:StyleID="s70"><Data ss:Type="String">y</Data></Cell> + <Cell><Data ss:Type="String">For an image including multiple frames, this is the start time</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">.effectiveTime</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Media.subject</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">Resource(Patient|Practitioner|Group|Device|Specimen)</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">Who/What this Media is a record of</Data></Cell> + <Cell><Data ss:Type="String" x:Ticked="1">~0010,0020</Data></Cell> + <Cell><Data ss:Type="String">Who/What this Media is a record of</Data></Cell> + <Cell ss:Index="12" ss:StyleID="Default"/> + <Cell ss:StyleID="s70"><Data ss:Type="String">y</Data></Cell> + <Cell ss:Index="15" ss:StyleID="Default"><Data ss:Type="String">.participation[typeCode="SUBJ"]…</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">!Media.requester</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">Resource(Practitioner)</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">Who asked that this image be collected</Data></Cell> + <Cell><Data ss:Type="String" x:Ticked="1">0008,0090</Data></Cell> + <Cell><Data ss:Type="String">Who requested that this image be collected</Data></Cell> + <Cell ss:Index="12" ss:StyleID="Default"/> + <Cell ss:StyleID="s70"><Data ss:Type="String">y</Data></Cell> + <Cell><Data ss:Type="String">Helps connect to workflow etc</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">.participation[typeCode="REFB"]…</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Media.operator</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">Resource(Practitioner)</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">The person who generated the image</Data></Cell> + <Cell><Data ss:Type="String">0008,1060?</Data></Cell> + <Cell><Data ss:Type="String">The person who administered the collection of the image</Data></Cell> + <Cell ss:Index="12" ss:StyleID="Default"/> + <Cell ss:StyleID="s70"><Data ss:Type="String">y</Data></Cell> + <Cell ss:Index="15" ss:StyleID="Default"><Data ss:Type="String">.participation[typeCode="PERF"]…</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Media.view</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">CodeableConcept</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">MediaView</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">Imaging view e.g Lateral or Antero-posterior</Data></Cell> + <Cell ss:Index="10" ss:StyleID="Default"><Data ss:Type="String">The name of the imaging view e.g Lateral or Antero-posterior (AP).</Data></Cell> + <Cell ss:Index="12" ss:StyleID="Default"/> + <Cell ss:StyleID="s70"><Data ss:Type="String">y</Data></Cell> + <Cell ss:Index="15" ss:StyleID="Default"><Data ss:Type="String">DiagnosticImage.subjectOrientationCode</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Media.deviceName</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">string</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">Name of the device/manufacturer</Data></Cell> + <Cell><Data ss:Type="String" x:Ticked="1">0008,0070 </Data></Cell> + <Cell><Data ss:Type="String">The name of the device / manufacturer of the device that was used to make the recording</Data></Cell> + <Cell ss:Index="12" ss:StyleID="Default"/> + <Cell ss:StyleID="s70"><Data ss:Type="String">y</Data></Cell> + <Cell ss:Index="15" ss:StyleID="Default"><Data ss:Type="String">.participation[typeCode="DEV"].role.player.Entity[classCode="DEV"].name</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Media.height</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="Number">1</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">integer</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">Height of the image in pixels(photo/video)</Data></Cell> + <Cell><Data ss:Type="String" x:Ticked="1">0028,0010</Data></Cell> + <Cell><Data ss:Type="String">Height of the image in pixels(photo/video)</Data></Cell> + <Cell ss:Index="12" ss:StyleID="Default"/> + <Cell ss:StyleID="s70"><Data ss:Type="String">y</Data></Cell> + <Cell ss:Index="15" ss:StyleID="Default"><Data ss:Type="String">.outboundRelationship[typeCode="COMP].target[classCode="OBS", moodCode="EVN",code="<CODE>"].value</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Media.width</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="Number">2</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">integer</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">Width of the image in pixels (photo/video)</Data></Cell> + <Cell><Data ss:Type="String" x:Ticked="1">0028,0011</Data></Cell> + <Cell><Data ss:Type="String">Width of the image in pixels (photo/video)</Data></Cell> + <Cell ss:Index="12" ss:StyleID="Default"/> + <Cell ss:StyleID="s70"><Data ss:Type="String">y</Data></Cell> + <Cell ss:Index="15" ss:StyleID="Default"><Data ss:Type="String">.outboundRelationship[typeCode="COMP].target[classCode="OBS", moodCode="EVN",code="<CODE>"].value</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Media.frames</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="Number">3</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">integer</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">Number of frames if > 1 (photo)</Data></Cell> + <Cell ss:Index="10"><Data ss:Type="String">The number of frames in a photo. This is used with a multi-page fax, or an imaging acquisition context that takes multiple slices in a single image, or an animated gif. If there is more than one frame, this SHALL have a value in order to alert interface software that a multi-frame capable rendering widget is required </Data></Cell> + <Cell ss:Index="12" ss:StyleID="Default"/> + <Cell ss:StyleID="s70"><Data ss:Type="String">y</Data></Cell> + <Cell ss:Index="15" ss:StyleID="Default"><Data ss:Type="String">.outboundRelationship[typeCode="COMP].target[classCode="OBS", moodCode="EVN",code="<CODE>"].value</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Media.length</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="Number">4</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">integer</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">Length in seconds (audio / video)</Data></Cell> + <Cell><Data ss:Type="String" x:Ticked="1">~0028,0002</Data></Cell> + <Cell><Data ss:Type="String">The length of the recording in seconds - for audio and video</Data></Cell> + <Cell ss:Index="12" ss:StyleID="Default"/> + <Cell ss:StyleID="s70"><Data ss:Type="String">y</Data></Cell> + <Cell ss:Index="15" ss:StyleID="Default"><Data ss:Type="String">.outboundRelationship[typeCode="COMP].target[classCode="OBS", moodCode="EVN",code="<CODE>"].value</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Media.content</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">Attachment</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">Actual Media - reference or data</Data></Cell> + <Cell ss:Index="10"><Data ss:Type="String">The actual content of the media - inline or by direct reference to the media source file</Data></Cell> + <Cell ss:Index="12" ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell><Data ss:Type="String">Recommended content types: image/jpeg, image/png, image/tiff, video/mpeg, audio/mp4, application/dicom. Application/dicom can contain the transfer syntax as a parameter</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">.text</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>-3</HorizontalResolution> + <VerticalResolution>-3</VerticalResolution> + </Print> + <Selected/> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>1</SplitVertical> + <LeftColumnRightPane>1</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + <ActiveRow>3</ActiveRow> + <ActiveCol>7</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Invariants"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="6" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s71" ss:DefaultRowHeight="15"> + <Column ss:Index="2" ss:StyleID="s71" ss:AutoFitWidth="0" ss:Width="115.5"/> + <Column ss:StyleID="s71" ss:AutoFitWidth="0" ss:Width="153"/> + <Column ss:StyleID="s71" ss:AutoFitWidth="0" ss:Width="204.75"/> + <Column ss:StyleID="s71" ss:AutoFitWidth="0" ss:Width="198.75"/> + <Column ss:StyleID="s71" ss:AutoFitWidth="0" ss:Width="188.25"/> + <Row ss:AutoFitHeight="0" ss:StyleID="s65"> + <Cell><Data ss:Type="String">Id</Data></Cell> + <Cell><Data ss:Type="String">Name</Data></Cell> + <Cell><Data ss:Type="String">Context</Data></Cell> + <Cell><Data ss:Type="String">English</Data></Cell> + <Cell><Data ss:Type="String">OCL</Data></Cell> + <Cell><Data ss:Type="String">XPath</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="Default"><Data ss:Type="Number">1</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">Height rule</Data></Cell> + <Cell ss:StyleID="s63"><Data ss:Type="String">Media</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">Height can only be used for a photo or video</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"><Data ss:Type="String">not(f:type/@value='audio') or not(f:height)</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="Default"><Data ss:Type="Number">2</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">Width rule</Data></Cell> + <Cell ss:StyleID="s63"><Data ss:Type="String">Media</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">Width can only be used for a photo or video</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"><Data ss:Type="String">not(f:type/@value='audio') or not(f:width)</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="Default"><Data ss:Type="Number">3</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">Frames rule</Data></Cell> + <Cell ss:StyleID="s63"><Data ss:Type="String">Media</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">Frames can only be used for a photo</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"><Data ss:Type="String">(f:type/@value='photo') or not(f:frames)</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="Default"><Data ss:Type="Number">4</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">Length rule</Data></Cell> + <Cell ss:StyleID="s63"><Data ss:Type="String">Media</Data></Cell> + <Cell ss:StyleID="Default"><Data ss:Type="String">Length can only be used for an audio or a video</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"><Data ss:Type="String">not(f:type/@value='photo') or not(f:length)</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="s63"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>2</SplitVertical> + <LeftColumnRightPane>2</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + <ActiveRow>5</ActiveRow> + <ActiveCol>5</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Events"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="2" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="82.5"/> + <Column ss:AutoFitWidth="0" ss:Width="198.75"/> + <Column ss:AutoFitWidth="0" ss:Width="157.5"/> + <Column ss:AutoFitWidth="0" ss:Width="162.75"/> + <Column ss:AutoFitWidth="0" ss:Width="195.75"/> + <Column ss:AutoFitWidth="0" ss:Width="74.25"/> + <Row ss:AutoFitHeight="0" ss:Height="33"> + <Cell ss:StyleID="s65"><Data ss:Type="String">Event Code</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Description</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Notes</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Request Resources</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Response Resources</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Follow Ups</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s72"/> + <Cell ss:StyleID="s72"/> + <Cell ss:StyleID="s72"/> + <Cell ss:StyleID="s72"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>1</SplitVertical> + <LeftColumnRightPane>1</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Search"> + <Table ss:ExpandedColumnCount="8" ss:ExpandedRowCount="17" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="105.75"/> + <Column ss:AutoFitWidth="0" ss:Width="382.5"/> + <Column ss:Index="4" ss:AutoFitWidth="0" ss:Width="352.5"/> + <Column ss:Index="8" ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="150.75"/> + <Row ss:AutoFitHeight="0" ss:Height="16.5" ss:StyleID="s65"> + <Cell><Data ss:Type="String">Name</Data></Cell> + <Cell><Data ss:Type="String">Description</Data></Cell> + <Cell><Data ss:Type="String">Type</Data></Cell> + <Cell><Data ss:Type="String">Path</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s73"><Data ss:Type="String">type</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s63"><Data ss:Type="String">Media.type</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s73"><Data ss:Type="String">subtype</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s63"><Data ss:Type="String">Media.subtype</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s73"><Data ss:Type="String">identifier</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s63"><Data ss:Type="String">Media.identifier</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s73"><Data ss:Type="String">date</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">date</Data></Cell> + <Cell ss:StyleID="s63"><Data ss:Type="String">Media.dateTime</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s73"><Data ss:Type="String">subject</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">reference</Data></Cell> + <Cell ss:StyleID="s63"><Data ss:Type="String">Media.subject</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s73"><Data ss:Type="String">operator</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">reference</Data></Cell> + <Cell ss:StyleID="s63"><Data ss:Type="String">Media.operator</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s73"><Data ss:Type="String">view</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s63"><Data ss:Type="String">Media.view</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s63"/> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s63"/> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s63"/> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s63"/> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s63"/> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s63"/> + <Cell ss:Index="4" ss:StyleID="s63"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s63"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s63"/> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s63"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>-3</HorizontalResolution> + <VerticalResolution>-3</VerticalResolution> + </Print> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>1</SplitVertical> + <LeftColumnRightPane>1</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + <ActiveRow>3</ActiveRow> + <ActiveCol>3</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Bindings"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="5" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="93"/> + <Column ss:AutoFitWidth="0" ss:Width="221.25"/> + <Column ss:AutoFitWidth="0" ss:Width="81.75" ss:Span="1"/> + <Column ss:Index="5" ss:AutoFitWidth="0" ss:Width="106.5"/> + <Column ss:AutoFitWidth="0" ss:Width="274.5"/> + <Row ss:AutoFitHeight="0" ss:Height="15.75"> + <Cell ss:StyleID="s65"><Data ss:Type="String">Binding Name</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Definition</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Binding</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Example</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Reference</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Description</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">MediaType</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">Whether the Media is a photo, video, or audio</Data></Cell> + <Cell ss:StyleID="s74"><Data ss:Type="String">Code List</Data></Cell> + <Cell ss:StyleID="s74"/> + <Cell ss:StyleID="s74"><Data ss:Type="String">#media-type</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">MediaSubtype</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">Detailed information about the type of the image - it's kind, purpose, or the kind of equipment used to generate it </Data></Cell> + <Cell><Data ss:Type="String">Value Set</Data></Cell> + <Cell><Data ss:Type="String">y</Data></Cell> + <Cell><Data ss:Type="String">valueset-media-subtype</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">!MediaModality</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">Type of the image capturing machinery used to capture a media recording</Data></Cell> + <Cell><Data ss:Type="String">Code List</Data></Cell> + <Cell ss:Index="5"><Data ss:Type="String">#media-modality</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">MediaView</Data></Cell> + <Cell ss:StyleID="s62"><Data ss:Type="String">Imaging view (projection) used when collecting an image</Data></Cell> + <Cell><Data ss:Type="String">Value Set</Data></Cell> + <Cell><Data ss:Type="String">y</Data></Cell> + <Cell><Data ss:Type="String">valueset-media-view</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>1</SplitVertical> + <LeftColumnRightPane>1</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + <ActiveRow>3</ActiveRow> + <ActiveCol>2</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Examples"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="3" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="66.75"/> + <Column ss:AutoFitWidth="0" ss:Width="221.25"/> + <Column ss:AutoFitWidth="0" ss:Width="62.25"/> + <Column ss:AutoFitWidth="0" ss:Width="167.25"/> + <Column ss:AutoFitWidth="0" ss:Width="60.75"/> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell ss:StyleID="s75"><Data ss:Type="String">Name</Data></Cell> + <Cell ss:StyleID="s75"><Data ss:Type="String">Description</Data></Cell> + <Cell ss:StyleID="s75"><Data ss:Type="String">Identity</Data></Cell> + <Cell ss:StyleID="s75"><Data ss:Type="String">Filename</Data></Cell> + <Cell ss:StyleID="s75"><Data ss:Type="String">Type</Data></Cell> + <Cell ss:StyleID="s75"><Data ss:Type="String">In Book</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Plain Photo</Data></Cell> + <Cell><Data ss:Type="String">Simple photo</Data></Cell> + <Cell><Data ss:Type="String">example</Data></Cell> + <Cell><Data ss:Type="String">media-example.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">y</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Ultrasound</Data></Cell> + <Cell><Data ss:Type="String">Example Ultrasound Image</Data></Cell> + <Cell><Data ss:Type="String">1.2.840.11361907579238403408700.3.0.14.19970327150033</Data></Cell> + <Cell><Data ss:Type="String">media-example-dicom.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">y</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>1</ActiveRow> + <ActiveCol>3</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="media-modality"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="39" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:Index="2" ss:AutoFitWidth="0" ss:Width="142.5"/> + <Column ss:AutoFitWidth="0" ss:Width="44.25"/> + <Column ss:AutoFitWidth="0" ss:Width="251.25"/> + <Column ss:AutoFitWidth="0" ss:Width="157.5"/> + <Row ss:AutoFitHeight="0" ss:StyleID="s76"> + <Cell><Data ss:Type="String">Id</Data></Cell> + <Cell><Data ss:Type="String">System</Data></Cell> + <Cell><Data ss:Type="String">Code</Data></Cell> + <Cell><Data ss:Type="String">Definition</Data></Cell> + <Cell><Data ss:Type="String">Comments</Data></Cell> + <Cell><Data ss:Type="String">Notes</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">AR</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">The imaging acquisition types defined by DICOM</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">BMD </Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">BDUS</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">EPS</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">CR</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">CT</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">DX</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">ECG</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">ES</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">XC</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">GM</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">HD</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">IO</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">IVOCT </Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">IVUS</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">KER</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">LEN</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">MR</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">MG</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">NM</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OAM </Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OCT </Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OPM</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OP</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OPR</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OPT</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">OPV </Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">PX</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">PT </Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">RF</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">RG</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">SM</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">SRF</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">US</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">VA</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell ss:Index="2"><Data ss:Type="String">http://nema.org/dicom/dcid</Data></Cell> + <Cell><Data ss:Type="String">XA</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="12.75" ss:StyleID="s77"> + <Cell><Data ss:Type="Number">1</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">diagram</Data></Cell> + <Cell><Data ss:Type="String">Hand-drawn diagram</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">2</Data></Cell> + <Cell ss:Index="3"><Data ss:Type="String">fax</Data></Cell> + <Cell><Data ss:Type="String">Digital record of a fax (multi-page)</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>31</ActiveRow> + <ActiveCol>3</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="media-type"> + <Table ss:ExpandedColumnCount="4" ss:ExpandedRowCount="4" x:FullColumns="1" + x:FullRows="1" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="54.75"/> + <Column ss:AutoFitWidth="0" ss:Width="56.25"/> + <Column ss:AutoFitWidth="0" ss:Width="173.25"/> + <Row ss:AutoFitHeight="0" ss:StyleID="s76"> + <Cell><Data ss:Type="String">Id</Data></Cell> + <Cell><Data ss:Type="String">Code</Data></Cell> + <Cell><Data ss:Type="String">Definition</Data></Cell> + <Cell><Data ss:Type="String">Comments</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">1</Data></Cell> + <Cell><Data ss:Type="String">photo</Data></Cell> + <Cell><Data ss:Type="String">The media consists of one or more unmoving images, including photographs, computer-generated graphs and charts, and scanned documents</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">2</Data></Cell> + <Cell><Data ss:Type="String">video</Data></Cell> + <Cell><Data ss:Type="String">The media consists of a series of frames that capture a moving image</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="Number">3</Data></Cell> + <Cell><Data ss:Type="String">audio</Data></Cell> + <Cell><Data ss:Type="String">The media consists of a sound recording</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>2</ActiveRow> + <ActiveCol>2</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + </WorksheetOptions> + </Worksheet> +</Workbook> diff --git a/hapi-tinder-plugin/src/main/resources/res/relatedperson-spreadsheet.xml b/hapi-tinder-plugin/src/main/resources/res/relatedperson-spreadsheet.xml new file mode 100644 index 00000000000..4abad77f0da --- /dev/null +++ b/hapi-tinder-plugin/src/main/resources/res/relatedperson-spreadsheet.xml @@ -0,0 +1,650 @@ +<?xml version="1.0"?> +<?mso-application progid="Excel.Sheet"?> +<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" + xmlns:o="urn:schemas-microsoft-com:office:office" + xmlns:x="urn:schemas-microsoft-com:office:excel" + xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" + xmlns:html="http://www.w3.org/TR/REC-html40"> + <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> + <Author>Grahame</Author> + <LastAuthor>Alexander Henket</LastAuthor> + <Created>2012-03-19T09:39:52Z</Created> + <LastSaved>2013-09-28T12:20:07Z</LastSaved> + <Version>14.00</Version> + </DocumentProperties> + <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"> + <AllowPNG/> + </OfficeDocumentSettings> + <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> + <WindowHeight>15990</WindowHeight> + <WindowWidth>19785</WindowWidth> + <WindowTopX>-15</WindowTopX> + <WindowTopY>0</WindowTopY> + <ActiveSheet>5</ActiveSheet> + <ProtectStructure>False</ProtectStructure> + <ProtectWindows>False</ProtectWindows> + </ExcelWorkbook> + <Styles> + <Style ss:ID="Default" ss:Name="Normal"> + <Alignment ss:Vertical="Bottom"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s62" ss:Name="Goed"> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="12" ss:Color="#008000"/> + <Interior ss:Color="#CCFFCC" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s63"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + </Style> + <Style ss:ID="s64"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + </Style> + <Style ss:ID="s65"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders> + <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> + </Borders> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s67" ss:Parent="s62"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="12" ss:Color="#000000" + ss:Bold="1"/> + <Interior/> + </Style> + <Style ss:ID="s68"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + </Style> + <Style ss:ID="s69" ss:Parent="s62"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="12" ss:Color="#000000"/> + <Interior/> + </Style> + <Style ss:ID="s70"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + <Font ss:FontName="Verdana" x:Family="Swiss" ss:Size="9" ss:Color="#000000"/> + </Style> + <Style ss:ID="s71"> + <Alignment ss:Vertical="Top" ss:WrapText="1"/> + </Style> + <Style ss:ID="s72"> + <Alignment ss:Vertical="Bottom" ss:ShrinkToFit="1" ss:WrapText="1"/> + </Style> + <Style ss:ID="s74"> + <Alignment ss:Horizontal="Left" ss:Vertical="Bottom"/> + </Style> + <Style ss:ID="s75"> + <Alignment ss:Vertical="Top"/> + </Style> + <Style ss:ID="s76"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:ShrinkToFit="1" + ss:WrapText="1"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" + ss:Bold="1"/> + <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> + </Style> + <Style ss:ID="s77"> + <Alignment ss:Vertical="Top"/> + <Borders/> + <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> + <Interior/> + <NumberFormat/> + <Protection/> + </Style> + <Style ss:ID="s78"> + <Alignment ss:Horizontal="Left" ss:Vertical="Top"/> + </Style> + </Styles> + <Worksheet ss:Name="Data Elements"> + <Table ss:ExpandedColumnCount="16" ss:ExpandedRowCount="10" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s63" ss:DefaultColumnWidth="65.25" + ss:DefaultRowHeight="15"> + <Column ss:StyleID="s64" ss:Width="239.25"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="35.25"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="30.75"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="36" ss:Span="1"/> + <Column ss:Index="6" ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="95.25"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="149.25"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="213.75" ss:Span="1"/> + <Column ss:Index="10" ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="233.25"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="161.25"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="50.25"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="225.75"/> + <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="135" ss:Span="1"/> + <Column ss:Index="16" ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="150"/> + <Row ss:AutoFitHeight="0" ss:Height="42.9375" ss:StyleID="s65"> + <Cell><Data ss:Type="String">Element</Data></Cell> + <Cell><Data ss:Type="String">Card.</Data></Cell> + <Cell><Data ss:Type="String">Inv.</Data></Cell> + <Cell><Data ss:Type="String">IsModifier</Data></Cell> + <Cell><Data ss:Type="String">UML</Data></Cell> + <Cell><Data ss:Type="String">Type</Data></Cell> + <Cell><Data ss:Type="String">Binding</Data></Cell> + <Cell><Data ss:Type="String">Short Name</Data></Cell> + <Cell><Data ss:Type="String">Definition</Data></Cell> + <Cell><Data ss:Type="String">Requirements</Data></Cell> + <Cell><Data ss:Type="String">Comments</Data></Cell> + <Cell><Data ss:Type="String">Summary</Data></Cell> + <Cell><Data ss:Type="String">RIM Mapping</Data></Cell> + <Cell><Data ss:Type="String">v2 Mapping</Data></Cell> + <Cell><Data ss:Type="String">To Do</Data></Cell> + <Cell><Data ss:Type="String">Committee Notes</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="60"> + <Cell ss:StyleID="s67"><Data ss:Type="String">RelatedPerson</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">Resource</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">An person that is related to a patient, but who is not a direct target of care</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">Information about a person that is involved in the care for a patient, but who is not the target of healthcare, nor has a formal responsibility in the care process</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">Need to track persons related to the patient or the healthcare process.</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">role</Data></Cell> + <Cell ss:Index="15" ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">Patient contact is defined as a person in role. Hence RelatedPerson should also be a person in role. Struggling with V3 mappings here.</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="93.9375"> + <Cell ss:StyleID="s67"><Data ss:Type="String">RelatedPerson.identifier</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s69"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s69"/> + <Cell ss:StyleID="s69"><Data ss:Type="String">Identifier</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s69"><Data ss:Type="String">A Human identifier for this person</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">Identifier for a person within a particular scope.</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">People are known by a variety of ids. Some institutions maintain several, and most collect identifiers for exchange with other organizations concerning the patient. Examples are national person identifier and local identifier</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">id</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">NK1-33</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">Keeping RelatedPerson.id cardinality as a matter of safety in the same manner as Person Activate</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="93.9375"> + <Cell ss:StyleID="s67"><Data ss:Type="String">RelatedPerson.patient</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">1..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s69"/> + <Cell ss:StyleID="s69"/> + <Cell ss:StyleID="s69"><Data ss:Type="String">Resource(Patient)</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s69"><Data ss:Type="String">The patient this person is related to</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">The patient this person is related to</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">We need to know which Patient this RelatedPerson is related to.</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">scoper[classCode=PSN|ANM and determinerCode='INSTANCE']/playedRole[classCode='PAT']/id</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">PID-3</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">This rather complicated V3 mapping traverses the same path that the Patient resource has for contact but in opposite direction</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="93.9375"> + <Cell ss:StyleID="s67"><Data ss:Type="String">RelatedPerson.relationship</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s69"/> + <Cell ss:StyleID="s69"/> + <Cell ss:StyleID="s69"><Data ss:Type="String">CodeableConcept</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">PatientRelationshipType</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">The nature of the relationship</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">The nature of the relationship between a patient and the related person</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">We need to know the relationship with the patient since it influences the interpretation of the information attributed to this person.</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">code</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">NK1-3</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="47.0625"> + <Cell ss:StyleID="s67"><Data ss:Type="String">RelatedPerson.name</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s69"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s69"/> + <Cell ss:StyleID="s69"><Data ss:Type="String">HumanName</Data></Cell> + <Cell ss:StyleID="s69"/> + <Cell ss:StyleID="s69"><Data ss:Type="String">A name associated with the person</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">A name associated with the person</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">Related persons need to be identified by name, but it is uncommon to need details about multiple other names for that person</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">name</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">NK1-2</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="98.0625"> + <Cell ss:StyleID="s67"><Data ss:Type="String">RelatedPerson.telecom</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s69"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s69"/> + <Cell ss:StyleID="s69"><Data ss:Type="String">Contact</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s69"><Data ss:Type="String">A contact detail for the person</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">A contact detail for the person, e.g. a telephone number or an email address.</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">People have (primary) ways to contact them in some way such as phone, email.</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">Person may have multiple ways to be contacted with different uses or applicable periods. May need to have options for contacting the person urgently, and also to help with identification</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">telecom</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">NK1-5 / NK1-6 / NK1-40</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="75"> + <Cell ss:StyleID="s67"><Data ss:Type="String">RelatedPerson.gender</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s69"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s69"/> + <Cell ss:StyleID="s69"><Data ss:Type="String">CodeableConcept</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">AdministrativeGender</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">Gender for administrative purposes</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes. </Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">Needed for identification of the person, in combination with (at least) name and birth date. </Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">administrativeGender</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">NK1-15</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell ss:StyleID="s67"><Data ss:Type="String">RelatedPerson.address</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">0..1</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">Address</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">Address where the related person can be contacted or visited</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">Address where the related person can be contacted or visited</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">Need to keep track where the related person can be contacted per postal mail or visited</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">y</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">addr</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">NK1-4</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="45"> + <Cell ss:StyleID="s67"><Data ss:Type="String">RelatedPerson.photo</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">0..*</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">Attachment</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">Image of the person</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">Image of the person</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">Many EHR systems have the capability to capture an image of persons. Fits with newer social media usage too.</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"><Data ss:Type="String">player[classCode='PSN' and determinerCode='INSTANCE']/desc</Data></Cell> + <Cell ss:StyleID="s68"><Data ss:Type="String">OBX-5 - needs a profile</Data></Cell> + <Cell ss:StyleID="s68"/> + <Cell ss:StyleID="s68"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>-4</HorizontalResolution> + <VerticalResolution>-4</VerticalResolution> + </Print> + <Zoom>90</Zoom> + <FreezePanes/> + <FrozenNoSplit/> + <SplitHorizontal>1</SplitHorizontal> + <TopRowBottomPane>1</TopRowBottomPane> + <SplitVertical>1</SplitVertical> + <LeftColumnRightPane>11</LeftColumnRightPane> + <ActivePane>0</ActivePane> + <Panes> + <Pane> + <Number>3</Number> + </Pane> + <Pane> + <Number>1</Number> + <ActiveCol>1</ActiveCol> + </Pane> + <Pane> + <Number>2</Number> + </Pane> + <Pane> + <Number>0</Number> + <ActiveRow>9</ActiveRow> + <ActiveCol>12</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + <x:PageLayoutZoom>0</x:PageLayoutZoom> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Invariants"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="1" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s72" ss:DefaultColumnWidth="65.25" + ss:DefaultRowHeight="15"> + <Row ss:AutoFitHeight="0" ss:Height="15.9375" ss:StyleID="s65"> + <Cell><Data ss:Type="String">Id</Data></Cell> + <Cell><Data ss:Type="String">Name</Data></Cell> + <Cell><Data ss:Type="String">Context</Data></Cell> + <Cell><Data ss:Type="String">English</Data></Cell> + <Cell><Data ss:Type="String">OCL</Data></Cell> + <Cell><Data ss:Type="String">XPath</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>-4</HorizontalResolution> + <VerticalResolution>-4</VerticalResolution> + </Print> + <Panes> + <Pane> + <Number>3</Number> + <RangeSelection>R1</RangeSelection> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + <x:PageLayoutZoom>0</x:PageLayoutZoom> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Events"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="2" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s71" ss:DefaultColumnWidth="65.25" + ss:DefaultRowHeight="15"> + <Column ss:StyleID="s71" ss:AutoFitWidth="0" ss:Width="99.75" ss:Span="1"/> + <Column ss:Index="3" ss:StyleID="s71" ss:AutoFitWidth="0" ss:Width="171"/> + <Column ss:StyleID="s71" ss:AutoFitWidth="0" ss:Width="96.75"/> + <Column ss:StyleID="s71" ss:AutoFitWidth="0" ss:Width="107.25"/> + <Column ss:StyleID="s71" ss:AutoFitWidth="0" ss:Width="69.75"/> + <Row ss:AutoFitHeight="0" ss:Height="15.9375" ss:StyleID="s65"> + <Cell><Data ss:Type="String">Event Code</Data></Cell> + <Cell><Data ss:Type="String">Category</Data></Cell> + <Cell><Data ss:Type="String">Description</Data></Cell> + <Cell><Data ss:Type="String">Request Resources</Data></Cell> + <Cell><Data ss:Type="String">Response Resources</Data></Cell> + <Cell><Data ss:Type="String">Follow Ups</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:StyleID="Default"> + <Cell ss:StyleID="s71"><Data ss:Type="String">admin-notify</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">Notification</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">(see Patient)</Data></Cell> + <Cell ss:StyleID="s71"/> + <Cell ss:StyleID="s71"><Data ss:Type="String">RelatedPerson</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>600</HorizontalResolution> + <VerticalResolution>0</VerticalResolution> + </Print> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>2</ActiveRow> + <ActiveCol>4</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + <x:PageLayoutZoom>0</x:PageLayoutZoom> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Search"> + <Table ss:ExpandedColumnCount="4" ss:ExpandedRowCount="8" x:FullColumns="1" + x:FullRows="1" ss:DefaultColumnWidth="65.25" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="71.25"/> + <Column ss:AutoFitWidth="0" ss:Width="383.25"/> + <Column ss:Index="4" ss:Width="123"/> + <Row ss:AutoFitHeight="0" ss:Height="15.9375" ss:StyleID="s65"> + <Cell><Data ss:Type="String">Name</Data></Cell> + <Cell><Data ss:Type="String">Description</Data></Cell> + <Cell><Data ss:Type="String">Type</Data></Cell> + <Cell><Data ss:Type="String">Path</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="15.9375"> + <Cell><Data ss:Type="String">identifier</Data></Cell> + <Cell><Data ss:Type="String">A patient Identifier</Data></Cell> + <Cell><Data ss:Type="String">token</Data></Cell> + <Cell><Data ss:Type="String">RelatedPerson.identifier</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">name</Data></Cell> + <Cell><Data ss:Type="String">A portion of name in any name part</Data></Cell> + <Cell><Data ss:Type="String">string</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">RelatedPerson.name</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">phonetic</Data></Cell> + <Cell><Data ss:Type="String">A portion of name using some kind of phonetic matching algorithm</Data></Cell> + <Cell><Data ss:Type="String">string</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">telecom</Data></Cell> + <Cell><Data ss:Type="String">The value in any kind of contact</Data></Cell> + <Cell><Data ss:Type="String">string</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">RelatedPerson.telecom</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">address</Data></Cell> + <Cell><Data ss:Type="String">An address in any kind of address/part</Data></Cell> + <Cell><Data ss:Type="String">string</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">RelatedPerson.address</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">gender</Data></Cell> + <Cell><Data ss:Type="String">Gender of the person</Data></Cell> + <Cell><Data ss:Type="String">token</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">RelatedPerson.gender</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">patient</Data></Cell> + <Cell><Data ss:Type="String">The patient this person is related to</Data></Cell> + <Cell><Data ss:Type="String">reference</Data></Cell> + <Cell ss:StyleID="s69"><Data ss:Type="String">RelatedPerson.patient</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Print> + <ValidPrinterInfo/> + <PaperSizeIndex>9</PaperSizeIndex> + <HorizontalResolution>600</HorizontalResolution> + <VerticalResolution>0</VerticalResolution> + </Print> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>7</ActiveRow> + <ActiveCol>1</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + <x:PageLayoutZoom>0</x:PageLayoutZoom> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Examples"> + <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="5" x:FullColumns="1" + x:FullRows="1" ss:DefaultColumnWidth="65.25" ss:DefaultRowHeight="15"> + <Column ss:AutoFitWidth="0" ss:Width="116.25"/> + <Column ss:AutoFitWidth="0" ss:Width="251.25"/> + <Column ss:StyleID="s74" ss:AutoFitWidth="0" ss:Width="78.75"/> + <Column ss:Width="203.25"/> + <Row ss:AutoFitHeight="0" ss:Height="15.9375" ss:StyleID="s65"> + <Cell><Data ss:Type="String">Name</Data></Cell> + <Cell><Data ss:Type="String">Description</Data></Cell> + <Cell><Data ss:Type="String">Identity</Data></Cell> + <Cell><Data ss:Type="String">Filename</Data></Cell> + <Cell><Data ss:Type="String">Type</Data></Cell> + <Cell><Data ss:Type="String">In Book</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Benedicte</Data></Cell> + <Cell><Data ss:Type="String">RelatedPerson Benedicte du Marche</Data></Cell> + <Cell><Data ss:Type="String">benedicte</Data></Cell> + <Cell><Data ss:Type="String">relatedperson-example.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">y</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">Peter</Data></Cell> + <Cell><Data ss:Type="String">RelatedPerson Peter Chalmers</Data></Cell> + <Cell><Data ss:Type="String">peter</Data></Cell> + <Cell><Data ss:Type="String">relatedperson-example-peter.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">y</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">SarahAbels</Data></Cell> + <Cell><Data ss:Type="String">Sarah Abels</Data></Cell> + <Cell><Data ss:Type="String">f001</Data></Cell> + <Cell><Data ss:Type="String">relatedperson-example-f001-sarah.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">n</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0"> + <Cell><Data ss:Type="String">AriadneBor</Data></Cell> + <Cell><Data ss:Type="String">Ariadne Bor-Jansma</Data></Cell> + <Cell><Data ss:Type="String">f002</Data></Cell> + <Cell><Data ss:Type="String">relatedperson-example-f002-ariadne.xml</Data></Cell> + <Cell ss:Index="6"><Data ss:Type="String">n</Data></Cell> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>10</ActiveRow> + <ActiveCol>1</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + <x:PageLayoutZoom>0</x:PageLayoutZoom> + </WorksheetOptions> + </Worksheet> + <Worksheet ss:Name="Bindings"> + <Table ss:ExpandedColumnCount="7" ss:ExpandedRowCount="4" x:FullColumns="1" + x:FullRows="1" ss:StyleID="s75" ss:DefaultColumnWidth="65.25" + ss:DefaultRowHeight="15"> + <Column ss:StyleID="s75" ss:AutoFitWidth="0" ss:Width="137.25"/> + <Column ss:StyleID="s75" ss:AutoFitWidth="0" ss:Width="180"/> + <Column ss:Index="5" ss:StyleID="s75" ss:Width="257.25"/> + <Column ss:StyleID="s75" ss:AutoFitWidth="0" ss:Width="224.25"/> + <Column ss:StyleID="s75" ss:AutoFitWidth="0" ss:Width="260.25"/> + <Row ss:AutoFitHeight="0"> + <Cell ss:StyleID="s65"><Data ss:Type="String">Binding Name</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Definition</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Binding</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Example</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Reference</Data></Cell> + <Cell ss:StyleID="s65"><Data ss:Type="String">Description</Data></Cell> + <Cell ss:StyleID="s76"><Data ss:Type="String">Comments</Data></Cell> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="33"> + <Cell ss:StyleID="s71"><Data ss:Type="String">PatientRelationshipType</Data></Cell> + <Cell ss:StyleID="s70"><Data ss:Type="String">The nature of the relationship between a patient and the related person</Data></Cell> + <Cell ss:StyleID="s71"><Data ss:Type="String">value set</Data></Cell> + <Cell ss:StyleID="s77"><Data ss:Type="String">n</Data></Cell> + <Cell><Data ss:Type="String">valueset-relatedperson-relationshiptype</Data></Cell> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="Default"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell ss:StyleID="s71"/> + <Cell ss:StyleID="s71"/> + <Cell ss:StyleID="s71"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="s78"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="s71"/> + </Row> + <Row ss:AutoFitHeight="0" ss:Height="30"> + <Cell ss:StyleID="s63"/> + <Cell ss:StyleID="s63"/> + <Cell ss:StyleID="s71"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="s78"/> + <Cell ss:StyleID="Default"/> + <Cell ss:StyleID="s71"/> + </Row> + </Table> + <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> + <PageSetup> + <Header x:Margin="0.3"/> + <Footer x:Margin="0.3"/> + <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> + </PageSetup> + <Unsynced/> + <Selected/> + <Panes> + <Pane> + <Number>3</Number> + <ActiveRow>2</ActiveRow> + <ActiveCol>3</ActiveCol> + </Pane> + </Panes> + <ProtectObjects>False</ProtectObjects> + <ProtectScenarios>False</ProtectScenarios> + <x:PageLayoutZoom>0</x:PageLayoutZoom> + </WorksheetOptions> + </Worksheet> +</Workbook> diff --git a/hapi-tinder-plugin/src/main/resources/vm/dt_composite.vm b/hapi-tinder-plugin/src/main/resources/vm/dt_composite.vm index caf779d520d..ec58bfc0105 100644 --- a/hapi-tinder-plugin/src/main/resources/vm/dt_composite.vm +++ b/hapi-tinder-plugin/src/main/resources/vm/dt_composite.vm @@ -27,7 +27,7 @@ import ${import}; @DatatypeDef(name="${className}") public class ${className}Dt extends #{if}(${className}=="ResourceReference") BaseResourceReference #{else} BaseElement #{end} - implements ICompositeDatatype #{if}( ${className} == "Identifier" ), IQueryParameterType #{end} + implements ICompositeDatatype #{if}( ${className} == "Identifier" || ${className} == "Coding" ), IQueryParameterType #{end} { ######################### @@ -49,6 +49,22 @@ public class ${className}Dt setValue(theValue); } #end +#if ( ${className} == "Coding" ) + /** + * Creates a new Coding + */ + public CodingDt() { + // nothing + } + + /** + * Creates a new Coding with the given system and code + */ + public CodingDt(String theSystem, String theCode) { + setSystem(theSystem); + setCode(theCode); + } +#end #childExtensionFields( $childExtensionTypes ) #childVars( $children ) @@ -97,6 +113,45 @@ public class ${className}Dt } } #end +#if ( ${className} == "Coding" ) + /** + * Returns true if <code>this</code> Coding has the same {@link CodingDt#[[#]]#getCode() Code} + * and {@link CodingDt#[[#]]#getSystem() system} (as compared by simple equals comparison). + * Does not compare other Codes (e.g. {@link CodingDt#[[#]]#getUse() use}) or any extensions. + */ + public boolean matchesSystemAndCode(CodingDt theCoding) { + if (theCoding == null) { + return false; + } + return getCode().equals(theCoding.getCode()) && getSystem().equals(theCoding.getSystem()); + } + + /** + * {@inheritDoc} + */ + @Override + public String getValueAsQueryToken() { + if (org.apache.commons.lang3.StringUtils.isNotBlank(getSystem().getValueAsString())) { + return getSystem().getValueAsString() + '|' + getCode().getValueAsString(); + } else { + return getCode().getValueAsString(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public void setValueAsQueryToken(String theParameter) { + int barIndex = theParameter.indexOf('|'); + if (barIndex != -1) { + setSystem(new UriDt(theParameter.substring(0, barIndex))); + setCode(theParameter.substring(barIndex + 1)); + } else { + setCode(theParameter); + } + } +#end #childExtensionTypes( $childExtensionTypes ) diff --git a/hapi-tinder-plugin/src/main/resources/vm/templates.vm b/hapi-tinder-plugin/src/main/resources/vm/templates.vm index 49f9d403e97..29dc5af38f4 100644 --- a/hapi-tinder-plugin/src/main/resources/vm/templates.vm +++ b/hapi-tinder-plugin/src/main/resources/vm/templates.vm @@ -7,7 +7,11 @@ #if (${child.resourceRef} || ${child.hasMultipleTypes}) @Child(name="${child.elementNameSimplified}", order=${foreach.index}, min=${child.cardMin}, max=${child.cardMaxForChildAnnotation}, type={ #foreach ($nextType in ${child.referenceTypesForMultiple}) +#if ( ${child.resourceRef} && ${nextType} != "IResource" ) + ${packageBase}.resource.${nextType}.class, +#else ${nextType}.class, +#end #end }) #elseif ($!child.block) @@ -40,6 +44,11 @@ public boolean isEmpty() { return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty( #{foreach}($child in $childElements) ${child.variableName}#{if}($foreach.hasNext), #{end}#{end}); } + + public java.util.List<IElement> getAllChildElements() { + return ca.uhn.fhir.util.ElementUtil.allChildElements( #{foreach}($child in $childElements) ${child.variableName}#{if}($foreach.hasNext), #{end}#{end}); + } + #foreach ( $child in $childElements ) /** diff --git a/pom.xml b/pom.xml index d8205ab775d..cf5d79b6e11 100644 --- a/pom.xml +++ b/pom.xml @@ -23,8 +23,7 @@ <modules> <module>hapi-fhir-base</module> <module>hapi-tinder-plugin</module> - <!-- <module>hapi-tinder-test</module> - <module>hapi-fhir-structures-dstu</module> --> + <!-- <module>hapi-tinder-test</module> <module>hapi-fhir-structures-dstu</module> --> </modules> <properties>