From c8789223624494011d4d138d2d364317bb6ae591 Mon Sep 17 00:00:00 2001
From: jamesagnew
Date: Fri, 21 Feb 2014 18:30:08 -0500
Subject: [PATCH] More generator progress
---
.../ca/uhn/fhir/model/datatype/AddressDt.java | 48 +-
.../uhn/fhir/model/datatype/AttachmentDt.java | 12 +-
.../ca/uhn/fhir/model/datatype/CodeDt.java | 2 +-
.../model/datatype/CodeableConceptDt.java | 3 +-
.../ca/uhn/fhir/model/datatype/CodingDt.java | 6 +-
.../ca/uhn/fhir/model/datatype/ContactDt.java | 18 +-
.../uhn/fhir/model/datatype/HumanNameDt.java | 42 +-
.../uhn/fhir/model/datatype/IdentifierDt.java | 6 +-
.../uhn/fhir/model/datatype/NarrativeDt.java | 97 +-
.../uhn/fhir/model/datatype/QuantityDt.java | 156 +-
.../ca/uhn/fhir/model/datatype/XhtmlDt.java | 30 +
.../uhn/fhir/model/resource/Observation.java | 51 +-
.../ca/uhn/fhir/model/resource/Patient.java | 1673 ++++++++++++++---
.../java/ca/uhn/fhir/starter/BaseParser.java | 114 +-
.../ca/uhn/fhir/starter/DatatypeParser.java | 65 +-
.../ca/uhn/fhir/starter/ResourceParser.java | 80 +-
.../uhn/fhir/starter/model/BaseElement.java | 63 +-
.../java/ca/uhn/fhir/starter/model/Child.java | 10 +-
.../src/main/resources/dt_composite.vm | 37 +-
.../src/main/resources/resource.vm | 71 +-
.../src/main/resources/templates.vm | 51 +
.../src/test/resources/dt/narrative.xml | 332 ++++
.../src/test/resources/dt/quantity.xml | 408 ++++
.../vs/valueset-administrative-gender.xml | 23 +
.../resources/vs/valueset-marital-status.xml | 39 +
25 files changed, 2818 insertions(+), 619 deletions(-)
create mode 100644 hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/XhtmlDt.java
create mode 100644 hapi-fhir-starter/src/main/resources/templates.vm
create mode 100644 hapi-fhir-starter/src/test/resources/dt/narrative.xml
create mode 100644 hapi-fhir-starter/src/test/resources/dt/quantity.xml
create mode 100644 hapi-fhir-starter/src/test/resources/vs/valueset-administrative-gender.xml
create mode 100644 hapi-fhir-starter/src/test/resources/vs/valueset-marital-status.xml
diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/AddressDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/AddressDt.java
index 966c20757a8..7fcb76823e5 100644
--- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/AddressDt.java
+++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/AddressDt.java
@@ -1,3 +1,5 @@
+
+
package ca.uhn.fhir.model.datatype;
import java.util.*;
@@ -6,7 +8,7 @@ import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.datatype.*;
/**
- * HAPI/FHIR ${resourceName} Datatype
+ * HAPI/FHIR Address Datatype
* (A postal address)
*
*
@@ -16,7 +18,7 @@ import ca.uhn.fhir.model.datatype.*;
*
*
* Requirements:
- * A postal address
+ * Need to be able to record postal addresses, along with notes about their use
*
*/
@DatatypeDef(name="Address")
@@ -26,25 +28,25 @@ public class AddressDt extends BaseCompositeDatatype {
private CodeDt myUse;
@Child(name="text", order=1, min=0, max=1)
- private String myText;
+ private StringDt myText;
@Child(name="line", order=2, min=0, max=Child.MAX_UNLIMITED)
- private List myLine;
+ private List myLine;
@Child(name="city", order=3, min=0, max=1)
- private String myCity;
+ private StringDt myCity;
@Child(name="state", order=4, min=0, max=1)
- private String myState;
+ private StringDt myState;
@Child(name="zip", order=5, min=0, max=1)
- private String myZip;
+ private StringDt myZip;
@Child(name="country", order=6, min=0, max=1)
- private String myCountry;
+ private StringDt myCountry;
@Child(name="period", order=7, min=0, max=1)
- private Period myPeriod;
+ private PeriodDt myPeriod;
/**
* Gets the value(s) for use (home | work | temp | old - purpose of this address)
@@ -78,7 +80,7 @@ public class AddressDt extends BaseCompositeDatatype {
* A full text representation of the address
*
*/
- public String getText() {
+ public StringDt getText() {
return myText;
}
@@ -90,7 +92,7 @@ public class AddressDt extends BaseCompositeDatatype {
* A full text representation of the address
*
*/
- public void setText(String theValue) {
+ public void setText(StringDt theValue) {
myText = theValue;
}
@@ -103,7 +105,7 @@ public class AddressDt extends BaseCompositeDatatype {
P.O. Box number, delivery hints, and similar address information
*
*/
- public List getLine() {
+ public List getLine() {
return myLine;
}
@@ -116,7 +118,7 @@ P.O. Box number, delivery hints, and similar address information
P.O. Box number, delivery hints, and similar address information
*
*/
- public void setLine(List theValue) {
+ public void setLine(List theValue) {
myLine = theValue;
}
@@ -128,7 +130,7 @@ P.O. Box number, delivery hints, and similar address information
* The name of the city, town, village or other community or delivery center.
*
*/
- public String getCity() {
+ public StringDt getCity() {
return myCity;
}
@@ -140,7 +142,7 @@ P.O. Box number, delivery hints, and similar address information
* The name of the city, town, village or other community or delivery center.
*
*/
- public void setCity(String theValue) {
+ public void setCity(StringDt theValue) {
myCity = theValue;
}
@@ -152,7 +154,7 @@ P.O. Box number, delivery hints, and similar address information
* Sub-unit of a country with limited sovereignty in a federally organized country. A code may be used if codes are in common use (i.e. US 2 letter state codes).
*
*/
- public String getState() {
+ public StringDt getState() {
return myState;
}
@@ -164,7 +166,7 @@ P.O. Box number, delivery hints, and similar address information
* Sub-unit of a country with limited sovereignty in a federally organized country. A code may be used if codes are in common use (i.e. US 2 letter state codes).
*
*/
- public void setState(String theValue) {
+ public void setState(StringDt theValue) {
myState = theValue;
}
@@ -176,7 +178,7 @@ P.O. Box number, delivery hints, and similar address information
* A postal code designating a region defined by the postal service.
*
*/
- public String getZip() {
+ public StringDt getZip() {
return myZip;
}
@@ -188,7 +190,7 @@ P.O. Box number, delivery hints, and similar address information
* A postal code designating a region defined by the postal service.
*
*/
- public void setZip(String theValue) {
+ public void setZip(StringDt theValue) {
myZip = theValue;
}
@@ -200,7 +202,7 @@ P.O. Box number, delivery hints, and similar address information
* Country - a nation as commonly understood or generally accepted
*
*/
- public String getCountry() {
+ public StringDt getCountry() {
return myCountry;
}
@@ -212,7 +214,7 @@ P.O. Box number, delivery hints, and similar address information
* Country - a nation as commonly understood or generally accepted
*
*/
- public void setCountry(String theValue) {
+ public void setCountry(StringDt theValue) {
myCountry = theValue;
}
@@ -224,7 +226,7 @@ P.O. Box number, delivery hints, and similar address information
* Time period when address was/is in use
*
*/
- public Period getPeriod() {
+ public PeriodDt getPeriod() {
return myPeriod;
}
@@ -236,7 +238,7 @@ P.O. Box number, delivery hints, and similar address information
* Time period when address was/is in use
*
*/
- public void setPeriod(Period theValue) {
+ public void setPeriod(PeriodDt theValue) {
myPeriod = theValue;
}
diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/AttachmentDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/AttachmentDt.java
index e149df244b4..a8391ac4623 100644
--- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/AttachmentDt.java
+++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/AttachmentDt.java
@@ -9,10 +9,10 @@ import ca.uhn.fhir.model.api.annotation.Description;
public class AttachmentDt extends BaseCompositeDatatype {
@Child(name="contentType", order=0, min=1)
- private CodeDt> myContentType;
+ private CodeDt myContentType;
@Child(name="language", order=1)
- private CodeDt> myLanguage;
+ private CodeDt myLanguage;
@Child(name="data", order=2)
private Base64BinaryDt myData;
@@ -31,19 +31,19 @@ public class AttachmentDt extends BaseCompositeDatatype {
@Description("Label to display in place of the data")
private StringDt myTitle;
- public CodeDt> getContentType() {
+ public CodeDt getContentType() {
return myContentType;
}
- public void setContentType(CodeDt> theContentType) {
+ public void setContentType(CodeDt theContentType) {
myContentType = theContentType;
}
- public CodeDt> getLanguage() {
+ public CodeDt getLanguage() {
return myLanguage;
}
- public void setLanguage(CodeDt> theLanguage) {
+ public void setLanguage(CodeDt theLanguage) {
myLanguage = theLanguage;
}
diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/CodeDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/CodeDt.java
index 6ed4da709c3..c205ba46a65 100644
--- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/CodeDt.java
+++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/CodeDt.java
@@ -6,7 +6,7 @@ import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.parser.DataFormatException;
@DatatypeDef(name = "code")
-public class CodeDt extends BasePrimitiveDatatype implements ICodedDatatype {
+public class CodeDt extends BasePrimitiveDatatype implements ICodedDatatype {
private String myValue;
diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/CodeableConceptDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/CodeableConceptDt.java
index 2cf20977f51..85d09b94645 100644
--- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/CodeableConceptDt.java
+++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/CodeableConceptDt.java
@@ -3,12 +3,11 @@ package ca.uhn.fhir.model.datatype;
import java.util.List;
import ca.uhn.fhir.model.api.BaseCompositeDatatype;
-import ca.uhn.fhir.model.api.ICodeEnum;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.DatatypeDef;
@DatatypeDef(name="CodeableConcept")
-public class CodeableConceptDt extends BaseCompositeDatatype implements ICodedDatatype {
+public class CodeableConceptDt extends BaseCompositeDatatype implements ICodedDatatype {
@Child(name="coding", order=0, min=0, max=Child.MAX_UNLIMITED)
private List myCoding;
diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/CodingDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/CodingDt.java
index ebebac177ad..c2c348a3cb2 100644
--- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/CodingDt.java
+++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/CodingDt.java
@@ -18,7 +18,7 @@ public class CodingDt extends BaseCompositeDatatype {
private StringDt myVersion;
@Child(name="code", order=2)
- private CodeDt> myCode;
+ private CodeDt myCode;
@Child(name="display", order=3)
private StringDt myDisplay;
@@ -46,11 +46,11 @@ public class CodingDt extends BaseCompositeDatatype {
myVersion = theVersion;
}
- public CodeDt> getCode() {
+ public CodeDt getCode() {
return myCode;
}
- public void setCode(CodeDt> theCode) {
+ public void setCode(CodeDt theCode) {
myCode = theCode;
}
diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/ContactDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/ContactDt.java
index 99817cbe119..118a05406aa 100644
--- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/ContactDt.java
+++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/ContactDt.java
@@ -1,3 +1,5 @@
+
+
package ca.uhn.fhir.model.datatype;
import java.util.*;
@@ -6,7 +8,7 @@ import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.datatype.*;
/**
- * HAPI/FHIR ${resourceName} Datatype
+ * HAPI/FHIR Contact Datatype
* (Technology mediated contact details (phone, fax, email, etc))
*
*
@@ -16,7 +18,7 @@ import ca.uhn.fhir.model.datatype.*;
*
*
* Requirements:
- * Technology mediated contact details (phone, fax, email, etc)
+ * Need to track phone, fax, mobile, sms numbers, email addresses, twitter tags, etc.
*
*/
@DatatypeDef(name="Contact")
@@ -26,13 +28,13 @@ public class ContactDt extends BaseCompositeDatatype {
private CodeDt mySystem;
@Child(name="value", order=1, min=0, max=1)
- private String myValue;
+ private StringDt myValue;
@Child(name="use", order=2, min=0, max=1)
private CodeDt myUse;
@Child(name="period", order=3, min=0, max=1)
- private Period myPeriod;
+ private PeriodDt myPeriod;
/**
* Gets the value(s) for system (phone | fax | email | url)
@@ -66,7 +68,7 @@ public class ContactDt extends BaseCompositeDatatype {
* The actual contact details, in a form that is meaningful to the designated communication system (i.e. phone number or email address).
*
*/
- public String getValue() {
+ public StringDt getValue() {
return myValue;
}
@@ -78,7 +80,7 @@ public class ContactDt extends BaseCompositeDatatype {
* The actual contact details, in a form that is meaningful to the designated communication system (i.e. phone number or email address).
*
*/
- public void setValue(String theValue) {
+ public void setValue(StringDt theValue) {
myValue = theValue;
}
@@ -114,7 +116,7 @@ public class ContactDt extends BaseCompositeDatatype {
* Time period when the contact was/is in use
*
*/
- public Period getPeriod() {
+ public PeriodDt getPeriod() {
return myPeriod;
}
@@ -126,7 +128,7 @@ public class ContactDt extends BaseCompositeDatatype {
* Time period when the contact was/is in use
*
*/
- public void setPeriod(Period theValue) {
+ public void setPeriod(PeriodDt theValue) {
myPeriod = theValue;
}
diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/HumanNameDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/HumanNameDt.java
index 9911cd7cced..e72f24412b7 100644
--- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/HumanNameDt.java
+++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/HumanNameDt.java
@@ -1,3 +1,5 @@
+
+
package ca.uhn.fhir.model.datatype;
import java.util.*;
@@ -6,7 +8,7 @@ import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.datatype.*;
/**
- * HAPI/FHIR ${resourceName} Datatype
+ * HAPI/FHIR HumanName Datatype
* (Name of a human - parts and usage)
*
*
@@ -16,7 +18,7 @@ import ca.uhn.fhir.model.datatype.*;
*
*
* Requirements:
- * Name of a human - parts and usage
+ * Need to be able to record names, along with notes about their use
*
*/
@DatatypeDef(name="HumanName")
@@ -26,22 +28,22 @@ public class HumanNameDt extends BaseCompositeDatatype {
private CodeDt myUse;
@Child(name="text", order=1, min=0, max=1)
- private String myText;
+ private StringDt myText;
@Child(name="family", order=2, min=0, max=Child.MAX_UNLIMITED)
- private List myFamily;
+ private List myFamily;
@Child(name="given", order=3, min=0, max=Child.MAX_UNLIMITED)
- private List myGiven;
+ private List myGiven;
@Child(name="prefix", order=4, min=0, max=Child.MAX_UNLIMITED)
- private List myPrefix;
+ private List myPrefix;
@Child(name="suffix", order=5, min=0, max=Child.MAX_UNLIMITED)
- private List mySuffix;
+ private List mySuffix;
@Child(name="period", order=6, min=0, max=1)
- private Period myPeriod;
+ private PeriodDt myPeriod;
/**
* Gets the value(s) for use (usual | official | temp | nickname | anonymous | old | maiden)
@@ -75,7 +77,7 @@ public class HumanNameDt extends BaseCompositeDatatype {
* A full text representation of the name
*
*/
- public String getText() {
+ public StringDt getText() {
return myText;
}
@@ -87,7 +89,7 @@ public class HumanNameDt extends BaseCompositeDatatype {
* A full text representation of the name
*
*/
- public void setText(String theValue) {
+ public void setText(StringDt theValue) {
myText = theValue;
}
@@ -99,7 +101,7 @@ public class HumanNameDt extends BaseCompositeDatatype {
* 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 List getFamily() {
return myFamily;
}
@@ -111,7 +113,7 @@ public class HumanNameDt extends BaseCompositeDatatype {
* 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(List theValue) {
myFamily = theValue;
}
@@ -123,7 +125,7 @@ public class HumanNameDt extends BaseCompositeDatatype {
* Given name
*
*/
- public List getGiven() {
+ public List getGiven() {
return myGiven;
}
@@ -135,7 +137,7 @@ public class HumanNameDt extends BaseCompositeDatatype {
* Given name
*
*/
- public void setGiven(List theValue) {
+ public void setGiven(List theValue) {
myGiven = theValue;
}
@@ -147,7 +149,7 @@ public class HumanNameDt extends BaseCompositeDatatype {
* 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 List getPrefix() {
return myPrefix;
}
@@ -159,7 +161,7 @@ public class HumanNameDt extends BaseCompositeDatatype {
* 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(List theValue) {
myPrefix = theValue;
}
@@ -171,7 +173,7 @@ public class HumanNameDt extends BaseCompositeDatatype {
* 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 List getSuffix() {
return mySuffix;
}
@@ -183,7 +185,7 @@ public class HumanNameDt extends BaseCompositeDatatype {
* 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(List theValue) {
mySuffix = theValue;
}
@@ -195,7 +197,7 @@ public class HumanNameDt extends BaseCompositeDatatype {
* Indicates the period of time when this name was valid for the named person.
*
*/
- public Period getPeriod() {
+ public PeriodDt getPeriod() {
return myPeriod;
}
@@ -207,7 +209,7 @@ public class HumanNameDt extends BaseCompositeDatatype {
* Indicates the period of time when this name was valid for the named person.
*
*/
- public void setPeriod(Period theValue) {
+ public void setPeriod(PeriodDt theValue) {
myPeriod = theValue;
}
diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/IdentifierDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/IdentifierDt.java
index 3fb4ea4aba0..7dca806747e 100644
--- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/IdentifierDt.java
+++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/IdentifierDt.java
@@ -14,7 +14,7 @@ public class IdentifierDt extends BaseCompositeDatatype {
@Child(name="use", order=0)
@CodeableConceptElement(type=IdentifierUseEnum.class)
- private CodeDt myUse;
+ private CodeDt myUse;
@Child(name="label", order=1)
private StringDt myLabel;
@@ -32,11 +32,11 @@ public class IdentifierDt extends BaseCompositeDatatype {
@ChildResource(types= {Organization.class})
private ResourceReference myAssigner;
- public CodeDt getUse() {
+ public CodeDt getUse() {
return myUse;
}
- public void setUse(CodeDt theUse) {
+ public void setUse(CodeDt theUse) {
myUse = theUse;
}
diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/NarrativeDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/NarrativeDt.java
index d7ccb38955a..92dbcde4388 100644
--- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/NarrativeDt.java
+++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/NarrativeDt.java
@@ -1,37 +1,82 @@
+
+
package ca.uhn.fhir.model.datatype;
-import ca.uhn.fhir.model.api.BaseCompositeDatatype;
-import ca.uhn.fhir.model.api.CodeableConceptElement;
-import ca.uhn.fhir.model.api.annotation.Child;
-import ca.uhn.fhir.model.api.annotation.DatatypeDef;
-import ca.uhn.fhir.model.enm.NarrativeStatusEnum;
+import java.util.*;
+import ca.uhn.fhir.model.api.*;
+import ca.uhn.fhir.model.api.annotation.*;
+import ca.uhn.fhir.model.datatype.*;
-@DatatypeDef(name="Narrative")
+/**
+ * HAPI/FHIR Narrative Datatype
+ * (A human-readable formatted text, including images)
+ *
+ *
+ * Definition:
+ * A human-readable formatted text, including images
+ *
+ *
+ *
+ * Requirements:
+ *
+ *
+ */
+@DatatypeDef(name="Narrative")
public class NarrativeDt extends BaseCompositeDatatype {
- @Child(name="status", order=0, min=1)
- @CodeableConceptElement(type=NarrativeStatusEnum.class)
- private CodeDt myStatus;
-
- @Child(name="div", order=1)
- private StringDt myDiv;
+ @Child(name="status", order=0, min=1, max=1)
+ private CodeDt myStatus;
- public StringDt getDiv() {
- return myDiv;
- }
-
- public CodeDt getStatus() {
+ @Child(name="div", order=1, min=1, max=1)
+ private XhtmlDt myDiv;
+
+ /**
+ * Gets the value(s) for status (generated | extensions | additional)
+ *
+ *
+ * Definition:
+ * The status of the narrative - whether it's entirely generated (from just the defined data or the extensions too), or whether a human authored it and it may contain additional data
+ *
+ */
+ public CodeDt getStatus() {
return myStatus;
}
-
- public void setDiv(StringDt theDiv) {
- myDiv = theDiv;
+ /**
+ * Sets the value(s) for status (generated | extensions | additional)
+ *
+ *
+ * Definition:
+ * The status of the narrative - whether it's entirely generated (from just the defined data or the extensions too), or whether a human authored it and it may contain additional data
+ *
+ */
+ public void setStatus(CodeDt theValue) {
+ myStatus = theValue;
}
-
- public void setStatus(CodeDt theStatus) {
- myStatus = theStatus;
- }
-
-}
+ /**
+ * Gets the value(s) for div (Limited xhtml content)
+ *
+ *
+ * Definition:
+ * The actual narrative content, a stripped down version of XHTML
+ *
+ */
+ public XhtmlDt getDiv() {
+ return myDiv;
+ }
+
+ /**
+ * Sets the value(s) for div (Limited xhtml content)
+ *
+ *
+ * Definition:
+ * The actual narrative content, a stripped down version of XHTML
+ *
+ */
+ public void setDiv(XhtmlDt theValue) {
+ myDiv = theValue;
+ }
+
+
+}
\ No newline at end of file
diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/QuantityDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/QuantityDt.java
index 9d74a8c9966..ac520f1d69d 100644
--- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/QuantityDt.java
+++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/QuantityDt.java
@@ -1,69 +1,163 @@
+
+
package ca.uhn.fhir.model.datatype;
-import ca.uhn.fhir.model.api.BaseCompositeDatatype;
-import ca.uhn.fhir.model.api.annotation.Constraint;
-import ca.uhn.fhir.model.api.annotation.Child;
-import ca.uhn.fhir.model.api.annotation.DatatypeDef;
-import ca.uhn.fhir.model.enm.QuantityComparatorEnum;
+import java.util.*;
+import ca.uhn.fhir.model.api.*;
+import ca.uhn.fhir.model.api.annotation.*;
+import ca.uhn.fhir.model.datatype.*;
-@DatatypeDef(name="Quantity")
+/**
+ * HAPI/FHIR Quantity Datatype
+ * (A measured or measurable amount)
+ *
+ *
+ * Definition:
+ * A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies
+ *
+ *
+ *
+ * Requirements:
+ * Need to able to capture all sorts of measured values, even if the measured value are not precisely quantified. Values include exact measures such as 3.51g, customary units such as 3 tablets, and currencies such as $100.32USD
+ *
+ */
+@DatatypeDef(name="Quantity")
public class QuantityDt extends BaseCompositeDatatype {
- @Child(name="value",order=0, min=0, max=1)
+ @Child(name="value", order=0, min=0, max=1)
private DecimalDt myValue;
- @Child(name="comparator",order=1, min=0, max=1)
- private CodeDt myComparator;
+ @Child(name="comparator", order=1, min=0, max=1)
+ private CodeDt myComparator;
- @Child(name="units",order=2, min=0, max=1)
+ @Child(name="units", order=2, min=0, max=1)
private StringDt myUnits;
- @Child(name="system",order=3, min=0, max=1)
- @Constraint(coRequirements= {"code"})
+ @Child(name="system", order=3, min=0, max=1)
private UriDt mySystem;
- @Child(name="code",order=4, min=0, max=1)
- @Constraint(coRequirements= {"system"})
- private CodeDt> myCode;
-
+ @Child(name="code", order=4, min=0, max=1)
+ private CodeDt myCode;
+
+ /**
+ * Gets the value(s) for value (Numerical value (with implicit precision))
+ *
+ *
+ * Definition:
+ * The value of the measured amount. The value includes an implicit precision in the presentation of the value
+ *
+ */
public DecimalDt getValue() {
return myValue;
}
+ /**
+ * Sets the value(s) for value (Numerical value (with implicit precision))
+ *
+ *
+ * Definition:
+ * The value of the measured amount. The value includes an implicit precision in the presentation of the value
+ *
+ */
public void setValue(DecimalDt theValue) {
myValue = theValue;
}
-
- public CodeDt getComparator() {
+
+ /**
+ * Gets the value(s) for comparator (< | <= | >= | > - how to understand the value)
+ *
+ *
+ * Definition:
+ * How the value should be understood and represented - whether the actual value is greater or less than the stated value due to measurement issues. E.g. if the comparator is "<" , then the real value is < stated value
+ *
+ */
+ public CodeDt getComparator() {
return myComparator;
}
- public void setComparator(CodeDt theComparator) {
- myComparator = theComparator;
+ /**
+ * Sets the value(s) for comparator (< | <= | >= | > - how to understand the value)
+ *
+ *
+ * Definition:
+ * How the value should be understood and represented - whether the actual value is greater or less than the stated value due to measurement issues. E.g. if the comparator is "<" , then the real value is < stated value
+ *
+ */
+ public void setComparator(CodeDt theValue) {
+ myComparator = theValue;
}
-
+
+ /**
+ * Gets the value(s) for units (Unit representation)
+ *
+ *
+ * Definition:
+ * A human-readable form of the units
+ *
+ */
public StringDt getUnits() {
return myUnits;
}
- public void setUnits(StringDt theUnits) {
- myUnits = theUnits;
+ /**
+ * Sets the value(s) for units (Unit representation)
+ *
+ *
+ * Definition:
+ * A human-readable form of the units
+ *
+ */
+ public void setUnits(StringDt theValue) {
+ myUnits = theValue;
}
-
+
+ /**
+ * Gets the value(s) for system (System that defines coded unit form)
+ *
+ *
+ * Definition:
+ * The identification of the system that provides the coded form of the unit
+ *
+ */
public UriDt getSystem() {
return mySystem;
}
- public void setSystem(UriDt theSystem) {
- mySystem = theSystem;
+ /**
+ * Sets the value(s) for system (System that defines coded unit form)
+ *
+ *
+ * Definition:
+ * The identification of the system that provides the coded form of the unit
+ *
+ */
+ public void setSystem(UriDt theValue) {
+ mySystem = theValue;
}
-
- public CodeDt> getCode() {
+
+ /**
+ * Gets the value(s) for code (Coded form of the unit)
+ *
+ *
+ * Definition:
+ * A computer processable form of the units in some unit representation system
+ *
+ */
+ public CodeDt getCode() {
return myCode;
}
- public void setCode(CodeDt> theCode) {
- myCode = theCode;
+ /**
+ * Sets the value(s) for code (Coded form of the unit)
+ *
+ *
+ * Definition:
+ * A computer processable form of the units in some unit representation system
+ *
+ */
+ public void setCode(CodeDt theValue) {
+ myCode = theValue;
}
-}
+
+}
\ No newline at end of file
diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/XhtmlDt.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/XhtmlDt.java
new file mode 100644
index 00000000000..2ff0b816886
--- /dev/null
+++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/XhtmlDt.java
@@ -0,0 +1,30 @@
+package ca.uhn.fhir.model.datatype;
+
+import ca.uhn.fhir.model.api.IPrimitiveDatatype;
+import ca.uhn.fhir.parser.DataFormatException;
+
+public class XhtmlDt implements IPrimitiveDatatype {
+
+ private String myValue;
+
+ @Override
+ public void setValueAsString(String theValue) throws DataFormatException {
+ myValue=theValue;
+ }
+
+ @Override
+ public String getValueAsString() {
+ return myValue;
+ }
+
+ @Override
+ public String getValue() {
+ return myValue;
+ }
+
+ @Override
+ public void setValue(String theValue) throws DataFormatException {
+ myValue=theValue;
+ }
+
+}
diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/resource/Observation.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/resource/Observation.java
index 6a92d9c3164..2c67a28a0ec 100644
--- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/resource/Observation.java
+++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/resource/Observation.java
@@ -27,6 +27,7 @@ import ca.uhn.fhir.model.enm.ObservationCodesEnum;
import ca.uhn.fhir.model.enm.ObservationInterpretationEnum;
import ca.uhn.fhir.model.enm.ObservationMethodEnum;
import ca.uhn.fhir.model.enm.ObservationRelationshipTypeEnum;
+import ca.uhn.fhir.model.enm.ObservationReliabilityEnum;
import ca.uhn.fhir.model.enm.ObservationStatusEnum;
import ca.uhn.fhir.model.enm.ReferenceRangeMeaningEnum;
@@ -35,7 +36,7 @@ public class Observation extends BaseResourceWithIdentifier {
@Child(name="name", order=0, min=1, max=1)
@CodeableConceptElement(type=ObservationCodesEnum.class)
- private CodeableConceptDt myName;
+ private CodeableConceptDt myName;
@Child(name="value", order=1, min=0, max=1, choice=@Choice(types= {
QuantityDt.class,
@@ -50,7 +51,7 @@ public class Observation extends BaseResourceWithIdentifier {
@Child(name="interpretation", order=2)
@CodeableConceptElement(type=ObservationInterpretationEnum.class)
- private CodeableConceptDt myInterpretation;
+ private CodeableConceptDt myInterpretation;
@Child(name="comments", order=3)
private StringDt myComments;
@@ -66,19 +67,19 @@ public class Observation extends BaseResourceWithIdentifier {
@Child(name="status", order=6, min=1)
@CodeableConceptElement(type=ObservationStatusEnum.class)
- private CodeableConceptDt myStatus;
+ private CodeableConceptDt myStatus;
@Child(name="reliability", order=7, min=1)
- @CodeableConceptElement(type=ObservationStatusEnum.class)
- private CodeableConceptDt myReliability;
+ @CodeableConceptElement(type=ObservationReliabilityEnum.class)
+ private CodeableConceptDt myReliability;
@Child(name="bodySite", order=8)
@CodeableConceptElement(type=BodySiteEnum.class)
- private CodeableConceptDt myBodySite;
+ private CodeableConceptDt myBodySite;
@Child(name="method", order=9)
@CodeableConceptElement(type=ObservationMethodEnum.class)
- private CodeableConceptDt myMethod;
+ private CodeableConceptDt myMethod;
@Child(name="subject", order=11)
@ChildResource(types= {
@@ -109,7 +110,7 @@ public class Observation extends BaseResourceWithIdentifier {
{
@Child(name="type", order = 0)
@CodeableConceptElement(type=ObservationRelationshipTypeEnum.class)
- private CodeDt myType;
+ private CodeDt myType;
@Child(name="target", order = 1)
@ChildResource(types= {
@@ -117,11 +118,11 @@ public class Observation extends BaseResourceWithIdentifier {
})
private ResourceReference myTarget;
- public CodeDt getType() {
+ public CodeDt getType() {
return myType;
}
- public void setType(CodeDt theType) {
+ public void setType(CodeDt theType) {
myType = theType;
}
@@ -147,7 +148,7 @@ public class Observation extends BaseResourceWithIdentifier {
@Child(name="meaning", order=2)
@CodeableConceptElement(type=ReferenceRangeMeaningEnum.class)
- private CodeableConceptDt myMeaning;
+ private CodeableConceptDt myMeaning;
@Child(name="age", order=3)
private RangeDt myAge;
@@ -168,11 +169,11 @@ public class Observation extends BaseResourceWithIdentifier {
myHigh = theHigh;
}
- public CodeableConceptDt getMeaning() {
+ public CodeableConceptDt getMeaning() {
return myMeaning;
}
- public void setMeaning(CodeableConceptDt theMeaning) {
+ public void setMeaning(CodeableConceptDt theMeaning) {
myMeaning = theMeaning;
}
@@ -187,11 +188,11 @@ public class Observation extends BaseResourceWithIdentifier {
}
- public CodeableConceptDt getName() {
+ public CodeableConceptDt getName() {
return myName;
}
- public void setName(CodeableConceptDt theName) {
+ public void setName(CodeableConceptDt theName) {
myName = theName;
}
@@ -203,11 +204,11 @@ public class Observation extends BaseResourceWithIdentifier {
myValue = theValue;
}
- public CodeableConceptDt getInterpretation() {
+ public CodeableConceptDt getInterpretation() {
return myInterpretation;
}
- public void setInterpretation(CodeableConceptDt theInterpretation) {
+ public void setInterpretation(CodeableConceptDt theInterpretation) {
myInterpretation = theInterpretation;
}
@@ -235,35 +236,35 @@ public class Observation extends BaseResourceWithIdentifier {
myIssued = theIssued;
}
- public CodeableConceptDt getStatus() {
+ public CodeableConceptDt getStatus() {
return myStatus;
}
- public void setStatus(CodeableConceptDt theStatus) {
+ public void setStatus(CodeableConceptDt theStatus) {
myStatus = theStatus;
}
- public CodeableConceptDt getReliability() {
+ public CodeableConceptDt getReliability() {
return myReliability;
}
- public void setReliability(CodeableConceptDt theReliability) {
+ public void setReliability(CodeableConceptDt theReliability) {
myReliability = theReliability;
}
- public CodeableConceptDt getBodySite() {
+ public CodeableConceptDt getBodySite() {
return myBodySite;
}
- public void setBodySite(CodeableConceptDt theBodySite) {
+ public void setBodySite(CodeableConceptDt theBodySite) {
myBodySite = theBodySite;
}
- public CodeableConceptDt getMethod() {
+ public CodeableConceptDt getMethod() {
return myMethod;
}
- public void setMethod(CodeableConceptDt theMethod) {
+ public void setMethod(CodeableConceptDt theMethod) {
myMethod = theMethod;
}
diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/resource/Patient.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/resource/Patient.java
index e78fbafe2f2..6e19a20c4d4 100644
--- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/resource/Patient.java
+++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/model/resource/Patient.java
@@ -1,3 +1,5 @@
+
+
package ca.uhn.fhir.model.resource;
import java.util.*;
@@ -19,7 +21,7 @@ import ca.uhn.fhir.model.datatype.*;
* Tracking patient is the center of the healthcare process
*
*/
-@ResourceDef(name="${resourceName}")
+@ResourceDef(name="Patient")
public class Patient extends BaseResource {
@Child(name="identifier", order=0, min=0, max=Child.MAX_UNLIMITED)
@@ -37,7 +39,10 @@ public class Patient extends BaseResource {
@Child(name="birthDate", order=4, min=0, max=1)
private DateTimeDt myBirthDate;
- @Child(name="deceased[x]", order=5, min=0, max=1)
+ @Child(name="deceased", order=5, min=0, max=1, choice=@Choice(types= {
+ BooleanDt.class,
+ DateTimeDt.class,
+ }))
private IDatatype myDeceased;
@Child(name="address", order=6, min=0, max=Child.MAX_UNLIMITED)
@@ -46,7 +51,10 @@ public class Patient extends BaseResource {
@Child(name="maritalStatus", order=7, min=0, max=1)
private CodeableConceptDt myMaritalStatus;
- @Child(name="multipleBirth[x]", order=8, min=0, max=1)
+ @Child(name="multipleBirth", order=8, min=0, max=1, choice=@Choice(types= {
+ BooleanDt.class,
+ IntegerDt.class,
+ }))
private IDatatype myMultipleBirth;
@Child(name="photo", order=9, min=0, max=Child.MAX_UNLIMITED)
@@ -61,10 +69,17 @@ public class Patient extends BaseResource {
@Child(name="communication", order=12, min=0, max=Child.MAX_UNLIMITED)
private List myCommunication;
- @Child(name="careProvider", order=13, min=0, max=Child.MAX_UNLIMITED)
+ @Child(name="careProvider", order=13, min=0, max=Child.MAX_UNLIMITED)
+ @ChildResource(types= {
+ Organization.class,
+ Practitioner.class,
+ })
private List myCareProvider;
- @Child(name="managingOrganization", order=14, min=0, max=1)
+ @Child(name="managingOrganization", order=14, min=0, max=1)
+ @ChildResource(types= {
+ Organization.class,
+ })
private ResourceReference myManagingOrganization;
@Child(name="link", order=15, min=0, max=Child.MAX_UNLIMITED)
@@ -73,7 +88,6 @@ public class Patient extends BaseResource {
@Child(name="active", order=16, min=0, max=1)
private BooleanDt myActive;
-
/**
* Gets the value(s) for identifier (An identifier for the person as this patient)
*
@@ -493,167 +507,477 @@ public class Patient extends BaseResource {
*/
@Block(name="Patient.contact")
public static class Contact {
- @Child(name="relationship", order=0, min=0, max=Child.MAX_UNLIMITED)
- private List myRelationship;
+ @Child(name="identifier", order=0, min=0, max=Child.MAX_UNLIMITED)
+ private List myIdentifier;
+
+ @Child(name="name", order=1, min=0, max=Child.MAX_UNLIMITED)
+ private List myName;
+
+ @Child(name="telecom", order=2, min=0, max=Child.MAX_UNLIMITED)
+ private List myTelecom;
+
+ @Child(name="gender", order=3, min=0, max=1)
+ private CodeableConceptDt myGender;
+
+ @Child(name="birthDate", order=4, min=0, max=1)
+ private DateTimeDt myBirthDate;
+
+ @Child(name="deceased", order=5, min=0, max=1, choice=@Choice(types= {
+ BooleanDt.class,
+ DateTimeDt.class,
+ }))
+ private IDatatype myDeceased;
+
+ @Child(name="address", order=6, min=0, max=Child.MAX_UNLIMITED)
+ private List myAddress;
+
+ @Child(name="maritalStatus", order=7, min=0, max=1)
+ private CodeableConceptDt myMaritalStatus;
+
+ @Child(name="multipleBirth", order=8, min=0, max=1, choice=@Choice(types= {
+ BooleanDt.class,
+ IntegerDt.class,
+ }))
+ private IDatatype myMultipleBirth;
+
+ @Child(name="photo", order=9, min=0, max=Child.MAX_UNLIMITED)
+ private List myPhoto;
+
+ @Child(name="contact", order=10, min=0, max=Child.MAX_UNLIMITED)
+ private List myContact;
+
+ @Child(name="animal", order=11, min=0, max=1)
+ private Animal myAnimal;
+
+ @Child(name="communication", order=12, min=0, max=Child.MAX_UNLIMITED)
+ private List myCommunication;
+
+ @Child(name="careProvider", order=13, min=0, max=Child.MAX_UNLIMITED)
+ @ChildResource(types= {
+ Organization.class,
+ Practitioner.class,
+ })
+ private List myCareProvider;
+
+ @Child(name="managingOrganization", order=14, min=0, max=1)
+ @ChildResource(types= {
+ Organization.class,
+ })
+ private ResourceReference myManagingOrganization;
+
+ @Child(name="link", order=15, min=0, max=Child.MAX_UNLIMITED)
+ private List myLink;
+
+ @Child(name="active", order=16, min=0, max=1)
+ private BooleanDt myActive;
+
+ /**
+ * Gets the value(s) for identifier (An identifier for the person as this patient)
+ *
+ *
+ * Definition:
+ * An identifier that applies to this person as a patient
+ *
+ */
+ public List getIdentifier() {
+ return myIdentifier;
+ }
- @Child(name="name", order=1, min=0, max=1)
- private HumanNameDt myName;
+ /**
+ * Sets the value(s) for identifier (An identifier for the person as this patient)
+ *
+ *
+ * Definition:
+ * An identifier that applies to this person as a patient
+ *
+ */
+ public void setIdentifier(List theValue) {
+ myIdentifier = theValue;
+ }
+
+ /**
+ * Gets the value(s) for name (A name associated with the patient)
+ *
+ *
+ * Definition:
+ * A name associated with the individual.
+ *
+ */
+ public List getName() {
+ return myName;
+ }
- @Child(name="telecom", order=2, min=0, max=Child.MAX_UNLIMITED)
- private List myTelecom;
+ /**
+ * Sets the value(s) for name (A name associated with the patient)
+ *
+ *
+ * Definition:
+ * A name associated with the individual.
+ *
+ */
+ public void setName(List theValue) {
+ myName = theValue;
+ }
+
+ /**
+ * Gets the value(s) for telecom (A contact detail for the individual)
+ *
+ *
+ * Definition:
+ * A contact detail (e.g. a telephone number or an email address) by which the individual may be contacted.
+ *
+ */
+ public List getTelecom() {
+ return myTelecom;
+ }
- @Child(name="address", order=3, min=0, max=1)
- private AddressDt myAddress;
+ /**
+ * Sets the value(s) for telecom (A contact detail for the individual)
+ *
+ *
+ * Definition:
+ * A contact detail (e.g. a telephone number or an email address) by which the individual may be contacted.
+ *
+ */
+ public void setTelecom(List theValue) {
+ myTelecom = theValue;
+ }
+
+ /**
+ * Gets the value(s) for gender (Gender for administrative purposes)
+ *
+ *
+ * Definition:
+ * Administrative Gender - the gender that the patient is considered to have for administration and record keeping purposes.
+ *
+ */
+ public CodeableConceptDt getGender() {
+ return myGender;
+ }
- @Child(name="gender", order=4, min=0, max=1)
- private CodeableConceptDt myGender;
+ /**
+ * Sets the value(s) for gender (Gender for administrative purposes)
+ *
+ *
+ * Definition:
+ * Administrative Gender - the gender that the patient is considered to have for administration and record keeping purposes.
+ *
+ */
+ public void setGender(CodeableConceptDt theValue) {
+ myGender = theValue;
+ }
+
+ /**
+ * Gets the value(s) for birthDate (The date and time of birth for the individual)
+ *
+ *
+ * Definition:
+ * The date and time of birth for the individual
+ *
+ */
+ public DateTimeDt getBirthDate() {
+ return myBirthDate;
+ }
- @Child(name="organization", order=5, min=0, max=1)
- private ResourceReference myOrganization;
+ /**
+ * Sets the value(s) for birthDate (The date and time of birth for the individual)
+ *
+ *
+ * Definition:
+ * The date and time of birth for the individual
+ *
+ */
+ public void setBirthDate(DateTimeDt theValue) {
+ myBirthDate = theValue;
+ }
+
+ /**
+ * Gets the value(s) for deceased[x] (Indicates if the individual is deceased or not)
+ *
+ *
+ * Definition:
+ * Indicates if the individual is deceased or not
+ *
+ */
+ public IDatatype getDeceased() {
+ return myDeceased;
+ }
- /**
- * Gets the value(s) for relationship (The kind of relationship)
- *
- *
- * Definition:
- * The nature of the relationship between the patient and the contact person
- *
- */
- public List getRelationship() {
- return myRelationship;
- }
+ /**
+ * Sets the value(s) for deceased[x] (Indicates if the individual is deceased or not)
+ *
+ *
+ * Definition:
+ * Indicates if the individual is deceased or not
+ *
+ */
+ public void setDeceased(IDatatype theValue) {
+ myDeceased = theValue;
+ }
- /**
- * Sets the value(s) for relationship (The kind of relationship)
- *
- *
- * Definition:
- * The nature of the relationship between the patient and the contact person
- *
- */
- public void setRelationship(List theValue) {
- myRelationship = theValue;
- }
+ /**
+ * Gets the value(s) for address (Addresses for the individual)
+ *
+ *
+ * Definition:
+ * Addresses for the individual
+ *
+ */
+ public List getAddress() {
+ return myAddress;
+ }
+
+ /**
+ * Sets the value(s) for address (Addresses for the individual)
+ *
+ *
+ * Definition:
+ * Addresses for the individual
+ *
+ */
+ public void setAddress(List theValue) {
+ myAddress = theValue;
+ }
- /**
- * Gets the value(s) for name (A name associated with the person)
- *
- *
- * Definition:
- * A name associated with the person
- *
- */
- public HumanNameDt getName() {
- return myName;
- }
+ /**
+ * Gets the value(s) for maritalStatus (Marital (civil) status of a person)
+ *
+ *
+ * Definition:
+ * This field contains a patient's most recent marital (civil) status.
+ *
+ */
+ public CodeableConceptDt getMaritalStatus() {
+ return myMaritalStatus;
+ }
+
+ /**
+ * Sets the value(s) for maritalStatus (Marital (civil) status of a person)
+ *
+ *
+ * Definition:
+ * This field contains a patient's most recent marital (civil) status.
+ *
+ */
+ public void setMaritalStatus(CodeableConceptDt theValue) {
+ myMaritalStatus = theValue;
+ }
- /**
- * 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 multipleBirth[x] (Whether patient is part of a multiple birth)
+ *
+ *
+ * Definition:
+ * Indicates whether the patient is part of a multiple or indicates the actual birth order.
+ *
+ */
+ public IDatatype getMultipleBirth() {
+ return myMultipleBirth;
+ }
+
+ /**
+ * Sets the value(s) for multipleBirth[x] (Whether patient is part of a multiple birth)
+ *
+ *
+ * Definition:
+ * Indicates whether the patient is part of a multiple or indicates the actual birth order.
+ *
+ */
+ public void setMultipleBirth(IDatatype theValue) {
+ myMultipleBirth = theValue;
+ }
- /**
- * Gets 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 List getTelecom() {
- return myTelecom;
- }
+ /**
+ * Gets the value(s) for photo (Image of the person)
+ *
+ *
+ * Definition:
+ * Image of the person
+ *
+ */
+ public List getPhoto() {
+ return myPhoto;
+ }
+
+ /**
+ * Sets the value(s) for photo (Image of the person)
+ *
+ *
+ * Definition:
+ * Image of the person
+ *
+ */
+ public void setPhoto(List theValue) {
+ myPhoto = theValue;
+ }
- /**
- * 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(List theValue) {
- myTelecom = theValue;
- }
+ /**
+ * Gets the value(s) for contact (A contact party (e.g. guardian, partner, friend) for the patient)
+ *
+ *
+ * Definition:
+ * A contact party (e.g. guardian, partner, friend) for the patient
+ *
+ */
+ public List getContact() {
+ return myContact;
+ }
+
+ /**
+ * Sets the value(s) for contact (A contact party (e.g. guardian, partner, friend) for the patient)
+ *
+ *
+ * Definition:
+ * A contact party (e.g. guardian, partner, friend) for the patient
+ *
+ */
+ public void setContact(List theValue) {
+ myContact = theValue;
+ }
- /**
- * Gets the value(s) for address (Address for the contact person)
- *
- *
- * Definition:
- * Address for the contact person
- *
- */
- public AddressDt getAddress() {
- return myAddress;
- }
+ /**
+ * Gets the value(s) for animal (If this patient is an animal (non-human))
+ *
+ *
+ * Definition:
+ * This element has a value if the patient is an animal
+ *
+ */
+ public Animal getAnimal() {
+ return myAnimal;
+ }
+
+ /**
+ * Sets the value(s) for animal (If this patient is an animal (non-human))
+ *
+ *
+ * Definition:
+ * This element has a value if the patient is an animal
+ *
+ */
+ public void setAnimal(Animal theValue) {
+ myAnimal = theValue;
+ }
- /**
- * Sets the value(s) for address (Address for the contact person)
- *
- *
- * Definition:
- * Address for the contact person
- *
- */
- public void setAddress(AddressDt theValue) {
- myAddress = theValue;
- }
+ /**
+ * Gets the value(s) for communication (Languages which may be used to communicate with the patient about his or her health)
+ *
+ *
+ * Definition:
+ * Languages which may be used to communicate with the patient about his or her health
+ *
+ */
+ public List getCommunication() {
+ return myCommunication;
+ }
+
+ /**
+ * Sets the value(s) for communication (Languages which may be used to communicate with the patient about his or her health)
+ *
+ *
+ * Definition:
+ * Languages which may be used to communicate with the patient about his or her health
+ *
+ */
+ public void setCommunication(List theValue) {
+ myCommunication = theValue;
+ }
- /**
- * Gets 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 CodeableConceptDt getGender() {
- return myGender;
- }
+ /**
+ * Gets the value(s) for careProvider (Patient's nominated care provider)
+ *
+ *
+ * Definition:
+ * Patient's nominated care provider
+ *
+ */
+ public List getCareProvider() {
+ return myCareProvider;
+ }
+
+ /**
+ * Sets the value(s) for careProvider (Patient's nominated care provider)
+ *
+ *
+ * Definition:
+ * Patient's nominated care provider
+ *
+ */
+ public void setCareProvider(List theValue) {
+ myCareProvider = 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(CodeableConceptDt theValue) {
- myGender = theValue;
- }
+ /**
+ * Gets the value(s) for managingOrganization (Organization that is the custodian of the patient record)
+ *
+ *
+ * Definition:
+ * Organization that is the custodian of the patient record
+ *
+ */
+ public ResourceReference getManagingOrganization() {
+ return myManagingOrganization;
+ }
+
+ /**
+ * Sets the value(s) for managingOrganization (Organization that is the custodian of the patient record)
+ *
+ *
+ * Definition:
+ * Organization that is the custodian of the patient record
+ *
+ */
+ public void setManagingOrganization(ResourceReference theValue) {
+ myManagingOrganization = theValue;
+ }
- /**
- * Gets the value(s) for organization (Organization that is associated with the contact)
- *
- *
- * Definition:
- * Organization on behalf of which the contact is acting or for which the contact is working.
- *
- */
- public ResourceReference getOrganization() {
- return myOrganization;
- }
+ /**
+ * Gets the value(s) for link (Link to another patient resource that concerns the same actual person)
+ *
+ *
+ * Definition:
+ * Link to another patient resource that concerns the same actual person
+ *
+ */
+ public List getLink() {
+ return myLink;
+ }
+
+ /**
+ * Sets the value(s) for link (Link to another patient resource that concerns the same actual person)
+ *
+ *
+ * Definition:
+ * Link to another patient resource that concerns the same actual person
+ *
+ */
+ public void setLink(List theValue) {
+ myLink = theValue;
+ }
- /**
- * Sets the value(s) for organization (Organization that is associated with the contact)
- *
- *
- * Definition:
- * Organization on behalf of which the contact is acting or for which the contact is working.
- *
- */
- public void setOrganization(ResourceReference theValue) {
- myOrganization = theValue;
- }
+ /**
+ * Gets the value(s) for active (Whether this patient's record is in active use)
+ *
+ *
+ * Definition:
+ * Whether this patient record is in active use
+ *
+ */
+ public BooleanDt getActive() {
+ return myActive;
+ }
+
+ /**
+ * Sets the value(s) for active (Whether this patient's record is in active use)
+ *
+ *
+ * Definition:
+ * Whether this patient record is in active use
+ *
+ */
+ public void setActive(BooleanDt theValue) {
+ myActive = theValue;
+ }
}
@@ -667,86 +991,477 @@ public class Patient extends BaseResource {
*/
@Block(name="Patient.animal")
public static class Animal {
- @Child(name="species", order=0, min=1, max=1)
- private CodeableConceptDt mySpecies;
+ @Child(name="identifier", order=0, min=0, max=Child.MAX_UNLIMITED)
+ private List myIdentifier;
+
+ @Child(name="name", order=1, min=0, max=Child.MAX_UNLIMITED)
+ private List myName;
+
+ @Child(name="telecom", order=2, min=0, max=Child.MAX_UNLIMITED)
+ private List myTelecom;
+
+ @Child(name="gender", order=3, min=0, max=1)
+ private CodeableConceptDt myGender;
+
+ @Child(name="birthDate", order=4, min=0, max=1)
+ private DateTimeDt myBirthDate;
+
+ @Child(name="deceased", order=5, min=0, max=1, choice=@Choice(types= {
+ BooleanDt.class,
+ DateTimeDt.class,
+ }))
+ private IDatatype myDeceased;
+
+ @Child(name="address", order=6, min=0, max=Child.MAX_UNLIMITED)
+ private List myAddress;
+
+ @Child(name="maritalStatus", order=7, min=0, max=1)
+ private CodeableConceptDt myMaritalStatus;
+
+ @Child(name="multipleBirth", order=8, min=0, max=1, choice=@Choice(types= {
+ BooleanDt.class,
+ IntegerDt.class,
+ }))
+ private IDatatype myMultipleBirth;
+
+ @Child(name="photo", order=9, min=0, max=Child.MAX_UNLIMITED)
+ private List myPhoto;
+
+ @Child(name="contact", order=10, min=0, max=Child.MAX_UNLIMITED)
+ private List myContact;
+
+ @Child(name="animal", order=11, min=0, max=1)
+ private Animal myAnimal;
+
+ @Child(name="communication", order=12, min=0, max=Child.MAX_UNLIMITED)
+ private List myCommunication;
+
+ @Child(name="careProvider", order=13, min=0, max=Child.MAX_UNLIMITED)
+ @ChildResource(types= {
+ Organization.class,
+ Practitioner.class,
+ })
+ private List myCareProvider;
+
+ @Child(name="managingOrganization", order=14, min=0, max=1)
+ @ChildResource(types= {
+ Organization.class,
+ })
+ private ResourceReference myManagingOrganization;
+
+ @Child(name="link", order=15, min=0, max=Child.MAX_UNLIMITED)
+ private List myLink;
+
+ @Child(name="active", order=16, min=0, max=1)
+ private BooleanDt myActive;
+
+ /**
+ * Gets the value(s) for identifier (An identifier for the person as this patient)
+ *
+ *
+ * Definition:
+ * An identifier that applies to this person as a patient
+ *
+ */
+ public List getIdentifier() {
+ return myIdentifier;
+ }
- @Child(name="breed", order=1, min=0, max=1)
- private CodeableConceptDt myBreed;
+ /**
+ * Sets the value(s) for identifier (An identifier for the person as this patient)
+ *
+ *
+ * Definition:
+ * An identifier that applies to this person as a patient
+ *
+ */
+ public void setIdentifier(List theValue) {
+ myIdentifier = theValue;
+ }
+
+ /**
+ * Gets the value(s) for name (A name associated with the patient)
+ *
+ *
+ * Definition:
+ * A name associated with the individual.
+ *
+ */
+ public List getName() {
+ return myName;
+ }
- @Child(name="genderStatus", order=2, min=0, max=1)
- private CodeableConceptDt myGenderStatus;
+ /**
+ * Sets the value(s) for name (A name associated with the patient)
+ *
+ *
+ * Definition:
+ * A name associated with the individual.
+ *
+ */
+ public void setName(List theValue) {
+ myName = theValue;
+ }
+
+ /**
+ * Gets the value(s) for telecom (A contact detail for the individual)
+ *
+ *
+ * Definition:
+ * A contact detail (e.g. a telephone number or an email address) by which the individual may be contacted.
+ *
+ */
+ public List getTelecom() {
+ return myTelecom;
+ }
- /**
- * Gets the value(s) for species (E.g. Dog, Cow)
- *
- *
- * Definition:
- * Identifies the high level categorization of the kind of animal
- *
- */
- public CodeableConceptDt getSpecies() {
- return mySpecies;
- }
+ /**
+ * Sets the value(s) for telecom (A contact detail for the individual)
+ *
+ *
+ * Definition:
+ * A contact detail (e.g. a telephone number or an email address) by which the individual may be contacted.
+ *
+ */
+ public void setTelecom(List theValue) {
+ myTelecom = theValue;
+ }
- /**
- * Sets the value(s) for species (E.g. Dog, Cow)
- *
- *
- * Definition:
- * Identifies the high level categorization of the kind of animal
- *
- */
- public void setSpecies(CodeableConceptDt theValue) {
- mySpecies = theValue;
- }
+ /**
+ * Gets the value(s) for gender (Gender for administrative purposes)
+ *
+ *
+ * Definition:
+ * Administrative Gender - the gender that the patient is considered to have for administration and record keeping purposes.
+ *
+ */
+ public CodeableConceptDt getGender() {
+ return myGender;
+ }
+
+ /**
+ * Sets the value(s) for gender (Gender for administrative purposes)
+ *
+ *
+ * Definition:
+ * Administrative Gender - the gender that the patient is considered to have for administration and record keeping purposes.
+ *
+ */
+ public void setGender(CodeableConceptDt theValue) {
+ myGender = theValue;
+ }
- /**
- * Gets the value(s) for breed (E.g. Poodle, Angus)
- *
- *
- * Definition:
- * Identifies the detailed categorization of the kind of animal.
- *
- */
- public CodeableConceptDt getBreed() {
- return myBreed;
- }
+ /**
+ * Gets the value(s) for birthDate (The date and time of birth for the individual)
+ *
+ *
+ * Definition:
+ * The date and time of birth for the individual
+ *
+ */
+ public DateTimeDt getBirthDate() {
+ return myBirthDate;
+ }
+
+ /**
+ * Sets the value(s) for birthDate (The date and time of birth for the individual)
+ *
+ *
+ * Definition:
+ * The date and time of birth for the individual
+ *
+ */
+ public void setBirthDate(DateTimeDt theValue) {
+ myBirthDate = theValue;
+ }
- /**
- * Sets the value(s) for breed (E.g. Poodle, Angus)
- *
- *
- * Definition:
- * Identifies the detailed categorization of the kind of animal.
- *
- */
- public void setBreed(CodeableConceptDt theValue) {
- myBreed = theValue;
- }
+ /**
+ * Gets the value(s) for deceased[x] (Indicates if the individual is deceased or not)
+ *
+ *
+ * Definition:
+ * Indicates if the individual is deceased or not
+ *
+ */
+ public IDatatype getDeceased() {
+ return myDeceased;
+ }
+
+ /**
+ * Sets the value(s) for deceased[x] (Indicates if the individual is deceased or not)
+ *
+ *
+ * Definition:
+ * Indicates if the individual is deceased or not
+ *
+ */
+ public void setDeceased(IDatatype theValue) {
+ myDeceased = theValue;
+ }
- /**
- * Gets the value(s) for genderStatus (E.g. Neutered, Intact)
- *
- *
- * Definition:
- * Indicates the current state of the animal's reproductive organs
- *
- */
- public CodeableConceptDt getGenderStatus() {
- return myGenderStatus;
- }
+ /**
+ * Gets the value(s) for address (Addresses for the individual)
+ *
+ *
+ * Definition:
+ * Addresses for the individual
+ *
+ */
+ public List getAddress() {
+ return myAddress;
+ }
+
+ /**
+ * Sets the value(s) for address (Addresses for the individual)
+ *
+ *
+ * Definition:
+ * Addresses for the individual
+ *
+ */
+ public void setAddress(List theValue) {
+ myAddress = theValue;
+ }
- /**
- * Sets the value(s) for genderStatus (E.g. Neutered, Intact)
- *
- *
- * Definition:
- * Indicates the current state of the animal's reproductive organs
- *
- */
- public void setGenderStatus(CodeableConceptDt theValue) {
- myGenderStatus = theValue;
- }
+ /**
+ * Gets the value(s) for maritalStatus (Marital (civil) status of a person)
+ *
+ *
+ * Definition:
+ * This field contains a patient's most recent marital (civil) status.
+ *
+ */
+ public CodeableConceptDt getMaritalStatus() {
+ return myMaritalStatus;
+ }
+
+ /**
+ * Sets the value(s) for maritalStatus (Marital (civil) status of a person)
+ *
+ *
+ * Definition:
+ * This field contains a patient's most recent marital (civil) status.
+ *
+ */
+ public void setMaritalStatus(CodeableConceptDt theValue) {
+ myMaritalStatus = theValue;
+ }
+
+ /**
+ * Gets the value(s) for multipleBirth[x] (Whether patient is part of a multiple birth)
+ *
+ *
+ * Definition:
+ * Indicates whether the patient is part of a multiple or indicates the actual birth order.
+ *
+ */
+ public IDatatype getMultipleBirth() {
+ return myMultipleBirth;
+ }
+
+ /**
+ * Sets the value(s) for multipleBirth[x] (Whether patient is part of a multiple birth)
+ *
+ *
+ * Definition:
+ * Indicates whether the patient is part of a multiple or indicates the actual birth order.
+ *
+ */
+ public void setMultipleBirth(IDatatype theValue) {
+ myMultipleBirth = theValue;
+ }
+
+ /**
+ * Gets the value(s) for photo (Image of the person)
+ *
+ *
+ * Definition:
+ * Image of the person
+ *
+ */
+ public List getPhoto() {
+ return myPhoto;
+ }
+
+ /**
+ * Sets the value(s) for photo (Image of the person)
+ *
+ *
+ * Definition:
+ * Image of the person
+ *
+ */
+ public void setPhoto(List theValue) {
+ myPhoto = theValue;
+ }
+
+ /**
+ * Gets the value(s) for contact (A contact party (e.g. guardian, partner, friend) for the patient)
+ *
+ *
+ * Definition:
+ * A contact party (e.g. guardian, partner, friend) for the patient
+ *
+ */
+ public List getContact() {
+ return myContact;
+ }
+
+ /**
+ * Sets the value(s) for contact (A contact party (e.g. guardian, partner, friend) for the patient)
+ *
+ *
+ * Definition:
+ * A contact party (e.g. guardian, partner, friend) for the patient
+ *
+ */
+ public void setContact(List theValue) {
+ myContact = theValue;
+ }
+
+ /**
+ * Gets the value(s) for animal (If this patient is an animal (non-human))
+ *
+ *
+ * Definition:
+ * This element has a value if the patient is an animal
+ *
+ */
+ public Animal getAnimal() {
+ return myAnimal;
+ }
+
+ /**
+ * Sets the value(s) for animal (If this patient is an animal (non-human))
+ *
+ *
+ * Definition:
+ * This element has a value if the patient is an animal
+ *
+ */
+ public void setAnimal(Animal theValue) {
+ myAnimal = theValue;
+ }
+
+ /**
+ * Gets the value(s) for communication (Languages which may be used to communicate with the patient about his or her health)
+ *
+ *
+ * Definition:
+ * Languages which may be used to communicate with the patient about his or her health
+ *
+ */
+ public List getCommunication() {
+ return myCommunication;
+ }
+
+ /**
+ * Sets the value(s) for communication (Languages which may be used to communicate with the patient about his or her health)
+ *
+ *
+ * Definition:
+ * Languages which may be used to communicate with the patient about his or her health
+ *
+ */
+ public void setCommunication(List theValue) {
+ myCommunication = theValue;
+ }
+
+ /**
+ * Gets the value(s) for careProvider (Patient's nominated care provider)
+ *
+ *
+ * Definition:
+ * Patient's nominated care provider
+ *
+ */
+ public List getCareProvider() {
+ return myCareProvider;
+ }
+
+ /**
+ * Sets the value(s) for careProvider (Patient's nominated care provider)
+ *
+ *
+ * Definition:
+ * Patient's nominated care provider
+ *
+ */
+ public void setCareProvider(List theValue) {
+ myCareProvider = theValue;
+ }
+
+ /**
+ * Gets the value(s) for managingOrganization (Organization that is the custodian of the patient record)
+ *
+ *
+ * Definition:
+ * Organization that is the custodian of the patient record
+ *
+ */
+ public ResourceReference getManagingOrganization() {
+ return myManagingOrganization;
+ }
+
+ /**
+ * Sets the value(s) for managingOrganization (Organization that is the custodian of the patient record)
+ *
+ *
+ * Definition:
+ * Organization that is the custodian of the patient record
+ *
+ */
+ public void setManagingOrganization(ResourceReference theValue) {
+ myManagingOrganization = theValue;
+ }
+
+ /**
+ * Gets the value(s) for link (Link to another patient resource that concerns the same actual person)
+ *
+ *
+ * Definition:
+ * Link to another patient resource that concerns the same actual person
+ *
+ */
+ public List getLink() {
+ return myLink;
+ }
+
+ /**
+ * Sets the value(s) for link (Link to another patient resource that concerns the same actual person)
+ *
+ *
+ * Definition:
+ * Link to another patient resource that concerns the same actual person
+ *
+ */
+ public void setLink(List theValue) {
+ myLink = theValue;
+ }
+
+ /**
+ * Gets the value(s) for active (Whether this patient's record is in active use)
+ *
+ *
+ * Definition:
+ * Whether this patient record is in active use
+ *
+ */
+ public BooleanDt getActive() {
+ return myActive;
+ }
+
+ /**
+ * Sets the value(s) for active (Whether this patient's record is in active use)
+ *
+ *
+ * Definition:
+ * Whether this patient record is in active use
+ *
+ */
+ public void setActive(BooleanDt theValue) {
+ myActive = theValue;
+ }
}
@@ -760,59 +1475,477 @@ public class Patient extends BaseResource {
*/
@Block(name="Patient.link")
public static class Link {
- @Child(name="other", order=0, min=1, max=1)
- private ResourceReference myOther;
+ @Child(name="identifier", order=0, min=0, max=Child.MAX_UNLIMITED)
+ private List myIdentifier;
+
+ @Child(name="name", order=1, min=0, max=Child.MAX_UNLIMITED)
+ private List myName;
+
+ @Child(name="telecom", order=2, min=0, max=Child.MAX_UNLIMITED)
+ private List myTelecom;
+
+ @Child(name="gender", order=3, min=0, max=1)
+ private CodeableConceptDt myGender;
+
+ @Child(name="birthDate", order=4, min=0, max=1)
+ private DateTimeDt myBirthDate;
+
+ @Child(name="deceased", order=5, min=0, max=1, choice=@Choice(types= {
+ BooleanDt.class,
+ DateTimeDt.class,
+ }))
+ private IDatatype myDeceased;
+
+ @Child(name="address", order=6, min=0, max=Child.MAX_UNLIMITED)
+ private List myAddress;
+
+ @Child(name="maritalStatus", order=7, min=0, max=1)
+ private CodeableConceptDt myMaritalStatus;
+
+ @Child(name="multipleBirth", order=8, min=0, max=1, choice=@Choice(types= {
+ BooleanDt.class,
+ IntegerDt.class,
+ }))
+ private IDatatype myMultipleBirth;
+
+ @Child(name="photo", order=9, min=0, max=Child.MAX_UNLIMITED)
+ private List myPhoto;
+
+ @Child(name="contact", order=10, min=0, max=Child.MAX_UNLIMITED)
+ private List myContact;
+
+ @Child(name="animal", order=11, min=0, max=1)
+ private Animal myAnimal;
+
+ @Child(name="communication", order=12, min=0, max=Child.MAX_UNLIMITED)
+ private List myCommunication;
+
+ @Child(name="careProvider", order=13, min=0, max=Child.MAX_UNLIMITED)
+ @ChildResource(types= {
+ Organization.class,
+ Practitioner.class,
+ })
+ private List myCareProvider;
+
+ @Child(name="managingOrganization", order=14, min=0, max=1)
+ @ChildResource(types= {
+ Organization.class,
+ })
+ private ResourceReference myManagingOrganization;
+
+ @Child(name="link", order=15, min=0, max=Child.MAX_UNLIMITED)
+ private List myLink;
+
+ @Child(name="active", order=16, min=0, max=1)
+ private BooleanDt myActive;
+
+ /**
+ * Gets the value(s) for identifier (An identifier for the person as this patient)
+ *
+ *
+ * Definition:
+ * An identifier that applies to this person as a patient
+ *
+ */
+ public List getIdentifier() {
+ return myIdentifier;
+ }
- @Child(name="type", order=1, min=1, max=1)
- private CodeDt myType;
+ /**
+ * Sets the value(s) for identifier (An identifier for the person as this patient)
+ *
+ *
+ * Definition:
+ * An identifier that applies to this person as a patient
+ *
+ */
+ public void setIdentifier(List theValue) {
+ myIdentifier = theValue;
+ }
+
+ /**
+ * Gets the value(s) for name (A name associated with the patient)
+ *
+ *
+ * Definition:
+ * A name associated with the individual.
+ *
+ */
+ public List getName() {
+ return myName;
+ }
- /**
- * Gets the value(s) for other (The other patient resource that the link refers to)
- *
- *
- * Definition:
- * The other patient resource that the link refers to
- *
- */
- public ResourceReference getOther() {
- return myOther;
- }
+ /**
+ * Sets the value(s) for name (A name associated with the patient)
+ *
+ *
+ * Definition:
+ * A name associated with the individual.
+ *
+ */
+ public void setName(List theValue) {
+ myName = theValue;
+ }
- /**
- * Sets the value(s) for other (The other patient resource that the link refers to)
- *
- *
- * Definition:
- * The other patient resource that the link refers to
- *
- */
- public void setOther(ResourceReference theValue) {
- myOther = theValue;
- }
+ /**
+ * Gets the value(s) for telecom (A contact detail for the individual)
+ *
+ *
+ * Definition:
+ * A contact detail (e.g. a telephone number or an email address) by which the individual may be contacted.
+ *
+ */
+ public List getTelecom() {
+ return myTelecom;
+ }
+
+ /**
+ * Sets the value(s) for telecom (A contact detail for the individual)
+ *
+ *
+ * Definition:
+ * A contact detail (e.g. a telephone number or an email address) by which the individual may be contacted.
+ *
+ */
+ public void setTelecom(List theValue) {
+ myTelecom = theValue;
+ }
- /**
- * Gets the value(s) for type (replace | refer | seealso - type of link)
- *
- *
- * Definition:
- * The type of link between this patient resource and another patient resource.
- *
- */
- public CodeDt getType() {
- return myType;
- }
+ /**
+ * Gets the value(s) for gender (Gender for administrative purposes)
+ *
+ *
+ * Definition:
+ * Administrative Gender - the gender that the patient is considered to have for administration and record keeping purposes.
+ *
+ */
+ public CodeableConceptDt getGender() {
+ return myGender;
+ }
+
+ /**
+ * Sets the value(s) for gender (Gender for administrative purposes)
+ *
+ *
+ * Definition:
+ * Administrative Gender - the gender that the patient is considered to have for administration and record keeping purposes.
+ *
+ */
+ public void setGender(CodeableConceptDt theValue) {
+ myGender = theValue;
+ }
- /**
- * Sets the value(s) for type (replace | refer | seealso - type of link)
- *
- *
- * Definition:
- * The type of link between this patient resource and another patient resource.
- *
- */
- public void setType(CodeDt theValue) {
- myType = theValue;
- }
+ /**
+ * Gets the value(s) for birthDate (The date and time of birth for the individual)
+ *
+ *
+ * Definition:
+ * The date and time of birth for the individual
+ *
+ */
+ public DateTimeDt getBirthDate() {
+ return myBirthDate;
+ }
+
+ /**
+ * Sets the value(s) for birthDate (The date and time of birth for the individual)
+ *
+ *
+ * Definition:
+ * The date and time of birth for the individual
+ *
+ */
+ public void setBirthDate(DateTimeDt theValue) {
+ myBirthDate = theValue;
+ }
+
+ /**
+ * Gets the value(s) for deceased[x] (Indicates if the individual is deceased or not)
+ *
+ *
+ * Definition:
+ * Indicates if the individual is deceased or not
+ *
+ */
+ public IDatatype getDeceased() {
+ return myDeceased;
+ }
+
+ /**
+ * Sets the value(s) for deceased[x] (Indicates if the individual is deceased or not)
+ *
+ *
+ * Definition:
+ * Indicates if the individual is deceased or not
+ *
+ */
+ public void setDeceased(IDatatype theValue) {
+ myDeceased = theValue;
+ }
+
+ /**
+ * Gets the value(s) for address (Addresses for the individual)
+ *
+ *
+ * Definition:
+ * Addresses for the individual
+ *
+ */
+ public List getAddress() {
+ return myAddress;
+ }
+
+ /**
+ * Sets the value(s) for address (Addresses for the individual)
+ *
+ *
+ * Definition:
+ * Addresses for the individual
+ *
+ */
+ public void setAddress(List theValue) {
+ myAddress = theValue;
+ }
+
+ /**
+ * Gets the value(s) for maritalStatus (Marital (civil) status of a person)
+ *
+ *
+ * Definition:
+ * This field contains a patient's most recent marital (civil) status.
+ *
+ */
+ public CodeableConceptDt getMaritalStatus() {
+ return myMaritalStatus;
+ }
+
+ /**
+ * Sets the value(s) for maritalStatus (Marital (civil) status of a person)
+ *
+ *
+ * Definition:
+ * This field contains a patient's most recent marital (civil) status.
+ *
+ */
+ public void setMaritalStatus(CodeableConceptDt theValue) {
+ myMaritalStatus = theValue;
+ }
+
+ /**
+ * Gets the value(s) for multipleBirth[x] (Whether patient is part of a multiple birth)
+ *
+ *
+ * Definition:
+ * Indicates whether the patient is part of a multiple or indicates the actual birth order.
+ *
+ */
+ public IDatatype getMultipleBirth() {
+ return myMultipleBirth;
+ }
+
+ /**
+ * Sets the value(s) for multipleBirth[x] (Whether patient is part of a multiple birth)
+ *
+ *
+ * Definition:
+ * Indicates whether the patient is part of a multiple or indicates the actual birth order.
+ *
+ */
+ public void setMultipleBirth(IDatatype theValue) {
+ myMultipleBirth = theValue;
+ }
+
+ /**
+ * Gets the value(s) for photo (Image of the person)
+ *
+ *
+ * Definition:
+ * Image of the person
+ *
+ */
+ public List getPhoto() {
+ return myPhoto;
+ }
+
+ /**
+ * Sets the value(s) for photo (Image of the person)
+ *
+ *
+ * Definition:
+ * Image of the person
+ *
+ */
+ public void setPhoto(List theValue) {
+ myPhoto = theValue;
+ }
+
+ /**
+ * Gets the value(s) for contact (A contact party (e.g. guardian, partner, friend) for the patient)
+ *
+ *
+ * Definition:
+ * A contact party (e.g. guardian, partner, friend) for the patient
+ *
+ */
+ public List getContact() {
+ return myContact;
+ }
+
+ /**
+ * Sets the value(s) for contact (A contact party (e.g. guardian, partner, friend) for the patient)
+ *
+ *
+ * Definition:
+ * A contact party (e.g. guardian, partner, friend) for the patient
+ *
+ */
+ public void setContact(List theValue) {
+ myContact = theValue;
+ }
+
+ /**
+ * Gets the value(s) for animal (If this patient is an animal (non-human))
+ *
+ *
+ * Definition:
+ * This element has a value if the patient is an animal
+ *
+ */
+ public Animal getAnimal() {
+ return myAnimal;
+ }
+
+ /**
+ * Sets the value(s) for animal (If this patient is an animal (non-human))
+ *
+ *
+ * Definition:
+ * This element has a value if the patient is an animal
+ *
+ */
+ public void setAnimal(Animal theValue) {
+ myAnimal = theValue;
+ }
+
+ /**
+ * Gets the value(s) for communication (Languages which may be used to communicate with the patient about his or her health)
+ *
+ *
+ * Definition:
+ * Languages which may be used to communicate with the patient about his or her health
+ *
+ */
+ public List getCommunication() {
+ return myCommunication;
+ }
+
+ /**
+ * Sets the value(s) for communication (Languages which may be used to communicate with the patient about his or her health)
+ *
+ *
+ * Definition:
+ * Languages which may be used to communicate with the patient about his or her health
+ *
+ */
+ public void setCommunication(List theValue) {
+ myCommunication = theValue;
+ }
+
+ /**
+ * Gets the value(s) for careProvider (Patient's nominated care provider)
+ *
+ *
+ * Definition:
+ * Patient's nominated care provider
+ *
+ */
+ public List getCareProvider() {
+ return myCareProvider;
+ }
+
+ /**
+ * Sets the value(s) for careProvider (Patient's nominated care provider)
+ *
+ *
+ * Definition:
+ * Patient's nominated care provider
+ *
+ */
+ public void setCareProvider(List theValue) {
+ myCareProvider = theValue;
+ }
+
+ /**
+ * Gets the value(s) for managingOrganization (Organization that is the custodian of the patient record)
+ *
+ *
+ * Definition:
+ * Organization that is the custodian of the patient record
+ *
+ */
+ public ResourceReference getManagingOrganization() {
+ return myManagingOrganization;
+ }
+
+ /**
+ * Sets the value(s) for managingOrganization (Organization that is the custodian of the patient record)
+ *
+ *
+ * Definition:
+ * Organization that is the custodian of the patient record
+ *
+ */
+ public void setManagingOrganization(ResourceReference theValue) {
+ myManagingOrganization = theValue;
+ }
+
+ /**
+ * Gets the value(s) for link (Link to another patient resource that concerns the same actual person)
+ *
+ *
+ * Definition:
+ * Link to another patient resource that concerns the same actual person
+ *
+ */
+ public List getLink() {
+ return myLink;
+ }
+
+ /**
+ * Sets the value(s) for link (Link to another patient resource that concerns the same actual person)
+ *
+ *
+ * Definition:
+ * Link to another patient resource that concerns the same actual person
+ *
+ */
+ public void setLink(List theValue) {
+ myLink = theValue;
+ }
+
+ /**
+ * Gets the value(s) for active (Whether this patient's record is in active use)
+ *
+ *
+ * Definition:
+ * Whether this patient record is in active use
+ *
+ */
+ public BooleanDt getActive() {
+ return myActive;
+ }
+
+ /**
+ * Sets the value(s) for active (Whether this patient's record is in active use)
+ *
+ *
+ * Definition:
+ * Whether this patient record is in active use
+ *
+ */
+ public void setActive(BooleanDt theValue) {
+ myActive = theValue;
+ }
}
diff --git a/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/BaseParser.java b/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/BaseParser.java
index c10788d917f..4191f893913 100644
--- a/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/BaseParser.java
+++ b/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/BaseParser.java
@@ -1,12 +1,13 @@
package ca.uhn.fhir.starter;
+import static org.apache.commons.lang.StringUtils.*;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@@ -18,8 +19,11 @@ import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
+import ch.qos.logback.core.db.dialect.MySQLDialect;
import ca.uhn.fhir.model.api.IDatatype;
import ca.uhn.fhir.model.api.ResourceReference;
+import ca.uhn.fhir.model.datatype.CodeDt;
+import ca.uhn.fhir.model.datatype.CodeableConceptDt;
import ca.uhn.fhir.starter.model.BaseElement;
import ca.uhn.fhir.starter.model.Child;
import ca.uhn.fhir.starter.model.Resource;
@@ -30,6 +34,15 @@ public abstract class BaseParser {
private String myDirectory;
private String myOutputFile;
+ private int myColName;
+ private int myColCard;
+ private int myColType;
+ private int myColBinding;
+ private int myColShortName;
+ private int myColDefinition;
+ private int myColV2Mapping;
+ private int myColRequirements;
+ private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(BaseParser.class);
public void parse() throws Exception {
File baseDir = new File(myDirectory);
@@ -49,6 +62,9 @@ public abstract class BaseParser {
NodeList rows = table.getElementsByTagName("Row");
+ Element defRow = (Element) rows.item(0);
+ parseFirstRow(defRow);
+
Element resourceRow = (Element) rows.item(1);
Resource resource = new Resource();
parseBasicElements(resourceRow, resource);
@@ -63,7 +79,7 @@ public abstract class BaseParser {
continue;
}
- String type = cellValue(nextRow, 5);
+ String type = cellValue(nextRow, myColType);
Child elem;
if (StringUtils.isBlank(type) || type.startsWith("=")) {
@@ -81,9 +97,19 @@ public abstract class BaseParser {
elemName = elemName.substring(0, 1).toUpperCase() + elemName.substring(1);
if (elem instanceof ResourceBlock) {
elem.setReferenceType(elemName);
- }else {
+ } else {
elem.setReferenceType(elemName + "Dt");
}
+
+ // if
+ // (elem.getReferenceType().equals(CodeDt.class.getSimpleName())
+ // ||
+ // elem.getReferenceType().equals(CodeableConceptDt.class.getSimpleName()))
+ // {
+ // elem.setReferenceType(elemName + "Dt<" + elem.getBinding() +
+ // "Enum>");
+ // }
+
} else {
elem.setReferenceType(IDatatype.class.getSimpleName());
}
@@ -92,6 +118,16 @@ public abstract class BaseParser {
elem.setReferenceType("List<" + elem.getReferenceType() + ">");
}
+ for (int childIdx = 0; childIdx < elem.getType().size(); childIdx++) {
+ String nextType = elem.getType().get(childIdx);
+ if (elem.isResourceRef()) {
+ nextType = nextType.substring(0, 1).toUpperCase() + nextType.substring(1);
+ } else {
+ nextType = nextType.substring(0, 1).toUpperCase() + nextType.substring(1) + "Dt";
+ }
+ elem.getType().set(childIdx, nextType);
+ }
+
elements.put(elem.getName(), elem);
BaseElement parent = elements.get(elem.getElementParentName());
if (parent == null) {
@@ -105,8 +141,6 @@ public abstract class BaseParser {
}
- protected abstract void parseBasicElements(Element theResourceRow, BaseElement theElem);
-
public void setDirectory(String theDirectory) {
myDirectory = theDirectory;
}
@@ -142,20 +176,24 @@ public abstract class BaseParser {
return null;
}
-
private void write(Resource theResource) throws IOException {
File f = new File(myOutputFile);
FileWriter w = new FileWriter(f, false);
+ ourLog.info("Writing file: {}", f.getAbsolutePath());
+
VelocityContext ctx = new VelocityContext();
ctx.put("className", theResource.getName());
- ctx.put("shortName", theResource.getShortName());
- ctx.put("definition", theResource.getDefinition());
- ctx.put("requirements", theResource.getRequirement());
+ ctx.put("shortName", defaultString(theResource.getShortName()));
+ ctx.put("definition", defaultString(theResource.getDefinition()));
+ ctx.put("requirements", defaultString(theResource.getRequirement()));
ctx.put("children", theResource.getChildren());
ctx.put("resourceBlockChildren", theResource.getResourceBlockChildren());
VelocityEngine v = new VelocityEngine();
+ v.setProperty("resource.loader", "cp");
+ v.setProperty("cp.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
+
InputStream templateIs = ResourceParser.class.getResourceAsStream(getTemplate());
InputStreamReader templateReader = new InputStreamReader(templateIs);
v.evaluate(ctx, w, "", templateReader);
@@ -167,4 +205,62 @@ public abstract class BaseParser {
protected abstract String getTemplate();
+ private void parseFirstRow(Element theDefRow) {
+ for (int i = 0; i < 20; i++) {
+ String nextName = cellValue(theDefRow, i);
+ if (nextName == null) {
+ continue;
+ }
+ nextName = nextName.toLowerCase().trim().replace(".", "");
+ if ("element".equals(nextName)) {
+ myColName = i;
+ } else if ("card".equals(nextName)) {
+ myColCard = i;
+ } else if ("type".equals(nextName)) {
+ myColType = i;
+ } else if ("binding".equals(nextName)) {
+ myColBinding = i;
+ } else if ("short name".equals(nextName)) {
+ myColShortName = i;
+ } else if ("definition".equals(nextName)) {
+ myColDefinition = i;
+ } else if ("requirements".equals(nextName)) {
+ myColRequirements = i;
+ } else if ("v2 mapping".equals(nextName)) {
+ myColV2Mapping = i;
+ }
+ }
+ }
+
+ protected void parseBasicElements(Element theRowXml, BaseElement theTarget) {
+ String name = cellValue(theRowXml, myColName);
+ theTarget.setName(name);
+
+ int lastDot = name.lastIndexOf('.');
+ if (lastDot == -1) {
+ theTarget.setElementName(name);
+ } else {
+ String elementName = name.substring(lastDot + 1);
+ String elementParentName = name.substring(0, lastDot);
+ theTarget.setElementName(elementName);
+ theTarget.setElementParentName(elementParentName);
+ }
+
+ String cardValue = cellValue(theRowXml, myColCard);
+ if (cardValue != null && cardValue.contains("..")) {
+ String[] split = cardValue.split("\\.\\.");
+ theTarget.setCardMin(split[0]);
+ theTarget.setCardMax(split[1]);
+ }
+
+ String type = cellValue(theRowXml, myColType);
+ theTarget.setTypeFromString(type);
+
+ theTarget.setBinding(cellValue(theRowXml, myColBinding));
+ theTarget.setShortName(cellValue(theRowXml, myColShortName));
+ theTarget.setDefinition(cellValue(theRowXml, myColDefinition));
+ theTarget.setRequirement(cellValue(theRowXml, myColRequirements));
+ theTarget.setV2Mapping(cellValue(theRowXml, myColV2Mapping));
+ }
+
}
diff --git a/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/DatatypeParser.java b/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/DatatypeParser.java
index ea015745b96..4c3047f13d5 100644
--- a/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/DatatypeParser.java
+++ b/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/DatatypeParser.java
@@ -1,8 +1,5 @@
package ca.uhn.fhir.starter;
-import java.util.Arrays;
-
-import org.apache.commons.lang3.StringUtils;
import org.w3c.dom.Element;
import ca.uhn.fhir.starter.model.BaseElement;
@@ -25,36 +22,38 @@ public class DatatypeParser extends BaseParser {
return myDatatypeName.toLowerCase() + ".xml";
}
- @Override
- protected void parseBasicElements(Element theRowXml, BaseElement theTarget) {
- String name = cellValue(theRowXml, 0);
- theTarget.setName(name);
-
- int lastDot = name.lastIndexOf('.');
- if (lastDot == -1) {
- theTarget.setElementName(name);
- } else {
- String elementName = name.substring(lastDot + 1);
- String elementParentName = name.substring(0, lastDot);
- theTarget.setElementName(elementName);
- theTarget.setElementParentName(elementParentName);
- }
-
- String cardValue = cellValue(theRowXml, 1);
- if (cardValue != null && cardValue.contains("..")) {
- String[] split = cardValue.split("\\.\\.");
- theTarget.setCardMin(split[0]);
- theTarget.setCardMax(split[1]);
- }
-
- String type = cellValue(theRowXml, 4);
- theTarget.setTypeFromString(type);
-
- theTarget.setShortName(cellValue(theRowXml, 6));
- theTarget.setDefinition(cellValue(theRowXml, 7));
- theTarget.setRequirement(cellValue(theRowXml, 6));
- theTarget.setV2Mapping(cellValue(theRowXml, 13));
- }
+// @Override
+// protected void parseBasicElements(Element theRowXml, BaseElement theTarget) {
+// String name = cellValue(theRowXml, 0);
+// theTarget.setName(name);
+//
+// int lastDot = name.lastIndexOf('.');
+// if (lastDot == -1) {
+// theTarget.setElementName(name);
+// } else {
+// String elementName = name.substring(lastDot + 1);
+// String elementParentName = name.substring(0, lastDot);
+// theTarget.setElementName(elementName);
+// theTarget.setElementParentName(elementParentName);
+// }
+//
+// String cardValue = cellValue(theRowXml, 1);
+// if (cardValue != null && cardValue.contains("..")) {
+// String[] split = cardValue.split("\\.\\.");
+// theTarget.setCardMin(split[0]);
+// theTarget.setCardMax(split[1]);
+// }
+//
+//
+// String type = cellValue(theRowXml, 4);
+// theTarget.setTypeFromString(type);
+//
+// theTarget.setBinding(cellValue(theRowXml, 5));
+// theTarget.setShortName(cellValue(theRowXml, 6));
+// theTarget.setDefinition(cellValue(theRowXml, 7));
+// theTarget.setRequirement(cellValue(theRowXml, 6));
+// theTarget.setV2Mapping(cellValue(theRowXml, 13));
+// }
}
diff --git a/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/ResourceParser.java b/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/ResourceParser.java
index c609b8f1021..482f55c96b9 100644
--- a/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/ResourceParser.java
+++ b/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/ResourceParser.java
@@ -1,8 +1,5 @@
package ca.uhn.fhir.starter;
-import org.w3c.dom.Element;
-
-import ca.uhn.fhir.starter.model.BaseElement;
public class ResourceParser extends BaseParser {
private String myResourceName;
@@ -21,6 +18,38 @@ public class ResourceParser extends BaseParser {
return "/resource.vm";
}
+// @Override
+// protected void parseBasicElements(Element theRowXml, BaseElement theTarget) {
+// String name = cellValue(theRowXml, 0);
+// theTarget.setName(name);
+//
+// int lastDot = name.lastIndexOf('.');
+// if (lastDot == -1) {
+// theTarget.setElementName(name);
+// } else {
+// String elementName = name.substring(lastDot + 1);
+// String elementParentName = name.substring(0, lastDot);
+// theTarget.setElementName(elementName);
+// theTarget.setElementParentName(elementParentName);
+// }
+//
+// String cardValue = cellValue(theRowXml, 1);
+// if (cardValue != null && cardValue.contains("..")) {
+// String[] split = cardValue.split("\\.\\.");
+// theTarget.setCardMin(split[0]);
+// theTarget.setCardMax(split[1]);
+// }
+//
+// String type = cellValue(theRowXml, 5);
+// theTarget.setTypeFromString(type);
+//
+// theTarget.setBinding(cellValue(theRowXml, 6));
+// theTarget.setShortName(cellValue(theRowXml, 7));
+// theTarget.setDefinition(cellValue(theRowXml, 8));
+// theTarget.setRequirement(cellValue(theRowXml, 9));
+// theTarget.setV2Mapping(cellValue(theRowXml, 14));
+// }
+
public static void main(String[] args) throws Exception {
ResourceParser p = new ResourceParser();
p.setDirectory("src/test/resources/res");
@@ -30,48 +59,25 @@ public class ResourceParser extends BaseParser {
DatatypeParser d = new DatatypeParser();
d.setDirectory("src/test/resources/dt");
- d.setDatatypeName ( "humanname");
+ d.setDatatypeName("humanname");
d.setOutputFile("../hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/HumanNameDt.java");
d.parse();
- d.setDatatypeName ( "contact");
+ d.setDatatypeName("contact");
d.setOutputFile("../hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/ContactDt.java");
d.parse();
- d.setDatatypeName ( "address");
+ d.setDatatypeName("address");
d.setOutputFile("../hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/AddressDt.java");
d.parse();
+ d.setDatatypeName("narrative");
+ d.setOutputFile("../hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/NarrativeDt.java");
+ d.parse();
+
+ d.setDatatypeName("quantity");
+ d.setOutputFile("../hapi-fhir-base/src/main/java/ca/uhn/fhir/model/datatype/QuantityDt.java");
+ d.parse();
+
}
-
- @Override
- protected void parseBasicElements(Element theRowXml, BaseElement theTarget) {
- String name = cellValue(theRowXml, 0);
- theTarget.setName(name);
-
- int lastDot = name.lastIndexOf('.');
- if (lastDot == -1) {
- theTarget.setElementName(name);
- } else {
- String elementName = name.substring(lastDot + 1);
- String elementParentName = name.substring(0, lastDot);
- theTarget.setElementName(elementName);
- theTarget.setElementParentName(elementParentName);
- }
-
- String cardValue = cellValue(theRowXml, 1);
- if (cardValue != null && cardValue.contains("..")) {
- String[] split = cardValue.split("\\.\\.");
- theTarget.setCardMin(split[0]);
- theTarget.setCardMax(split[1]);
- }
-
- String type = cellValue(theRowXml, 5);
- theTarget.setTypeFromString(type);
-
- theTarget.setShortName(cellValue(theRowXml, 7));
- theTarget.setDefinition(cellValue(theRowXml, 8));
- theTarget.setRequirement(cellValue(theRowXml, 9));
- theTarget.setV2Mapping(cellValue(theRowXml, 14));
- }
}
\ No newline at end of file
diff --git a/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/model/BaseElement.java b/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/model/BaseElement.java
index 39465d2faa0..8833b01d9b5 100644
--- a/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/model/BaseElement.java
+++ b/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/model/BaseElement.java
@@ -1,13 +1,13 @@
package ca.uhn.fhir.starter.model;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
public abstract class BaseElement {
+ private String myBinding;
private String myCardMax;
private String myCardMin;
private List myChildren;
@@ -17,20 +17,17 @@ public abstract class BaseElement {
private String myElementParentName;
private String myName;
private String myRequirement;
+ private boolean myResourceRef = false;
private String myShortName;
+
private List myType;
+
private String myV2Mapping;
- public List getResourceBlockChildren() {
- ArrayList retVal = new ArrayList();
- for (BaseElement next : getChildren()) {
- if (next instanceof ResourceBlock) {
- retVal.add((ResourceBlock) next);
- }
- }
- return retVal;
+ public String getBinding() {
+ return myBinding;
}
-
+
public String getCardMax() {
return myCardMax;
}
@@ -70,13 +67,23 @@ public abstract class BaseElement {
return myRequirement;
}
+ public List getResourceBlockChildren() {
+ ArrayList retVal = new ArrayList();
+ for (BaseElement next : getChildren()) {
+ if (next instanceof ResourceBlock) {
+ retVal.add((ResourceBlock) next);
+ }
+ }
+ return retVal;
+ }
+
public String getShortName() {
return myShortName;
}
public List getType() {
- if (myType==null) {
- myType=new ArrayList();
+ if (myType == null) {
+ myType = new ArrayList();
}
return myType;
}
@@ -85,6 +92,18 @@ public abstract class BaseElement {
return myV2Mapping;
}
+ public boolean isHasMultipleTypes() {
+ return myType.size() > 1;
+ }
+
+ public boolean isResourceRef() {
+ return myResourceRef;
+ }
+
+ public void setBinding(String theCellValue) {
+ myBinding = theCellValue;
+ }
+
public void setCardMax(String theCardMax) {
myCardMax = theCardMax;
}
@@ -121,24 +140,14 @@ public abstract class BaseElement {
myShortName = theShortName;
}
- public void setV2Mapping(String theV2Mapping) {
- myV2Mapping = theV2Mapping;
- }
-
- private boolean myResourceRef = false;
-
- public boolean isResourceRef() {
- return myResourceRef;
- }
-
public void setTypeFromString(String theType) {
- if (theType==null) {
+ if (theType == null) {
return;
}
String typeString = theType;
if (typeString.startsWith("Resource(")) {
typeString = typeString.substring("Resource(".length(), typeString.length() - 1);
- myResourceRef=true;
+ myResourceRef = true;
}
if (StringUtils.isNotBlank(typeString)) {
String[] types = typeString.replace("=", "").split("\\|");
@@ -146,7 +155,11 @@ public abstract class BaseElement {
getType().add(string.trim());
}
}
-
+
+ }
+
+ public void setV2Mapping(String theV2Mapping) {
+ myV2Mapping = theV2Mapping;
}
}
diff --git a/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/model/Child.java b/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/model/Child.java
index 7e76fd8d439..5ae7f8b64da 100644
--- a/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/model/Child.java
+++ b/hapi-fhir-starter/src/main/java/ca/uhn/fhir/starter/model/Child.java
@@ -31,11 +31,19 @@ public class Child extends BaseElement {
}
public String getMethodName() {
+ String elementName = getElementNameSimplified();
+ elementName = elementName.substring(0,1).toUpperCase() + elementName.substring(1);
+ return elementName;
+ }
+
+ /**
+ * Strips off "[x]"
+ */
+ public String getElementNameSimplified() {
String elementName = getElementName();
if (elementName.endsWith("[x]")) {
elementName = elementName.substring(0, elementName.length() - 3);
}
- elementName = elementName.substring(0,1).toUpperCase() + elementName.substring(1);
return elementName;
}
diff --git a/hapi-fhir-starter/src/main/resources/dt_composite.vm b/hapi-fhir-starter/src/main/resources/dt_composite.vm
index ad4deedd670..bd8933336d5 100644
--- a/hapi-fhir-starter/src/main/resources/dt_composite.vm
+++ b/hapi-fhir-starter/src/main/resources/dt_composite.vm
@@ -1,3 +1,5 @@
+#parse ( "templates.vm" )
+
package ca.uhn.fhir.model.datatype;
import java.util.*;
@@ -6,7 +8,7 @@ import ca.uhn.fhir.model.api.annotation.*;
import ca.uhn.fhir.model.datatype.*;
/**
- * HAPI/FHIR ${resourceName} Datatype
+ * HAPI/FHIR ${className} Datatype
* (${shortName})
*
*
@@ -22,36 +24,7 @@ import ca.uhn.fhir.model.datatype.*;
@DatatypeDef(name="${className}")
public class ${className}Dt extends BaseCompositeDatatype {
-#foreach ( $child in $children )
- @Child(name="${child.elementName}", order=${foreach.index}, min=${child.cardMin}, max=${child.cardMaxForChildAnnotation})
- private ${child.referenceType} ${child.variableName};
-
-#end
-#foreach ( $child in $children )
- /**
- * Gets the value(s) for ${child.elementName} (${child.shortName})
- *
- *
- * Definition:
- * ${child.definition}
- *
- */
- public ${child.referenceType} get${child.methodName}() {
- return ${child.variableName};
- }
-
- /**
- * Sets the value(s) for ${child.elementName} (${child.shortName})
- *
- *
- * Definition:
- * ${child.definition}
- *
- */
- public void set${child.methodName}(${child.referenceType} theValue) {
- ${child.variableName} = theValue;
- }
-
-#end
+#childVars( $children )
+#childAccessors( $children )
}
\ No newline at end of file
diff --git a/hapi-fhir-starter/src/main/resources/resource.vm b/hapi-fhir-starter/src/main/resources/resource.vm
index dd56dbcb233..faacd1a40d2 100644
--- a/hapi-fhir-starter/src/main/resources/resource.vm
+++ b/hapi-fhir-starter/src/main/resources/resource.vm
@@ -1,3 +1,5 @@
+#parse ( "templates.vm" )
+
package ca.uhn.fhir.model.resource;
import java.util.*;
@@ -19,41 +21,11 @@ import ca.uhn.fhir.model.datatype.*;
* ${requirements}
*
*/
-@ResourceDef(name="${resourceName}")
+@ResourceDef(name="${className}")
public class ${className} extends BaseResource {
-#foreach ( $child in $children )
- @Child(name="${child.elementName}", order=${foreach.index}, min=${child.cardMin}, max=${child.cardMaxForChildAnnotation})
- private ${child.referenceType} ${child.variableName};
-
-#end
-
-#foreach ( $child in $children )
- /**
- * Gets the value(s) for ${child.elementName} (${child.shortName})
- *
- *
- * Definition:
- * ${child.definition}
- *
- */
- public ${child.referenceType} get${child.methodName}() {
- return ${child.variableName};
- }
-
- /**
- * Sets the value(s) for ${child.elementName} (${child.shortName})
- *
- *
- * Definition:
- * ${child.definition}
- *
- */
- public void set${child.methodName}(${child.referenceType} theValue) {
- ${child.variableName} = theValue;
- }
-
-#end
+#childVars( $children )
+#childAccessors( $children )
#foreach ( $child in $resourceBlockChildren )
/**
@@ -66,37 +38,8 @@ public class ${className} extends BaseResource {
*/
@Block(name="${child.name}")
public static class ${child.className} {
-#foreach ( $subChild in $child.children )
- @Child(name="${subChild.elementName}", order=${foreach.index}, min=${subChild.cardMin}, max=${subChild.cardMaxForChildAnnotation})
- private ${subChild.referenceType} ${subChild.variableName};
-
-#end
-#foreach ( $subChild in $child.children )
- /**
- * Gets the value(s) for ${subChild.elementName} (${subChild.shortName})
- *
- *
- * Definition:
- * ${subChild.definition}
- *
- */
- public ${subChild.referenceType} get${subChild.methodName}() {
- return ${subChild.variableName};
- }
-
- /**
- * Sets the value(s) for ${subChild.elementName} (${subChild.shortName})
- *
- *
- * Definition:
- * ${subChild.definition}
- *
- */
- public void set${subChild.methodName}(${subChild.referenceType} theValue) {
- ${subChild.variableName} = theValue;
- }
-
-#end
+#childVars( $child.children )
+#childAccessors( $child.children )
}
#end
diff --git a/hapi-fhir-starter/src/main/resources/templates.vm b/hapi-fhir-starter/src/main/resources/templates.vm
new file mode 100644
index 00000000000..c625d7b2f7a
--- /dev/null
+++ b/hapi-fhir-starter/src/main/resources/templates.vm
@@ -0,0 +1,51 @@
+#macro ( childVars $childElements )
+#foreach ( $child in $children )
+#if ($child.resourceRef)
+ @Child(name="${child.elementNameSimplified}", order=${foreach.index}, min=${child.cardMin}, max=${child.cardMaxForChildAnnotation})
+ @ChildResource(types= {
+#foreach ($nextType in ${child.type})
+ ${nextType}.class,
+#end
+ })
+#elseif ($!child.hasMultipleTypes)
+ @Child(name="${child.elementNameSimplified}", order=${foreach.index}, min=${child.cardMin}, max=${child.cardMaxForChildAnnotation}, choice=@Choice(types= {
+#foreach ($nextType in ${child.type})
+ ${nextType}.class,
+#end
+ }))
+#else
+ @Child(name="${child.elementNameSimplified}", order=${foreach.index}, min=${child.cardMin}, max=${child.cardMaxForChildAnnotation})
+#end
+ private ${child.referenceType} ${child.variableName};
+
+#end
+#end
+
+#macro ( childAccessors $childElements )
+#foreach ( $child in $children )
+ /**
+ * Gets the value(s) for ${child.elementName} (${child.shortName})
+ *
+ *
+ * Definition:
+ * ${child.definition}
+ *
+ */
+ public ${child.referenceType} get${child.methodName}() {
+ return ${child.variableName};
+ }
+
+ /**
+ * Sets the value(s) for ${child.elementName} (${child.shortName})
+ *
+ *
+ * Definition:
+ * ${child.definition}
+ *
+ */
+ public void set${child.methodName}(${child.referenceType} theValue) {
+ ${child.variableName} = theValue;
+ }
+
+#end
+#end
diff --git a/hapi-fhir-starter/src/test/resources/dt/narrative.xml b/hapi-fhir-starter/src/test/resources/dt/narrative.xml
new file mode 100644
index 00000000000..3832ba8023a
--- /dev/null
+++ b/hapi-fhir-starter/src/test/resources/dt/narrative.xml
@@ -0,0 +1,332 @@
+
+
+
+
+ Grahame
+ Lloyd McKenzie
+ 2012-03-19T11:21:04Z
+ 2012-07-14T16:02:18Z
+ 14.00
+
+
+
+
+
+ 8055
+ 24195
+ 4080
+ 4365
+ 1
+ False
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Element |
+ Card. |
+ Inv. |
+ Type |
+ Binding |
+ Short Name |
+ Definition |
+ Requirements |
+ Comments |
+ Condition |
+ RIM Mapping |
+ v2 Mapping |
+ To Do |
+ Committee Notes |
+
+
+ Narrative |
+ |
+ |
+ Type |
+ A human-readable formatted text, including images |
+ A human-readable formatted text, including images |
+ N/A |
+
+
+ Narrative.status |
+ 1..1 |
+ code |
+ NarrativeStatus |
+ generated | extensions | additional |
+ The status of the narrative - whether it's entirely generated (from just the defined data or the extensions too), or whether a human authored it and it may contain additional data |
+ N/A |
+
+
+ Narrative.div |
+ 1..1 |
+ xhtml |
+ Limited xhtml content |
+ The actual narrative content, a stripped down version of XHTML |
+ The contents of the html element are an XHTML fragment containing only the basic html formatting elements described in chapters 7-11 and 15 of the HTML 4.0 standard, <a> elements (either name or href), images and internally contained stylesheets. The XHTML content may not contain a head, a body, external stylesheet references, scripts, forms, base/link/xlink, frames, iframes and objects. |
+ N/A |
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ 1
+ 1
+ 1
+ 0
+
+
+ 3
+
+
+ 1
+
+
+ 2
+
+
+ 0
+ 2
+ 6
+
+
+ False
+ False
+
+
+
+
+
+
+
+
+
+ Id |
+ Name |
+ Context |
+ English |
+ OCL |
+ XPath |
+
+
+ 1 |
+ Narrative.div |
+ The narrative SHALL contain only the basic html formatting elements described in chapters 7-11 (except section 4 of chapter 9) and 15 of the HTML 4.0 standard, <a> elements (either name or href), images and internally contained style attributes |
+ not(descendant-or-self::*[not(local-name(.)=('a', 'abbr', 'acronym', 'b', 'big', 'blockquote', 'br', 'caption', 'cite', 'code', 'colgroup', 'dd', 'dfn', 'div', 'dl', 'dt', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'li', 'ol', 'p', 'pre', 'q', 'samp', 'small', 'span', 'strong', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'tt', 'ul', 'var'))]) |
+
+
+ 2 |
+ Narrative.div |
+ The narrative SHALL have some non-whitespace content |
+ descendant::text()[normalize-space(.)!=''] or descendant::html:img[@src] |
+
+
+ 3 |
+ Narrative.div |
+ The narrative SHALL contain only the basic html formatting attributes described in chapters 7-11 (except section 4 of chapter 9) and 15 of the HTML 4.0 standard, <a> elements (either name or href), images and internally contained style attributes |
+ not(descendant-or-self::*/@*[not(name(.)=('abbr', 'accesskey', 'align', 'alt', 'axis', 'bgcolor', 'border', 'cellhalign', 'cellpadding', 'cellspacing', 'cellvalign', 'char', 'charoff', 'charset', 'cite', 'class', 'colspan', 'compact', 'coords', 'dir', 'frame', 'headers', 'height', 'href', 'hreflang', 'hspace', 'id', 'lang', 'longdesc', 'name', 'nowrap', 'rel', 'rev', 'rowspan', 'rules', 'scope', 'shape', 'span', 'src', 'start', 'style', 'summary', 'tabindex', 'title', 'type', 'valign', 'value', 'vspace', 'width'))]) |
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+ 9
+ 7
+
+
+ False
+ False
+
+
+
+
+
+
+
+
+
+
+ Binding Name |
+ Definition |
+ Binding |
+ Reference |
+ Description |
+
+
+ NarrativeStatus |
+ The status of a resource narrative |
+ code list |
+ #narrative-status |
+
+
+
+
+
+
+
+
+
+
+
+ 3
+ 3
+ 3
+
+
+ False
+ False
+
+
+
+
+
+
+
+ Id |
+ Code |
+ Definition |
+ |
+ |
+ |
+ |
+
+
+ 1 |
+ generated |
+ The contents of the narrative are entirely generated from the structured data in the resource. |
+
+
+ 2 |
+ extensions |
+ The contents of the narrative are entirely generated from the structured data in the resource and some of the content is generated from extensions |
+
+
+ 3 |
+ additional |
+ The contents of the narrative contain additional information not found in the structured data |
+
+
+ 4 |
+ empty |
+ the contents of the narrative are some equivalent of "No human-readable text provided for this resource" |
+
+
+
+
+
+
+
+
+
+
+
+ 3
+ 3
+
+
+ False
+ False
+
+
+
diff --git a/hapi-fhir-starter/src/test/resources/dt/quantity.xml b/hapi-fhir-starter/src/test/resources/dt/quantity.xml
new file mode 100644
index 00000000000..3eeecbf7db9
--- /dev/null
+++ b/hapi-fhir-starter/src/test/resources/dt/quantity.xml
@@ -0,0 +1,408 @@
+
+
+
+
+ Grahame
+ Grahame
+ 2012-03-19T11:20:53Z
+ 2013-01-21T03:40:20Z
+ 14.00
+
+
+
+
+
+ 6510
+ 23355
+ 3405
+ 2175
+ False
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Element |
+ Card. |
+ Inv. |
+ Is Modifier |
+ Type |
+ Binding |
+ Short Name |
+ Definition |
+ Requirements |
+ Comments |
+ RIM Mapping |
+ v2 Mapping |
+ To Do |
+ Committee Notes |
+
+
+ Quantity |
+ |
+ |
+ |
+ Type |
+ A measured or measurable amount |
+ A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies |
+ Need to able to capture all sorts of measured values, even if the measured value are not precisely quantified. Values include exact measures such as 3.51g, customary units such as 3 tablets, and currencies such as $100.32USD |
+ The context of use may frequently define what kind of quantity this is and therefore what kind of units can be used. The context of use may also restrict the values for the comparator |
+ PQ, IVL<PQ>, MO, CO, depending on the values |
+ SN (see also Range) or CQ |
+
+
+ Quantity.value |
+ 0..1 |
+ decimal |
+ Numerical value (with implicit precision) |
+ The value of the measured amount. The value includes an implicit precision in the presentation of the value |
+ Precision is handled implicitly in almost all cases of measurement |
+ The implicit precision in the value should always be honored. Monetary values have their own rules for handling precision (refer to standard accounting text books) |
+ PQ.value, CO.value, MO.value, IVL.high or IVL.low depending on the value |
+ SN.2 / CQ - N/A |
+
+
+ Quantity.comparator |
+ 0..1 |
+ Y |
+ code |
+ QuantityCompararator |
+ < | <= | >= | > - how to understand the value |
+ How the value should be understood and represented - whether the actual value is greater or less than the stated value due to measurement issues. E.g. if the comparator is "<" , then the real value is < stated value |
+ Need a framework for handling measures where the value is <5ug/L or >400mg/L due to the limitations of measuring methodology. |
+ This is labeled as "Is Modifier" because the comparator modifies the interpretation of the value significantly. If there is no comparator, then there is no modification of the value |
+ IVL properties |
+ SN.1 / CQ.1 |
+
+
+ Quantity.units |
+ 0..1 |
+ string |
+ Unit representation |
+ A human-readable form of the units |
+ There are many representations for units and in many contexts, particular representations are fixed and required. I.e. mcg for micrograms |
+ PQ.unit |
+ (see OBX.6 etc) / CQ.2 |
+
+
+ Quantity.system |
+ 0..1 |
+ 3 |
+ uri |
+ System that defines coded unit form |
+ The identification of the system that provides the coded form of the unit |
+ Need to know the system that defines the coded form of the unit |
+ CO.codeSystem, PQ.translation.codeSystem |
+ (see OBX.6 etc) / CQ.2 |
+
+
+ Quantity.code |
+ 0..1 |
+ code |
+ Coded form of the unit |
+ A computer processable form of the units in some unit representation system |
+ Need a computable form of the units that is fixed across all forms. UCUM provides this for quantities, but SNOMED CT provides many units of interest |
+ The preferred system is UCUM, but SNOMED CT can also be used (for customary units) or ISO 4217 for currency.
The context of use may additionally require a code from a particular system (Unless the Quantity element has a dataAbsentReason flag) |
+ PQ.code, MO.currency, PQ.translation.code |
+ (see OBX.6 etc) / CQ.2 |
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+ 6
+ 9
+
+
+ False
+ False
+
+
+
+
+
+
+
+
+
+
+
+ Id |
+ Name |
+ Context |
+ English |
+ OCL |
+ XPath |
+
+
+ 3 |
+ SHALL have a system |
+ Quantity |
+ If a code for the units is present, the system SHALL also be present |
+ code.oclIsDefined implies system.oclIsDefined |
+ not(exists(f:code)) or exists(f:system) |
+
+
+
+
+
+
+
+
+
+
+
+ 3
+ 1
+ R2:R3
+
+
+ False
+ False
+
+
+
+
+
+
+
+
+ Name |
+ Rules |
+ XPath |
+ OCL |
+
+
+ Duration |
+ There SHALL be a code if there is a value and it SHALL be an expression of time. If system is present, it SHALL be UCUM. |
+ (f:code or not(f:value)) and (not(exists(f:system)) or f:system/@value='http://unitsofmeasure.org') |
+
+
+ Distance |
+ There SHALL be a code if there is a value and it SHALL be an expression of length. If system is present, it SHALL be UCUM. |
+ (f:code or not(f:value)) and (not(exists(f:system)) or f:system/@value='http://unitsofmeasure.org') |
+
+
+ Count |
+ There SHALL be a code with a value of "1" if there is a value and it SHALL be an expression of length. If system is present, it SHALL be UCUM. If present, the value SHALL a whole number. |
+ (f:code or not(f:value)) and (not(exists(f:system)) or (f:system/@value='http://unitsofmeasure.org' and f:code/@value='1' )) and not(contains(f:value/@value, '.')) |
+
+
+ Money |
+ There SHALL be a code if there is a value and it SHALL be an expression of currency. If system is present, it SHALL be ISO 4217 (system = "urn:std:iso:4217" - currency). |
+ (f:code or not(f:value)) and (not(exists(f:system)) or f:system/@value='urn:std:iso:4217') |
+
+
+ CodedQuantity |
+ There SHALL be a code if there is a value. If system is present, it SHALL be UCUM. |
+ (f:code or not(f:value)) and (not(exists(f:system)) or f:system/@value='http://unitsofmeasure.org') |
+
+
+ Age |
+ There SHALL be a code if there is a value and it SHALL be an expression of time. If system is present, it SHALL be UCUM. If value is present, it SHALL be positive. |
+ (f:code or not(f:value)) and (not(exists(f:system)) or f:system/@value='http://unitsofmeasure.org') and not(contains(f:value/@value, '-')) |
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ 1
+ 1
+ 1
+ 0
+
+
+ 3
+
+
+ 1
+
+
+ 2
+
+
+ 0
+ 5
+
+
+ False
+ False
+
+
+
+
+
+
+
+
+
+
+ Binding Name |
+ Definition |
+ Binding |
+ Reference |
+ Description |
+
+
+ QuantityCompararator |
+ How the Quantity should be understood and represented |
+ code list |
+ #quantity-comparator |
+
+
+
+
+
+
+
+
+
+
+
+ 3
+ 2
+ 1
+
+
+ False
+ False
+
+
+
+
+
+
+ Id |
+ Code |
+ Definition |
+ |
+ |
+ |
+ |
+
+
+ 1 |
+ < |
+ The actual value is less than the given value |
+
+
+ 2 |
+ <= |
+ The actual value is less than or equal to the given value |
+
+
+ 3 |
+ >= |
+ The actual value is greater than or equal to the given value |
+
+
+ 4 |
+ > |
+ The actual value is greater than the given value |
+
+
+
+
+
+
+
+
+
+
+
+ 3
+ 3
+
+
+ False
+ False
+
+
+
diff --git a/hapi-fhir-starter/src/test/resources/vs/valueset-administrative-gender.xml b/hapi-fhir-starter/src/test/resources/vs/valueset-administrative-gender.xml
new file mode 100644
index 00000000000..d759c4e16ed
--- /dev/null
+++ b/hapi-fhir-starter/src/test/resources/vs/valueset-administrative-gender.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hapi-fhir-starter/src/test/resources/vs/valueset-marital-status.xml b/hapi-fhir-starter/src/test/resources/vs/valueset-marital-status.xml
new file mode 100644
index 00000000000..6976ff5ce6a
--- /dev/null
+++ b/hapi-fhir-starter/src/test/resources/vs/valueset-marital-status.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+