package ca.uhn.fhir.rest.client;
import java.util.ArrayList;
import java.util.List;
import org.hl7.fhir.dstu3.model.BaseResource;
import org.hl7.fhir.dstu3.model.DateType;
import org.hl7.fhir.dstu3.model.DomainResource;
import org.hl7.fhir.dstu3.model.HumanName;
import org.hl7.fhir.dstu3.model.Patient;
import org.hl7.fhir.dstu3.model.ResourceType;
import org.hl7.fhir.dstu3.model.StringType;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.api.annotation.Extension;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.util.ElementUtil;
@ResourceDef(name="Patient", profile="http://example.com/StructureDefinition/patient_with_extensions")
public class MyPatientWithExtensions extends DomainResource {
private static final long serialVersionUID = 1L;
@Extension(url = "http://example.com/ext/date", definedLocally = false, isModifier = true)
@Child(name = "modExt")
private DateType myDateExt;
@Extension(url = "http://example.com/ext/string", definedLocally = false, isModifier = false)
@Child(name = "extAtt")
private StringType myStringExt;
@Child(name = "name", type = {HumanName.class}, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
@Description(shortDefinition="A name associated with the patient", formalDefinition="A name associated with the individual." )
private List<HumanName> myName;
public List<HumanName> getName() {
if (myName == null) {
myName = new ArrayList<HumanName>();
}
return myName;
}
public void setName(List<HumanName> theName) {
myName = theName;
}
public DateType getDateExt() {
if (myDateExt == null) {
myDateExt = new DateType();
}
return myDateExt;
}
public StringType getStringExt() {
if (myStringExt == null) {
myStringExt = new StringType();
}
return myStringExt;
}
@Override
public boolean isEmpty() {
return super.isEmpty() && ElementUtil.isEmpty(myStringExt, myDateExt);
}
public void setDateExt(DateType theDateExt) {
myDateExt = theDateExt;
}
public void setStringExt(StringType theStringExt) {
myStringExt = theStringExt;
}
@Override
public DomainResource copy() {
return null;
}
@Override
public ResourceType getResourceType() {
return ResourceType.Patient;
}
public HumanName addName() {
HumanName retVal = new HumanName();
getName().add(retVal);
return retVal;
}
}