001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017package ca.uhn.fhir.model.dstu2.resource;
018
019import java.math.BigDecimal;
020import java.net.URI;
021import java.util.*;
022import ca.uhn.fhir.model.api.*;
023import ca.uhn.fhir.model.api.annotation.*;
024import ca.uhn.fhir.rest.gclient.*;
025
026import ca.uhn.fhir.model.dstu2.valueset.AccountStatusEnum;
027import ca.uhn.fhir.model.dstu2.valueset.ActionListEnum;
028import ca.uhn.fhir.model.dstu2.composite.AddressDt;
029import ca.uhn.fhir.model.dstu2.valueset.AdjudicationCodesEnum;
030import ca.uhn.fhir.model.dstu2.valueset.AdjudicationErrorCodesEnum;
031import ca.uhn.fhir.model.dstu2.valueset.AdjustmentReasonCodesEnum;
032import ca.uhn.fhir.model.dstu2.valueset.AdministrativeGenderEnum;
033import ca.uhn.fhir.model.dstu2.valueset.AdmitSourceEnum;
034import ca.uhn.fhir.model.dstu2.resource.AllergyIntolerance;
035import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCategoryEnum;
036import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCertaintyEnum;
037import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCriticalityEnum;
038import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceSeverityEnum;
039import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceStatusEnum;
040import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceTypeEnum;
041import ca.uhn.fhir.model.dstu2.composite.AnnotationDt;
042import ca.uhn.fhir.model.dstu2.valueset.AnswerFormatEnum;
043import ca.uhn.fhir.model.dstu2.resource.Appointment;
044import ca.uhn.fhir.model.dstu2.valueset.AppointmentStatusEnum;
045import ca.uhn.fhir.model.dstu2.valueset.AssertionDirectionTypeEnum;
046import ca.uhn.fhir.model.dstu2.valueset.AssertionOperatorTypeEnum;
047import ca.uhn.fhir.model.dstu2.valueset.AssertionResponseTypesEnum;
048import ca.uhn.fhir.model.dstu2.composite.AttachmentDt;
049import ca.uhn.fhir.model.dstu2.valueset.AuditEventActionEnum;
050import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectLifecycleEnum;
051import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectRoleEnum;
052import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectTypeEnum;
053import ca.uhn.fhir.model.dstu2.valueset.AuditEventOutcomeEnum;
054import ca.uhn.fhir.model.dstu2.valueset.AuditEventParticipantNetworkTypeEnum;
055import ca.uhn.fhir.model.dstu2.valueset.AuditEventSourceTypeEnum;
056import ca.uhn.fhir.model.dstu2.valueset.BindingStrengthEnum;
057import ca.uhn.fhir.model.dstu2.resource.BodySite;
058import ca.uhn.fhir.model.dstu2.valueset.BundleTypeEnum;
059import ca.uhn.fhir.model.dstu2.resource.CarePlan;
060import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityStatusEnum;
061import ca.uhn.fhir.model.dstu2.valueset.CarePlanRelationshipEnum;
062import ca.uhn.fhir.model.dstu2.valueset.CarePlanStatusEnum;
063import ca.uhn.fhir.model.dstu2.resource.Claim;
064import ca.uhn.fhir.model.dstu2.resource.ClaimResponse;
065import ca.uhn.fhir.model.dstu2.valueset.ClaimTypeEnum;
066import ca.uhn.fhir.model.dstu2.resource.ClinicalImpression;
067import ca.uhn.fhir.model.dstu2.valueset.ClinicalImpressionStatusEnum;
068import ca.uhn.fhir.model.dstu2.composite.CodeableConceptDt;
069import ca.uhn.fhir.model.dstu2.composite.CodingDt;
070import ca.uhn.fhir.model.dstu2.resource.CommunicationRequest;
071import ca.uhn.fhir.model.dstu2.valueset.CommunicationRequestStatusEnum;
072import ca.uhn.fhir.model.dstu2.valueset.CommunicationStatusEnum;
073import ca.uhn.fhir.model.dstu2.resource.Composition;
074import ca.uhn.fhir.model.dstu2.valueset.CompositionAttestationModeEnum;
075import ca.uhn.fhir.model.dstu2.valueset.CompositionStatusEnum;
076import ca.uhn.fhir.model.dstu2.valueset.ConceptMapEquivalenceEnum;
077import ca.uhn.fhir.model.dstu2.resource.Condition;
078import ca.uhn.fhir.model.dstu2.valueset.ConditionCategoryCodesEnum;
079import ca.uhn.fhir.model.dstu2.valueset.ConditionClinicalStatusCodesEnum;
080import ca.uhn.fhir.model.dstu2.valueset.ConditionVerificationStatusEnum;
081import ca.uhn.fhir.model.dstu2.valueset.ConditionalDeleteStatusEnum;
082import ca.uhn.fhir.model.dstu2.resource.Conformance;
083import ca.uhn.fhir.model.dstu2.valueset.ConformanceEventModeEnum;
084import ca.uhn.fhir.model.dstu2.valueset.ConformanceResourceStatusEnum;
085import ca.uhn.fhir.model.dstu2.valueset.ConformanceStatementKindEnum;
086import ca.uhn.fhir.model.dstu2.composite.ContactPointDt;
087import ca.uhn.fhir.model.dstu2.valueset.ContentTypeEnum;
088import ca.uhn.fhir.model.dstu2.resource.Contract;
089import ca.uhn.fhir.model.dstu2.resource.Coverage;
090import ca.uhn.fhir.model.dstu2.valueset.DataElementStringencyEnum;
091import ca.uhn.fhir.model.dstu2.valueset.DaysOfWeekEnum;
092import ca.uhn.fhir.model.dstu2.valueset.DetectedIssueSeverityEnum;
093import ca.uhn.fhir.model.dstu2.resource.Device;
094import ca.uhn.fhir.model.dstu2.resource.DeviceComponent;
095import ca.uhn.fhir.model.dstu2.resource.DeviceMetric;
096import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationStateEnum;
097import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationTypeEnum;
098import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCategoryEnum;
099import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricColorEnum;
100import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricOperationalStatusEnum;
101import ca.uhn.fhir.model.dstu2.valueset.DeviceStatusEnum;
102import ca.uhn.fhir.model.dstu2.resource.DeviceUseRequest;
103import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestPriorityEnum;
104import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestStatusEnum;
105import ca.uhn.fhir.model.dstu2.resource.DiagnosticOrder;
106import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderPriorityEnum;
107import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderStatusEnum;
108import ca.uhn.fhir.model.dstu2.resource.DiagnosticReport;
109import ca.uhn.fhir.model.dstu2.valueset.DiagnosticReportStatusEnum;
110import ca.uhn.fhir.model.dstu2.valueset.DigitalMediaTypeEnum;
111import ca.uhn.fhir.model.dstu2.valueset.DocumentModeEnum;
112import ca.uhn.fhir.model.dstu2.resource.DocumentReference;
113import ca.uhn.fhir.model.dstu2.valueset.DocumentReferenceStatusEnum;
114import ca.uhn.fhir.model.dstu2.valueset.DocumentRelationshipTypeEnum;
115import ca.uhn.fhir.model.dstu2.composite.ElementDefinitionDt;
116import ca.uhn.fhir.model.dstu2.resource.EligibilityRequest;
117import ca.uhn.fhir.model.dstu2.resource.Encounter;
118import ca.uhn.fhir.model.dstu2.valueset.EncounterClassEnum;
119import ca.uhn.fhir.model.dstu2.valueset.EncounterLocationStatusEnum;
120import ca.uhn.fhir.model.dstu2.valueset.EncounterStateEnum;
121import ca.uhn.fhir.model.dstu2.resource.EnrollmentRequest;
122import ca.uhn.fhir.model.dstu2.resource.EpisodeOfCare;
123import ca.uhn.fhir.model.dstu2.valueset.EpisodeOfCareStatusEnum;
124import ca.uhn.fhir.model.dstu2.valueset.ExtensionContextEnum;
125import ca.uhn.fhir.model.dstu2.valueset.FamilyHistoryStatusEnum;
126import ca.uhn.fhir.model.dstu2.resource.FamilyMemberHistory;
127import ca.uhn.fhir.model.dstu2.valueset.FilterOperatorEnum;
128import ca.uhn.fhir.model.dstu2.valueset.FlagStatusEnum;
129import ca.uhn.fhir.model.dstu2.resource.Goal;
130import ca.uhn.fhir.model.dstu2.valueset.GoalPriorityEnum;
131import ca.uhn.fhir.model.dstu2.valueset.GoalStatusEnum;
132import ca.uhn.fhir.model.dstu2.resource.Group;
133import ca.uhn.fhir.model.dstu2.valueset.GroupTypeEnum;
134import ca.uhn.fhir.model.dstu2.valueset.GuideDependencyTypeEnum;
135import ca.uhn.fhir.model.dstu2.valueset.GuidePageKindEnum;
136import ca.uhn.fhir.model.dstu2.valueset.GuideResourcePurposeEnum;
137import ca.uhn.fhir.model.dstu2.valueset.HTTPVerbEnum;
138import ca.uhn.fhir.model.dstu2.resource.HealthcareService;
139import ca.uhn.fhir.model.dstu2.composite.HumanNameDt;
140import ca.uhn.fhir.model.dstu2.composite.IdentifierDt;
141import ca.uhn.fhir.model.dstu2.valueset.IdentifierTypeCodesEnum;
142import ca.uhn.fhir.model.dstu2.valueset.IdentityAssuranceLevelEnum;
143import ca.uhn.fhir.model.dstu2.resource.ImagingObjectSelection;
144import ca.uhn.fhir.model.dstu2.resource.ImagingStudy;
145import ca.uhn.fhir.model.dstu2.resource.Immunization;
146import ca.uhn.fhir.model.dstu2.valueset.InstanceAvailabilityEnum;
147import ca.uhn.fhir.model.dstu2.valueset.IssueSeverityEnum;
148import ca.uhn.fhir.model.dstu2.valueset.IssueTypeEnum;
149import ca.uhn.fhir.model.dstu2.valueset.KOStitleEnum;
150import ca.uhn.fhir.model.dstu2.valueset.LinkTypeEnum;
151import ca.uhn.fhir.model.dstu2.valueset.ListModeEnum;
152import ca.uhn.fhir.model.dstu2.valueset.ListOrderCodesEnum;
153import ca.uhn.fhir.model.dstu2.valueset.ListStatusEnum;
154import ca.uhn.fhir.model.dstu2.resource.Location;
155import ca.uhn.fhir.model.dstu2.valueset.LocationModeEnum;
156import ca.uhn.fhir.model.dstu2.valueset.LocationStatusEnum;
157import ca.uhn.fhir.model.dstu2.valueset.LocationTypeEnum;
158import ca.uhn.fhir.model.dstu2.valueset.MaritalStatusCodesEnum;
159import ca.uhn.fhir.model.dstu2.valueset.MeasmntPrincipleEnum;
160import ca.uhn.fhir.model.dstu2.resource.Media;
161import ca.uhn.fhir.model.dstu2.resource.Medication;
162import ca.uhn.fhir.model.dstu2.valueset.MedicationAdministrationStatusEnum;
163import ca.uhn.fhir.model.dstu2.valueset.MedicationDispenseStatusEnum;
164import ca.uhn.fhir.model.dstu2.resource.MedicationOrder;
165import ca.uhn.fhir.model.dstu2.valueset.MedicationOrderStatusEnum;
166import ca.uhn.fhir.model.dstu2.resource.MedicationStatement;
167import ca.uhn.fhir.model.dstu2.valueset.MedicationStatementStatusEnum;
168import ca.uhn.fhir.model.dstu2.valueset.MessageEventEnum;
169import ca.uhn.fhir.model.dstu2.valueset.MessageSignificanceCategoryEnum;
170import ca.uhn.fhir.model.dstu2.valueset.MessageTransportEnum;
171import ca.uhn.fhir.model.dstu2.resource.NamingSystem;
172import ca.uhn.fhir.model.dstu2.valueset.NamingSystemIdentifierTypeEnum;
173import ca.uhn.fhir.model.dstu2.valueset.NamingSystemTypeEnum;
174import ca.uhn.fhir.model.dstu2.valueset.NoteTypeEnum;
175import ca.uhn.fhir.model.dstu2.resource.NutritionOrder;
176import ca.uhn.fhir.model.dstu2.valueset.NutritionOrderStatusEnum;
177import ca.uhn.fhir.model.dstu2.resource.Observation;
178import ca.uhn.fhir.model.dstu2.valueset.ObservationRelationshipTypeEnum;
179import ca.uhn.fhir.model.dstu2.valueset.ObservationStatusEnum;
180import ca.uhn.fhir.model.dstu2.resource.OperationDefinition;
181import ca.uhn.fhir.model.dstu2.valueset.OperationKindEnum;
182import ca.uhn.fhir.model.dstu2.resource.OperationOutcome;
183import ca.uhn.fhir.model.dstu2.valueset.OperationParameterUseEnum;
184import ca.uhn.fhir.model.dstu2.resource.Order;
185import ca.uhn.fhir.model.dstu2.valueset.OrderStatusEnum;
186import ca.uhn.fhir.model.dstu2.resource.Organization;
187import ca.uhn.fhir.model.dstu2.valueset.ParticipantRequiredEnum;
188import ca.uhn.fhir.model.dstu2.valueset.ParticipantStatusEnum;
189import ca.uhn.fhir.model.dstu2.valueset.ParticipantTypeEnum;
190import ca.uhn.fhir.model.dstu2.valueset.ParticipationStatusEnum;
191import ca.uhn.fhir.model.dstu2.resource.Patient;
192import ca.uhn.fhir.model.dstu2.valueset.PayeeTypeCodesEnum;
193import ca.uhn.fhir.model.dstu2.composite.PeriodDt;
194import ca.uhn.fhir.model.dstu2.resource.Person;
195import ca.uhn.fhir.model.dstu2.resource.Practitioner;
196import ca.uhn.fhir.model.dstu2.resource.Procedure;
197import ca.uhn.fhir.model.dstu2.resource.ProcedureRequest;
198import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestPriorityEnum;
199import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestStatusEnum;
200import ca.uhn.fhir.model.dstu2.valueset.ProcedureStatusEnum;
201import ca.uhn.fhir.model.dstu2.resource.ProcessRequest;
202import ca.uhn.fhir.model.dstu2.valueset.ProvenanceEntityRoleEnum;
203import ca.uhn.fhir.model.dstu2.composite.QuantityDt;
204import ca.uhn.fhir.model.dstu2.resource.Questionnaire;
205import ca.uhn.fhir.model.dstu2.resource.QuestionnaireResponse;
206import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireResponseStatusEnum;
207import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireStatusEnum;
208import ca.uhn.fhir.model.dstu2.composite.RangeDt;
209import ca.uhn.fhir.model.dstu2.composite.RatioDt;
210import ca.uhn.fhir.model.dstu2.valueset.ReferralMethodEnum;
211import ca.uhn.fhir.model.dstu2.resource.ReferralRequest;
212import ca.uhn.fhir.model.dstu2.valueset.ReferralStatusEnum;
213import ca.uhn.fhir.model.dstu2.resource.RelatedPerson;
214import ca.uhn.fhir.model.dstu2.valueset.RemittanceOutcomeEnum;
215import ca.uhn.fhir.model.dstu2.valueset.ResourceTypeEnum;
216import ca.uhn.fhir.model.dstu2.valueset.ResourceVersionPolicyEnum;
217import ca.uhn.fhir.model.dstu2.valueset.ResponseTypeEnum;
218import ca.uhn.fhir.model.dstu2.valueset.RestfulConformanceModeEnum;
219import ca.uhn.fhir.model.dstu2.valueset.RestfulSecurityServiceEnum;
220import ca.uhn.fhir.model.dstu2.resource.RiskAssessment;
221import ca.uhn.fhir.model.dstu2.valueset.RulesetCodesEnum;
222import ca.uhn.fhir.model.dstu2.composite.SampledDataDt;
223import ca.uhn.fhir.model.dstu2.resource.Schedule;
224import ca.uhn.fhir.model.dstu2.valueset.SearchEntryModeEnum;
225import ca.uhn.fhir.model.dstu2.valueset.SearchModifierCodeEnum;
226import ca.uhn.fhir.model.dstu2.valueset.SearchParamTypeEnum;
227import ca.uhn.fhir.model.dstu2.valueset.ServiceProvisionConditionsEnum;
228import ca.uhn.fhir.model.dstu2.composite.SignatureDt;
229import ca.uhn.fhir.model.dstu2.resource.Slot;
230import ca.uhn.fhir.model.dstu2.valueset.SlotStatusEnum;
231import ca.uhn.fhir.model.dstu2.resource.Specimen;
232import ca.uhn.fhir.model.dstu2.valueset.SpecimenStatusEnum;
233import ca.uhn.fhir.model.dstu2.resource.StructureDefinition;
234import ca.uhn.fhir.model.dstu2.valueset.StructureDefinitionKindEnum;
235import ca.uhn.fhir.model.dstu2.valueset.SubscriptionChannelTypeEnum;
236import ca.uhn.fhir.model.dstu2.valueset.SubscriptionStatusEnum;
237import ca.uhn.fhir.model.dstu2.resource.Substance;
238import ca.uhn.fhir.model.dstu2.valueset.SubstanceCategoryCodesEnum;
239import ca.uhn.fhir.model.dstu2.valueset.SupplyDeliveryStatusEnum;
240import ca.uhn.fhir.model.dstu2.resource.SupplyRequest;
241import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestStatusEnum;
242import ca.uhn.fhir.model.dstu2.valueset.SystemRestfulInteractionEnum;
243import ca.uhn.fhir.model.api.TemporalPrecisionEnum;
244import ca.uhn.fhir.model.dstu2.composite.TimingDt;
245import ca.uhn.fhir.model.dstu2.valueset.TransactionModeEnum;
246import ca.uhn.fhir.model.dstu2.valueset.TypeRestfulInteractionEnum;
247import ca.uhn.fhir.model.dstu2.valueset.UnknownContentCodeEnum;
248import ca.uhn.fhir.model.dstu2.valueset.UseEnum;
249import ca.uhn.fhir.model.dstu2.resource.ValueSet;
250import ca.uhn.fhir.model.dstu2.valueset.VisionBaseEnum;
251import ca.uhn.fhir.model.dstu2.valueset.VisionEyesEnum;
252import ca.uhn.fhir.model.dstu2.resource.VisionPrescription;
253import ca.uhn.fhir.model.dstu2.valueset.XPathUsageTypeEnum;
254import ca.uhn.fhir.model.api.IResource;
255import ca.uhn.fhir.model.dstu2.composite.AgeDt;
256import ca.uhn.fhir.model.dstu2.composite.BoundCodeableConceptDt;
257import ca.uhn.fhir.model.dstu2.composite.DurationDt;
258import ca.uhn.fhir.model.dstu2.composite.MoneyDt;
259import ca.uhn.fhir.model.dstu2.composite.NarrativeDt;
260import ca.uhn.fhir.model.dstu2.composite.ResourceReferenceDt;
261import ca.uhn.fhir.model.dstu2.composite.SimpleQuantityDt;
262import ca.uhn.fhir.model.primitive.Base64BinaryDt;
263import ca.uhn.fhir.model.primitive.BooleanDt;
264import ca.uhn.fhir.model.primitive.BoundCodeDt;
265import ca.uhn.fhir.model.primitive.CodeDt;
266import ca.uhn.fhir.model.primitive.DateDt;
267import ca.uhn.fhir.model.primitive.DateTimeDt;
268import ca.uhn.fhir.model.primitive.DecimalDt;
269import ca.uhn.fhir.model.primitive.IdDt;
270import ca.uhn.fhir.model.primitive.InstantDt;
271import ca.uhn.fhir.model.primitive.IntegerDt;
272import ca.uhn.fhir.model.primitive.OidDt;
273import ca.uhn.fhir.model.primitive.PositiveIntDt;
274import ca.uhn.fhir.model.primitive.StringDt;
275import ca.uhn.fhir.model.primitive.TimeDt;
276import ca.uhn.fhir.model.primitive.UnsignedIntDt;
277import ca.uhn.fhir.model.primitive.UriDt;
278
279
280/**
281 * HAPI/FHIR <b>Composition</b> Resource
282 * ()
283 *
284 * <p>
285 * <b>Definition:</b>
286 * A set of healthcare-related information that is assembled together into a single logical document that provides a single coherent statement of meaning, establishes its own context and that has clinical attestation with regard to who is making the statement. While a Composition defines the structure, it does not actually contain the content: rather the full content of a document is contained in a Bundle, of which the Composition is the first resource contained
287 * </p> 
288 *
289 * <p>
290 * <b>Requirements:</b>
291 * To support documents, and also to capture the EN13606 notion of an attested commit to the patient EHR, and to allow a set of disparate resources at the information/engineering level to be gathered into a clinical statement
292 * </p> 
293 *
294 * <p>
295 * <b>Profile Definition:</b>
296 * <a href="http://hl7.org/fhir/profiles/Composition">http://hl7.org/fhir/profiles/Composition</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="Composition", profile="http://hl7.org/fhir/profiles/Composition", id="composition")
301public class Composition extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource 
303    {
304
305        /**
306         * Search parameter constant for <b>type</b>
307         * <p>
308         * Description: <b></b><br>
309         * Type: <b>token</b><br>
310         * Path: <b>Composition.type</b><br>
311         * </p>
312         */
313        @SearchParamDefinition(name="type", path="Composition.type", description="", type="token" 
314 )
315        public static final String SP_TYPE = "type";
316
317        /**
318         * <b>Fluent Client</b> search parameter constant for <b>type</b>
319         * <p>
320         * Description: <b></b><br>
321         * Type: <b>token</b><br>
322         * Path: <b>Composition.type</b><br>
323         * </p>
324         */
325        public static final TokenClientParam TYPE = new TokenClientParam(SP_TYPE);
326
327        /**
328         * Search parameter constant for <b>class</b>
329         * <p>
330         * Description: <b></b><br>
331         * Type: <b>token</b><br>
332         * Path: <b>Composition.class</b><br>
333         * </p>
334         */
335        @SearchParamDefinition(name="class", path="Composition.class", description="", type="token" 
336 )
337        public static final String SP_CLASS = "class";
338
339        /**
340         * <b>Fluent Client</b> search parameter constant for <b>class</b>
341         * <p>
342         * Description: <b></b><br>
343         * Type: <b>token</b><br>
344         * Path: <b>Composition.class</b><br>
345         * </p>
346         */
347        public static final TokenClientParam CLASS = new TokenClientParam(SP_CLASS);
348
349        /**
350         * Search parameter constant for <b>date</b>
351         * <p>
352         * Description: <b></b><br>
353         * Type: <b>date</b><br>
354         * Path: <b>Composition.date</b><br>
355         * </p>
356         */
357        @SearchParamDefinition(name="date", path="Composition.date", description="", type="date" 
358 )
359        public static final String SP_DATE = "date";
360
361        /**
362         * <b>Fluent Client</b> search parameter constant for <b>date</b>
363         * <p>
364         * Description: <b></b><br>
365         * Type: <b>date</b><br>
366         * Path: <b>Composition.date</b><br>
367         * </p>
368         */
369        public static final DateClientParam DATE = new DateClientParam(SP_DATE);
370
371        /**
372         * Search parameter constant for <b>subject</b>
373         * <p>
374         * Description: <b></b><br>
375         * Type: <b>reference</b><br>
376         * Path: <b>Composition.subject</b><br>
377         * </p>
378         */
379        @SearchParamDefinition(name="subject", path="Composition.subject", description="", type="reference" 
380, providesMembershipIn={
381 @Compartment(name="Patient") ,  @Compartment(name="Practitioner")      }
382 )
383        public static final String SP_SUBJECT = "subject";
384
385        /**
386         * <b>Fluent Client</b> search parameter constant for <b>subject</b>
387         * <p>
388         * Description: <b></b><br>
389         * Type: <b>reference</b><br>
390         * Path: <b>Composition.subject</b><br>
391         * </p>
392         */
393        public static final ReferenceClientParam SUBJECT = new ReferenceClientParam(SP_SUBJECT);
394
395        /**
396         * Search parameter constant for <b>author</b>
397         * <p>
398         * Description: <b></b><br>
399         * Type: <b>reference</b><br>
400         * Path: <b>Composition.author</b><br>
401         * </p>
402         */
403        @SearchParamDefinition(name="author", path="Composition.author", description="", type="reference" 
404, providesMembershipIn={
405 @Compartment(name="Patient") ,  @Compartment(name="RelatedPerson") ,  @Compartment(name="Practitioner") ,  @Compartment(name="Device")         }
406 )
407        public static final String SP_AUTHOR = "author";
408
409        /**
410         * <b>Fluent Client</b> search parameter constant for <b>author</b>
411         * <p>
412         * Description: <b></b><br>
413         * Type: <b>reference</b><br>
414         * Path: <b>Composition.author</b><br>
415         * </p>
416         */
417        public static final ReferenceClientParam AUTHOR = new ReferenceClientParam(SP_AUTHOR);
418
419        /**
420         * Search parameter constant for <b>attester</b>
421         * <p>
422         * Description: <b></b><br>
423         * Type: <b>reference</b><br>
424         * Path: <b>Composition.attester.party</b><br>
425         * </p>
426         */
427        @SearchParamDefinition(name="attester", path="Composition.attester.party", description="", type="reference" 
428, providesMembershipIn={
429 @Compartment(name="Patient") ,  @Compartment(name="Practitioner")      }
430 )
431        public static final String SP_ATTESTER = "attester";
432
433        /**
434         * <b>Fluent Client</b> search parameter constant for <b>attester</b>
435         * <p>
436         * Description: <b></b><br>
437         * Type: <b>reference</b><br>
438         * Path: <b>Composition.attester.party</b><br>
439         * </p>
440         */
441        public static final ReferenceClientParam ATTESTER = new ReferenceClientParam(SP_ATTESTER);
442
443        /**
444         * Search parameter constant for <b>context</b>
445         * <p>
446         * Description: <b></b><br>
447         * Type: <b>token</b><br>
448         * Path: <b>Composition.event.code</b><br>
449         * </p>
450         */
451        @SearchParamDefinition(name="context", path="Composition.event.code", description="", type="token" 
452 )
453        public static final String SP_CONTEXT = "context";
454
455        /**
456         * <b>Fluent Client</b> search parameter constant for <b>context</b>
457         * <p>
458         * Description: <b></b><br>
459         * Type: <b>token</b><br>
460         * Path: <b>Composition.event.code</b><br>
461         * </p>
462         */
463        public static final TokenClientParam CONTEXT = new TokenClientParam(SP_CONTEXT);
464
465        /**
466         * Search parameter constant for <b>section</b>
467         * <p>
468         * Description: <b></b><br>
469         * Type: <b>token</b><br>
470         * Path: <b>Composition.section.code</b><br>
471         * </p>
472         */
473        @SearchParamDefinition(name="section", path="Composition.section.code", description="", type="token" 
474 )
475        public static final String SP_SECTION = "section";
476
477        /**
478         * <b>Fluent Client</b> search parameter constant for <b>section</b>
479         * <p>
480         * Description: <b></b><br>
481         * Type: <b>token</b><br>
482         * Path: <b>Composition.section.code</b><br>
483         * </p>
484         */
485        public static final TokenClientParam SECTION = new TokenClientParam(SP_SECTION);
486
487        /**
488         * Search parameter constant for <b>entry</b>
489         * <p>
490         * Description: <b></b><br>
491         * Type: <b>reference</b><br>
492         * Path: <b>Composition.section.entry</b><br>
493         * </p>
494         */
495        @SearchParamDefinition(name="entry", path="Composition.section.entry", description="", type="reference" 
496 )
497        public static final String SP_ENTRY = "entry";
498
499        /**
500         * <b>Fluent Client</b> search parameter constant for <b>entry</b>
501         * <p>
502         * Description: <b></b><br>
503         * Type: <b>reference</b><br>
504         * Path: <b>Composition.section.entry</b><br>
505         * </p>
506         */
507        public static final ReferenceClientParam ENTRY = new ReferenceClientParam(SP_ENTRY);
508
509        /**
510         * Search parameter constant for <b>identifier</b>
511         * <p>
512         * Description: <b></b><br>
513         * Type: <b>token</b><br>
514         * Path: <b>Composition.identifier</b><br>
515         * </p>
516         */
517        @SearchParamDefinition(name="identifier", path="Composition.identifier", description="", type="token" 
518 )
519        public static final String SP_IDENTIFIER = "identifier";
520
521        /**
522         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
523         * <p>
524         * Description: <b></b><br>
525         * Type: <b>token</b><br>
526         * Path: <b>Composition.identifier</b><br>
527         * </p>
528         */
529        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
530
531        /**
532         * Search parameter constant for <b>title</b>
533         * <p>
534         * Description: <b></b><br>
535         * Type: <b>string</b><br>
536         * Path: <b>Composition.title</b><br>
537         * </p>
538         */
539        @SearchParamDefinition(name="title", path="Composition.title", description="", type="string" 
540 )
541        public static final String SP_TITLE = "title";
542
543        /**
544         * <b>Fluent Client</b> search parameter constant for <b>title</b>
545         * <p>
546         * Description: <b></b><br>
547         * Type: <b>string</b><br>
548         * Path: <b>Composition.title</b><br>
549         * </p>
550         */
551        public static final StringClientParam TITLE = new StringClientParam(SP_TITLE);
552
553        /**
554         * Search parameter constant for <b>status</b>
555         * <p>
556         * Description: <b></b><br>
557         * Type: <b>token</b><br>
558         * Path: <b>Composition.status</b><br>
559         * </p>
560         */
561        @SearchParamDefinition(name="status", path="Composition.status", description="", type="token" 
562 )
563        public static final String SP_STATUS = "status";
564
565        /**
566         * <b>Fluent Client</b> search parameter constant for <b>status</b>
567         * <p>
568         * Description: <b></b><br>
569         * Type: <b>token</b><br>
570         * Path: <b>Composition.status</b><br>
571         * </p>
572         */
573        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
574
575        /**
576         * Search parameter constant for <b>confidentiality</b>
577         * <p>
578         * Description: <b></b><br>
579         * Type: <b>token</b><br>
580         * Path: <b>Composition.confidentiality</b><br>
581         * </p>
582         */
583        @SearchParamDefinition(name="confidentiality", path="Composition.confidentiality", description="", type="token" 
584 )
585        public static final String SP_CONFIDENTIALITY = "confidentiality";
586
587        /**
588         * <b>Fluent Client</b> search parameter constant for <b>confidentiality</b>
589         * <p>
590         * Description: <b></b><br>
591         * Type: <b>token</b><br>
592         * Path: <b>Composition.confidentiality</b><br>
593         * </p>
594         */
595        public static final TokenClientParam CONFIDENTIALITY = new TokenClientParam(SP_CONFIDENTIALITY);
596
597        /**
598         * Search parameter constant for <b>period</b>
599         * <p>
600         * Description: <b></b><br>
601         * Type: <b>date</b><br>
602         * Path: <b>Composition.event.period</b><br>
603         * </p>
604         */
605        @SearchParamDefinition(name="period", path="Composition.event.period", description="", type="date" 
606 )
607        public static final String SP_PERIOD = "period";
608
609        /**
610         * <b>Fluent Client</b> search parameter constant for <b>period</b>
611         * <p>
612         * Description: <b></b><br>
613         * Type: <b>date</b><br>
614         * Path: <b>Composition.event.period</b><br>
615         * </p>
616         */
617        public static final DateClientParam PERIOD = new DateClientParam(SP_PERIOD);
618
619        /**
620         * Search parameter constant for <b>patient</b>
621         * <p>
622         * Description: <b></b><br>
623         * Type: <b>reference</b><br>
624         * Path: <b>Composition.subject</b><br>
625         * </p>
626         */
627        @SearchParamDefinition(name="patient", path="Composition.subject", description="", type="reference" 
628, target={
629 ca.uhn.fhir.model.dstu2.resource.Patient.class         }
630 )
631        public static final String SP_PATIENT = "patient";
632
633        /**
634         * <b>Fluent Client</b> search parameter constant for <b>patient</b>
635         * <p>
636         * Description: <b></b><br>
637         * Type: <b>reference</b><br>
638         * Path: <b>Composition.subject</b><br>
639         * </p>
640         */
641        public static final ReferenceClientParam PATIENT = new ReferenceClientParam(SP_PATIENT);
642
643        /**
644         * Search parameter constant for <b>encounter</b>
645         * <p>
646         * Description: <b></b><br>
647         * Type: <b>reference</b><br>
648         * Path: <b>Composition.encounter</b><br>
649         * </p>
650         */
651        @SearchParamDefinition(name="encounter", path="Composition.encounter", description="", type="reference" 
652, providesMembershipIn={
653 @Compartment(name="Encounter")         }
654 )
655        public static final String SP_ENCOUNTER = "encounter";
656
657        /**
658         * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
659         * <p>
660         * Description: <b></b><br>
661         * Type: <b>reference</b><br>
662         * Path: <b>Composition.encounter</b><br>
663         * </p>
664         */
665        public static final ReferenceClientParam ENCOUNTER = new ReferenceClientParam(SP_ENCOUNTER);
666
667
668        /**
669         * Constant for fluent queries to be used to add include statements. Specifies
670         * the path value of "<b>Composition:attester</b>".
671         */
672        public static final Include INCLUDE_ATTESTER = new Include("Composition:attester");
673
674        /**
675         * Constant for fluent queries to be used to add include statements. Specifies
676         * the path value of "<b>Composition:author</b>".
677         */
678        public static final Include INCLUDE_AUTHOR = new Include("Composition:author");
679
680        /**
681         * Constant for fluent queries to be used to add include statements. Specifies
682         * the path value of "<b>Composition:encounter</b>".
683         */
684        public static final Include INCLUDE_ENCOUNTER = new Include("Composition:encounter");
685
686        /**
687         * Constant for fluent queries to be used to add include statements. Specifies
688         * the path value of "<b>Composition:entry</b>".
689         */
690        public static final Include INCLUDE_ENTRY = new Include("Composition:entry");
691
692        /**
693         * Constant for fluent queries to be used to add include statements. Specifies
694         * the path value of "<b>Composition:patient</b>".
695         */
696        public static final Include INCLUDE_PATIENT = new Include("Composition:patient");
697
698        /**
699         * Constant for fluent queries to be used to add include statements. Specifies
700         * the path value of "<b>Composition:subject</b>".
701         */
702        public static final Include INCLUDE_SUBJECT = new Include("Composition:subject");
703
704
705        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=1, summary=true, modifier=false) 
706        @Description(
707                shortDefinition="",
708                formalDefinition="Logical identifier for the composition, assigned when created. This identifier stays constant as the composition is changed over time"
709        )
710        private IdentifierDt myIdentifier;
711        
712        @Child(name="date", type=DateTimeDt.class, order=1, min=1, max=1, summary=true, modifier=false) 
713        @Description(
714                shortDefinition="",
715                formalDefinition="The composition editing time, when the composition was last logically changed by the author"
716        )
717        private DateTimeDt myDate;
718        
719        @Child(name="type", type=CodeableConceptDt.class, order=2, min=1, max=1, summary=true, modifier=false)  
720        @Description(
721                shortDefinition="",
722                formalDefinition="Specifies the particular kind of composition (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the composition"
723        )
724        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/valueset-doc-typecodes")
725        private CodeableConceptDt myType;
726        
727        @Child(name="class", type=CodeableConceptDt.class, order=3, min=0, max=1, summary=true, modifier=false) 
728        @Description(
729                shortDefinition="",
730                formalDefinition="A categorization for the type of the composition - helps for indexing and searching. This may be implied by or derived from the code specified in the Composition Type"
731        )
732        private CodeableConceptDt myClassElement;
733        
734        @Child(name="title", type=StringDt.class, order=4, min=1, max=1, summary=true, modifier=false)  
735        @Description(
736                shortDefinition="",
737                formalDefinition="Official human-readable label for the composition"
738        )
739        private StringDt myTitle;
740        
741        @Child(name="status", type=CodeDt.class, order=5, min=1, max=1, summary=true, modifier=true)    
742        @Description(
743                shortDefinition="",
744                formalDefinition="The workflow/clinical status of this composition. The status is a marker for the clinical standing of the document"
745        )
746        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/composition-status")
747        private BoundCodeDt<CompositionStatusEnum> myStatus;
748        
749        @Child(name="confidentiality", type=CodeDt.class, order=6, min=0, max=1, summary=true, modifier=true)   
750        @Description(
751                shortDefinition="",
752                formalDefinition="The code specifying the level of confidentiality of the Composition"
753        )
754        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/v3-Confidentiality")
755        private CodeDt myConfidentiality;
756        
757        @Child(name="subject", order=7, min=1, max=1, summary=true, modifier=false, type={
758                IResource.class
759        })
760        @Description(
761                shortDefinition="",
762                formalDefinition="Who or what the composition is about. The composition can be about a person, (patient or healthcare practitioner), a device (e.g. a machine) or even a group of subjects (such as a document about a herd of livestock, or a set of patients that share a common exposure)"
763        )
764        private ResourceReferenceDt mySubject;
765        
766        @Child(name="author", order=8, min=1, max=Child.MAX_UNLIMITED, summary=true, modifier=false, type={
767                ca.uhn.fhir.model.dstu2.resource.Practitioner.class, 
768                ca.uhn.fhir.model.dstu2.resource.Device.class, 
769                ca.uhn.fhir.model.dstu2.resource.Patient.class, 
770                ca.uhn.fhir.model.dstu2.resource.RelatedPerson.class
771        })
772        @Description(
773                shortDefinition="",
774                formalDefinition="Identifies who is responsible for the information in the composition, not necessarily who typed it in."
775        )
776        private java.util.List<ResourceReferenceDt> myAuthor;
777        
778        @Child(name="attester", order=9, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)  
779        @Description(
780                shortDefinition="",
781                formalDefinition="A participant who has attested to the accuracy of the composition/document"
782        )
783        private java.util.List<Attester> myAttester;
784        
785        @Child(name="custodian", order=10, min=0, max=1, summary=true, modifier=false, type={
786                ca.uhn.fhir.model.dstu2.resource.Organization.class
787        })
788        @Description(
789                shortDefinition="",
790                formalDefinition="Identifies the organization or group who is responsible for ongoing maintenance of and access to the composition/document information"
791        )
792        private ResourceReferenceDt myCustodian;
793        
794        @Child(name="event", order=11, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)    
795        @Description(
796                shortDefinition="",
797                formalDefinition="The clinical service, such as a colonoscopy or an appendectomy, being documented"
798        )
799        private java.util.List<Event> myEvent;
800        
801        @Child(name="encounter", order=12, min=0, max=1, summary=true, modifier=false, type={
802                ca.uhn.fhir.model.dstu2.resource.Encounter.class
803        })
804        @Description(
805                shortDefinition="",
806                formalDefinition="Describes the clinical encounter or type of care this documentation is associated with."
807        )
808        private ResourceReferenceDt myEncounter;
809        
810        @Child(name="section", order=13, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
811        @Description(
812                shortDefinition="",
813                formalDefinition="The root of the sections that make up the composition"
814        )
815        private java.util.List<Section> mySection;
816        
817
818        @Override
819        public boolean isEmpty() {
820                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myDate,  myType,  myClassElement,  myTitle,  myStatus,  myConfidentiality,  mySubject,  myAuthor,  myAttester,  myCustodian,  myEvent,  myEncounter,  mySection);
821        }
822        
823        @Override
824        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
825                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myDate, myType, myClassElement, myTitle, myStatus, myConfidentiality, mySubject, myAuthor, myAttester, myCustodian, myEvent, myEncounter, mySection);
826        }
827
828        /**
829         * Gets the value(s) for <b>identifier</b> ().
830         * creating it if it does
831         * not exist. Will not return <code>null</code>.
832         *
833     * <p>
834     * <b>Definition:</b>
835     * Logical identifier for the composition, assigned when created. This identifier stays constant as the composition is changed over time
836     * </p> 
837         */
838        public IdentifierDt getIdentifier() {  
839                if (myIdentifier == null) {
840                        myIdentifier = new IdentifierDt();
841                }
842                return myIdentifier;
843        }
844
845        /**
846         * Sets the value(s) for <b>identifier</b> ()
847         *
848     * <p>
849     * <b>Definition:</b>
850     * Logical identifier for the composition, assigned when created. This identifier stays constant as the composition is changed over time
851     * </p> 
852         */
853        public Composition setIdentifier(IdentifierDt theValue) {
854                myIdentifier = theValue;
855                return this;
856        }
857        
858        
859
860  
861        /**
862         * Gets the value(s) for <b>date</b> ().
863         * creating it if it does
864         * not exist. Will not return <code>null</code>.
865         *
866     * <p>
867     * <b>Definition:</b>
868     * The composition editing time, when the composition was last logically changed by the author
869     * </p> 
870         */
871        public DateTimeDt getDateElement() {  
872                if (myDate == null) {
873                        myDate = new DateTimeDt();
874                }
875                return myDate;
876        }
877
878        
879        /**
880         * Gets the value(s) for <b>date</b> ().
881         * creating it if it does
882         * not exist. This method may return <code>null</code>.
883         *
884     * <p>
885     * <b>Definition:</b>
886     * The composition editing time, when the composition was last logically changed by the author
887     * </p> 
888         */
889        public Date getDate() {  
890                return getDateElement().getValue();
891        }
892
893        /**
894         * Sets the value(s) for <b>date</b> ()
895         *
896     * <p>
897     * <b>Definition:</b>
898     * The composition editing time, when the composition was last logically changed by the author
899     * </p> 
900         */
901        public Composition setDate(DateTimeDt theValue) {
902                myDate = theValue;
903                return this;
904        }
905        
906        
907
908        /**
909         * Sets the value for <b>date</b> ()
910         *
911     * <p>
912     * <b>Definition:</b>
913     * The composition editing time, when the composition was last logically changed by the author
914     * </p> 
915         */
916        public Composition setDateWithSecondsPrecision( Date theDate) {
917                myDate = new DateTimeDt(theDate); 
918                return this; 
919        }
920
921        /**
922         * Sets the value for <b>date</b> ()
923         *
924     * <p>
925     * <b>Definition:</b>
926     * The composition editing time, when the composition was last logically changed by the author
927     * </p> 
928         */
929        public Composition setDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
930                myDate = new DateTimeDt(theDate, thePrecision); 
931                return this; 
932        }
933
934 
935        /**
936         * Gets the value(s) for <b>type</b> ().
937         * creating it if it does
938         * not exist. Will not return <code>null</code>.
939         *
940     * <p>
941     * <b>Definition:</b>
942     * Specifies the particular kind of composition (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the composition
943     * </p> 
944         */
945        public CodeableConceptDt getType() {  
946                if (myType == null) {
947                        myType = new CodeableConceptDt();
948                }
949                return myType;
950        }
951
952        /**
953         * Sets the value(s) for <b>type</b> ()
954         *
955     * <p>
956     * <b>Definition:</b>
957     * Specifies the particular kind of composition (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the composition
958     * </p> 
959         */
960        public Composition setType(CodeableConceptDt theValue) {
961                myType = theValue;
962                return this;
963        }
964        
965        
966
967  
968        /**
969         * Gets the value(s) for <b>class</b> ().
970         * creating it if it does
971         * not exist. Will not return <code>null</code>.
972         *
973     * <p>
974     * <b>Definition:</b>
975     * A categorization for the type of the composition - helps for indexing and searching. This may be implied by or derived from the code specified in the Composition Type
976     * </p> 
977         */
978        public CodeableConceptDt getClassElement() {  
979                if (myClassElement == null) {
980                        myClassElement = new CodeableConceptDt();
981                }
982                return myClassElement;
983        }
984
985        /**
986         * Sets the value(s) for <b>class</b> ()
987         *
988     * <p>
989     * <b>Definition:</b>
990     * A categorization for the type of the composition - helps for indexing and searching. This may be implied by or derived from the code specified in the Composition Type
991     * </p> 
992         */
993        public Composition setClassElement(CodeableConceptDt theValue) {
994                myClassElement = theValue;
995                return this;
996        }
997        
998        
999
1000  
1001        /**
1002         * Gets the value(s) for <b>title</b> ().
1003         * creating it if it does
1004         * not exist. Will not return <code>null</code>.
1005         *
1006     * <p>
1007     * <b>Definition:</b>
1008     * Official human-readable label for the composition
1009     * </p> 
1010         */
1011        public StringDt getTitleElement() {  
1012                if (myTitle == null) {
1013                        myTitle = new StringDt();
1014                }
1015                return myTitle;
1016        }
1017
1018        
1019        /**
1020         * Gets the value(s) for <b>title</b> ().
1021         * creating it if it does
1022         * not exist. This method may return <code>null</code>.
1023         *
1024     * <p>
1025     * <b>Definition:</b>
1026     * Official human-readable label for the composition
1027     * </p> 
1028         */
1029        public String getTitle() {  
1030                return getTitleElement().getValue();
1031        }
1032
1033        /**
1034         * Sets the value(s) for <b>title</b> ()
1035         *
1036     * <p>
1037     * <b>Definition:</b>
1038     * Official human-readable label for the composition
1039     * </p> 
1040         */
1041        public Composition setTitle(StringDt theValue) {
1042                myTitle = theValue;
1043                return this;
1044        }
1045        
1046        
1047
1048        /**
1049         * Sets the value for <b>title</b> ()
1050         *
1051     * <p>
1052     * <b>Definition:</b>
1053     * Official human-readable label for the composition
1054     * </p> 
1055         */
1056        public Composition setTitle( String theString) {
1057                myTitle = new StringDt(theString); 
1058                return this; 
1059        }
1060
1061 
1062        /**
1063         * Gets the value(s) for <b>status</b> ().
1064         * creating it if it does
1065         * not exist. Will not return <code>null</code>.
1066         *
1067     * <p>
1068     * <b>Definition:</b>
1069     * The workflow/clinical status of this composition. The status is a marker for the clinical standing of the document
1070     * </p> 
1071         */
1072        public BoundCodeDt<CompositionStatusEnum> getStatusElement() {  
1073                if (myStatus == null) {
1074                        myStatus = new BoundCodeDt<CompositionStatusEnum>(CompositionStatusEnum.VALUESET_BINDER);
1075                }
1076                return myStatus;
1077        }
1078
1079        
1080        /**
1081         * Gets the value(s) for <b>status</b> ().
1082         * creating it if it does
1083         * not exist. This method may return <code>null</code>.
1084         *
1085     * <p>
1086     * <b>Definition:</b>
1087     * The workflow/clinical status of this composition. The status is a marker for the clinical standing of the document
1088     * </p> 
1089         */
1090        public String getStatus() {  
1091                return getStatusElement().getValue();
1092        }
1093
1094        /**
1095         * Sets the value(s) for <b>status</b> ()
1096         *
1097     * <p>
1098     * <b>Definition:</b>
1099     * The workflow/clinical status of this composition. The status is a marker for the clinical standing of the document
1100     * </p> 
1101         */
1102        public Composition setStatus(BoundCodeDt<CompositionStatusEnum> theValue) {
1103                myStatus = theValue;
1104                return this;
1105        }
1106        
1107        
1108
1109        /**
1110         * Sets the value(s) for <b>status</b> ()
1111         *
1112     * <p>
1113     * <b>Definition:</b>
1114     * The workflow/clinical status of this composition. The status is a marker for the clinical standing of the document
1115     * </p> 
1116         */
1117        public Composition setStatus(CompositionStatusEnum theValue) {
1118                setStatus(new BoundCodeDt<CompositionStatusEnum>(CompositionStatusEnum.VALUESET_BINDER, theValue));
1119                
1120/*
1121                getStatusElement().setValueAsEnum(theValue);
1122*/
1123                return this;
1124        }
1125
1126  
1127        /**
1128         * Gets the value(s) for <b>confidentiality</b> ().
1129         * creating it if it does
1130         * not exist. Will not return <code>null</code>.
1131         *
1132     * <p>
1133     * <b>Definition:</b>
1134     * The code specifying the level of confidentiality of the Composition
1135     * </p> 
1136         */
1137        public CodeDt getConfidentialityElement() {  
1138                if (myConfidentiality == null) {
1139                        myConfidentiality = new CodeDt();
1140                }
1141                return myConfidentiality;
1142        }
1143
1144        
1145        /**
1146         * Gets the value(s) for <b>confidentiality</b> ().
1147         * creating it if it does
1148         * not exist. This method may return <code>null</code>.
1149         *
1150     * <p>
1151     * <b>Definition:</b>
1152     * The code specifying the level of confidentiality of the Composition
1153     * </p> 
1154         */
1155        public String getConfidentiality() {  
1156                return getConfidentialityElement().getValue();
1157        }
1158
1159        /**
1160         * Sets the value(s) for <b>confidentiality</b> ()
1161         *
1162     * <p>
1163     * <b>Definition:</b>
1164     * The code specifying the level of confidentiality of the Composition
1165     * </p> 
1166         */
1167        public Composition setConfidentiality(CodeDt theValue) {
1168                myConfidentiality = theValue;
1169                return this;
1170        }
1171        
1172        
1173
1174        /**
1175         * Sets the value for <b>confidentiality</b> ()
1176         *
1177     * <p>
1178     * <b>Definition:</b>
1179     * The code specifying the level of confidentiality of the Composition
1180     * </p> 
1181         */
1182        public Composition setConfidentiality( String theCode) {
1183                myConfidentiality = new CodeDt(theCode); 
1184                return this; 
1185        }
1186
1187 
1188        /**
1189         * Gets the value(s) for <b>subject</b> ().
1190         * creating it if it does
1191         * not exist. Will not return <code>null</code>.
1192         *
1193     * <p>
1194     * <b>Definition:</b>
1195     * Who or what the composition is about. The composition can be about a person, (patient or healthcare practitioner), a device (e.g. a machine) or even a group of subjects (such as a document about a herd of livestock, or a set of patients that share a common exposure)
1196     * </p> 
1197         */
1198        public ResourceReferenceDt getSubject() {  
1199                if (mySubject == null) {
1200                        mySubject = new ResourceReferenceDt();
1201                }
1202                return mySubject;
1203        }
1204
1205        /**
1206         * Sets the value(s) for <b>subject</b> ()
1207         *
1208     * <p>
1209     * <b>Definition:</b>
1210     * Who or what the composition is about. The composition can be about a person, (patient or healthcare practitioner), a device (e.g. a machine) or even a group of subjects (such as a document about a herd of livestock, or a set of patients that share a common exposure)
1211     * </p> 
1212         */
1213        public Composition setSubject(ResourceReferenceDt theValue) {
1214                mySubject = theValue;
1215                return this;
1216        }
1217        
1218        
1219
1220  
1221        /**
1222         * Gets the value(s) for <b>author</b> ().
1223         * creating it if it does
1224         * not exist. Will not return <code>null</code>.
1225         *
1226     * <p>
1227     * <b>Definition:</b>
1228     * Identifies who is responsible for the information in the composition, not necessarily who typed it in.
1229     * </p> 
1230         */
1231        public java.util.List<ResourceReferenceDt> getAuthor() {  
1232                if (myAuthor == null) {
1233                        myAuthor = new java.util.ArrayList<ResourceReferenceDt>();
1234                }
1235                return myAuthor;
1236        }
1237
1238        /**
1239         * Sets the value(s) for <b>author</b> ()
1240         *
1241     * <p>
1242     * <b>Definition:</b>
1243     * Identifies who is responsible for the information in the composition, not necessarily who typed it in.
1244     * </p> 
1245         */
1246        public Composition setAuthor(java.util.List<ResourceReferenceDt> theValue) {
1247                myAuthor = theValue;
1248                return this;
1249        }
1250        
1251        
1252
1253        /**
1254         * Adds and returns a new value for <b>author</b> ()
1255         *
1256     * <p>
1257     * <b>Definition:</b>
1258     * Identifies who is responsible for the information in the composition, not necessarily who typed it in.
1259     * </p> 
1260         */
1261        public ResourceReferenceDt addAuthor() {
1262                ResourceReferenceDt newType = new ResourceReferenceDt();
1263                getAuthor().add(newType);
1264                return newType; 
1265        }
1266  
1267        /**
1268         * Gets the value(s) for <b>attester</b> ().
1269         * creating it if it does
1270         * not exist. Will not return <code>null</code>.
1271         *
1272     * <p>
1273     * <b>Definition:</b>
1274     * A participant who has attested to the accuracy of the composition/document
1275     * </p> 
1276         */
1277        public java.util.List<Attester> getAttester() {  
1278                if (myAttester == null) {
1279                        myAttester = new java.util.ArrayList<Attester>();
1280                }
1281                return myAttester;
1282        }
1283
1284        /**
1285         * Sets the value(s) for <b>attester</b> ()
1286         *
1287     * <p>
1288     * <b>Definition:</b>
1289     * A participant who has attested to the accuracy of the composition/document
1290     * </p> 
1291         */
1292        public Composition setAttester(java.util.List<Attester> theValue) {
1293                myAttester = theValue;
1294                return this;
1295        }
1296        
1297        
1298
1299        /**
1300         * Adds and returns a new value for <b>attester</b> ()
1301         *
1302     * <p>
1303     * <b>Definition:</b>
1304     * A participant who has attested to the accuracy of the composition/document
1305     * </p> 
1306         */
1307        public Attester addAttester() {
1308                Attester newType = new Attester();
1309                getAttester().add(newType);
1310                return newType; 
1311        }
1312
1313        /**
1314         * Adds a given new value for <b>attester</b> ()
1315         *
1316         * <p>
1317         * <b>Definition:</b>
1318         * A participant who has attested to the accuracy of the composition/document
1319         * </p>
1320         * @param theValue The attester to add (must not be <code>null</code>)
1321         */
1322        public Composition addAttester(Attester theValue) {
1323                if (theValue == null) {
1324                        throw new NullPointerException("theValue must not be null");
1325                }
1326                getAttester().add(theValue);
1327                return this;
1328        }
1329
1330        /**
1331         * Gets the first repetition for <b>attester</b> (),
1332         * creating it if it does not already exist.
1333         *
1334     * <p>
1335     * <b>Definition:</b>
1336     * A participant who has attested to the accuracy of the composition/document
1337     * </p> 
1338         */
1339        public Attester getAttesterFirstRep() {
1340                if (getAttester().isEmpty()) {
1341                        return addAttester();
1342                }
1343                return getAttester().get(0); 
1344        }
1345  
1346        /**
1347         * Gets the value(s) for <b>custodian</b> ().
1348         * creating it if it does
1349         * not exist. Will not return <code>null</code>.
1350         *
1351     * <p>
1352     * <b>Definition:</b>
1353     * Identifies the organization or group who is responsible for ongoing maintenance of and access to the composition/document information
1354     * </p> 
1355         */
1356        public ResourceReferenceDt getCustodian() {  
1357                if (myCustodian == null) {
1358                        myCustodian = new ResourceReferenceDt();
1359                }
1360                return myCustodian;
1361        }
1362
1363        /**
1364         * Sets the value(s) for <b>custodian</b> ()
1365         *
1366     * <p>
1367     * <b>Definition:</b>
1368     * Identifies the organization or group who is responsible for ongoing maintenance of and access to the composition/document information
1369     * </p> 
1370         */
1371        public Composition setCustodian(ResourceReferenceDt theValue) {
1372                myCustodian = theValue;
1373                return this;
1374        }
1375        
1376        
1377
1378  
1379        /**
1380         * Gets the value(s) for <b>event</b> ().
1381         * creating it if it does
1382         * not exist. Will not return <code>null</code>.
1383         *
1384     * <p>
1385     * <b>Definition:</b>
1386     * The clinical service, such as a colonoscopy or an appendectomy, being documented
1387     * </p> 
1388         */
1389        public java.util.List<Event> getEvent() {  
1390                if (myEvent == null) {
1391                        myEvent = new java.util.ArrayList<Event>();
1392                }
1393                return myEvent;
1394        }
1395
1396        /**
1397         * Sets the value(s) for <b>event</b> ()
1398         *
1399     * <p>
1400     * <b>Definition:</b>
1401     * The clinical service, such as a colonoscopy or an appendectomy, being documented
1402     * </p> 
1403         */
1404        public Composition setEvent(java.util.List<Event> theValue) {
1405                myEvent = theValue;
1406                return this;
1407        }
1408        
1409        
1410
1411        /**
1412         * Adds and returns a new value for <b>event</b> ()
1413         *
1414     * <p>
1415     * <b>Definition:</b>
1416     * The clinical service, such as a colonoscopy or an appendectomy, being documented
1417     * </p> 
1418         */
1419        public Event addEvent() {
1420                Event newType = new Event();
1421                getEvent().add(newType);
1422                return newType; 
1423        }
1424
1425        /**
1426         * Adds a given new value for <b>event</b> ()
1427         *
1428         * <p>
1429         * <b>Definition:</b>
1430         * The clinical service, such as a colonoscopy or an appendectomy, being documented
1431         * </p>
1432         * @param theValue The event to add (must not be <code>null</code>)
1433         */
1434        public Composition addEvent(Event theValue) {
1435                if (theValue == null) {
1436                        throw new NullPointerException("theValue must not be null");
1437                }
1438                getEvent().add(theValue);
1439                return this;
1440        }
1441
1442        /**
1443         * Gets the first repetition for <b>event</b> (),
1444         * creating it if it does not already exist.
1445         *
1446     * <p>
1447     * <b>Definition:</b>
1448     * The clinical service, such as a colonoscopy or an appendectomy, being documented
1449     * </p> 
1450         */
1451        public Event getEventFirstRep() {
1452                if (getEvent().isEmpty()) {
1453                        return addEvent();
1454                }
1455                return getEvent().get(0); 
1456        }
1457  
1458        /**
1459         * Gets the value(s) for <b>encounter</b> ().
1460         * creating it if it does
1461         * not exist. Will not return <code>null</code>.
1462         *
1463     * <p>
1464     * <b>Definition:</b>
1465     * Describes the clinical encounter or type of care this documentation is associated with.
1466     * </p> 
1467         */
1468        public ResourceReferenceDt getEncounter() {  
1469                if (myEncounter == null) {
1470                        myEncounter = new ResourceReferenceDt();
1471                }
1472                return myEncounter;
1473        }
1474
1475        /**
1476         * Sets the value(s) for <b>encounter</b> ()
1477         *
1478     * <p>
1479     * <b>Definition:</b>
1480     * Describes the clinical encounter or type of care this documentation is associated with.
1481     * </p> 
1482         */
1483        public Composition setEncounter(ResourceReferenceDt theValue) {
1484                myEncounter = theValue;
1485                return this;
1486        }
1487        
1488        
1489
1490  
1491        /**
1492         * Gets the value(s) for <b>section</b> ().
1493         * creating it if it does
1494         * not exist. Will not return <code>null</code>.
1495         *
1496     * <p>
1497     * <b>Definition:</b>
1498     * The root of the sections that make up the composition
1499     * </p> 
1500         */
1501        public java.util.List<Section> getSection() {  
1502                if (mySection == null) {
1503                        mySection = new java.util.ArrayList<Section>();
1504                }
1505                return mySection;
1506        }
1507
1508        /**
1509         * Sets the value(s) for <b>section</b> ()
1510         *
1511     * <p>
1512     * <b>Definition:</b>
1513     * The root of the sections that make up the composition
1514     * </p> 
1515         */
1516        public Composition setSection(java.util.List<Section> theValue) {
1517                mySection = theValue;
1518                return this;
1519        }
1520        
1521        
1522
1523        /**
1524         * Adds and returns a new value for <b>section</b> ()
1525         *
1526     * <p>
1527     * <b>Definition:</b>
1528     * The root of the sections that make up the composition
1529     * </p> 
1530         */
1531        public Section addSection() {
1532                Section newType = new Section();
1533                getSection().add(newType);
1534                return newType; 
1535        }
1536
1537        /**
1538         * Adds a given new value for <b>section</b> ()
1539         *
1540         * <p>
1541         * <b>Definition:</b>
1542         * The root of the sections that make up the composition
1543         * </p>
1544         * @param theValue The section to add (must not be <code>null</code>)
1545         */
1546        public Composition addSection(Section theValue) {
1547                if (theValue == null) {
1548                        throw new NullPointerException("theValue must not be null");
1549                }
1550                getSection().add(theValue);
1551                return this;
1552        }
1553
1554        /**
1555         * Gets the first repetition for <b>section</b> (),
1556         * creating it if it does not already exist.
1557         *
1558     * <p>
1559     * <b>Definition:</b>
1560     * The root of the sections that make up the composition
1561     * </p> 
1562         */
1563        public Section getSectionFirstRep() {
1564                if (getSection().isEmpty()) {
1565                        return addSection();
1566                }
1567                return getSection().get(0); 
1568        }
1569  
1570        /**
1571         * Block class for child element: <b>Composition.attester</b> ()
1572         *
1573     * <p>
1574     * <b>Definition:</b>
1575     * A participant who has attested to the accuracy of the composition/document
1576     * </p> 
1577         */
1578        @Block()        
1579        public static class Attester 
1580            extends  BaseIdentifiableElement  
1581            implements IResourceBlock {
1582        
1583        @Child(name="mode", type=CodeDt.class, order=0, min=1, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
1584        @Description(
1585                shortDefinition="",
1586                formalDefinition="The type of attestation the authenticator offers"
1587        )
1588        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/composition-attestation-mode")
1589        private java.util.List<BoundCodeDt<CompositionAttestationModeEnum>> myMode;
1590        
1591        @Child(name="time", type=DateTimeDt.class, order=1, min=0, max=1, summary=true, modifier=false) 
1592        @Description(
1593                shortDefinition="",
1594                formalDefinition="When composition was attested by the party"
1595        )
1596        private DateTimeDt myTime;
1597        
1598        @Child(name="party", order=2, min=0, max=1, summary=true, modifier=false, type={
1599                ca.uhn.fhir.model.dstu2.resource.Patient.class, 
1600                ca.uhn.fhir.model.dstu2.resource.Practitioner.class, 
1601                ca.uhn.fhir.model.dstu2.resource.Organization.class
1602        })
1603        @Description(
1604                shortDefinition="",
1605                formalDefinition="Who attested the composition in the specified way"
1606        )
1607        private ResourceReferenceDt myParty;
1608        
1609
1610        @Override
1611        public boolean isEmpty() {
1612                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myMode,  myTime,  myParty);
1613        }
1614        
1615        @Override
1616        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1617                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myMode, myTime, myParty);
1618        }
1619
1620        /**
1621         * Gets the value(s) for <b>mode</b> ().
1622         * creating it if it does
1623         * not exist. Will not return <code>null</code>.
1624         *
1625     * <p>
1626     * <b>Definition:</b>
1627     * The type of attestation the authenticator offers
1628     * </p> 
1629         */
1630        public java.util.List<BoundCodeDt<CompositionAttestationModeEnum>> getMode() {  
1631                if (myMode == null) {
1632                        myMode = new java.util.ArrayList<BoundCodeDt<CompositionAttestationModeEnum>>();
1633                }
1634                return myMode;
1635        }
1636
1637        /**
1638         * Sets the value(s) for <b>mode</b> ()
1639         *
1640     * <p>
1641     * <b>Definition:</b>
1642     * The type of attestation the authenticator offers
1643     * </p> 
1644         */
1645        public Attester setMode(java.util.List<BoundCodeDt<CompositionAttestationModeEnum>> theValue) {
1646                myMode = theValue;
1647                return this;
1648        }
1649        
1650        
1651
1652        /**
1653         * Add a value for <b>mode</b> () using an enumerated type. This
1654         * is intended as a convenience method for situations where the FHIR defined ValueSets are mandatory
1655         * or contain the desirable codes. If you wish to use codes other than those which are built-in, 
1656         * you may also use the {@link #addMode()} method.
1657         *
1658     * <p>
1659     * <b>Definition:</b>
1660     * The type of attestation the authenticator offers
1661     * </p> 
1662         */
1663        public BoundCodeDt<CompositionAttestationModeEnum> addMode(CompositionAttestationModeEnum theValue) {
1664                BoundCodeDt<CompositionAttestationModeEnum> retVal = new BoundCodeDt<CompositionAttestationModeEnum>(CompositionAttestationModeEnum.VALUESET_BINDER, theValue);
1665                getMode().add(retVal);
1666                return retVal;
1667        }
1668
1669        /**
1670         * Gets the first repetition for <b>mode</b> (),
1671         * creating it if it does not already exist.
1672         *
1673     * <p>
1674     * <b>Definition:</b>
1675     * The type of attestation the authenticator offers
1676     * </p> 
1677         */
1678        public BoundCodeDt<CompositionAttestationModeEnum> getModeFirstRep() {
1679                if (getMode().size() == 0) {
1680                        addMode();
1681                }
1682                return getMode().get(0);
1683        }
1684
1685        /**
1686         * Add a value for <b>mode</b> ()
1687         *
1688     * <p>
1689     * <b>Definition:</b>
1690     * The type of attestation the authenticator offers
1691     * </p> 
1692         */
1693        public BoundCodeDt<CompositionAttestationModeEnum> addMode() {
1694                BoundCodeDt<CompositionAttestationModeEnum> retVal = new BoundCodeDt<CompositionAttestationModeEnum>(CompositionAttestationModeEnum.VALUESET_BINDER);
1695                getMode().add(retVal);
1696                return retVal;
1697        }
1698
1699        /**
1700         * Sets the value(s), and clears any existing value(s) for <b>mode</b> ()
1701         *
1702     * <p>
1703     * <b>Definition:</b>
1704     * The type of attestation the authenticator offers
1705     * </p> 
1706         */
1707        public Attester setMode(CompositionAttestationModeEnum theValue) {
1708                getMode().clear();
1709                addMode(theValue);
1710                return this;
1711        }
1712
1713  
1714        /**
1715         * Gets the value(s) for <b>time</b> ().
1716         * creating it if it does
1717         * not exist. Will not return <code>null</code>.
1718         *
1719     * <p>
1720     * <b>Definition:</b>
1721     * When composition was attested by the party
1722     * </p> 
1723         */
1724        public DateTimeDt getTimeElement() {  
1725                if (myTime == null) {
1726                        myTime = new DateTimeDt();
1727                }
1728                return myTime;
1729        }
1730
1731        
1732        /**
1733         * Gets the value(s) for <b>time</b> ().
1734         * creating it if it does
1735         * not exist. This method may return <code>null</code>.
1736         *
1737     * <p>
1738     * <b>Definition:</b>
1739     * When composition was attested by the party
1740     * </p> 
1741         */
1742        public Date getTime() {  
1743                return getTimeElement().getValue();
1744        }
1745
1746        /**
1747         * Sets the value(s) for <b>time</b> ()
1748         *
1749     * <p>
1750     * <b>Definition:</b>
1751     * When composition was attested by the party
1752     * </p> 
1753         */
1754        public Attester setTime(DateTimeDt theValue) {
1755                myTime = theValue;
1756                return this;
1757        }
1758        
1759        
1760
1761        /**
1762         * Sets the value for <b>time</b> ()
1763         *
1764     * <p>
1765     * <b>Definition:</b>
1766     * When composition was attested by the party
1767     * </p> 
1768         */
1769        public Attester setTimeWithSecondsPrecision( Date theDate) {
1770                myTime = new DateTimeDt(theDate); 
1771                return this; 
1772        }
1773
1774        /**
1775         * Sets the value for <b>time</b> ()
1776         *
1777     * <p>
1778     * <b>Definition:</b>
1779     * When composition was attested by the party
1780     * </p> 
1781         */
1782        public Attester setTime( Date theDate,  TemporalPrecisionEnum thePrecision) {
1783                myTime = new DateTimeDt(theDate, thePrecision); 
1784                return this; 
1785        }
1786
1787 
1788        /**
1789         * Gets the value(s) for <b>party</b> ().
1790         * creating it if it does
1791         * not exist. Will not return <code>null</code>.
1792         *
1793     * <p>
1794     * <b>Definition:</b>
1795     * Who attested the composition in the specified way
1796     * </p> 
1797         */
1798        public ResourceReferenceDt getParty() {  
1799                if (myParty == null) {
1800                        myParty = new ResourceReferenceDt();
1801                }
1802                return myParty;
1803        }
1804
1805        /**
1806         * Sets the value(s) for <b>party</b> ()
1807         *
1808     * <p>
1809     * <b>Definition:</b>
1810     * Who attested the composition in the specified way
1811     * </p> 
1812         */
1813        public Attester setParty(ResourceReferenceDt theValue) {
1814                myParty = theValue;
1815                return this;
1816        }
1817        
1818        
1819
1820  
1821
1822
1823        }
1824
1825
1826        /**
1827         * Block class for child element: <b>Composition.event</b> ()
1828         *
1829     * <p>
1830     * <b>Definition:</b>
1831     * The clinical service, such as a colonoscopy or an appendectomy, being documented
1832     * </p> 
1833         */
1834        @Block()        
1835        public static class Event 
1836            extends  BaseIdentifiableElement  
1837            implements IResourceBlock {
1838        
1839        @Child(name="code", type=CodeableConceptDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
1840        @Description(
1841                shortDefinition="",
1842                formalDefinition="This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a \"History and Physical Report\" in which the procedure being documented is necessarily a \"History and Physical\" act."
1843        )
1844        private java.util.List<CodeableConceptDt> myCode;
1845        
1846        @Child(name="period", type=PeriodDt.class, order=1, min=0, max=1, summary=true, modifier=false) 
1847        @Description(
1848                shortDefinition="",
1849                formalDefinition="The period of time covered by the documentation. There is no assertion that the documentation is a complete representation for this period, only that it documents events during this time"
1850        )
1851        private PeriodDt myPeriod;
1852        
1853        @Child(name="detail", order=2, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false, type={
1854                IResource.class
1855        })
1856        @Description(
1857                shortDefinition="",
1858                formalDefinition="The description and/or reference of the event(s) being documented. For example, this could be used to document such a colonoscopy or an appendectomy"
1859        )
1860        private java.util.List<ResourceReferenceDt> myDetail;
1861        
1862
1863        @Override
1864        public boolean isEmpty() {
1865                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCode,  myPeriod,  myDetail);
1866        }
1867        
1868        @Override
1869        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1870                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCode, myPeriod, myDetail);
1871        }
1872
1873        /**
1874         * Gets the value(s) for <b>code</b> ().
1875         * creating it if it does
1876         * not exist. Will not return <code>null</code>.
1877         *
1878     * <p>
1879     * <b>Definition:</b>
1880     * This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a \&quot;History and Physical Report\&quot; in which the procedure being documented is necessarily a \&quot;History and Physical\&quot; act.
1881     * </p> 
1882         */
1883        public java.util.List<CodeableConceptDt> getCode() {  
1884                if (myCode == null) {
1885                        myCode = new java.util.ArrayList<CodeableConceptDt>();
1886                }
1887                return myCode;
1888        }
1889
1890        /**
1891         * Sets the value(s) for <b>code</b> ()
1892         *
1893     * <p>
1894     * <b>Definition:</b>
1895     * This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a \&quot;History and Physical Report\&quot; in which the procedure being documented is necessarily a \&quot;History and Physical\&quot; act.
1896     * </p> 
1897         */
1898        public Event setCode(java.util.List<CodeableConceptDt> theValue) {
1899                myCode = theValue;
1900                return this;
1901        }
1902        
1903        
1904
1905        /**
1906         * Adds and returns a new value for <b>code</b> ()
1907         *
1908     * <p>
1909     * <b>Definition:</b>
1910     * This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a \&quot;History and Physical Report\&quot; in which the procedure being documented is necessarily a \&quot;History and Physical\&quot; act.
1911     * </p> 
1912         */
1913        public CodeableConceptDt addCode() {
1914                CodeableConceptDt newType = new CodeableConceptDt();
1915                getCode().add(newType);
1916                return newType; 
1917        }
1918
1919        /**
1920         * Adds a given new value for <b>code</b> ()
1921         *
1922         * <p>
1923         * <b>Definition:</b>
1924         * This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a \&quot;History and Physical Report\&quot; in which the procedure being documented is necessarily a \&quot;History and Physical\&quot; act.
1925         * </p>
1926         * @param theValue The code to add (must not be <code>null</code>)
1927         */
1928        public Event addCode(CodeableConceptDt theValue) {
1929                if (theValue == null) {
1930                        throw new NullPointerException("theValue must not be null");
1931                }
1932                getCode().add(theValue);
1933                return this;
1934        }
1935
1936        /**
1937         * Gets the first repetition for <b>code</b> (),
1938         * creating it if it does not already exist.
1939         *
1940     * <p>
1941     * <b>Definition:</b>
1942     * This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the typeCode, such as a \&quot;History and Physical Report\&quot; in which the procedure being documented is necessarily a \&quot;History and Physical\&quot; act.
1943     * </p> 
1944         */
1945        public CodeableConceptDt getCodeFirstRep() {
1946                if (getCode().isEmpty()) {
1947                        return addCode();
1948                }
1949                return getCode().get(0); 
1950        }
1951  
1952        /**
1953         * Gets the value(s) for <b>period</b> ().
1954         * creating it if it does
1955         * not exist. Will not return <code>null</code>.
1956         *
1957     * <p>
1958     * <b>Definition:</b>
1959     * The period of time covered by the documentation. There is no assertion that the documentation is a complete representation for this period, only that it documents events during this time
1960     * </p> 
1961         */
1962        public PeriodDt getPeriod() {  
1963                if (myPeriod == null) {
1964                        myPeriod = new PeriodDt();
1965                }
1966                return myPeriod;
1967        }
1968
1969        /**
1970         * Sets the value(s) for <b>period</b> ()
1971         *
1972     * <p>
1973     * <b>Definition:</b>
1974     * The period of time covered by the documentation. There is no assertion that the documentation is a complete representation for this period, only that it documents events during this time
1975     * </p> 
1976         */
1977        public Event setPeriod(PeriodDt theValue) {
1978                myPeriod = theValue;
1979                return this;
1980        }
1981        
1982        
1983
1984  
1985        /**
1986         * Gets the value(s) for <b>detail</b> ().
1987         * creating it if it does
1988         * not exist. Will not return <code>null</code>.
1989         *
1990     * <p>
1991     * <b>Definition:</b>
1992     * The description and/or reference of the event(s) being documented. For example, this could be used to document such a colonoscopy or an appendectomy
1993     * </p> 
1994         */
1995        public java.util.List<ResourceReferenceDt> getDetail() {  
1996                if (myDetail == null) {
1997                        myDetail = new java.util.ArrayList<ResourceReferenceDt>();
1998                }
1999                return myDetail;
2000        }
2001
2002        /**
2003         * Sets the value(s) for <b>detail</b> ()
2004         *
2005     * <p>
2006     * <b>Definition:</b>
2007     * The description and/or reference of the event(s) being documented. For example, this could be used to document such a colonoscopy or an appendectomy
2008     * </p> 
2009         */
2010        public Event setDetail(java.util.List<ResourceReferenceDt> theValue) {
2011                myDetail = theValue;
2012                return this;
2013        }
2014        
2015        
2016
2017        /**
2018         * Adds and returns a new value for <b>detail</b> ()
2019         *
2020     * <p>
2021     * <b>Definition:</b>
2022     * The description and/or reference of the event(s) being documented. For example, this could be used to document such a colonoscopy or an appendectomy
2023     * </p> 
2024         */
2025        public ResourceReferenceDt addDetail() {
2026                ResourceReferenceDt newType = new ResourceReferenceDt();
2027                getDetail().add(newType);
2028                return newType; 
2029        }
2030  
2031
2032
2033        }
2034
2035
2036        /**
2037         * Block class for child element: <b>Composition.section</b> ()
2038         *
2039     * <p>
2040     * <b>Definition:</b>
2041     * The root of the sections that make up the composition
2042     * </p> 
2043         */
2044        @Block()        
2045        public static class Section 
2046            extends  BaseIdentifiableElement  
2047            implements IResourceBlock {
2048        
2049        @Child(name="title", type=StringDt.class, order=0, min=0, max=1, summary=false, modifier=false) 
2050        @Description(
2051                shortDefinition="",
2052                formalDefinition="The label for this particular section.  This will be part of the rendered content for the document, and is often used to build a table of contents"
2053        )
2054        private StringDt myTitle;
2055        
2056        @Child(name="code", type=CodeableConceptDt.class, order=1, min=0, max=1, summary=false, modifier=false) 
2057        @Description(
2058                shortDefinition="",
2059                formalDefinition="A code identifying the kind of content contained within the section. This must be consistent with the section title"
2060        )
2061        private CodeableConceptDt myCode;
2062        
2063        @Child(name="text", type=NarrativeDt.class, order=2, min=0, max=1, summary=false, modifier=false)       
2064        @Description(
2065                shortDefinition="",
2066                formalDefinition="A human-readable narrative that contains the attested content of the section, used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative."
2067        )
2068        private NarrativeDt myText;
2069        
2070        @Child(name="mode", type=CodeDt.class, order=3, min=0, max=1, summary=true, modifier=true)      
2071        @Description(
2072                shortDefinition="",
2073                formalDefinition="How the entry list was prepared - whether it is a working list that is suitable for being maintained on an ongoing basis, or if it represents a snapshot of a list of items from another source, or whether it is a prepared list where items may be marked as added, modified or deleted"
2074        )
2075        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/list-mode")
2076        private CodeDt myMode;
2077        
2078        @Child(name="orderedBy", type=CodeableConceptDt.class, order=4, min=0, max=1, summary=false, modifier=false)    
2079        @Description(
2080                shortDefinition="",
2081                formalDefinition="Specifies the order applied to the items in the section entries"
2082        )
2083        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/list-order")
2084        private CodeableConceptDt myOrderedBy;
2085        
2086        @Child(name="entry", order=5, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
2087                IResource.class
2088        })
2089        @Description(
2090                shortDefinition="",
2091                formalDefinition="A reference to the actual resource from which the narrative in the section is derived"
2092        )
2093        private java.util.List<ResourceReferenceDt> myEntry;
2094        
2095        @Child(name="emptyReason", type=CodeableConceptDt.class, order=6, min=0, max=1, summary=false, modifier=false)  
2096        @Description(
2097                shortDefinition="",
2098                formalDefinition="If the section is empty, why the list is empty. An empty section typically has some text explaining the empty reason"
2099        )
2100        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/list-empty-reason")
2101        private CodeableConceptDt myEmptyReason;
2102        
2103        @Child(name="section", type=Section.class, order=7, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
2104        @Description(
2105                shortDefinition="",
2106                formalDefinition="A nested sub-section within this section"
2107        )
2108        private java.util.List<Section> mySection;
2109        
2110
2111        @Override
2112        public boolean isEmpty() {
2113                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myTitle,  myCode,  myText,  myMode,  myOrderedBy,  myEntry,  myEmptyReason,  mySection);
2114        }
2115        
2116        @Override
2117        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2118                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myTitle, myCode, myText, myMode, myOrderedBy, myEntry, myEmptyReason, mySection);
2119        }
2120
2121        /**
2122         * Gets the value(s) for <b>title</b> ().
2123         * creating it if it does
2124         * not exist. Will not return <code>null</code>.
2125         *
2126     * <p>
2127     * <b>Definition:</b>
2128     * The label for this particular section.  This will be part of the rendered content for the document, and is often used to build a table of contents
2129     * </p> 
2130         */
2131        public StringDt getTitleElement() {  
2132                if (myTitle == null) {
2133                        myTitle = new StringDt();
2134                }
2135                return myTitle;
2136        }
2137
2138        
2139        /**
2140         * Gets the value(s) for <b>title</b> ().
2141         * creating it if it does
2142         * not exist. This method may return <code>null</code>.
2143         *
2144     * <p>
2145     * <b>Definition:</b>
2146     * The label for this particular section.  This will be part of the rendered content for the document, and is often used to build a table of contents
2147     * </p> 
2148         */
2149        public String getTitle() {  
2150                return getTitleElement().getValue();
2151        }
2152
2153        /**
2154         * Sets the value(s) for <b>title</b> ()
2155         *
2156     * <p>
2157     * <b>Definition:</b>
2158     * The label for this particular section.  This will be part of the rendered content for the document, and is often used to build a table of contents
2159     * </p> 
2160         */
2161        public Section setTitle(StringDt theValue) {
2162                myTitle = theValue;
2163                return this;
2164        }
2165        
2166        
2167
2168        /**
2169         * Sets the value for <b>title</b> ()
2170         *
2171     * <p>
2172     * <b>Definition:</b>
2173     * The label for this particular section.  This will be part of the rendered content for the document, and is often used to build a table of contents
2174     * </p> 
2175         */
2176        public Section setTitle( String theString) {
2177                myTitle = new StringDt(theString); 
2178                return this; 
2179        }
2180
2181 
2182        /**
2183         * Gets the value(s) for <b>code</b> ().
2184         * creating it if it does
2185         * not exist. Will not return <code>null</code>.
2186         *
2187     * <p>
2188     * <b>Definition:</b>
2189     * A code identifying the kind of content contained within the section. This must be consistent with the section title
2190     * </p> 
2191         */
2192        public CodeableConceptDt getCode() {  
2193                if (myCode == null) {
2194                        myCode = new CodeableConceptDt();
2195                }
2196                return myCode;
2197        }
2198
2199        /**
2200         * Sets the value(s) for <b>code</b> ()
2201         *
2202     * <p>
2203     * <b>Definition:</b>
2204     * A code identifying the kind of content contained within the section. This must be consistent with the section title
2205     * </p> 
2206         */
2207        public Section setCode(CodeableConceptDt theValue) {
2208                myCode = theValue;
2209                return this;
2210        }
2211        
2212        
2213
2214  
2215        /**
2216         * Gets the value(s) for <b>text</b> ().
2217         * creating it if it does
2218         * not exist. Will not return <code>null</code>.
2219         *
2220     * <p>
2221     * <b>Definition:</b>
2222     * A human-readable narrative that contains the attested content of the section, used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \&quot;clinically safe\&quot; for a human to just read the narrative.
2223     * </p> 
2224         */
2225        public NarrativeDt getText() {  
2226                if (myText == null) {
2227                        myText = new NarrativeDt();
2228                }
2229                return myText;
2230        }
2231
2232        /**
2233         * Sets the value(s) for <b>text</b> ()
2234         *
2235     * <p>
2236     * <b>Definition:</b>
2237     * A human-readable narrative that contains the attested content of the section, used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \&quot;clinically safe\&quot; for a human to just read the narrative.
2238     * </p> 
2239         */
2240        public Section setText(NarrativeDt theValue) {
2241                myText = theValue;
2242                return this;
2243        }
2244        
2245        
2246
2247  
2248        /**
2249         * Gets the value(s) for <b>mode</b> ().
2250         * creating it if it does
2251         * not exist. Will not return <code>null</code>.
2252         *
2253     * <p>
2254     * <b>Definition:</b>
2255     * How the entry list was prepared - whether it is a working list that is suitable for being maintained on an ongoing basis, or if it represents a snapshot of a list of items from another source, or whether it is a prepared list where items may be marked as added, modified or deleted
2256     * </p> 
2257         */
2258        public CodeDt getModeElement() {  
2259                if (myMode == null) {
2260                        myMode = new CodeDt();
2261                }
2262                return myMode;
2263        }
2264
2265        
2266        /**
2267         * Gets the value(s) for <b>mode</b> ().
2268         * creating it if it does
2269         * not exist. This method may return <code>null</code>.
2270         *
2271     * <p>
2272     * <b>Definition:</b>
2273     * How the entry list was prepared - whether it is a working list that is suitable for being maintained on an ongoing basis, or if it represents a snapshot of a list of items from another source, or whether it is a prepared list where items may be marked as added, modified or deleted
2274     * </p> 
2275         */
2276        public String getMode() {  
2277                return getModeElement().getValue();
2278        }
2279
2280        /**
2281         * Sets the value(s) for <b>mode</b> ()
2282         *
2283     * <p>
2284     * <b>Definition:</b>
2285     * How the entry list was prepared - whether it is a working list that is suitable for being maintained on an ongoing basis, or if it represents a snapshot of a list of items from another source, or whether it is a prepared list where items may be marked as added, modified or deleted
2286     * </p> 
2287         */
2288        public Section setMode(CodeDt theValue) {
2289                myMode = theValue;
2290                return this;
2291        }
2292        
2293        
2294
2295        /**
2296         * Sets the value for <b>mode</b> ()
2297         *
2298     * <p>
2299     * <b>Definition:</b>
2300     * How the entry list was prepared - whether it is a working list that is suitable for being maintained on an ongoing basis, or if it represents a snapshot of a list of items from another source, or whether it is a prepared list where items may be marked as added, modified or deleted
2301     * </p> 
2302         */
2303        public Section setMode( String theCode) {
2304                myMode = new CodeDt(theCode); 
2305                return this; 
2306        }
2307
2308 
2309        /**
2310         * Gets the value(s) for <b>orderedBy</b> ().
2311         * creating it if it does
2312         * not exist. Will not return <code>null</code>.
2313         *
2314     * <p>
2315     * <b>Definition:</b>
2316     * Specifies the order applied to the items in the section entries
2317     * </p> 
2318         */
2319        public CodeableConceptDt getOrderedBy() {  
2320                if (myOrderedBy == null) {
2321                        myOrderedBy = new CodeableConceptDt();
2322                }
2323                return myOrderedBy;
2324        }
2325
2326        /**
2327         * Sets the value(s) for <b>orderedBy</b> ()
2328         *
2329     * <p>
2330     * <b>Definition:</b>
2331     * Specifies the order applied to the items in the section entries
2332     * </p> 
2333         */
2334        public Section setOrderedBy(CodeableConceptDt theValue) {
2335                myOrderedBy = theValue;
2336                return this;
2337        }
2338        
2339        
2340
2341  
2342        /**
2343         * Gets the value(s) for <b>entry</b> ().
2344         * creating it if it does
2345         * not exist. Will not return <code>null</code>.
2346         *
2347     * <p>
2348     * <b>Definition:</b>
2349     * A reference to the actual resource from which the narrative in the section is derived
2350     * </p> 
2351         */
2352        public java.util.List<ResourceReferenceDt> getEntry() {  
2353                if (myEntry == null) {
2354                        myEntry = new java.util.ArrayList<ResourceReferenceDt>();
2355                }
2356                return myEntry;
2357        }
2358
2359        /**
2360         * Sets the value(s) for <b>entry</b> ()
2361         *
2362     * <p>
2363     * <b>Definition:</b>
2364     * A reference to the actual resource from which the narrative in the section is derived
2365     * </p> 
2366         */
2367        public Section setEntry(java.util.List<ResourceReferenceDt> theValue) {
2368                myEntry = theValue;
2369                return this;
2370        }
2371        
2372        
2373
2374        /**
2375         * Adds and returns a new value for <b>entry</b> ()
2376         *
2377     * <p>
2378     * <b>Definition:</b>
2379     * A reference to the actual resource from which the narrative in the section is derived
2380     * </p> 
2381         */
2382        public ResourceReferenceDt addEntry() {
2383                ResourceReferenceDt newType = new ResourceReferenceDt();
2384                getEntry().add(newType);
2385                return newType; 
2386        }
2387  
2388        /**
2389         * Gets the value(s) for <b>emptyReason</b> ().
2390         * creating it if it does
2391         * not exist. Will not return <code>null</code>.
2392         *
2393     * <p>
2394     * <b>Definition:</b>
2395     * If the section is empty, why the list is empty. An empty section typically has some text explaining the empty reason
2396     * </p> 
2397         */
2398        public CodeableConceptDt getEmptyReason() {  
2399                if (myEmptyReason == null) {
2400                        myEmptyReason = new CodeableConceptDt();
2401                }
2402                return myEmptyReason;
2403        }
2404
2405        /**
2406         * Sets the value(s) for <b>emptyReason</b> ()
2407         *
2408     * <p>
2409     * <b>Definition:</b>
2410     * If the section is empty, why the list is empty. An empty section typically has some text explaining the empty reason
2411     * </p> 
2412         */
2413        public Section setEmptyReason(CodeableConceptDt theValue) {
2414                myEmptyReason = theValue;
2415                return this;
2416        }
2417        
2418        
2419
2420  
2421        /**
2422         * Gets the value(s) for <b>section</b> ().
2423         * creating it if it does
2424         * not exist. Will not return <code>null</code>.
2425         *
2426     * <p>
2427     * <b>Definition:</b>
2428     * A nested sub-section within this section
2429     * </p> 
2430         */
2431        public java.util.List<Section> getSection() {  
2432                if (mySection == null) {
2433                        mySection = new java.util.ArrayList<Section>();
2434                }
2435                return mySection;
2436        }
2437
2438        /**
2439         * Sets the value(s) for <b>section</b> ()
2440         *
2441     * <p>
2442     * <b>Definition:</b>
2443     * A nested sub-section within this section
2444     * </p> 
2445         */
2446        public Section setSection(java.util.List<Section> theValue) {
2447                mySection = theValue;
2448                return this;
2449        }
2450        
2451        
2452
2453        /**
2454         * Adds and returns a new value for <b>section</b> ()
2455         *
2456     * <p>
2457     * <b>Definition:</b>
2458     * A nested sub-section within this section
2459     * </p> 
2460         */
2461        public Section addSection() {
2462                Section newType = new Section();
2463                getSection().add(newType);
2464                return newType; 
2465        }
2466
2467        /**
2468         * Adds a given new value for <b>section</b> ()
2469         *
2470         * <p>
2471         * <b>Definition:</b>
2472         * A nested sub-section within this section
2473         * </p>
2474         * @param theValue The section to add (must not be <code>null</code>)
2475         */
2476        public Section addSection(Section theValue) {
2477                if (theValue == null) {
2478                        throw new NullPointerException("theValue must not be null");
2479                }
2480                getSection().add(theValue);
2481                return this;
2482        }
2483
2484        /**
2485         * Gets the first repetition for <b>section</b> (),
2486         * creating it if it does not already exist.
2487         *
2488     * <p>
2489     * <b>Definition:</b>
2490     * A nested sub-section within this section
2491     * </p> 
2492         */
2493        public Section getSectionFirstRep() {
2494                if (getSection().isEmpty()) {
2495                        return addSection();
2496                }
2497                return getSection().get(0); 
2498        }
2499  
2500
2501
2502        }
2503
2504
2505
2506
2507    @Override
2508    public String getResourceName() {
2509        return "Composition";
2510    }
2511    
2512    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
2513        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
2514    }
2515
2516
2517}