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>DocumentReference</b> Resource
282 * (infrastructure.documents)
283 *
284 * <p>
285 * <b>Definition:</b>
286 * A reference to a document .
287 * </p> 
288 *
289 * <p>
290 * <b>Requirements:</b>
291 * 
292 * </p> 
293 *
294 * <p>
295 * <b>Profile Definition:</b>
296 * <a href="http://hl7.org/fhir/profiles/DocumentReference">http://hl7.org/fhir/profiles/DocumentReference</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="DocumentReference", profile="http://hl7.org/fhir/profiles/DocumentReference", id="documentreference")
301public class DocumentReference extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource     {
303
304        /**
305         * Search parameter constant for <b>identifier</b>
306         * <p>
307         * Description: <b></b><br>
308         * Type: <b>token</b><br>
309         * Path: <b>DocumentReference.masterIdentifier | DocumentReference.identifier</b><br>
310         * </p>
311         */
312        @SearchParamDefinition(name="identifier", path="DocumentReference.masterIdentifier | DocumentReference.identifier", description="", type="token"  )
313        public static final String SP_IDENTIFIER = "identifier";
314
315        /**
316         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
317         * <p>
318         * Description: <b></b><br>
319         * Type: <b>token</b><br>
320         * Path: <b>DocumentReference.masterIdentifier | DocumentReference.identifier</b><br>
321         * </p>
322         */
323        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
324
325        /**
326         * Search parameter constant for <b>subject</b>
327         * <p>
328         * Description: <b></b><br>
329         * Type: <b>reference</b><br>
330         * Path: <b>DocumentReference.subject</b><br>
331         * </p>
332         */
333        @SearchParamDefinition(name="subject", path="DocumentReference.subject", description="", type="reference" , providesMembershipIn={
334 @Compartment(name="Patient") ,  @Compartment(name="RelatedPerson") ,  @Compartment(name="Practitioner")        }
335 )
336        public static final String SP_SUBJECT = "subject";
337
338        /**
339         * <b>Fluent Client</b> search parameter constant for <b>subject</b>
340         * <p>
341         * Description: <b></b><br>
342         * Type: <b>reference</b><br>
343         * Path: <b>DocumentReference.subject</b><br>
344         * </p>
345         */
346        public static final ReferenceClientParam SUBJECT = new ReferenceClientParam(SP_SUBJECT);
347
348        /**
349         * Search parameter constant for <b>type</b>
350         * <p>
351         * Description: <b></b><br>
352         * Type: <b>token</b><br>
353         * Path: <b>DocumentReference.type</b><br>
354         * </p>
355         */
356        @SearchParamDefinition(name="type", path="DocumentReference.type", description="", type="token"  )
357        public static final String SP_TYPE = "type";
358
359        /**
360         * <b>Fluent Client</b> search parameter constant for <b>type</b>
361         * <p>
362         * Description: <b></b><br>
363         * Type: <b>token</b><br>
364         * Path: <b>DocumentReference.type</b><br>
365         * </p>
366         */
367        public static final TokenClientParam TYPE = new TokenClientParam(SP_TYPE);
368
369        /**
370         * Search parameter constant for <b>class</b>
371         * <p>
372         * Description: <b></b><br>
373         * Type: <b>token</b><br>
374         * Path: <b>DocumentReference.class</b><br>
375         * </p>
376         */
377        @SearchParamDefinition(name="class", path="DocumentReference.class", description="", type="token"  )
378        public static final String SP_CLASS = "class";
379
380        /**
381         * <b>Fluent Client</b> search parameter constant for <b>class</b>
382         * <p>
383         * Description: <b></b><br>
384         * Type: <b>token</b><br>
385         * Path: <b>DocumentReference.class</b><br>
386         * </p>
387         */
388        public static final TokenClientParam CLASS = new TokenClientParam(SP_CLASS);
389
390        /**
391         * Search parameter constant for <b>author</b>
392         * <p>
393         * Description: <b></b><br>
394         * Type: <b>reference</b><br>
395         * Path: <b>DocumentReference.author</b><br>
396         * </p>
397         */
398        @SearchParamDefinition(name="author", path="DocumentReference.author", description="", type="reference" , providesMembershipIn={
399 @Compartment(name="Patient") ,  @Compartment(name="Encounter") ,  @Compartment(name="RelatedPerson") ,  @Compartment(name="Practitioner")      }
400 )
401        public static final String SP_AUTHOR = "author";
402
403        /**
404         * <b>Fluent Client</b> search parameter constant for <b>author</b>
405         * <p>
406         * Description: <b></b><br>
407         * Type: <b>reference</b><br>
408         * Path: <b>DocumentReference.author</b><br>
409         * </p>
410         */
411        public static final ReferenceClientParam AUTHOR = new ReferenceClientParam(SP_AUTHOR);
412
413        /**
414         * Search parameter constant for <b>custodian</b>
415         * <p>
416         * Description: <b></b><br>
417         * Type: <b>reference</b><br>
418         * Path: <b>DocumentReference.custodian</b><br>
419         * </p>
420         */
421        @SearchParamDefinition(name="custodian", path="DocumentReference.custodian", description="", type="reference"  )
422        public static final String SP_CUSTODIAN = "custodian";
423
424        /**
425         * <b>Fluent Client</b> search parameter constant for <b>custodian</b>
426         * <p>
427         * Description: <b></b><br>
428         * Type: <b>reference</b><br>
429         * Path: <b>DocumentReference.custodian</b><br>
430         * </p>
431         */
432        public static final ReferenceClientParam CUSTODIAN = new ReferenceClientParam(SP_CUSTODIAN);
433
434        /**
435         * Search parameter constant for <b>authenticator</b>
436         * <p>
437         * Description: <b></b><br>
438         * Type: <b>reference</b><br>
439         * Path: <b>DocumentReference.authenticator</b><br>
440         * </p>
441         */
442        @SearchParamDefinition(name="authenticator", path="DocumentReference.authenticator", description="", type="reference" , providesMembershipIn={
443 @Compartment(name="RelatedPerson")     }
444 )
445        public static final String SP_AUTHENTICATOR = "authenticator";
446
447        /**
448         * <b>Fluent Client</b> search parameter constant for <b>authenticator</b>
449         * <p>
450         * Description: <b></b><br>
451         * Type: <b>reference</b><br>
452         * Path: <b>DocumentReference.authenticator</b><br>
453         * </p>
454         */
455        public static final ReferenceClientParam AUTHENTICATOR = new ReferenceClientParam(SP_AUTHENTICATOR);
456
457        /**
458         * Search parameter constant for <b>created</b>
459         * <p>
460         * Description: <b></b><br>
461         * Type: <b>date</b><br>
462         * Path: <b>DocumentReference.created</b><br>
463         * </p>
464         */
465        @SearchParamDefinition(name="created", path="DocumentReference.created", description="", type="date"  )
466        public static final String SP_CREATED = "created";
467
468        /**
469         * <b>Fluent Client</b> search parameter constant for <b>created</b>
470         * <p>
471         * Description: <b></b><br>
472         * Type: <b>date</b><br>
473         * Path: <b>DocumentReference.created</b><br>
474         * </p>
475         */
476        public static final DateClientParam CREATED = new DateClientParam(SP_CREATED);
477
478        /**
479         * Search parameter constant for <b>indexed</b>
480         * <p>
481         * Description: <b></b><br>
482         * Type: <b>date</b><br>
483         * Path: <b>DocumentReference.indexed</b><br>
484         * </p>
485         */
486        @SearchParamDefinition(name="indexed", path="DocumentReference.indexed", description="", type="date"  )
487        public static final String SP_INDEXED = "indexed";
488
489        /**
490         * <b>Fluent Client</b> search parameter constant for <b>indexed</b>
491         * <p>
492         * Description: <b></b><br>
493         * Type: <b>date</b><br>
494         * Path: <b>DocumentReference.indexed</b><br>
495         * </p>
496         */
497        public static final DateClientParam INDEXED = new DateClientParam(SP_INDEXED);
498
499        /**
500         * Search parameter constant for <b>status</b>
501         * <p>
502         * Description: <b></b><br>
503         * Type: <b>token</b><br>
504         * Path: <b>DocumentReference.status</b><br>
505         * </p>
506         */
507        @SearchParamDefinition(name="status", path="DocumentReference.status", description="", type="token"  )
508        public static final String SP_STATUS = "status";
509
510        /**
511         * <b>Fluent Client</b> search parameter constant for <b>status</b>
512         * <p>
513         * Description: <b></b><br>
514         * Type: <b>token</b><br>
515         * Path: <b>DocumentReference.status</b><br>
516         * </p>
517         */
518        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
519
520        /**
521         * Search parameter constant for <b>relatesto</b>
522         * <p>
523         * Description: <b></b><br>
524         * Type: <b>reference</b><br>
525         * Path: <b>DocumentReference.relatesTo.target</b><br>
526         * </p>
527         */
528        @SearchParamDefinition(name="relatesto", path="DocumentReference.relatesTo.target", description="", type="reference"  )
529        public static final String SP_RELATESTO = "relatesto";
530
531        /**
532         * <b>Fluent Client</b> search parameter constant for <b>relatesto</b>
533         * <p>
534         * Description: <b></b><br>
535         * Type: <b>reference</b><br>
536         * Path: <b>DocumentReference.relatesTo.target</b><br>
537         * </p>
538         */
539        public static final ReferenceClientParam RELATESTO = new ReferenceClientParam(SP_RELATESTO);
540
541        /**
542         * Search parameter constant for <b>relation</b>
543         * <p>
544         * Description: <b></b><br>
545         * Type: <b>token</b><br>
546         * Path: <b>DocumentReference.relatesTo.code</b><br>
547         * </p>
548         */
549        @SearchParamDefinition(name="relation", path="DocumentReference.relatesTo.code", description="", type="token"  )
550        public static final String SP_RELATION = "relation";
551
552        /**
553         * <b>Fluent Client</b> search parameter constant for <b>relation</b>
554         * <p>
555         * Description: <b></b><br>
556         * Type: <b>token</b><br>
557         * Path: <b>DocumentReference.relatesTo.code</b><br>
558         * </p>
559         */
560        public static final TokenClientParam RELATION = new TokenClientParam(SP_RELATION);
561
562        /**
563         * Search parameter constant for <b>description</b>
564         * <p>
565         * Description: <b></b><br>
566         * Type: <b>string</b><br>
567         * Path: <b>DocumentReference.description</b><br>
568         * </p>
569         */
570        @SearchParamDefinition(name="description", path="DocumentReference.description", description="", type="string"  )
571        public static final String SP_DESCRIPTION = "description";
572
573        /**
574         * <b>Fluent Client</b> search parameter constant for <b>description</b>
575         * <p>
576         * Description: <b></b><br>
577         * Type: <b>string</b><br>
578         * Path: <b>DocumentReference.description</b><br>
579         * </p>
580         */
581        public static final StringClientParam DESCRIPTION = new StringClientParam(SP_DESCRIPTION);
582
583        /**
584         * Search parameter constant for <b>securitylabel</b>
585         * <p>
586         * Description: <b></b><br>
587         * Type: <b>token</b><br>
588         * Path: <b>DocumentReference.securityLabel</b><br>
589         * </p>
590         */
591        @SearchParamDefinition(name="securitylabel", path="DocumentReference.securityLabel", description="", type="token"  )
592        public static final String SP_SECURITYLABEL = "securitylabel";
593
594        /**
595         * <b>Fluent Client</b> search parameter constant for <b>securitylabel</b>
596         * <p>
597         * Description: <b></b><br>
598         * Type: <b>token</b><br>
599         * Path: <b>DocumentReference.securityLabel</b><br>
600         * </p>
601         */
602        public static final TokenClientParam SECURITYLABEL = new TokenClientParam(SP_SECURITYLABEL);
603
604        /**
605         * Search parameter constant for <b>format</b>
606         * <p>
607         * Description: <b></b><br>
608         * Type: <b>token</b><br>
609         * Path: <b>DocumentReference.content.format</b><br>
610         * </p>
611         */
612        @SearchParamDefinition(name="format", path="DocumentReference.content.format", description="", type="token"  )
613        public static final String SP_FORMAT = "format";
614
615        /**
616         * <b>Fluent Client</b> search parameter constant for <b>format</b>
617         * <p>
618         * Description: <b></b><br>
619         * Type: <b>token</b><br>
620         * Path: <b>DocumentReference.content.format</b><br>
621         * </p>
622         */
623        public static final TokenClientParam FORMAT = new TokenClientParam(SP_FORMAT);
624
625        /**
626         * Search parameter constant for <b>language</b>
627         * <p>
628         * Description: <b></b><br>
629         * Type: <b>token</b><br>
630         * Path: <b>DocumentReference.content.attachment.language</b><br>
631         * </p>
632         */
633        @SearchParamDefinition(name="language", path="DocumentReference.content.attachment.language", description="", type="token"  )
634        public static final String SP_LANGUAGE = "language";
635
636        /**
637         * <b>Fluent Client</b> search parameter constant for <b>language</b>
638         * <p>
639         * Description: <b></b><br>
640         * Type: <b>token</b><br>
641         * Path: <b>DocumentReference.content.attachment.language</b><br>
642         * </p>
643         */
644        public static final TokenClientParam LANGUAGE = new TokenClientParam(SP_LANGUAGE);
645
646        /**
647         * Search parameter constant for <b>location</b>
648         * <p>
649         * Description: <b></b><br>
650         * Type: <b>uri</b><br>
651         * Path: <b>DocumentReference.content.attachment.url</b><br>
652         * </p>
653         */
654        @SearchParamDefinition(name="location", path="DocumentReference.content.attachment.url", description="", type="uri"  )
655        public static final String SP_LOCATION = "location";
656
657        /**
658         * <b>Fluent Client</b> search parameter constant for <b>location</b>
659         * <p>
660         * Description: <b></b><br>
661         * Type: <b>uri</b><br>
662         * Path: <b>DocumentReference.content.attachment.url</b><br>
663         * </p>
664         */
665        public static final UriClientParam LOCATION = new UriClientParam(SP_LOCATION);
666
667        /**
668         * Search parameter constant for <b>event</b>
669         * <p>
670         * Description: <b></b><br>
671         * Type: <b>token</b><br>
672         * Path: <b>DocumentReference.context.event</b><br>
673         * </p>
674         */
675        @SearchParamDefinition(name="event", path="DocumentReference.context.event", description="", type="token"  )
676        public static final String SP_EVENT = "event";
677
678        /**
679         * <b>Fluent Client</b> search parameter constant for <b>event</b>
680         * <p>
681         * Description: <b></b><br>
682         * Type: <b>token</b><br>
683         * Path: <b>DocumentReference.context.event</b><br>
684         * </p>
685         */
686        public static final TokenClientParam EVENT = new TokenClientParam(SP_EVENT);
687
688        /**
689         * Search parameter constant for <b>period</b>
690         * <p>
691         * Description: <b></b><br>
692         * Type: <b>date</b><br>
693         * Path: <b>DocumentReference.context.period</b><br>
694         * </p>
695         */
696        @SearchParamDefinition(name="period", path="DocumentReference.context.period", description="", type="date"  )
697        public static final String SP_PERIOD = "period";
698
699        /**
700         * <b>Fluent Client</b> search parameter constant for <b>period</b>
701         * <p>
702         * Description: <b></b><br>
703         * Type: <b>date</b><br>
704         * Path: <b>DocumentReference.context.period</b><br>
705         * </p>
706         */
707        public static final DateClientParam PERIOD = new DateClientParam(SP_PERIOD);
708
709        /**
710         * Search parameter constant for <b>facility</b>
711         * <p>
712         * Description: <b></b><br>
713         * Type: <b>token</b><br>
714         * Path: <b>DocumentReference.context.facilityType</b><br>
715         * </p>
716         */
717        @SearchParamDefinition(name="facility", path="DocumentReference.context.facilityType", description="", type="token"  )
718        public static final String SP_FACILITY = "facility";
719
720        /**
721         * <b>Fluent Client</b> search parameter constant for <b>facility</b>
722         * <p>
723         * Description: <b></b><br>
724         * Type: <b>token</b><br>
725         * Path: <b>DocumentReference.context.facilityType</b><br>
726         * </p>
727         */
728        public static final TokenClientParam FACILITY = new TokenClientParam(SP_FACILITY);
729
730        /**
731         * Search parameter constant for <b>patient</b>
732         * <p>
733         * Description: <b></b><br>
734         * Type: <b>reference</b><br>
735         * Path: <b>DocumentReference.subject</b><br>
736         * </p>
737         */
738        @SearchParamDefinition(name="patient", path="DocumentReference.subject", description="", type="reference" , target={
739 ca.uhn.fhir.model.dstu2.resource.Patient.class         }
740 )
741        public static final String SP_PATIENT = "patient";
742
743        /**
744         * <b>Fluent Client</b> search parameter constant for <b>patient</b>
745         * <p>
746         * Description: <b></b><br>
747         * Type: <b>reference</b><br>
748         * Path: <b>DocumentReference.subject</b><br>
749         * </p>
750         */
751        public static final ReferenceClientParam PATIENT = new ReferenceClientParam(SP_PATIENT);
752
753        /**
754         * Search parameter constant for <b>setting</b>
755         * <p>
756         * Description: <b></b><br>
757         * Type: <b>token</b><br>
758         * Path: <b>DocumentReference.context.practiceSetting</b><br>
759         * </p>
760         */
761        @SearchParamDefinition(name="setting", path="DocumentReference.context.practiceSetting", description="", type="token"  )
762        public static final String SP_SETTING = "setting";
763
764        /**
765         * <b>Fluent Client</b> search parameter constant for <b>setting</b>
766         * <p>
767         * Description: <b></b><br>
768         * Type: <b>token</b><br>
769         * Path: <b>DocumentReference.context.practiceSetting</b><br>
770         * </p>
771         */
772        public static final TokenClientParam SETTING = new TokenClientParam(SP_SETTING);
773
774        /**
775         * Search parameter constant for <b>related-id</b>
776         * <p>
777         * Description: <b></b><br>
778         * Type: <b>token</b><br>
779         * Path: <b>DocumentReference.context.related.identifier</b><br>
780         * </p>
781         */
782        @SearchParamDefinition(name="related-id", path="DocumentReference.context.related.identifier", description="", type="token"  )
783        public static final String SP_RELATED_ID = "related-id";
784
785        /**
786         * <b>Fluent Client</b> search parameter constant for <b>related-id</b>
787         * <p>
788         * Description: <b></b><br>
789         * Type: <b>token</b><br>
790         * Path: <b>DocumentReference.context.related.identifier</b><br>
791         * </p>
792         */
793        public static final TokenClientParam RELATED_ID = new TokenClientParam(SP_RELATED_ID);
794
795        /**
796         * Search parameter constant for <b>related-ref</b>
797         * <p>
798         * Description: <b></b><br>
799         * Type: <b>reference</b><br>
800         * Path: <b>DocumentReference.context.related.ref</b><br>
801         * </p>
802         */
803        @SearchParamDefinition(name="related-ref", path="DocumentReference.context.related.ref", description="", type="reference"  )
804        public static final String SP_RELATED_REF = "related-ref";
805
806        /**
807         * <b>Fluent Client</b> search parameter constant for <b>related-ref</b>
808         * <p>
809         * Description: <b></b><br>
810         * Type: <b>reference</b><br>
811         * Path: <b>DocumentReference.context.related.ref</b><br>
812         * </p>
813         */
814        public static final ReferenceClientParam RELATED_REF = new ReferenceClientParam(SP_RELATED_REF);
815
816        /**
817         * Search parameter constant for <b>encounter</b>
818         * <p>
819         * Description: <b></b><br>
820         * Type: <b>reference</b><br>
821         * Path: <b>DocumentReference.context.encounter</b><br>
822         * </p>
823         */
824        @SearchParamDefinition(name="encounter", path="DocumentReference.context.encounter", description="", type="reference"  )
825        public static final String SP_ENCOUNTER = "encounter";
826
827        /**
828         * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
829         * <p>
830         * Description: <b></b><br>
831         * Type: <b>reference</b><br>
832         * Path: <b>DocumentReference.context.encounter</b><br>
833         * </p>
834         */
835        public static final ReferenceClientParam ENCOUNTER = new ReferenceClientParam(SP_ENCOUNTER);
836
837        /**
838         * Search parameter constant for <b>relatesto-relation</b>
839         * <p>
840         * Description: <b>Combination of relation and relatesTo</b><br>
841         * Type: <b>composite</b><br>
842         * Path: <b>relatesto &amp; relation</b><br>
843         * </p>
844         */
845        @SearchParamDefinition(name="relatesto-relation", path="relatesto & relation", description="Combination of relation and relatesTo", type="composite"  , compositeOf={  "relatesto",  "relation" }  )
846        public static final String SP_RELATESTO_RELATION = "relatesto-relation";
847
848        /**
849         * <b>Fluent Client</b> search parameter constant for <b>relatesto-relation</b>
850         * <p>
851         * Description: <b>Combination of relation and relatesTo</b><br>
852         * Type: <b>composite</b><br>
853         * Path: <b>relatesto &amp; relation</b><br>
854         * </p>
855         */
856        public static final CompositeClientParam<ReferenceClientParam, TokenClientParam> RELATESTO_RELATION = new CompositeClientParam<ReferenceClientParam, TokenClientParam>(SP_RELATESTO_RELATION);
857
858
859        /**
860         * Constant for fluent queries to be used to add include statements. Specifies
861         * the path value of "<b>DocumentReference:authenticator</b>".
862         */
863        public static final Include INCLUDE_AUTHENTICATOR = new Include("DocumentReference:authenticator");
864
865        /**
866         * Constant for fluent queries to be used to add include statements. Specifies
867         * the path value of "<b>DocumentReference:author</b>".
868         */
869        public static final Include INCLUDE_AUTHOR = new Include("DocumentReference:author");
870
871        /**
872         * Constant for fluent queries to be used to add include statements. Specifies
873         * the path value of "<b>DocumentReference:custodian</b>".
874         */
875        public static final Include INCLUDE_CUSTODIAN = new Include("DocumentReference:custodian");
876
877        /**
878         * Constant for fluent queries to be used to add include statements. Specifies
879         * the path value of "<b>DocumentReference:encounter</b>".
880         */
881        public static final Include INCLUDE_ENCOUNTER = new Include("DocumentReference:encounter");
882
883        /**
884         * Constant for fluent queries to be used to add include statements. Specifies
885         * the path value of "<b>DocumentReference:patient</b>".
886         */
887        public static final Include INCLUDE_PATIENT = new Include("DocumentReference:patient");
888
889        /**
890         * Constant for fluent queries to be used to add include statements. Specifies
891         * the path value of "<b>DocumentReference:related-ref</b>".
892         */
893        public static final Include INCLUDE_RELATED_REF = new Include("DocumentReference:related-ref");
894
895        /**
896         * Constant for fluent queries to be used to add include statements. Specifies
897         * the path value of "<b>DocumentReference:relatesto</b>".
898         */
899        public static final Include INCLUDE_RELATESTO = new Include("DocumentReference:relatesto");
900
901        /**
902         * Constant for fluent queries to be used to add include statements. Specifies
903         * the path value of "<b>DocumentReference:subject</b>".
904         */
905        public static final Include INCLUDE_SUBJECT = new Include("DocumentReference:subject");
906
907
908        @Child(name="masterIdentifier", type=IdentifierDt.class, order=0, min=0, max=1, summary=false, modifier=false)  
909        @Description(
910                shortDefinition="id",
911                formalDefinition="Document identifier as assigned by the source of the document. This identifier is specific to this version of the document. This unique identifier may be used elsewhere to identify this version of the document"
912        )
913        private IdentifierDt myMasterIdentifier;
914        
915        @Child(name="identifier", type=IdentifierDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
916        @Description(
917                shortDefinition="id",
918                formalDefinition="Other identifiers associated with the document, including version independent identifiers"
919        )
920        private java.util.List<IdentifierDt> myIdentifier;
921        
922        @Child(name="subject", order=2, min=0, max=1, summary=false, modifier=false, type={
923                ca.uhn.fhir.model.dstu2.resource.Patient.class,                 ca.uhn.fhir.model.dstu2.resource.Practitioner.class,            ca.uhn.fhir.model.dstu2.resource.Group.class,           ca.uhn.fhir.model.dstu2.resource.Device.class   })
924        @Description(
925                shortDefinition="who.focus",
926                formalDefinition="Who or what the document is about. The document 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 farm animals, or a set of patients that share a common exposure)"
927        )
928        private ResourceReferenceDt mySubject;
929        
930        @Child(name="type", type=CodeableConceptDt.class, order=3, min=1, max=1, summary=false, modifier=false) 
931        @Description(
932                shortDefinition="class",
933                formalDefinition="Specifies the particular kind of document referenced  (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the document referenced."
934        )
935        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/valueset-c80-doc-typecodes")
936        private CodeableConceptDt myType;
937        
938        @Child(name="class", type=CodeableConceptDt.class, order=4, min=0, max=1, summary=false, modifier=false)        
939        @Description(
940                shortDefinition="class",
941                formalDefinition="A categorization for the type of document referenced - helps for indexing and searching. This may be implied by or derived from the code specified in the DocumentReference.type"
942        )
943        private CodeableConceptDt myClassElement;
944        
945        @Child(name="author", order=5, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
946                ca.uhn.fhir.model.dstu2.resource.Practitioner.class,            ca.uhn.fhir.model.dstu2.resource.Organization.class,            ca.uhn.fhir.model.dstu2.resource.Device.class,          ca.uhn.fhir.model.dstu2.resource.Patient.class,                 ca.uhn.fhir.model.dstu2.resource.RelatedPerson.class    })
947        @Description(
948                shortDefinition="who.author",
949                formalDefinition="Identifies who is responsible for adding the information to the document"
950        )
951        private java.util.List<ResourceReferenceDt> myAuthor;
952        
953        @Child(name="custodian", order=6, min=0, max=1, summary=false, modifier=false, type={
954                ca.uhn.fhir.model.dstu2.resource.Organization.class     })
955        @Description(
956                shortDefinition="",
957                formalDefinition="Identifies the organization or group who is responsible for ongoing maintenance of and access to the document"
958        )
959        private ResourceReferenceDt myCustodian;
960        
961        @Child(name="authenticator", order=7, min=0, max=1, summary=false, modifier=false, type={
962                ca.uhn.fhir.model.dstu2.resource.Practitioner.class,            ca.uhn.fhir.model.dstu2.resource.Organization.class     })
963        @Description(
964                shortDefinition="who.witness",
965                formalDefinition="Which person or organization authenticates that this document is valid"
966        )
967        private ResourceReferenceDt myAuthenticator;
968        
969        @Child(name="created", type=DateTimeDt.class, order=8, min=0, max=1, summary=false, modifier=false)     
970        @Description(
971                shortDefinition="when.done",
972                formalDefinition="When the document was created"
973        )
974        private DateTimeDt myCreated;
975        
976        @Child(name="indexed", type=InstantDt.class, order=9, min=1, max=1, summary=false, modifier=false)      
977        @Description(
978                shortDefinition="when.recorded",
979                formalDefinition="When the document reference was created"
980        )
981        private InstantDt myIndexed;
982        
983        @Child(name="status", type=CodeDt.class, order=10, min=1, max=1, summary=false, modifier=true)  
984        @Description(
985                shortDefinition="status",
986                formalDefinition="The status of this document reference"
987        )
988        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/document-reference-status")
989        private BoundCodeDt<DocumentReferenceStatusEnum> myStatus;
990        
991        @Child(name="docStatus", type=CodeableConceptDt.class, order=11, min=0, max=1, summary=false, modifier=false)   
992        @Description(
993                shortDefinition="status",
994                formalDefinition="The status of the underlying document"
995        )
996        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/composition-status")
997        private CodeableConceptDt myDocStatus;
998        
999        @Child(name="relatesTo", order=12, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=true)        
1000        @Description(
1001                shortDefinition="",
1002                formalDefinition="Relationships that this document has with other document references that already exist"
1003        )
1004        private java.util.List<RelatesTo> myRelatesTo;
1005        
1006        @Child(name="description", type=StringDt.class, order=13, min=0, max=1, summary=false, modifier=false)  
1007        @Description(
1008                shortDefinition="",
1009                formalDefinition="Human-readable description of the source document. This is sometimes known as the \"title\""
1010        )
1011        private StringDt myDescription;
1012        
1013        @Child(name="securityLabel", type=CodeableConceptDt.class, order=14, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
1014        @Description(
1015                shortDefinition="",
1016                formalDefinition="A set of Security-Tag codes specifying the level of privacy/security of the Document. Note that DocumentReference.meta.security contains the security labels of the \"reference\" to the document, while DocumentReference.securityLabel contains a snapshot of the security labels on the document the reference refers to"
1017        )
1018        private java.util.List<CodeableConceptDt> mySecurityLabel;
1019        
1020        @Child(name="content", order=15, min=1, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
1021        @Description(
1022                shortDefinition="",
1023                formalDefinition="The document and format referenced. There may be multiple content element repetitions, each with a different format."
1024        )
1025        private java.util.List<Content> myContent;
1026        
1027        @Child(name="context", order=16, min=0, max=1, summary=false, modifier=false)   
1028        @Description(
1029                shortDefinition="",
1030                formalDefinition="The clinical context in which the document was prepared"
1031        )
1032        private Context myContext;
1033        
1034
1035        @Override
1036        public boolean isEmpty() {
1037                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myMasterIdentifier,  myIdentifier,  mySubject,  myType,  myClassElement,  myAuthor,  myCustodian,  myAuthenticator,  myCreated,  myIndexed,  myStatus,  myDocStatus,  myRelatesTo,  myDescription,  mySecurityLabel,  myContent,  myContext);
1038        }
1039        
1040        @Override
1041        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1042                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myMasterIdentifier, myIdentifier, mySubject, myType, myClassElement, myAuthor, myCustodian, myAuthenticator, myCreated, myIndexed, myStatus, myDocStatus, myRelatesTo, myDescription, mySecurityLabel, myContent, myContext);
1043        }
1044
1045        /**
1046         * Gets the value(s) for <b>masterIdentifier</b> (id).
1047         * creating it if it does
1048         * not exist. Will not return <code>null</code>.
1049         *
1050     * <p>
1051     * <b>Definition:</b>
1052     * Document identifier as assigned by the source of the document. This identifier is specific to this version of the document. This unique identifier may be used elsewhere to identify this version of the document
1053     * </p> 
1054         */
1055        public IdentifierDt getMasterIdentifier() {  
1056                if (myMasterIdentifier == null) {
1057                        myMasterIdentifier = new IdentifierDt();
1058                }
1059                return myMasterIdentifier;
1060        }
1061
1062        /**
1063         * Sets the value(s) for <b>masterIdentifier</b> (id)
1064         *
1065     * <p>
1066     * <b>Definition:</b>
1067     * Document identifier as assigned by the source of the document. This identifier is specific to this version of the document. This unique identifier may be used elsewhere to identify this version of the document
1068     * </p> 
1069         */
1070        public DocumentReference setMasterIdentifier(IdentifierDt theValue) {
1071                myMasterIdentifier = theValue;
1072                return this;
1073        }
1074        
1075        
1076
1077  
1078        /**
1079         * Gets the value(s) for <b>identifier</b> (id).
1080         * creating it if it does
1081         * not exist. Will not return <code>null</code>.
1082         *
1083     * <p>
1084     * <b>Definition:</b>
1085     * Other identifiers associated with the document, including version independent identifiers
1086     * </p> 
1087         */
1088        public java.util.List<IdentifierDt> getIdentifier() {  
1089                if (myIdentifier == null) {
1090                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
1091                }
1092                return myIdentifier;
1093        }
1094
1095        /**
1096         * Sets the value(s) for <b>identifier</b> (id)
1097         *
1098     * <p>
1099     * <b>Definition:</b>
1100     * Other identifiers associated with the document, including version independent identifiers
1101     * </p> 
1102         */
1103        public DocumentReference setIdentifier(java.util.List<IdentifierDt> theValue) {
1104                myIdentifier = theValue;
1105                return this;
1106        }
1107        
1108        
1109
1110        /**
1111         * Adds and returns a new value for <b>identifier</b> (id)
1112         *
1113     * <p>
1114     * <b>Definition:</b>
1115     * Other identifiers associated with the document, including version independent identifiers
1116     * </p> 
1117         */
1118        public IdentifierDt addIdentifier() {
1119                IdentifierDt newType = new IdentifierDt();
1120                getIdentifier().add(newType);
1121                return newType; 
1122        }
1123
1124        /**
1125         * Adds a given new value for <b>identifier</b> (id)
1126         *
1127         * <p>
1128         * <b>Definition:</b>
1129         * Other identifiers associated with the document, including version independent identifiers
1130         * </p>
1131         * @param theValue The identifier to add (must not be <code>null</code>)
1132         */
1133        public DocumentReference addIdentifier(IdentifierDt theValue) {
1134                if (theValue == null) {
1135                        throw new NullPointerException("theValue must not be null");
1136                }
1137                getIdentifier().add(theValue);
1138                return this;
1139        }
1140
1141        /**
1142         * Gets the first repetition for <b>identifier</b> (id),
1143         * creating it if it does not already exist.
1144         *
1145     * <p>
1146     * <b>Definition:</b>
1147     * Other identifiers associated with the document, including version independent identifiers
1148     * </p> 
1149         */
1150        public IdentifierDt getIdentifierFirstRep() {
1151                if (getIdentifier().isEmpty()) {
1152                        return addIdentifier();
1153                }
1154                return getIdentifier().get(0); 
1155        }
1156  
1157        /**
1158         * Gets the value(s) for <b>subject</b> (who.focus).
1159         * creating it if it does
1160         * not exist. Will not return <code>null</code>.
1161         *
1162     * <p>
1163     * <b>Definition:</b>
1164     * Who or what the document is about. The document 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 farm animals, or a set of patients that share a common exposure)
1165     * </p> 
1166         */
1167        public ResourceReferenceDt getSubject() {  
1168                if (mySubject == null) {
1169                        mySubject = new ResourceReferenceDt();
1170                }
1171                return mySubject;
1172        }
1173
1174        /**
1175         * Sets the value(s) for <b>subject</b> (who.focus)
1176         *
1177     * <p>
1178     * <b>Definition:</b>
1179     * Who or what the document is about. The document 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 farm animals, or a set of patients that share a common exposure)
1180     * </p> 
1181         */
1182        public DocumentReference setSubject(ResourceReferenceDt theValue) {
1183                mySubject = theValue;
1184                return this;
1185        }
1186        
1187        
1188
1189  
1190        /**
1191         * Gets the value(s) for <b>type</b> (class).
1192         * creating it if it does
1193         * not exist. Will not return <code>null</code>.
1194         *
1195     * <p>
1196     * <b>Definition:</b>
1197     * Specifies the particular kind of document referenced  (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the document referenced.
1198     * </p> 
1199         */
1200        public CodeableConceptDt getType() {  
1201                if (myType == null) {
1202                        myType = new CodeableConceptDt();
1203                }
1204                return myType;
1205        }
1206
1207        /**
1208         * Sets the value(s) for <b>type</b> (class)
1209         *
1210     * <p>
1211     * <b>Definition:</b>
1212     * Specifies the particular kind of document referenced  (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the document referenced.
1213     * </p> 
1214         */
1215        public DocumentReference setType(CodeableConceptDt theValue) {
1216                myType = theValue;
1217                return this;
1218        }
1219        
1220        
1221
1222  
1223        /**
1224         * Gets the value(s) for <b>class</b> (class).
1225         * creating it if it does
1226         * not exist. Will not return <code>null</code>.
1227         *
1228     * <p>
1229     * <b>Definition:</b>
1230     * A categorization for the type of document referenced - helps for indexing and searching. This may be implied by or derived from the code specified in the DocumentReference.type
1231     * </p> 
1232         */
1233        public CodeableConceptDt getClassElement() {  
1234                if (myClassElement == null) {
1235                        myClassElement = new CodeableConceptDt();
1236                }
1237                return myClassElement;
1238        }
1239
1240        /**
1241         * Sets the value(s) for <b>class</b> (class)
1242         *
1243     * <p>
1244     * <b>Definition:</b>
1245     * A categorization for the type of document referenced - helps for indexing and searching. This may be implied by or derived from the code specified in the DocumentReference.type
1246     * </p> 
1247         */
1248        public DocumentReference setClassElement(CodeableConceptDt theValue) {
1249                myClassElement = theValue;
1250                return this;
1251        }
1252        
1253        
1254
1255  
1256        /**
1257         * Gets the value(s) for <b>author</b> (who.author).
1258         * creating it if it does
1259         * not exist. Will not return <code>null</code>.
1260         *
1261     * <p>
1262     * <b>Definition:</b>
1263     * Identifies who is responsible for adding the information to the document
1264     * </p> 
1265         */
1266        public java.util.List<ResourceReferenceDt> getAuthor() {  
1267                if (myAuthor == null) {
1268                        myAuthor = new java.util.ArrayList<ResourceReferenceDt>();
1269                }
1270                return myAuthor;
1271        }
1272
1273        /**
1274         * Sets the value(s) for <b>author</b> (who.author)
1275         *
1276     * <p>
1277     * <b>Definition:</b>
1278     * Identifies who is responsible for adding the information to the document
1279     * </p> 
1280         */
1281        public DocumentReference setAuthor(java.util.List<ResourceReferenceDt> theValue) {
1282                myAuthor = theValue;
1283                return this;
1284        }
1285        
1286        
1287
1288        /**
1289         * Adds and returns a new value for <b>author</b> (who.author)
1290         *
1291     * <p>
1292     * <b>Definition:</b>
1293     * Identifies who is responsible for adding the information to the document
1294     * </p> 
1295         */
1296        public ResourceReferenceDt addAuthor() {
1297                ResourceReferenceDt newType = new ResourceReferenceDt();
1298                getAuthor().add(newType);
1299                return newType; 
1300        }
1301  
1302        /**
1303         * Gets the value(s) for <b>custodian</b> ().
1304         * creating it if it does
1305         * not exist. Will not return <code>null</code>.
1306         *
1307     * <p>
1308     * <b>Definition:</b>
1309     * Identifies the organization or group who is responsible for ongoing maintenance of and access to the document
1310     * </p> 
1311         */
1312        public ResourceReferenceDt getCustodian() {  
1313                if (myCustodian == null) {
1314                        myCustodian = new ResourceReferenceDt();
1315                }
1316                return myCustodian;
1317        }
1318
1319        /**
1320         * Sets the value(s) for <b>custodian</b> ()
1321         *
1322     * <p>
1323     * <b>Definition:</b>
1324     * Identifies the organization or group who is responsible for ongoing maintenance of and access to the document
1325     * </p> 
1326         */
1327        public DocumentReference setCustodian(ResourceReferenceDt theValue) {
1328                myCustodian = theValue;
1329                return this;
1330        }
1331        
1332        
1333
1334  
1335        /**
1336         * Gets the value(s) for <b>authenticator</b> (who.witness).
1337         * creating it if it does
1338         * not exist. Will not return <code>null</code>.
1339         *
1340     * <p>
1341     * <b>Definition:</b>
1342     * Which person or organization authenticates that this document is valid
1343     * </p> 
1344         */
1345        public ResourceReferenceDt getAuthenticator() {  
1346                if (myAuthenticator == null) {
1347                        myAuthenticator = new ResourceReferenceDt();
1348                }
1349                return myAuthenticator;
1350        }
1351
1352        /**
1353         * Sets the value(s) for <b>authenticator</b> (who.witness)
1354         *
1355     * <p>
1356     * <b>Definition:</b>
1357     * Which person or organization authenticates that this document is valid
1358     * </p> 
1359         */
1360        public DocumentReference setAuthenticator(ResourceReferenceDt theValue) {
1361                myAuthenticator = theValue;
1362                return this;
1363        }
1364        
1365        
1366
1367  
1368        /**
1369         * Gets the value(s) for <b>created</b> (when.done).
1370         * creating it if it does
1371         * not exist. Will not return <code>null</code>.
1372         *
1373     * <p>
1374     * <b>Definition:</b>
1375     * When the document was created
1376     * </p> 
1377         */
1378        public DateTimeDt getCreatedElement() {  
1379                if (myCreated == null) {
1380                        myCreated = new DateTimeDt();
1381                }
1382                return myCreated;
1383        }
1384
1385        
1386        /**
1387         * Gets the value(s) for <b>created</b> (when.done).
1388         * creating it if it does
1389         * not exist. This method may return <code>null</code>.
1390         *
1391     * <p>
1392     * <b>Definition:</b>
1393     * When the document was created
1394     * </p> 
1395         */
1396        public Date getCreated() {  
1397                return getCreatedElement().getValue();
1398        }
1399
1400        /**
1401         * Sets the value(s) for <b>created</b> (when.done)
1402         *
1403     * <p>
1404     * <b>Definition:</b>
1405     * When the document was created
1406     * </p> 
1407         */
1408        public DocumentReference setCreated(DateTimeDt theValue) {
1409                myCreated = theValue;
1410                return this;
1411        }
1412        
1413        
1414
1415        /**
1416         * Sets the value for <b>created</b> (when.done)
1417         *
1418     * <p>
1419     * <b>Definition:</b>
1420     * When the document was created
1421     * </p> 
1422         */
1423        public DocumentReference setCreatedWithSecondsPrecision( Date theDate) {
1424                myCreated = new DateTimeDt(theDate); 
1425                return this; 
1426        }
1427
1428        /**
1429         * Sets the value for <b>created</b> (when.done)
1430         *
1431     * <p>
1432     * <b>Definition:</b>
1433     * When the document was created
1434     * </p> 
1435         */
1436        public DocumentReference setCreated( Date theDate,  TemporalPrecisionEnum thePrecision) {
1437                myCreated = new DateTimeDt(theDate, thePrecision); 
1438                return this; 
1439        }
1440
1441 
1442        /**
1443         * Gets the value(s) for <b>indexed</b> (when.recorded).
1444         * creating it if it does
1445         * not exist. Will not return <code>null</code>.
1446         *
1447     * <p>
1448     * <b>Definition:</b>
1449     * When the document reference was created
1450     * </p> 
1451         */
1452        public InstantDt getIndexedElement() {  
1453                if (myIndexed == null) {
1454                        myIndexed = new InstantDt();
1455                }
1456                return myIndexed;
1457        }
1458
1459        
1460        /**
1461         * Gets the value(s) for <b>indexed</b> (when.recorded).
1462         * creating it if it does
1463         * not exist. This method may return <code>null</code>.
1464         *
1465     * <p>
1466     * <b>Definition:</b>
1467     * When the document reference was created
1468     * </p> 
1469         */
1470        public Date getIndexed() {  
1471                return getIndexedElement().getValue();
1472        }
1473
1474        /**
1475         * Sets the value(s) for <b>indexed</b> (when.recorded)
1476         *
1477     * <p>
1478     * <b>Definition:</b>
1479     * When the document reference was created
1480     * </p> 
1481         */
1482        public DocumentReference setIndexed(InstantDt theValue) {
1483                myIndexed = theValue;
1484                return this;
1485        }
1486        
1487        
1488
1489        /**
1490         * Sets the value for <b>indexed</b> (when.recorded)
1491         *
1492     * <p>
1493     * <b>Definition:</b>
1494     * When the document reference was created
1495     * </p> 
1496         */
1497        public DocumentReference setIndexedWithMillisPrecision( Date theDate) {
1498                myIndexed = new InstantDt(theDate); 
1499                return this; 
1500        }
1501
1502        /**
1503         * Sets the value for <b>indexed</b> (when.recorded)
1504         *
1505     * <p>
1506     * <b>Definition:</b>
1507     * When the document reference was created
1508     * </p> 
1509         */
1510        public DocumentReference setIndexed( Date theDate,  TemporalPrecisionEnum thePrecision) {
1511                myIndexed = new InstantDt(theDate, thePrecision); 
1512                return this; 
1513        }
1514
1515 
1516        /**
1517         * Gets the value(s) for <b>status</b> (status).
1518         * creating it if it does
1519         * not exist. Will not return <code>null</code>.
1520         *
1521     * <p>
1522     * <b>Definition:</b>
1523     * The status of this document reference
1524     * </p> 
1525         */
1526        public BoundCodeDt<DocumentReferenceStatusEnum> getStatusElement() {  
1527                if (myStatus == null) {
1528                        myStatus = new BoundCodeDt<DocumentReferenceStatusEnum>(DocumentReferenceStatusEnum.VALUESET_BINDER);
1529                }
1530                return myStatus;
1531        }
1532
1533        
1534        /**
1535         * Gets the value(s) for <b>status</b> (status).
1536         * creating it if it does
1537         * not exist. This method may return <code>null</code>.
1538         *
1539     * <p>
1540     * <b>Definition:</b>
1541     * The status of this document reference
1542     * </p> 
1543         */
1544        public String getStatus() {  
1545                return getStatusElement().getValue();
1546        }
1547
1548        /**
1549         * Sets the value(s) for <b>status</b> (status)
1550         *
1551     * <p>
1552     * <b>Definition:</b>
1553     * The status of this document reference
1554     * </p> 
1555         */
1556        public DocumentReference setStatus(BoundCodeDt<DocumentReferenceStatusEnum> theValue) {
1557                myStatus = theValue;
1558                return this;
1559        }
1560        
1561        
1562
1563        /**
1564         * Sets the value(s) for <b>status</b> (status)
1565         *
1566     * <p>
1567     * <b>Definition:</b>
1568     * The status of this document reference
1569     * </p> 
1570         */
1571        public DocumentReference setStatus(DocumentReferenceStatusEnum theValue) {
1572                setStatus(new BoundCodeDt<DocumentReferenceStatusEnum>(DocumentReferenceStatusEnum.VALUESET_BINDER, theValue));
1573                
1574/*
1575                getStatusElement().setValueAsEnum(theValue);
1576*/
1577                return this;
1578        }
1579
1580  
1581        /**
1582         * Gets the value(s) for <b>docStatus</b> (status).
1583         * creating it if it does
1584         * not exist. Will not return <code>null</code>.
1585         *
1586     * <p>
1587     * <b>Definition:</b>
1588     * The status of the underlying document
1589     * </p> 
1590         */
1591        public CodeableConceptDt getDocStatus() {  
1592                if (myDocStatus == null) {
1593                        myDocStatus = new CodeableConceptDt();
1594                }
1595                return myDocStatus;
1596        }
1597
1598        /**
1599         * Sets the value(s) for <b>docStatus</b> (status)
1600         *
1601     * <p>
1602     * <b>Definition:</b>
1603     * The status of the underlying document
1604     * </p> 
1605         */
1606        public DocumentReference setDocStatus(CodeableConceptDt theValue) {
1607                myDocStatus = theValue;
1608                return this;
1609        }
1610        
1611        
1612
1613  
1614        /**
1615         * Gets the value(s) for <b>relatesTo</b> ().
1616         * creating it if it does
1617         * not exist. Will not return <code>null</code>.
1618         *
1619     * <p>
1620     * <b>Definition:</b>
1621     * Relationships that this document has with other document references that already exist
1622     * </p> 
1623         */
1624        public java.util.List<RelatesTo> getRelatesTo() {  
1625                if (myRelatesTo == null) {
1626                        myRelatesTo = new java.util.ArrayList<RelatesTo>();
1627                }
1628                return myRelatesTo;
1629        }
1630
1631        /**
1632         * Sets the value(s) for <b>relatesTo</b> ()
1633         *
1634     * <p>
1635     * <b>Definition:</b>
1636     * Relationships that this document has with other document references that already exist
1637     * </p> 
1638         */
1639        public DocumentReference setRelatesTo(java.util.List<RelatesTo> theValue) {
1640                myRelatesTo = theValue;
1641                return this;
1642        }
1643        
1644        
1645
1646        /**
1647         * Adds and returns a new value for <b>relatesTo</b> ()
1648         *
1649     * <p>
1650     * <b>Definition:</b>
1651     * Relationships that this document has with other document references that already exist
1652     * </p> 
1653         */
1654        public RelatesTo addRelatesTo() {
1655                RelatesTo newType = new RelatesTo();
1656                getRelatesTo().add(newType);
1657                return newType; 
1658        }
1659
1660        /**
1661         * Adds a given new value for <b>relatesTo</b> ()
1662         *
1663         * <p>
1664         * <b>Definition:</b>
1665         * Relationships that this document has with other document references that already exist
1666         * </p>
1667         * @param theValue The relatesTo to add (must not be <code>null</code>)
1668         */
1669        public DocumentReference addRelatesTo(RelatesTo theValue) {
1670                if (theValue == null) {
1671                        throw new NullPointerException("theValue must not be null");
1672                }
1673                getRelatesTo().add(theValue);
1674                return this;
1675        }
1676
1677        /**
1678         * Gets the first repetition for <b>relatesTo</b> (),
1679         * creating it if it does not already exist.
1680         *
1681     * <p>
1682     * <b>Definition:</b>
1683     * Relationships that this document has with other document references that already exist
1684     * </p> 
1685         */
1686        public RelatesTo getRelatesToFirstRep() {
1687                if (getRelatesTo().isEmpty()) {
1688                        return addRelatesTo();
1689                }
1690                return getRelatesTo().get(0); 
1691        }
1692  
1693        /**
1694         * Gets the value(s) for <b>description</b> ().
1695         * creating it if it does
1696         * not exist. Will not return <code>null</code>.
1697         *
1698     * <p>
1699     * <b>Definition:</b>
1700     * Human-readable description of the source document. This is sometimes known as the \&quot;title\&quot;
1701     * </p> 
1702         */
1703        public StringDt getDescriptionElement() {  
1704                if (myDescription == null) {
1705                        myDescription = new StringDt();
1706                }
1707                return myDescription;
1708        }
1709
1710        
1711        /**
1712         * Gets the value(s) for <b>description</b> ().
1713         * creating it if it does
1714         * not exist. This method may return <code>null</code>.
1715         *
1716     * <p>
1717     * <b>Definition:</b>
1718     * Human-readable description of the source document. This is sometimes known as the \&quot;title\&quot;
1719     * </p> 
1720         */
1721        public String getDescription() {  
1722                return getDescriptionElement().getValue();
1723        }
1724
1725        /**
1726         * Sets the value(s) for <b>description</b> ()
1727         *
1728     * <p>
1729     * <b>Definition:</b>
1730     * Human-readable description of the source document. This is sometimes known as the \&quot;title\&quot;
1731     * </p> 
1732         */
1733        public DocumentReference setDescription(StringDt theValue) {
1734                myDescription = theValue;
1735                return this;
1736        }
1737        
1738        
1739
1740        /**
1741         * Sets the value for <b>description</b> ()
1742         *
1743     * <p>
1744     * <b>Definition:</b>
1745     * Human-readable description of the source document. This is sometimes known as the \&quot;title\&quot;
1746     * </p> 
1747         */
1748        public DocumentReference setDescription( String theString) {
1749                myDescription = new StringDt(theString); 
1750                return this; 
1751        }
1752
1753 
1754        /**
1755         * Gets the value(s) for <b>securityLabel</b> ().
1756         * creating it if it does
1757         * not exist. Will not return <code>null</code>.
1758         *
1759     * <p>
1760     * <b>Definition:</b>
1761     * A set of Security-Tag codes specifying the level of privacy/security of the Document. Note that DocumentReference.meta.security contains the security labels of the \&quot;reference\&quot; to the document, while DocumentReference.securityLabel contains a snapshot of the security labels on the document the reference refers to
1762     * </p> 
1763         */
1764        public java.util.List<CodeableConceptDt> getSecurityLabel() {  
1765                if (mySecurityLabel == null) {
1766                        mySecurityLabel = new java.util.ArrayList<CodeableConceptDt>();
1767                }
1768                return mySecurityLabel;
1769        }
1770
1771        /**
1772         * Sets the value(s) for <b>securityLabel</b> ()
1773         *
1774     * <p>
1775     * <b>Definition:</b>
1776     * A set of Security-Tag codes specifying the level of privacy/security of the Document. Note that DocumentReference.meta.security contains the security labels of the \&quot;reference\&quot; to the document, while DocumentReference.securityLabel contains a snapshot of the security labels on the document the reference refers to
1777     * </p> 
1778         */
1779        public DocumentReference setSecurityLabel(java.util.List<CodeableConceptDt> theValue) {
1780                mySecurityLabel = theValue;
1781                return this;
1782        }
1783        
1784        
1785
1786        /**
1787         * Adds and returns a new value for <b>securityLabel</b> ()
1788         *
1789     * <p>
1790     * <b>Definition:</b>
1791     * A set of Security-Tag codes specifying the level of privacy/security of the Document. Note that DocumentReference.meta.security contains the security labels of the \&quot;reference\&quot; to the document, while DocumentReference.securityLabel contains a snapshot of the security labels on the document the reference refers to
1792     * </p> 
1793         */
1794        public CodeableConceptDt addSecurityLabel() {
1795                CodeableConceptDt newType = new CodeableConceptDt();
1796                getSecurityLabel().add(newType);
1797                return newType; 
1798        }
1799
1800        /**
1801         * Adds a given new value for <b>securityLabel</b> ()
1802         *
1803         * <p>
1804         * <b>Definition:</b>
1805         * A set of Security-Tag codes specifying the level of privacy/security of the Document. Note that DocumentReference.meta.security contains the security labels of the \&quot;reference\&quot; to the document, while DocumentReference.securityLabel contains a snapshot of the security labels on the document the reference refers to
1806         * </p>
1807         * @param theValue The securityLabel to add (must not be <code>null</code>)
1808         */
1809        public DocumentReference addSecurityLabel(CodeableConceptDt theValue) {
1810                if (theValue == null) {
1811                        throw new NullPointerException("theValue must not be null");
1812                }
1813                getSecurityLabel().add(theValue);
1814                return this;
1815        }
1816
1817        /**
1818         * Gets the first repetition for <b>securityLabel</b> (),
1819         * creating it if it does not already exist.
1820         *
1821     * <p>
1822     * <b>Definition:</b>
1823     * A set of Security-Tag codes specifying the level of privacy/security of the Document. Note that DocumentReference.meta.security contains the security labels of the \&quot;reference\&quot; to the document, while DocumentReference.securityLabel contains a snapshot of the security labels on the document the reference refers to
1824     * </p> 
1825         */
1826        public CodeableConceptDt getSecurityLabelFirstRep() {
1827                if (getSecurityLabel().isEmpty()) {
1828                        return addSecurityLabel();
1829                }
1830                return getSecurityLabel().get(0); 
1831        }
1832  
1833        /**
1834         * Gets the value(s) for <b>content</b> ().
1835         * creating it if it does
1836         * not exist. Will not return <code>null</code>.
1837         *
1838     * <p>
1839     * <b>Definition:</b>
1840     * The document and format referenced. There may be multiple content element repetitions, each with a different format.
1841     * </p> 
1842         */
1843        public java.util.List<Content> getContent() {  
1844                if (myContent == null) {
1845                        myContent = new java.util.ArrayList<Content>();
1846                }
1847                return myContent;
1848        }
1849
1850        /**
1851         * Sets the value(s) for <b>content</b> ()
1852         *
1853     * <p>
1854     * <b>Definition:</b>
1855     * The document and format referenced. There may be multiple content element repetitions, each with a different format.
1856     * </p> 
1857         */
1858        public DocumentReference setContent(java.util.List<Content> theValue) {
1859                myContent = theValue;
1860                return this;
1861        }
1862        
1863        
1864
1865        /**
1866         * Adds and returns a new value for <b>content</b> ()
1867         *
1868     * <p>
1869     * <b>Definition:</b>
1870     * The document and format referenced. There may be multiple content element repetitions, each with a different format.
1871     * </p> 
1872         */
1873        public Content addContent() {
1874                Content newType = new Content();
1875                getContent().add(newType);
1876                return newType; 
1877        }
1878
1879        /**
1880         * Adds a given new value for <b>content</b> ()
1881         *
1882         * <p>
1883         * <b>Definition:</b>
1884         * The document and format referenced. There may be multiple content element repetitions, each with a different format.
1885         * </p>
1886         * @param theValue The content to add (must not be <code>null</code>)
1887         */
1888        public DocumentReference addContent(Content theValue) {
1889                if (theValue == null) {
1890                        throw new NullPointerException("theValue must not be null");
1891                }
1892                getContent().add(theValue);
1893                return this;
1894        }
1895
1896        /**
1897         * Gets the first repetition for <b>content</b> (),
1898         * creating it if it does not already exist.
1899         *
1900     * <p>
1901     * <b>Definition:</b>
1902     * The document and format referenced. There may be multiple content element repetitions, each with a different format.
1903     * </p> 
1904         */
1905        public Content getContentFirstRep() {
1906                if (getContent().isEmpty()) {
1907                        return addContent();
1908                }
1909                return getContent().get(0); 
1910        }
1911  
1912        /**
1913         * Gets the value(s) for <b>context</b> ().
1914         * creating it if it does
1915         * not exist. Will not return <code>null</code>.
1916         *
1917     * <p>
1918     * <b>Definition:</b>
1919     * The clinical context in which the document was prepared
1920     * </p> 
1921         */
1922        public Context getContext() {  
1923                if (myContext == null) {
1924                        myContext = new Context();
1925                }
1926                return myContext;
1927        }
1928
1929        /**
1930         * Sets the value(s) for <b>context</b> ()
1931         *
1932     * <p>
1933     * <b>Definition:</b>
1934     * The clinical context in which the document was prepared
1935     * </p> 
1936         */
1937        public DocumentReference setContext(Context theValue) {
1938                myContext = theValue;
1939                return this;
1940        }
1941        
1942        
1943
1944  
1945        /**
1946         * Block class for child element: <b>DocumentReference.relatesTo</b> ()
1947         *
1948     * <p>
1949     * <b>Definition:</b>
1950     * Relationships that this document has with other document references that already exist
1951     * </p> 
1952         */
1953        @Block()        
1954        public static class RelatesTo 
1955            extends  BaseIdentifiableElement        implements IResourceBlock {
1956        
1957        @Child(name="code", type=CodeDt.class, order=0, min=1, max=1, summary=false, modifier=false)    
1958        @Description(
1959                shortDefinition="",
1960                formalDefinition="The type of relationship that this document has with anther document"
1961        )
1962        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/document-relationship-type")
1963        private BoundCodeDt<DocumentRelationshipTypeEnum> myCode;
1964        
1965        @Child(name="target", order=1, min=1, max=1, summary=false, modifier=false, type={
1966                ca.uhn.fhir.model.dstu2.resource.DocumentReference.class        })
1967        @Description(
1968                shortDefinition="",
1969                formalDefinition="The target document of this relationship"
1970        )
1971        private ResourceReferenceDt myTarget;
1972        
1973
1974        @Override
1975        public boolean isEmpty() {
1976                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCode,  myTarget);
1977        }
1978        
1979        @Override
1980        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1981                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCode, myTarget);
1982        }
1983
1984        /**
1985         * Gets the value(s) for <b>code</b> ().
1986         * creating it if it does
1987         * not exist. Will not return <code>null</code>.
1988         *
1989     * <p>
1990     * <b>Definition:</b>
1991     * The type of relationship that this document has with anther document
1992     * </p> 
1993         */
1994        public BoundCodeDt<DocumentRelationshipTypeEnum> getCodeElement() {  
1995                if (myCode == null) {
1996                        myCode = new BoundCodeDt<DocumentRelationshipTypeEnum>(DocumentRelationshipTypeEnum.VALUESET_BINDER);
1997                }
1998                return myCode;
1999        }
2000
2001        
2002        /**
2003         * Gets the value(s) for <b>code</b> ().
2004         * creating it if it does
2005         * not exist. This method may return <code>null</code>.
2006         *
2007     * <p>
2008     * <b>Definition:</b>
2009     * The type of relationship that this document has with anther document
2010     * </p> 
2011         */
2012        public String getCode() {  
2013                return getCodeElement().getValue();
2014        }
2015
2016        /**
2017         * Sets the value(s) for <b>code</b> ()
2018         *
2019     * <p>
2020     * <b>Definition:</b>
2021     * The type of relationship that this document has with anther document
2022     * </p> 
2023         */
2024        public RelatesTo setCode(BoundCodeDt<DocumentRelationshipTypeEnum> theValue) {
2025                myCode = theValue;
2026                return this;
2027        }
2028        
2029        
2030
2031        /**
2032         * Sets the value(s) for <b>code</b> ()
2033         *
2034     * <p>
2035     * <b>Definition:</b>
2036     * The type of relationship that this document has with anther document
2037     * </p> 
2038         */
2039        public RelatesTo setCode(DocumentRelationshipTypeEnum theValue) {
2040                setCode(new BoundCodeDt<DocumentRelationshipTypeEnum>(DocumentRelationshipTypeEnum.VALUESET_BINDER, theValue));
2041                
2042/*
2043                getCodeElement().setValueAsEnum(theValue);
2044*/
2045                return this;
2046        }
2047
2048  
2049        /**
2050         * Gets the value(s) for <b>target</b> ().
2051         * creating it if it does
2052         * not exist. Will not return <code>null</code>.
2053         *
2054     * <p>
2055     * <b>Definition:</b>
2056     * The target document of this relationship
2057     * </p> 
2058         */
2059        public ResourceReferenceDt getTarget() {  
2060                if (myTarget == null) {
2061                        myTarget = new ResourceReferenceDt();
2062                }
2063                return myTarget;
2064        }
2065
2066        /**
2067         * Sets the value(s) for <b>target</b> ()
2068         *
2069     * <p>
2070     * <b>Definition:</b>
2071     * The target document of this relationship
2072     * </p> 
2073         */
2074        public RelatesTo setTarget(ResourceReferenceDt theValue) {
2075                myTarget = theValue;
2076                return this;
2077        }
2078        
2079        
2080
2081  
2082
2083
2084        }
2085
2086
2087        /**
2088         * Block class for child element: <b>DocumentReference.content</b> ()
2089         *
2090     * <p>
2091     * <b>Definition:</b>
2092     * The document and format referenced. There may be multiple content element repetitions, each with a different format.
2093     * </p> 
2094         */
2095        @Block()        
2096        public static class Content 
2097            extends  BaseIdentifiableElement        implements IResourceBlock {
2098        
2099        @Child(name="attachment", type=AttachmentDt.class, order=0, min=1, max=1, summary=false, modifier=false)        
2100        @Description(
2101                shortDefinition="",
2102                formalDefinition="The document or url of the document along with critical metadata to prove content has integrity."
2103        )
2104        private AttachmentDt myAttachment;
2105        
2106        @Child(name="format", type=CodingDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
2107        @Description(
2108                shortDefinition="",
2109                formalDefinition="An identifier of the document encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType"
2110        )
2111        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/valueset-formatcodes")
2112        private java.util.List<CodingDt> myFormat;
2113        
2114
2115        @Override
2116        public boolean isEmpty() {
2117                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myAttachment,  myFormat);
2118        }
2119        
2120        @Override
2121        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2122                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myAttachment, myFormat);
2123        }
2124
2125        /**
2126         * Gets the value(s) for <b>attachment</b> ().
2127         * creating it if it does
2128         * not exist. Will not return <code>null</code>.
2129         *
2130     * <p>
2131     * <b>Definition:</b>
2132     * The document or url of the document along with critical metadata to prove content has integrity.
2133     * </p> 
2134         */
2135        public AttachmentDt getAttachment() {  
2136                if (myAttachment == null) {
2137                        myAttachment = new AttachmentDt();
2138                }
2139                return myAttachment;
2140        }
2141
2142        /**
2143         * Sets the value(s) for <b>attachment</b> ()
2144         *
2145     * <p>
2146     * <b>Definition:</b>
2147     * The document or url of the document along with critical metadata to prove content has integrity.
2148     * </p> 
2149         */
2150        public Content setAttachment(AttachmentDt theValue) {
2151                myAttachment = theValue;
2152                return this;
2153        }
2154        
2155        
2156
2157  
2158        /**
2159         * Gets the value(s) for <b>format</b> ().
2160         * creating it if it does
2161         * not exist. Will not return <code>null</code>.
2162         *
2163     * <p>
2164     * <b>Definition:</b>
2165     * An identifier of the document encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType
2166     * </p> 
2167         */
2168        public java.util.List<CodingDt> getFormat() {  
2169                if (myFormat == null) {
2170                        myFormat = new java.util.ArrayList<CodingDt>();
2171                }
2172                return myFormat;
2173        }
2174
2175        /**
2176         * Sets the value(s) for <b>format</b> ()
2177         *
2178     * <p>
2179     * <b>Definition:</b>
2180     * An identifier of the document encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType
2181     * </p> 
2182         */
2183        public Content setFormat(java.util.List<CodingDt> theValue) {
2184                myFormat = theValue;
2185                return this;
2186        }
2187        
2188        
2189
2190        /**
2191         * Adds and returns a new value for <b>format</b> ()
2192         *
2193     * <p>
2194     * <b>Definition:</b>
2195     * An identifier of the document encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType
2196     * </p> 
2197         */
2198        public CodingDt addFormat() {
2199                CodingDt newType = new CodingDt();
2200                getFormat().add(newType);
2201                return newType; 
2202        }
2203
2204        /**
2205         * Adds a given new value for <b>format</b> ()
2206         *
2207         * <p>
2208         * <b>Definition:</b>
2209         * An identifier of the document encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType
2210         * </p>
2211         * @param theValue The format to add (must not be <code>null</code>)
2212         */
2213        public Content addFormat(CodingDt theValue) {
2214                if (theValue == null) {
2215                        throw new NullPointerException("theValue must not be null");
2216                }
2217                getFormat().add(theValue);
2218                return this;
2219        }
2220
2221        /**
2222         * Gets the first repetition for <b>format</b> (),
2223         * creating it if it does not already exist.
2224         *
2225     * <p>
2226     * <b>Definition:</b>
2227     * An identifier of the document encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType
2228     * </p> 
2229         */
2230        public CodingDt getFormatFirstRep() {
2231                if (getFormat().isEmpty()) {
2232                        return addFormat();
2233                }
2234                return getFormat().get(0); 
2235        }
2236  
2237
2238
2239        }
2240
2241
2242        /**
2243         * Block class for child element: <b>DocumentReference.context</b> ()
2244         *
2245     * <p>
2246     * <b>Definition:</b>
2247     * The clinical context in which the document was prepared
2248     * </p> 
2249         */
2250        @Block()        
2251        public static class Context 
2252            extends  BaseIdentifiableElement        implements IResourceBlock {
2253        
2254        @Child(name="encounter", order=0, min=0, max=1, summary=false, modifier=false, type={
2255                ca.uhn.fhir.model.dstu2.resource.Encounter.class        })
2256        @Description(
2257                shortDefinition="context",
2258                formalDefinition="Describes the clinical encounter or type of care that the document content is associated with"
2259        )
2260        private ResourceReferenceDt myEncounter;
2261        
2262        @Child(name="event", type=CodeableConceptDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
2263        @Description(
2264                shortDefinition="",
2265                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"
2266        )
2267        private java.util.List<CodeableConceptDt> myEvent;
2268        
2269        @Child(name="period", type=PeriodDt.class, order=2, min=0, max=1, summary=false, modifier=false)        
2270        @Description(
2271                shortDefinition="",
2272                formalDefinition="The time period over which the service that is described by the document was provided"
2273        )
2274        private PeriodDt myPeriod;
2275        
2276        @Child(name="facilityType", type=CodeableConceptDt.class, order=3, min=0, max=1, summary=false, modifier=false) 
2277        @Description(
2278                shortDefinition="",
2279                formalDefinition="The kind of facility where the patient was seen"
2280        )
2281        private CodeableConceptDt myFacilityType;
2282        
2283        @Child(name="practiceSetting", type=CodeableConceptDt.class, order=4, min=0, max=1, summary=false, modifier=false)      
2284        @Description(
2285                shortDefinition="",
2286                formalDefinition="This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty"
2287        )
2288        private CodeableConceptDt myPracticeSetting;
2289        
2290        @Child(name="sourcePatientInfo", order=5, min=0, max=1, summary=false, modifier=false, type={
2291                ca.uhn.fhir.model.dstu2.resource.Patient.class  })
2292        @Description(
2293                shortDefinition="",
2294                formalDefinition="The Patient Information as known when the document was published. May be a reference to a version specific, or contained"
2295        )
2296        private ResourceReferenceDt mySourcePatientInfo;
2297        
2298        @Child(name="related", order=6, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
2299        @Description(
2300                shortDefinition="",
2301                formalDefinition="Related identifiers or resources associated with the DocumentReference."
2302        )
2303        private java.util.List<ContextRelated> myRelated;
2304        
2305
2306        @Override
2307        public boolean isEmpty() {
2308                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myEncounter,  myEvent,  myPeriod,  myFacilityType,  myPracticeSetting,  mySourcePatientInfo,  myRelated);
2309        }
2310        
2311        @Override
2312        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2313                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myEncounter, myEvent, myPeriod, myFacilityType, myPracticeSetting, mySourcePatientInfo, myRelated);
2314        }
2315
2316        /**
2317         * Gets the value(s) for <b>encounter</b> (context).
2318         * creating it if it does
2319         * not exist. Will not return <code>null</code>.
2320         *
2321     * <p>
2322     * <b>Definition:</b>
2323     * Describes the clinical encounter or type of care that the document content is associated with
2324     * </p> 
2325         */
2326        public ResourceReferenceDt getEncounter() {  
2327                if (myEncounter == null) {
2328                        myEncounter = new ResourceReferenceDt();
2329                }
2330                return myEncounter;
2331        }
2332
2333        /**
2334         * Sets the value(s) for <b>encounter</b> (context)
2335         *
2336     * <p>
2337     * <b>Definition:</b>
2338     * Describes the clinical encounter or type of care that the document content is associated with
2339     * </p> 
2340         */
2341        public Context setEncounter(ResourceReferenceDt theValue) {
2342                myEncounter = theValue;
2343                return this;
2344        }
2345        
2346        
2347
2348  
2349        /**
2350         * Gets the value(s) for <b>event</b> ().
2351         * creating it if it does
2352         * not exist. Will not return <code>null</code>.
2353         *
2354     * <p>
2355     * <b>Definition:</b>
2356     * 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
2357     * </p> 
2358         */
2359        public java.util.List<CodeableConceptDt> getEvent() {  
2360                if (myEvent == null) {
2361                        myEvent = new java.util.ArrayList<CodeableConceptDt>();
2362                }
2363                return myEvent;
2364        }
2365
2366        /**
2367         * Sets the value(s) for <b>event</b> ()
2368         *
2369     * <p>
2370     * <b>Definition:</b>
2371     * 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
2372     * </p> 
2373         */
2374        public Context setEvent(java.util.List<CodeableConceptDt> theValue) {
2375                myEvent = theValue;
2376                return this;
2377        }
2378        
2379        
2380
2381        /**
2382         * Adds and returns a new value for <b>event</b> ()
2383         *
2384     * <p>
2385     * <b>Definition:</b>
2386     * 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
2387     * </p> 
2388         */
2389        public CodeableConceptDt addEvent() {
2390                CodeableConceptDt newType = new CodeableConceptDt();
2391                getEvent().add(newType);
2392                return newType; 
2393        }
2394
2395        /**
2396         * Adds a given new value for <b>event</b> ()
2397         *
2398         * <p>
2399         * <b>Definition:</b>
2400         * 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
2401         * </p>
2402         * @param theValue The event to add (must not be <code>null</code>)
2403         */
2404        public Context addEvent(CodeableConceptDt theValue) {
2405                if (theValue == null) {
2406                        throw new NullPointerException("theValue must not be null");
2407                }
2408                getEvent().add(theValue);
2409                return this;
2410        }
2411
2412        /**
2413         * Gets the first repetition for <b>event</b> (),
2414         * creating it if it does not already exist.
2415         *
2416     * <p>
2417     * <b>Definition:</b>
2418     * 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
2419     * </p> 
2420         */
2421        public CodeableConceptDt getEventFirstRep() {
2422                if (getEvent().isEmpty()) {
2423                        return addEvent();
2424                }
2425                return getEvent().get(0); 
2426        }
2427  
2428        /**
2429         * Gets the value(s) for <b>period</b> ().
2430         * creating it if it does
2431         * not exist. Will not return <code>null</code>.
2432         *
2433     * <p>
2434     * <b>Definition:</b>
2435     * The time period over which the service that is described by the document was provided
2436     * </p> 
2437         */
2438        public PeriodDt getPeriod() {  
2439                if (myPeriod == null) {
2440                        myPeriod = new PeriodDt();
2441                }
2442                return myPeriod;
2443        }
2444
2445        /**
2446         * Sets the value(s) for <b>period</b> ()
2447         *
2448     * <p>
2449     * <b>Definition:</b>
2450     * The time period over which the service that is described by the document was provided
2451     * </p> 
2452         */
2453        public Context setPeriod(PeriodDt theValue) {
2454                myPeriod = theValue;
2455                return this;
2456        }
2457        
2458        
2459
2460  
2461        /**
2462         * Gets the value(s) for <b>facilityType</b> ().
2463         * creating it if it does
2464         * not exist. Will not return <code>null</code>.
2465         *
2466     * <p>
2467     * <b>Definition:</b>
2468     * The kind of facility where the patient was seen
2469     * </p> 
2470         */
2471        public CodeableConceptDt getFacilityType() {  
2472                if (myFacilityType == null) {
2473                        myFacilityType = new CodeableConceptDt();
2474                }
2475                return myFacilityType;
2476        }
2477
2478        /**
2479         * Sets the value(s) for <b>facilityType</b> ()
2480         *
2481     * <p>
2482     * <b>Definition:</b>
2483     * The kind of facility where the patient was seen
2484     * </p> 
2485         */
2486        public Context setFacilityType(CodeableConceptDt theValue) {
2487                myFacilityType = theValue;
2488                return this;
2489        }
2490        
2491        
2492
2493  
2494        /**
2495         * Gets the value(s) for <b>practiceSetting</b> ().
2496         * creating it if it does
2497         * not exist. Will not return <code>null</code>.
2498         *
2499     * <p>
2500     * <b>Definition:</b>
2501     * This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty
2502     * </p> 
2503         */
2504        public CodeableConceptDt getPracticeSetting() {  
2505                if (myPracticeSetting == null) {
2506                        myPracticeSetting = new CodeableConceptDt();
2507                }
2508                return myPracticeSetting;
2509        }
2510
2511        /**
2512         * Sets the value(s) for <b>practiceSetting</b> ()
2513         *
2514     * <p>
2515     * <b>Definition:</b>
2516     * This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty
2517     * </p> 
2518         */
2519        public Context setPracticeSetting(CodeableConceptDt theValue) {
2520                myPracticeSetting = theValue;
2521                return this;
2522        }
2523        
2524        
2525
2526  
2527        /**
2528         * Gets the value(s) for <b>sourcePatientInfo</b> ().
2529         * creating it if it does
2530         * not exist. Will not return <code>null</code>.
2531         *
2532     * <p>
2533     * <b>Definition:</b>
2534     * The Patient Information as known when the document was published. May be a reference to a version specific, or contained
2535     * </p> 
2536         */
2537        public ResourceReferenceDt getSourcePatientInfo() {  
2538                if (mySourcePatientInfo == null) {
2539                        mySourcePatientInfo = new ResourceReferenceDt();
2540                }
2541                return mySourcePatientInfo;
2542        }
2543
2544        /**
2545         * Sets the value(s) for <b>sourcePatientInfo</b> ()
2546         *
2547     * <p>
2548     * <b>Definition:</b>
2549     * The Patient Information as known when the document was published. May be a reference to a version specific, or contained
2550     * </p> 
2551         */
2552        public Context setSourcePatientInfo(ResourceReferenceDt theValue) {
2553                mySourcePatientInfo = theValue;
2554                return this;
2555        }
2556        
2557        
2558
2559  
2560        /**
2561         * Gets the value(s) for <b>related</b> ().
2562         * creating it if it does
2563         * not exist. Will not return <code>null</code>.
2564         *
2565     * <p>
2566     * <b>Definition:</b>
2567     * Related identifiers or resources associated with the DocumentReference.
2568     * </p> 
2569         */
2570        public java.util.List<ContextRelated> getRelated() {  
2571                if (myRelated == null) {
2572                        myRelated = new java.util.ArrayList<ContextRelated>();
2573                }
2574                return myRelated;
2575        }
2576
2577        /**
2578         * Sets the value(s) for <b>related</b> ()
2579         *
2580     * <p>
2581     * <b>Definition:</b>
2582     * Related identifiers or resources associated with the DocumentReference.
2583     * </p> 
2584         */
2585        public Context setRelated(java.util.List<ContextRelated> theValue) {
2586                myRelated = theValue;
2587                return this;
2588        }
2589        
2590        
2591
2592        /**
2593         * Adds and returns a new value for <b>related</b> ()
2594         *
2595     * <p>
2596     * <b>Definition:</b>
2597     * Related identifiers or resources associated with the DocumentReference.
2598     * </p> 
2599         */
2600        public ContextRelated addRelated() {
2601                ContextRelated newType = new ContextRelated();
2602                getRelated().add(newType);
2603                return newType; 
2604        }
2605
2606        /**
2607         * Adds a given new value for <b>related</b> ()
2608         *
2609         * <p>
2610         * <b>Definition:</b>
2611         * Related identifiers or resources associated with the DocumentReference.
2612         * </p>
2613         * @param theValue The related to add (must not be <code>null</code>)
2614         */
2615        public Context addRelated(ContextRelated theValue) {
2616                if (theValue == null) {
2617                        throw new NullPointerException("theValue must not be null");
2618                }
2619                getRelated().add(theValue);
2620                return this;
2621        }
2622
2623        /**
2624         * Gets the first repetition for <b>related</b> (),
2625         * creating it if it does not already exist.
2626         *
2627     * <p>
2628     * <b>Definition:</b>
2629     * Related identifiers or resources associated with the DocumentReference.
2630     * </p> 
2631         */
2632        public ContextRelated getRelatedFirstRep() {
2633                if (getRelated().isEmpty()) {
2634                        return addRelated();
2635                }
2636                return getRelated().get(0); 
2637        }
2638  
2639
2640
2641        }
2642
2643        /**
2644         * Block class for child element: <b>DocumentReference.context.related</b> ()
2645         *
2646     * <p>
2647     * <b>Definition:</b>
2648     * Related identifiers or resources associated with the DocumentReference.
2649     * </p> 
2650         */
2651        @Block()        
2652        public static class ContextRelated 
2653            extends  BaseIdentifiableElement        implements IResourceBlock {
2654        
2655        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=1, summary=false, modifier=false)        
2656        @Description(
2657                shortDefinition="",
2658                formalDefinition="Related identifier to this DocumentReference. If both id and ref are present they shall refer to the same thing."
2659        )
2660        private IdentifierDt myIdentifier;
2661        
2662        @Child(name="ref", order=1, min=0, max=1, summary=false, modifier=false, type={
2663                IResource.class })
2664        @Description(
2665                shortDefinition="",
2666                formalDefinition="Related Resource to this DocumentReference. If both id and ref are present they shall refer to the same thing."
2667        )
2668        private ResourceReferenceDt myRef;
2669        
2670
2671        @Override
2672        public boolean isEmpty() {
2673                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myRef);
2674        }
2675        
2676        @Override
2677        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2678                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myRef);
2679        }
2680
2681        /**
2682         * Gets the value(s) for <b>identifier</b> ().
2683         * creating it if it does
2684         * not exist. Will not return <code>null</code>.
2685         *
2686     * <p>
2687     * <b>Definition:</b>
2688     * Related identifier to this DocumentReference. If both id and ref are present they shall refer to the same thing.
2689     * </p> 
2690         */
2691        public IdentifierDt getIdentifier() {  
2692                if (myIdentifier == null) {
2693                        myIdentifier = new IdentifierDt();
2694                }
2695                return myIdentifier;
2696        }
2697
2698        /**
2699         * Sets the value(s) for <b>identifier</b> ()
2700         *
2701     * <p>
2702     * <b>Definition:</b>
2703     * Related identifier to this DocumentReference. If both id and ref are present they shall refer to the same thing.
2704     * </p> 
2705         */
2706        public ContextRelated setIdentifier(IdentifierDt theValue) {
2707                myIdentifier = theValue;
2708                return this;
2709        }
2710        
2711        
2712
2713  
2714        /**
2715         * Gets the value(s) for <b>ref</b> ().
2716         * creating it if it does
2717         * not exist. Will not return <code>null</code>.
2718         *
2719     * <p>
2720     * <b>Definition:</b>
2721     * Related Resource to this DocumentReference. If both id and ref are present they shall refer to the same thing.
2722     * </p> 
2723         */
2724        public ResourceReferenceDt getRef() {  
2725                if (myRef == null) {
2726                        myRef = new ResourceReferenceDt();
2727                }
2728                return myRef;
2729        }
2730
2731        /**
2732         * Sets the value(s) for <b>ref</b> ()
2733         *
2734     * <p>
2735     * <b>Definition:</b>
2736     * Related Resource to this DocumentReference. If both id and ref are present they shall refer to the same thing.
2737     * </p> 
2738         */
2739        public ContextRelated setRef(ResourceReferenceDt theValue) {
2740                myRef = theValue;
2741                return this;
2742        }
2743        
2744        
2745
2746  
2747
2748
2749        }
2750
2751
2752
2753
2754
2755    @Override
2756    public String getResourceName() {
2757        return "DocumentReference";
2758    }
2759    
2760    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
2761        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
2762    }
2763
2764
2765}