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.valueset.AnimalSpeciesEnum;
042import ca.uhn.fhir.model.dstu2.composite.AnnotationDt;
043import ca.uhn.fhir.model.dstu2.valueset.AnswerFormatEnum;
044import ca.uhn.fhir.model.dstu2.resource.Appointment;
045import ca.uhn.fhir.model.dstu2.valueset.AppointmentStatusEnum;
046import ca.uhn.fhir.model.dstu2.valueset.AssertionDirectionTypeEnum;
047import ca.uhn.fhir.model.dstu2.valueset.AssertionOperatorTypeEnum;
048import ca.uhn.fhir.model.dstu2.valueset.AssertionResponseTypesEnum;
049import ca.uhn.fhir.model.dstu2.composite.AttachmentDt;
050import ca.uhn.fhir.model.dstu2.valueset.AuditEventActionEnum;
051import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectLifecycleEnum;
052import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectRoleEnum;
053import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectTypeEnum;
054import ca.uhn.fhir.model.dstu2.valueset.AuditEventOutcomeEnum;
055import ca.uhn.fhir.model.dstu2.valueset.AuditEventParticipantNetworkTypeEnum;
056import ca.uhn.fhir.model.dstu2.valueset.AuditEventSourceTypeEnum;
057import ca.uhn.fhir.model.dstu2.valueset.BindingStrengthEnum;
058import ca.uhn.fhir.model.dstu2.resource.BodySite;
059import ca.uhn.fhir.model.dstu2.valueset.BundleTypeEnum;
060import ca.uhn.fhir.model.dstu2.resource.CarePlan;
061import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityCategoryEnum;
062import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityStatusEnum;
063import ca.uhn.fhir.model.dstu2.valueset.CarePlanRelationshipEnum;
064import ca.uhn.fhir.model.dstu2.valueset.CarePlanStatusEnum;
065import ca.uhn.fhir.model.dstu2.resource.Claim;
066import ca.uhn.fhir.model.dstu2.resource.ClaimResponse;
067import ca.uhn.fhir.model.dstu2.valueset.ClaimTypeEnum;
068import ca.uhn.fhir.model.dstu2.resource.ClinicalImpression;
069import ca.uhn.fhir.model.dstu2.valueset.ClinicalImpressionStatusEnum;
070import ca.uhn.fhir.model.dstu2.composite.CodeableConceptDt;
071import ca.uhn.fhir.model.dstu2.composite.CodingDt;
072import ca.uhn.fhir.model.dstu2.resource.CommunicationRequest;
073import ca.uhn.fhir.model.dstu2.valueset.CommunicationRequestStatusEnum;
074import ca.uhn.fhir.model.dstu2.valueset.CommunicationStatusEnum;
075import ca.uhn.fhir.model.dstu2.resource.Composition;
076import ca.uhn.fhir.model.dstu2.valueset.CompositionAttestationModeEnum;
077import ca.uhn.fhir.model.dstu2.valueset.CompositionStatusEnum;
078import ca.uhn.fhir.model.dstu2.valueset.ConceptMapEquivalenceEnum;
079import ca.uhn.fhir.model.dstu2.resource.Condition;
080import ca.uhn.fhir.model.dstu2.valueset.ConditionCategoryCodesEnum;
081import ca.uhn.fhir.model.dstu2.valueset.ConditionClinicalStatusCodesEnum;
082import ca.uhn.fhir.model.dstu2.valueset.ConditionVerificationStatusEnum;
083import ca.uhn.fhir.model.dstu2.valueset.ConditionalDeleteStatusEnum;
084import ca.uhn.fhir.model.dstu2.valueset.ConditionsCodesEnum;
085import ca.uhn.fhir.model.dstu2.resource.Conformance;
086import ca.uhn.fhir.model.dstu2.valueset.ConformanceEventModeEnum;
087import ca.uhn.fhir.model.dstu2.valueset.ConformanceResourceStatusEnum;
088import ca.uhn.fhir.model.dstu2.valueset.ConformanceStatementKindEnum;
089import ca.uhn.fhir.model.dstu2.composite.ContactPointDt;
090import ca.uhn.fhir.model.dstu2.valueset.ContentTypeEnum;
091import ca.uhn.fhir.model.dstu2.resource.Contract;
092import ca.uhn.fhir.model.dstu2.valueset.ContractActionCodesEnum;
093import ca.uhn.fhir.model.dstu2.valueset.ContractActorRoleCodesEnum;
094import ca.uhn.fhir.model.dstu2.valueset.ContractSubtypeCodesEnum;
095import ca.uhn.fhir.model.dstu2.valueset.ContractTermTypeCodesEnum;
096import ca.uhn.fhir.model.dstu2.valueset.ContractTypeCodesEnum;
097import ca.uhn.fhir.model.dstu2.resource.Coverage;
098import ca.uhn.fhir.model.dstu2.valueset.DataElementStringencyEnum;
099import ca.uhn.fhir.model.dstu2.valueset.DaysOfWeekEnum;
100import ca.uhn.fhir.model.dstu2.valueset.DetectedIssueSeverityEnum;
101import ca.uhn.fhir.model.dstu2.resource.Device;
102import ca.uhn.fhir.model.dstu2.resource.DeviceComponent;
103import ca.uhn.fhir.model.dstu2.resource.DeviceMetric;
104import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationStateEnum;
105import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationTypeEnum;
106import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCategoryEnum;
107import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricColorEnum;
108import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricOperationalStatusEnum;
109import ca.uhn.fhir.model.dstu2.valueset.DeviceStatusEnum;
110import ca.uhn.fhir.model.dstu2.resource.DeviceUseRequest;
111import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestPriorityEnum;
112import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestStatusEnum;
113import ca.uhn.fhir.model.dstu2.resource.DiagnosticOrder;
114import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderPriorityEnum;
115import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderStatusEnum;
116import ca.uhn.fhir.model.dstu2.resource.DiagnosticReport;
117import ca.uhn.fhir.model.dstu2.valueset.DiagnosticReportStatusEnum;
118import ca.uhn.fhir.model.dstu2.valueset.DigitalMediaTypeEnum;
119import ca.uhn.fhir.model.dstu2.valueset.DocumentModeEnum;
120import ca.uhn.fhir.model.dstu2.resource.DocumentReference;
121import ca.uhn.fhir.model.dstu2.valueset.DocumentReferenceStatusEnum;
122import ca.uhn.fhir.model.dstu2.valueset.DocumentRelationshipTypeEnum;
123import ca.uhn.fhir.model.dstu2.composite.ElementDefinitionDt;
124import ca.uhn.fhir.model.dstu2.resource.EligibilityRequest;
125import ca.uhn.fhir.model.dstu2.resource.Encounter;
126import ca.uhn.fhir.model.dstu2.valueset.EncounterClassEnum;
127import ca.uhn.fhir.model.dstu2.valueset.EncounterLocationStatusEnum;
128import ca.uhn.fhir.model.dstu2.valueset.EncounterStateEnum;
129import ca.uhn.fhir.model.dstu2.valueset.EncounterTypeEnum;
130import ca.uhn.fhir.model.dstu2.resource.EnrollmentRequest;
131import ca.uhn.fhir.model.dstu2.valueset.EnteralFormulaTypeCodesEnum;
132import ca.uhn.fhir.model.dstu2.resource.EpisodeOfCare;
133import ca.uhn.fhir.model.dstu2.valueset.EpisodeOfCareStatusEnum;
134import ca.uhn.fhir.model.dstu2.valueset.ExceptionCodesEnum;
135import ca.uhn.fhir.model.dstu2.valueset.ExtensionContextEnum;
136import ca.uhn.fhir.model.dstu2.valueset.FamilyHistoryStatusEnum;
137import ca.uhn.fhir.model.dstu2.resource.FamilyMemberHistory;
138import ca.uhn.fhir.model.dstu2.valueset.FilterOperatorEnum;
139import ca.uhn.fhir.model.dstu2.valueset.FlagCategoryCodesEnum;
140import ca.uhn.fhir.model.dstu2.valueset.FlagStatusEnum;
141import ca.uhn.fhir.model.dstu2.valueset.FluidConsistencyTypeCodesEnum;
142import ca.uhn.fhir.model.dstu2.resource.Goal;
143import ca.uhn.fhir.model.dstu2.valueset.GoalCategoryEnum;
144import ca.uhn.fhir.model.dstu2.valueset.GoalPriorityEnum;
145import ca.uhn.fhir.model.dstu2.valueset.GoalStartEventEnum;
146import ca.uhn.fhir.model.dstu2.valueset.GoalStatusEnum;
147import ca.uhn.fhir.model.dstu2.valueset.GoalStatusReasonEnum;
148import ca.uhn.fhir.model.dstu2.resource.Group;
149import ca.uhn.fhir.model.dstu2.valueset.GroupTypeEnum;
150import ca.uhn.fhir.model.dstu2.valueset.GuideDependencyTypeEnum;
151import ca.uhn.fhir.model.dstu2.valueset.GuidePageKindEnum;
152import ca.uhn.fhir.model.dstu2.valueset.GuideResourcePurposeEnum;
153import ca.uhn.fhir.model.dstu2.valueset.HTTPVerbEnum;
154import ca.uhn.fhir.model.dstu2.resource.HealthcareService;
155import ca.uhn.fhir.model.dstu2.composite.HumanNameDt;
156import ca.uhn.fhir.model.dstu2.composite.IdentifierDt;
157import ca.uhn.fhir.model.dstu2.valueset.IdentifierTypeCodesEnum;
158import ca.uhn.fhir.model.dstu2.valueset.IdentityAssuranceLevelEnum;
159import ca.uhn.fhir.model.dstu2.resource.ImagingObjectSelection;
160import ca.uhn.fhir.model.dstu2.resource.ImagingStudy;
161import ca.uhn.fhir.model.dstu2.resource.Immunization;
162import ca.uhn.fhir.model.dstu2.valueset.ImmunizationReasonCodesEnum;
163import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRecommendationDateCriterionCodesEnum;
164import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRecommendationStatusCodesEnum;
165import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRouteCodesEnum;
166import ca.uhn.fhir.model.dstu2.valueset.InstanceAvailabilityEnum;
167import ca.uhn.fhir.model.dstu2.valueset.InterventionCodesEnum;
168import ca.uhn.fhir.model.dstu2.valueset.IssueSeverityEnum;
169import ca.uhn.fhir.model.dstu2.valueset.IssueTypeEnum;
170import ca.uhn.fhir.model.dstu2.valueset.KOStitleEnum;
171import ca.uhn.fhir.model.dstu2.valueset.LateralityEnum;
172import ca.uhn.fhir.model.dstu2.valueset.LinkTypeEnum;
173import ca.uhn.fhir.model.dstu2.valueset.ListModeEnum;
174import ca.uhn.fhir.model.dstu2.valueset.ListOrderCodesEnum;
175import ca.uhn.fhir.model.dstu2.valueset.ListStatusEnum;
176import ca.uhn.fhir.model.dstu2.resource.Location;
177import ca.uhn.fhir.model.dstu2.valueset.LocationModeEnum;
178import ca.uhn.fhir.model.dstu2.valueset.LocationStatusEnum;
179import ca.uhn.fhir.model.dstu2.valueset.LocationTypeEnum;
180import ca.uhn.fhir.model.dstu2.valueset.MaritalStatusCodesEnum;
181import ca.uhn.fhir.model.dstu2.valueset.MeasmntPrincipleEnum;
182import ca.uhn.fhir.model.dstu2.resource.Media;
183import ca.uhn.fhir.model.dstu2.resource.Medication;
184import ca.uhn.fhir.model.dstu2.valueset.MedicationAdministrationStatusEnum;
185import ca.uhn.fhir.model.dstu2.valueset.MedicationDispenseStatusEnum;
186import ca.uhn.fhir.model.dstu2.resource.MedicationOrder;
187import ca.uhn.fhir.model.dstu2.valueset.MedicationOrderStatusEnum;
188import ca.uhn.fhir.model.dstu2.resource.MedicationStatement;
189import ca.uhn.fhir.model.dstu2.valueset.MedicationStatementStatusEnum;
190import ca.uhn.fhir.model.dstu2.valueset.MessageEventEnum;
191import ca.uhn.fhir.model.dstu2.valueset.MessageSignificanceCategoryEnum;
192import ca.uhn.fhir.model.dstu2.valueset.MessageTransportEnum;
193import ca.uhn.fhir.model.dstu2.resource.NamingSystem;
194import ca.uhn.fhir.model.dstu2.valueset.NamingSystemIdentifierTypeEnum;
195import ca.uhn.fhir.model.dstu2.valueset.NamingSystemTypeEnum;
196import ca.uhn.fhir.model.dstu2.valueset.NoteTypeEnum;
197import ca.uhn.fhir.model.dstu2.valueset.NutrientModifierCodesEnum;
198import ca.uhn.fhir.model.dstu2.resource.NutritionOrder;
199import ca.uhn.fhir.model.dstu2.valueset.NutritionOrderStatusEnum;
200import ca.uhn.fhir.model.dstu2.resource.Observation;
201import ca.uhn.fhir.model.dstu2.valueset.ObservationCategoryCodesEnum;
202import ca.uhn.fhir.model.dstu2.valueset.ObservationRelationshipTypeEnum;
203import ca.uhn.fhir.model.dstu2.valueset.ObservationStatusEnum;
204import ca.uhn.fhir.model.dstu2.resource.OperationDefinition;
205import ca.uhn.fhir.model.dstu2.valueset.OperationKindEnum;
206import ca.uhn.fhir.model.dstu2.resource.OperationOutcome;
207import ca.uhn.fhir.model.dstu2.valueset.OperationParameterUseEnum;
208import ca.uhn.fhir.model.dstu2.resource.Order;
209import ca.uhn.fhir.model.dstu2.valueset.OrderStatusEnum;
210import ca.uhn.fhir.model.dstu2.resource.Organization;
211import ca.uhn.fhir.model.dstu2.valueset.OrganizationTypeEnum;
212import ca.uhn.fhir.model.dstu2.valueset.ParticipantRequiredEnum;
213import ca.uhn.fhir.model.dstu2.valueset.ParticipantStatusEnum;
214import ca.uhn.fhir.model.dstu2.valueset.ParticipantTypeEnum;
215import ca.uhn.fhir.model.dstu2.valueset.ParticipationStatusEnum;
216import ca.uhn.fhir.model.dstu2.resource.Patient;
217import ca.uhn.fhir.model.dstu2.valueset.PayeeTypeCodesEnum;
218import ca.uhn.fhir.model.dstu2.valueset.PaymentStatusCodesEnum;
219import ca.uhn.fhir.model.dstu2.valueset.PaymentTypeCodesEnum;
220import ca.uhn.fhir.model.dstu2.composite.PeriodDt;
221import ca.uhn.fhir.model.dstu2.resource.Person;
222import ca.uhn.fhir.model.dstu2.resource.Practitioner;
223import ca.uhn.fhir.model.dstu2.valueset.PractitionerRoleEnum;
224import ca.uhn.fhir.model.dstu2.valueset.PractitionerSpecialtyEnum;
225import ca.uhn.fhir.model.dstu2.valueset.PriorityCodesEnum;
226import ca.uhn.fhir.model.dstu2.resource.Procedure;
227import ca.uhn.fhir.model.dstu2.resource.ProcedureRequest;
228import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestPriorityEnum;
229import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestStatusEnum;
230import ca.uhn.fhir.model.dstu2.valueset.ProcedureStatusEnum;
231import ca.uhn.fhir.model.dstu2.resource.ProcessRequest;
232import ca.uhn.fhir.model.dstu2.valueset.ProvenanceEntityRoleEnum;
233import ca.uhn.fhir.model.dstu2.composite.QuantityDt;
234import ca.uhn.fhir.model.dstu2.resource.Questionnaire;
235import ca.uhn.fhir.model.dstu2.resource.QuestionnaireResponse;
236import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireResponseStatusEnum;
237import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireStatusEnum;
238import ca.uhn.fhir.model.dstu2.composite.RangeDt;
239import ca.uhn.fhir.model.dstu2.composite.RatioDt;
240import ca.uhn.fhir.model.dstu2.valueset.ReferralMethodEnum;
241import ca.uhn.fhir.model.dstu2.resource.ReferralRequest;
242import ca.uhn.fhir.model.dstu2.valueset.ReferralStatusEnum;
243import ca.uhn.fhir.model.dstu2.resource.RelatedPerson;
244import ca.uhn.fhir.model.dstu2.valueset.RemittanceOutcomeEnum;
245import ca.uhn.fhir.model.dstu2.valueset.ResourceTypeEnum;
246import ca.uhn.fhir.model.dstu2.valueset.ResourceVersionPolicyEnum;
247import ca.uhn.fhir.model.dstu2.valueset.ResponseTypeEnum;
248import ca.uhn.fhir.model.dstu2.valueset.RestfulConformanceModeEnum;
249import ca.uhn.fhir.model.dstu2.valueset.RestfulSecurityServiceEnum;
250import ca.uhn.fhir.model.dstu2.resource.RiskAssessment;
251import ca.uhn.fhir.model.dstu2.valueset.RulesetCodesEnum;
252import ca.uhn.fhir.model.dstu2.composite.SampledDataDt;
253import ca.uhn.fhir.model.dstu2.resource.Schedule;
254import ca.uhn.fhir.model.dstu2.valueset.SearchEntryModeEnum;
255import ca.uhn.fhir.model.dstu2.valueset.SearchModifierCodeEnum;
256import ca.uhn.fhir.model.dstu2.valueset.SearchParamTypeEnum;
257import ca.uhn.fhir.model.dstu2.valueset.ServiceProvisionConditionsEnum;
258import ca.uhn.fhir.model.dstu2.composite.SignatureDt;
259import ca.uhn.fhir.model.dstu2.resource.Slot;
260import ca.uhn.fhir.model.dstu2.valueset.SlotStatusEnum;
261import ca.uhn.fhir.model.dstu2.resource.Specimen;
262import ca.uhn.fhir.model.dstu2.valueset.SpecimenCollectionMethodEnum;
263import ca.uhn.fhir.model.dstu2.valueset.SpecimenStatusEnum;
264import ca.uhn.fhir.model.dstu2.resource.StructureDefinition;
265import ca.uhn.fhir.model.dstu2.valueset.StructureDefinitionKindEnum;
266import ca.uhn.fhir.model.dstu2.valueset.SubscriptionChannelTypeEnum;
267import ca.uhn.fhir.model.dstu2.valueset.SubscriptionStatusEnum;
268import ca.uhn.fhir.model.dstu2.valueset.SubscriptionTagEnum;
269import ca.uhn.fhir.model.dstu2.resource.Substance;
270import ca.uhn.fhir.model.dstu2.valueset.SubstanceCategoryCodesEnum;
271import ca.uhn.fhir.model.dstu2.valueset.SupplementTypeCodesEnum;
272import ca.uhn.fhir.model.dstu2.valueset.SupplyDeliveryStatusEnum;
273import ca.uhn.fhir.model.dstu2.resource.SupplyRequest;
274import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestReasonEnum;
275import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestStatusEnum;
276import ca.uhn.fhir.model.dstu2.valueset.SurfaceCodesEnum;
277import ca.uhn.fhir.model.dstu2.valueset.SystemRestfulInteractionEnum;
278import ca.uhn.fhir.model.api.TemporalPrecisionEnum;
279import ca.uhn.fhir.model.dstu2.valueset.TextureModifiedFoodTypeCodesEnum;
280import ca.uhn.fhir.model.dstu2.valueset.TextureModifierCodesEnum;
281import ca.uhn.fhir.model.dstu2.composite.TimingDt;
282import ca.uhn.fhir.model.dstu2.valueset.TransactionModeEnum;
283import ca.uhn.fhir.model.dstu2.valueset.TypeRestfulInteractionEnum;
284import ca.uhn.fhir.model.dstu2.valueset.UDICodesEnum;
285import ca.uhn.fhir.model.dstu2.valueset.UnknownContentCodeEnum;
286import ca.uhn.fhir.model.dstu2.valueset.UseEnum;
287import ca.uhn.fhir.model.dstu2.resource.ValueSet;
288import ca.uhn.fhir.model.dstu2.valueset.VisionBaseEnum;
289import ca.uhn.fhir.model.dstu2.valueset.VisionEyesEnum;
290import ca.uhn.fhir.model.dstu2.resource.VisionPrescription;
291import ca.uhn.fhir.model.dstu2.valueset.XPathUsageTypeEnum;
292import ca.uhn.fhir.model.api.IResource;
293import ca.uhn.fhir.model.dstu2.composite.AgeDt;
294import ca.uhn.fhir.model.dstu2.composite.BoundCodeableConceptDt;
295import ca.uhn.fhir.model.dstu2.composite.DurationDt;
296import ca.uhn.fhir.model.dstu2.composite.MoneyDt;
297import ca.uhn.fhir.model.dstu2.composite.NarrativeDt;
298import ca.uhn.fhir.model.dstu2.composite.ResourceReferenceDt;
299import ca.uhn.fhir.model.dstu2.composite.SimpleQuantityDt;
300import ca.uhn.fhir.model.primitive.Base64BinaryDt;
301import ca.uhn.fhir.model.primitive.BooleanDt;
302import ca.uhn.fhir.model.primitive.BoundCodeDt;
303import ca.uhn.fhir.model.primitive.CodeDt;
304import ca.uhn.fhir.model.primitive.DateDt;
305import ca.uhn.fhir.model.primitive.DateTimeDt;
306import ca.uhn.fhir.model.primitive.DecimalDt;
307import ca.uhn.fhir.model.primitive.IdDt;
308import ca.uhn.fhir.model.primitive.InstantDt;
309import ca.uhn.fhir.model.primitive.IntegerDt;
310import ca.uhn.fhir.model.primitive.OidDt;
311import ca.uhn.fhir.model.primitive.PositiveIntDt;
312import ca.uhn.fhir.model.primitive.StringDt;
313import ca.uhn.fhir.model.primitive.TimeDt;
314import ca.uhn.fhir.model.primitive.UnsignedIntDt;
315import ca.uhn.fhir.model.primitive.UriDt;
316
317
318/**
319 * HAPI/FHIR <b>DiagnosticOrder</b> Resource
320 * (clinical.diagnostics)
321 *
322 * <p>
323 * <b>Definition:</b>
324 * A record of a request for a diagnostic investigation service to be performed.
325 * </p> 
326 *
327 * <p>
328 * <b>Requirements:</b>
329 * 
330 * </p> 
331 *
332 * <p>
333 * <b>Profile Definition:</b>
334 * <a href="http://hl7.org/fhir/profiles/DiagnosticOrder">http://hl7.org/fhir/profiles/DiagnosticOrder</a> 
335 * </p>
336 *
337 */
338@ResourceDef(name="DiagnosticOrder", profile="http://hl7.org/fhir/profiles/DiagnosticOrder", id="diagnosticorder")
339public class DiagnosticOrder extends ca.uhn.fhir.model.dstu2.resource.BaseResource
340    implements  IResource     {
341
342        /**
343         * Search parameter constant for <b>actor</b>
344         * <p>
345         * Description: <b></b><br>
346         * Type: <b>reference</b><br>
347         * Path: <b>DiagnosticOrder.event.actor | DiagnosticOrder.item.event.actor</b><br>
348         * </p>
349         */
350        @SearchParamDefinition(name="actor", path="DiagnosticOrder.event.actor | DiagnosticOrder.item.event.actor", description="", type="reference"  )
351        public static final String SP_ACTOR = "actor";
352
353        /**
354         * <b>Fluent Client</b> search parameter constant for <b>actor</b>
355         * <p>
356         * Description: <b></b><br>
357         * Type: <b>reference</b><br>
358         * Path: <b>DiagnosticOrder.event.actor | DiagnosticOrder.item.event.actor</b><br>
359         * </p>
360         */
361        public static final ReferenceClientParam ACTOR = new ReferenceClientParam(SP_ACTOR);
362
363        /**
364         * Search parameter constant for <b>bodysite</b>
365         * <p>
366         * Description: <b></b><br>
367         * Type: <b>token</b><br>
368         * Path: <b>DiagnosticOrder.item.bodySite</b><br>
369         * </p>
370         */
371        @SearchParamDefinition(name="bodysite", path="DiagnosticOrder.item.bodySite", description="", type="token"  )
372        public static final String SP_BODYSITE = "bodysite";
373
374        /**
375         * <b>Fluent Client</b> search parameter constant for <b>bodysite</b>
376         * <p>
377         * Description: <b></b><br>
378         * Type: <b>token</b><br>
379         * Path: <b>DiagnosticOrder.item.bodySite</b><br>
380         * </p>
381         */
382        public static final TokenClientParam BODYSITE = new TokenClientParam(SP_BODYSITE);
383
384        /**
385         * Search parameter constant for <b>code</b>
386         * <p>
387         * Description: <b></b><br>
388         * Type: <b>token</b><br>
389         * Path: <b>DiagnosticOrder.item.code</b><br>
390         * </p>
391         */
392        @SearchParamDefinition(name="code", path="DiagnosticOrder.item.code", description="", type="token"  )
393        public static final String SP_CODE = "code";
394
395        /**
396         * <b>Fluent Client</b> search parameter constant for <b>code</b>
397         * <p>
398         * Description: <b></b><br>
399         * Type: <b>token</b><br>
400         * Path: <b>DiagnosticOrder.item.code</b><br>
401         * </p>
402         */
403        public static final TokenClientParam CODE = new TokenClientParam(SP_CODE);
404
405        /**
406         * Search parameter constant for <b>event-date</b>
407         * <p>
408         * Description: <b></b><br>
409         * Type: <b>date</b><br>
410         * Path: <b>DiagnosticOrder.event.dateTime</b><br>
411         * </p>
412         */
413        @SearchParamDefinition(name="event-date", path="DiagnosticOrder.event.dateTime", description="", type="date"  )
414        public static final String SP_EVENT_DATE = "event-date";
415
416        /**
417         * <b>Fluent Client</b> search parameter constant for <b>event-date</b>
418         * <p>
419         * Description: <b></b><br>
420         * Type: <b>date</b><br>
421         * Path: <b>DiagnosticOrder.event.dateTime</b><br>
422         * </p>
423         */
424        public static final DateClientParam EVENT_DATE = new DateClientParam(SP_EVENT_DATE);
425
426        /**
427         * Search parameter constant for <b>encounter</b>
428         * <p>
429         * Description: <b></b><br>
430         * Type: <b>reference</b><br>
431         * Path: <b>DiagnosticOrder.encounter</b><br>
432         * </p>
433         */
434        @SearchParamDefinition(name="encounter", path="DiagnosticOrder.encounter", description="", type="reference"  )
435        public static final String SP_ENCOUNTER = "encounter";
436
437        /**
438         * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
439         * <p>
440         * Description: <b></b><br>
441         * Type: <b>reference</b><br>
442         * Path: <b>DiagnosticOrder.encounter</b><br>
443         * </p>
444         */
445        public static final ReferenceClientParam ENCOUNTER = new ReferenceClientParam(SP_ENCOUNTER);
446
447        /**
448         * Search parameter constant for <b>identifier</b>
449         * <p>
450         * Description: <b></b><br>
451         * Type: <b>token</b><br>
452         * Path: <b>DiagnosticOrder.identifier</b><br>
453         * </p>
454         */
455        @SearchParamDefinition(name="identifier", path="DiagnosticOrder.identifier", description="", type="token"  )
456        public static final String SP_IDENTIFIER = "identifier";
457
458        /**
459         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
460         * <p>
461         * Description: <b></b><br>
462         * Type: <b>token</b><br>
463         * Path: <b>DiagnosticOrder.identifier</b><br>
464         * </p>
465         */
466        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
467
468        /**
469         * Search parameter constant for <b>item-date</b>
470         * <p>
471         * Description: <b></b><br>
472         * Type: <b>date</b><br>
473         * Path: <b>DiagnosticOrder.item.event.dateTime</b><br>
474         * </p>
475         */
476        @SearchParamDefinition(name="item-date", path="DiagnosticOrder.item.event.dateTime", description="", type="date"  )
477        public static final String SP_ITEM_DATE = "item-date";
478
479        /**
480         * <b>Fluent Client</b> search parameter constant for <b>item-date</b>
481         * <p>
482         * Description: <b></b><br>
483         * Type: <b>date</b><br>
484         * Path: <b>DiagnosticOrder.item.event.dateTime</b><br>
485         * </p>
486         */
487        public static final DateClientParam ITEM_DATE = new DateClientParam(SP_ITEM_DATE);
488
489        /**
490         * Search parameter constant for <b>item-past-status</b>
491         * <p>
492         * Description: <b></b><br>
493         * Type: <b>token</b><br>
494         * Path: <b>DiagnosticOrder.item.event.status</b><br>
495         * </p>
496         */
497        @SearchParamDefinition(name="item-past-status", path="DiagnosticOrder.item.event.status", description="", type="token"  )
498        public static final String SP_ITEM_PAST_STATUS = "item-past-status";
499
500        /**
501         * <b>Fluent Client</b> search parameter constant for <b>item-past-status</b>
502         * <p>
503         * Description: <b></b><br>
504         * Type: <b>token</b><br>
505         * Path: <b>DiagnosticOrder.item.event.status</b><br>
506         * </p>
507         */
508        public static final TokenClientParam ITEM_PAST_STATUS = new TokenClientParam(SP_ITEM_PAST_STATUS);
509
510        /**
511         * Search parameter constant for <b>item-status</b>
512         * <p>
513         * Description: <b></b><br>
514         * Type: <b>token</b><br>
515         * Path: <b>DiagnosticOrder.item.status</b><br>
516         * </p>
517         */
518        @SearchParamDefinition(name="item-status", path="DiagnosticOrder.item.status", description="", type="token"  )
519        public static final String SP_ITEM_STATUS = "item-status";
520
521        /**
522         * <b>Fluent Client</b> search parameter constant for <b>item-status</b>
523         * <p>
524         * Description: <b></b><br>
525         * Type: <b>token</b><br>
526         * Path: <b>DiagnosticOrder.item.status</b><br>
527         * </p>
528         */
529        public static final TokenClientParam ITEM_STATUS = new TokenClientParam(SP_ITEM_STATUS);
530
531        /**
532         * Search parameter constant for <b>orderer</b>
533         * <p>
534         * Description: <b></b><br>
535         * Type: <b>reference</b><br>
536         * Path: <b>DiagnosticOrder.orderer</b><br>
537         * </p>
538         */
539        @SearchParamDefinition(name="orderer", path="DiagnosticOrder.orderer", description="", type="reference"  )
540        public static final String SP_ORDERER = "orderer";
541
542        /**
543         * <b>Fluent Client</b> search parameter constant for <b>orderer</b>
544         * <p>
545         * Description: <b></b><br>
546         * Type: <b>reference</b><br>
547         * Path: <b>DiagnosticOrder.orderer</b><br>
548         * </p>
549         */
550        public static final ReferenceClientParam ORDERER = new ReferenceClientParam(SP_ORDERER);
551
552        /**
553         * Search parameter constant for <b>event-status</b>
554         * <p>
555         * Description: <b></b><br>
556         * Type: <b>token</b><br>
557         * Path: <b>DiagnosticOrder.event.status</b><br>
558         * </p>
559         */
560        @SearchParamDefinition(name="event-status", path="DiagnosticOrder.event.status", description="", type="token"  )
561        public static final String SP_EVENT_STATUS = "event-status";
562
563        /**
564         * <b>Fluent Client</b> search parameter constant for <b>event-status</b>
565         * <p>
566         * Description: <b></b><br>
567         * Type: <b>token</b><br>
568         * Path: <b>DiagnosticOrder.event.status</b><br>
569         * </p>
570         */
571        public static final TokenClientParam EVENT_STATUS = new TokenClientParam(SP_EVENT_STATUS);
572
573        /**
574         * Search parameter constant for <b>specimen</b>
575         * <p>
576         * Description: <b></b><br>
577         * Type: <b>reference</b><br>
578         * Path: <b>DiagnosticOrder.specimen | DiagnosticOrder.item.specimen</b><br>
579         * </p>
580         */
581        @SearchParamDefinition(name="specimen", path="DiagnosticOrder.specimen | DiagnosticOrder.item.specimen", description="", type="reference"  )
582        public static final String SP_SPECIMEN = "specimen";
583
584        /**
585         * <b>Fluent Client</b> search parameter constant for <b>specimen</b>
586         * <p>
587         * Description: <b></b><br>
588         * Type: <b>reference</b><br>
589         * Path: <b>DiagnosticOrder.specimen | DiagnosticOrder.item.specimen</b><br>
590         * </p>
591         */
592        public static final ReferenceClientParam SPECIMEN = new ReferenceClientParam(SP_SPECIMEN);
593
594        /**
595         * Search parameter constant for <b>status</b>
596         * <p>
597         * Description: <b></b><br>
598         * Type: <b>token</b><br>
599         * Path: <b>DiagnosticOrder.status</b><br>
600         * </p>
601         */
602        @SearchParamDefinition(name="status", path="DiagnosticOrder.status", description="", type="token"  )
603        public static final String SP_STATUS = "status";
604
605        /**
606         * <b>Fluent Client</b> search parameter constant for <b>status</b>
607         * <p>
608         * Description: <b></b><br>
609         * Type: <b>token</b><br>
610         * Path: <b>DiagnosticOrder.status</b><br>
611         * </p>
612         */
613        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
614
615        /**
616         * Search parameter constant for <b>subject</b>
617         * <p>
618         * Description: <b></b><br>
619         * Type: <b>reference</b><br>
620         * Path: <b>DiagnosticOrder.subject</b><br>
621         * </p>
622         */
623        @SearchParamDefinition(name="subject", path="DiagnosticOrder.subject", description="", type="reference"  )
624        public static final String SP_SUBJECT = "subject";
625
626        /**
627         * <b>Fluent Client</b> search parameter constant for <b>subject</b>
628         * <p>
629         * Description: <b></b><br>
630         * Type: <b>reference</b><br>
631         * Path: <b>DiagnosticOrder.subject</b><br>
632         * </p>
633         */
634        public static final ReferenceClientParam SUBJECT = new ReferenceClientParam(SP_SUBJECT);
635
636        /**
637         * Search parameter constant for <b>patient</b>
638         * <p>
639         * Description: <b></b><br>
640         * Type: <b>reference</b><br>
641         * Path: <b>DiagnosticOrder.subject</b><br>
642         * </p>
643         */
644        @SearchParamDefinition(name="patient", path="DiagnosticOrder.subject", description="", type="reference"  )
645        public static final String SP_PATIENT = "patient";
646
647        /**
648         * <b>Fluent Client</b> search parameter constant for <b>patient</b>
649         * <p>
650         * Description: <b></b><br>
651         * Type: <b>reference</b><br>
652         * Path: <b>DiagnosticOrder.subject</b><br>
653         * </p>
654         */
655        public static final ReferenceClientParam PATIENT = new ReferenceClientParam(SP_PATIENT);
656
657        /**
658         * Search parameter constant for <b>item-past-status-item-date</b>
659         * <p>
660         * Description: <b>A combination of item-past-status and item-date</b><br>
661         * Type: <b>composite</b><br>
662         * Path: <b>item-past-status &amp; item-date</b><br>
663         * </p>
664         */
665        @SearchParamDefinition(name="item-past-status-item-date", path="item-past-status & item-date", description="A combination of item-past-status and item-date", type="composite"  , compositeOf={  "item-past-status",  "item-date" }  )
666        public static final String SP_ITEM_PAST_STATUS_ITEM_DATE = "item-past-status-item-date";
667
668        /**
669         * <b>Fluent Client</b> search parameter constant for <b>item-past-status-item-date</b>
670         * <p>
671         * Description: <b>A combination of item-past-status and item-date</b><br>
672         * Type: <b>composite</b><br>
673         * Path: <b>item-past-status &amp; item-date</b><br>
674         * </p>
675         */
676        public static final CompositeClientParam<TokenClientParam, DateClientParam> ITEM_PAST_STATUS_ITEM_DATE = new CompositeClientParam<TokenClientParam, DateClientParam>(SP_ITEM_PAST_STATUS_ITEM_DATE);
677
678        /**
679         * Search parameter constant for <b>event-status-event-date</b>
680         * <p>
681         * Description: <b>A combination of past-status and date</b><br>
682         * Type: <b>composite</b><br>
683         * Path: <b>event-status &amp; event-date</b><br>
684         * </p>
685         */
686        @SearchParamDefinition(name="event-status-event-date", path="event-status & event-date", description="A combination of past-status and date", type="composite"  , compositeOf={  "event-status",  "event-date" }  )
687        public static final String SP_EVENT_STATUS_EVENT_DATE = "event-status-event-date";
688
689        /**
690         * <b>Fluent Client</b> search parameter constant for <b>event-status-event-date</b>
691         * <p>
692         * Description: <b>A combination of past-status and date</b><br>
693         * Type: <b>composite</b><br>
694         * Path: <b>event-status &amp; event-date</b><br>
695         * </p>
696         */
697        public static final CompositeClientParam<TokenClientParam, DateClientParam> EVENT_STATUS_EVENT_DATE = new CompositeClientParam<TokenClientParam, DateClientParam>(SP_EVENT_STATUS_EVENT_DATE);
698
699
700        /**
701         * Constant for fluent queries to be used to add include statements. Specifies
702         * the path value of "<b>DiagnosticOrder:actor</b>".
703         */
704        public static final Include INCLUDE_ACTOR = new Include("DiagnosticOrder:actor");
705
706        /**
707         * Constant for fluent queries to be used to add include statements. Specifies
708         * the path value of "<b>DiagnosticOrder:encounter</b>".
709         */
710        public static final Include INCLUDE_ENCOUNTER = new Include("DiagnosticOrder:encounter");
711
712        /**
713         * Constant for fluent queries to be used to add include statements. Specifies
714         * the path value of "<b>DiagnosticOrder:orderer</b>".
715         */
716        public static final Include INCLUDE_ORDERER = new Include("DiagnosticOrder:orderer");
717
718        /**
719         * Constant for fluent queries to be used to add include statements. Specifies
720         * the path value of "<b>DiagnosticOrder:patient</b>".
721         */
722        public static final Include INCLUDE_PATIENT = new Include("DiagnosticOrder:patient");
723
724        /**
725         * Constant for fluent queries to be used to add include statements. Specifies
726         * the path value of "<b>DiagnosticOrder:specimen</b>".
727         */
728        public static final Include INCLUDE_SPECIMEN = new Include("DiagnosticOrder:specimen");
729
730        /**
731         * Constant for fluent queries to be used to add include statements. Specifies
732         * the path value of "<b>DiagnosticOrder:subject</b>".
733         */
734        public static final Include INCLUDE_SUBJECT = new Include("DiagnosticOrder:subject");
735
736
737        @Child(name="subject", order=0, min=1, max=1, summary=true, modifier=false, type={
738                ca.uhn.fhir.model.dstu2.resource.Patient.class,                 ca.uhn.fhir.model.dstu2.resource.Group.class,           ca.uhn.fhir.model.dstu2.resource.Location.class,                ca.uhn.fhir.model.dstu2.resource.Device.class   })
739        @Description(
740                shortDefinition="who.focus",
741                formalDefinition="Who or what the investigation is to be performed on. This is usually a human patient, but diagnostic tests can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans)"
742        )
743        private ResourceReferenceDt mySubject;
744        
745        @Child(name="orderer", order=1, min=0, max=1, summary=true, modifier=false, type={
746                ca.uhn.fhir.model.dstu2.resource.Practitioner.class     })
747        @Description(
748                shortDefinition="who.actor",
749                formalDefinition="The practitioner that holds legal responsibility for ordering the investigation"
750        )
751        private ResourceReferenceDt myOrderer;
752        
753        @Child(name="identifier", type=IdentifierDt.class, order=2, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)       
754        @Description(
755                shortDefinition="id",
756                formalDefinition="Identifiers assigned to this order instance by the orderer and/or  the receiver and/or order fulfiller."
757        )
758        private java.util.List<IdentifierDt> myIdentifier;
759        
760        @Child(name="encounter", order=3, min=0, max=1, summary=true, modifier=false, type={
761                ca.uhn.fhir.model.dstu2.resource.Encounter.class        })
762        @Description(
763                shortDefinition="context",
764                formalDefinition="An encounter that provides additional information about the healthcare context in which this request is made"
765        )
766        private ResourceReferenceDt myEncounter;
767        
768        @Child(name="reason", type=CodeableConceptDt.class, order=4, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
769        @Description(
770                shortDefinition="",
771                formalDefinition="An explanation or justification for why this diagnostic investigation is being requested.   This is often for billing purposes.  May relate to the resources referred to in supportingInformation."
772        )
773        private java.util.List<CodeableConceptDt> myReason;
774        
775        @Child(name="supportingInformation", order=5, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
776                ca.uhn.fhir.model.dstu2.resource.Observation.class,             ca.uhn.fhir.model.dstu2.resource.Condition.class,               ca.uhn.fhir.model.dstu2.resource.DocumentReference.class        })
777        @Description(
778                shortDefinition="",
779                formalDefinition="Additional clinical information about the patient or specimen that may influence test interpretations.  This includes observations explicitly requested by the producer(filler) to provide context or supporting information needed to complete the order."
780        )
781        private java.util.List<ResourceReferenceDt> mySupportingInformation;
782        
783        @Child(name="specimen", order=6, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
784                ca.uhn.fhir.model.dstu2.resource.Specimen.class })
785        @Description(
786                shortDefinition="",
787                formalDefinition="One or more specimens that the diagnostic investigation is about"
788        )
789        private java.util.List<ResourceReferenceDt> mySpecimen;
790        
791        @Child(name="status", type=CodeDt.class, order=7, min=0, max=1, summary=true, modifier=true)    
792        @Description(
793                shortDefinition="status",
794                formalDefinition="The status of the order"
795        )
796        private BoundCodeDt<DiagnosticOrderStatusEnum> myStatus;
797        
798        @Child(name="priority", type=CodeDt.class, order=8, min=0, max=1, summary=true, modifier=false) 
799        @Description(
800                shortDefinition="grade",
801                formalDefinition="The clinical priority associated with this order"
802        )
803        private BoundCodeDt<DiagnosticOrderPriorityEnum> myPriority;
804        
805        @Child(name="event", order=9, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
806        @Description(
807                shortDefinition="",
808                formalDefinition="A summary of the events of interest that have occurred as the request is processed; e.g. when the order was made, various processing steps (specimens received), when it was completed"
809        )
810        private java.util.List<Event> myEvent;
811        
812        @Child(name="item", order=10, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
813        @Description(
814                shortDefinition="",
815                formalDefinition="The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested"
816        )
817        private java.util.List<Item> myItem;
818        
819        @Child(name="note", type=AnnotationDt.class, order=11, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
820        @Description(
821                shortDefinition="",
822                formalDefinition="Any other notes associated with this patient, specimen or order (e.g. \"patient hates needles\")"
823        )
824        private java.util.List<AnnotationDt> myNote;
825        
826
827        @Override
828        public boolean isEmpty() {
829                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  mySubject,  myOrderer,  myIdentifier,  myEncounter,  myReason,  mySupportingInformation,  mySpecimen,  myStatus,  myPriority,  myEvent,  myItem,  myNote);
830        }
831        
832        @Override
833        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
834                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, mySubject, myOrderer, myIdentifier, myEncounter, myReason, mySupportingInformation, mySpecimen, myStatus, myPriority, myEvent, myItem, myNote);
835        }
836
837        /**
838         * Gets the value(s) for <b>subject</b> (who.focus).
839         * creating it if it does
840         * not exist. Will not return <code>null</code>.
841         *
842     * <p>
843     * <b>Definition:</b>
844     * Who or what the investigation is to be performed on. This is usually a human patient, but diagnostic tests can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans)
845     * </p> 
846         */
847        public ResourceReferenceDt getSubject() {  
848                if (mySubject == null) {
849                        mySubject = new ResourceReferenceDt();
850                }
851                return mySubject;
852        }
853
854        /**
855         * Sets the value(s) for <b>subject</b> (who.focus)
856         *
857     * <p>
858     * <b>Definition:</b>
859     * Who or what the investigation is to be performed on. This is usually a human patient, but diagnostic tests can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans)
860     * </p> 
861         */
862        public DiagnosticOrder setSubject(ResourceReferenceDt theValue) {
863                mySubject = theValue;
864                return this;
865        }
866        
867        
868
869  
870        /**
871         * Gets the value(s) for <b>orderer</b> (who.actor).
872         * creating it if it does
873         * not exist. Will not return <code>null</code>.
874         *
875     * <p>
876     * <b>Definition:</b>
877     * The practitioner that holds legal responsibility for ordering the investigation
878     * </p> 
879         */
880        public ResourceReferenceDt getOrderer() {  
881                if (myOrderer == null) {
882                        myOrderer = new ResourceReferenceDt();
883                }
884                return myOrderer;
885        }
886
887        /**
888         * Sets the value(s) for <b>orderer</b> (who.actor)
889         *
890     * <p>
891     * <b>Definition:</b>
892     * The practitioner that holds legal responsibility for ordering the investigation
893     * </p> 
894         */
895        public DiagnosticOrder setOrderer(ResourceReferenceDt theValue) {
896                myOrderer = theValue;
897                return this;
898        }
899        
900        
901
902  
903        /**
904         * Gets the value(s) for <b>identifier</b> (id).
905         * creating it if it does
906         * not exist. Will not return <code>null</code>.
907         *
908     * <p>
909     * <b>Definition:</b>
910     * Identifiers assigned to this order instance by the orderer and/or  the receiver and/or order fulfiller.
911     * </p> 
912         */
913        public java.util.List<IdentifierDt> getIdentifier() {  
914                if (myIdentifier == null) {
915                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
916                }
917                return myIdentifier;
918        }
919
920        /**
921         * Sets the value(s) for <b>identifier</b> (id)
922         *
923     * <p>
924     * <b>Definition:</b>
925     * Identifiers assigned to this order instance by the orderer and/or  the receiver and/or order fulfiller.
926     * </p> 
927         */
928        public DiagnosticOrder setIdentifier(java.util.List<IdentifierDt> theValue) {
929                myIdentifier = theValue;
930                return this;
931        }
932        
933        
934
935        /**
936         * Adds and returns a new value for <b>identifier</b> (id)
937         *
938     * <p>
939     * <b>Definition:</b>
940     * Identifiers assigned to this order instance by the orderer and/or  the receiver and/or order fulfiller.
941     * </p> 
942         */
943        public IdentifierDt addIdentifier() {
944                IdentifierDt newType = new IdentifierDt();
945                getIdentifier().add(newType);
946                return newType; 
947        }
948
949        /**
950         * Adds a given new value for <b>identifier</b> (id)
951         *
952         * <p>
953         * <b>Definition:</b>
954         * Identifiers assigned to this order instance by the orderer and/or  the receiver and/or order fulfiller.
955         * </p>
956         * @param theValue The identifier to add (must not be <code>null</code>)
957         */
958        public DiagnosticOrder addIdentifier(IdentifierDt theValue) {
959                if (theValue == null) {
960                        throw new NullPointerException("theValue must not be null");
961                }
962                getIdentifier().add(theValue);
963                return this;
964        }
965
966        /**
967         * Gets the first repetition for <b>identifier</b> (id),
968         * creating it if it does not already exist.
969         *
970     * <p>
971     * <b>Definition:</b>
972     * Identifiers assigned to this order instance by the orderer and/or  the receiver and/or order fulfiller.
973     * </p> 
974         */
975        public IdentifierDt getIdentifierFirstRep() {
976                if (getIdentifier().isEmpty()) {
977                        return addIdentifier();
978                }
979                return getIdentifier().get(0); 
980        }
981  
982        /**
983         * Gets the value(s) for <b>encounter</b> (context).
984         * creating it if it does
985         * not exist. Will not return <code>null</code>.
986         *
987     * <p>
988     * <b>Definition:</b>
989     * An encounter that provides additional information about the healthcare context in which this request is made
990     * </p> 
991         */
992        public ResourceReferenceDt getEncounter() {  
993                if (myEncounter == null) {
994                        myEncounter = new ResourceReferenceDt();
995                }
996                return myEncounter;
997        }
998
999        /**
1000         * Sets the value(s) for <b>encounter</b> (context)
1001         *
1002     * <p>
1003     * <b>Definition:</b>
1004     * An encounter that provides additional information about the healthcare context in which this request is made
1005     * </p> 
1006         */
1007        public DiagnosticOrder setEncounter(ResourceReferenceDt theValue) {
1008                myEncounter = theValue;
1009                return this;
1010        }
1011        
1012        
1013
1014  
1015        /**
1016         * Gets the value(s) for <b>reason</b> ().
1017         * creating it if it does
1018         * not exist. Will not return <code>null</code>.
1019         *
1020     * <p>
1021     * <b>Definition:</b>
1022     * An explanation or justification for why this diagnostic investigation is being requested.   This is often for billing purposes.  May relate to the resources referred to in supportingInformation.
1023     * </p> 
1024         */
1025        public java.util.List<CodeableConceptDt> getReason() {  
1026                if (myReason == null) {
1027                        myReason = new java.util.ArrayList<CodeableConceptDt>();
1028                }
1029                return myReason;
1030        }
1031
1032        /**
1033         * Sets the value(s) for <b>reason</b> ()
1034         *
1035     * <p>
1036     * <b>Definition:</b>
1037     * An explanation or justification for why this diagnostic investigation is being requested.   This is often for billing purposes.  May relate to the resources referred to in supportingInformation.
1038     * </p> 
1039         */
1040        public DiagnosticOrder setReason(java.util.List<CodeableConceptDt> theValue) {
1041                myReason = theValue;
1042                return this;
1043        }
1044        
1045        
1046
1047        /**
1048         * Adds and returns a new value for <b>reason</b> ()
1049         *
1050     * <p>
1051     * <b>Definition:</b>
1052     * An explanation or justification for why this diagnostic investigation is being requested.   This is often for billing purposes.  May relate to the resources referred to in supportingInformation.
1053     * </p> 
1054         */
1055        public CodeableConceptDt addReason() {
1056                CodeableConceptDt newType = new CodeableConceptDt();
1057                getReason().add(newType);
1058                return newType; 
1059        }
1060
1061        /**
1062         * Adds a given new value for <b>reason</b> ()
1063         *
1064         * <p>
1065         * <b>Definition:</b>
1066         * An explanation or justification for why this diagnostic investigation is being requested.   This is often for billing purposes.  May relate to the resources referred to in supportingInformation.
1067         * </p>
1068         * @param theValue The reason to add (must not be <code>null</code>)
1069         */
1070        public DiagnosticOrder addReason(CodeableConceptDt theValue) {
1071                if (theValue == null) {
1072                        throw new NullPointerException("theValue must not be null");
1073                }
1074                getReason().add(theValue);
1075                return this;
1076        }
1077
1078        /**
1079         * Gets the first repetition for <b>reason</b> (),
1080         * creating it if it does not already exist.
1081         *
1082     * <p>
1083     * <b>Definition:</b>
1084     * An explanation or justification for why this diagnostic investigation is being requested.   This is often for billing purposes.  May relate to the resources referred to in supportingInformation.
1085     * </p> 
1086         */
1087        public CodeableConceptDt getReasonFirstRep() {
1088                if (getReason().isEmpty()) {
1089                        return addReason();
1090                }
1091                return getReason().get(0); 
1092        }
1093  
1094        /**
1095         * Gets the value(s) for <b>supportingInformation</b> ().
1096         * creating it if it does
1097         * not exist. Will not return <code>null</code>.
1098         *
1099     * <p>
1100     * <b>Definition:</b>
1101     * Additional clinical information about the patient or specimen that may influence test interpretations.  This includes observations explicitly requested by the producer(filler) to provide context or supporting information needed to complete the order.
1102     * </p> 
1103         */
1104        public java.util.List<ResourceReferenceDt> getSupportingInformation() {  
1105                if (mySupportingInformation == null) {
1106                        mySupportingInformation = new java.util.ArrayList<ResourceReferenceDt>();
1107                }
1108                return mySupportingInformation;
1109        }
1110
1111        /**
1112         * Sets the value(s) for <b>supportingInformation</b> ()
1113         *
1114     * <p>
1115     * <b>Definition:</b>
1116     * Additional clinical information about the patient or specimen that may influence test interpretations.  This includes observations explicitly requested by the producer(filler) to provide context or supporting information needed to complete the order.
1117     * </p> 
1118         */
1119        public DiagnosticOrder setSupportingInformation(java.util.List<ResourceReferenceDt> theValue) {
1120                mySupportingInformation = theValue;
1121                return this;
1122        }
1123        
1124        
1125
1126        /**
1127         * Adds and returns a new value for <b>supportingInformation</b> ()
1128         *
1129     * <p>
1130     * <b>Definition:</b>
1131     * Additional clinical information about the patient or specimen that may influence test interpretations.  This includes observations explicitly requested by the producer(filler) to provide context or supporting information needed to complete the order.
1132     * </p> 
1133         */
1134        public ResourceReferenceDt addSupportingInformation() {
1135                ResourceReferenceDt newType = new ResourceReferenceDt();
1136                getSupportingInformation().add(newType);
1137                return newType; 
1138        }
1139  
1140        /**
1141         * Gets the value(s) for <b>specimen</b> ().
1142         * creating it if it does
1143         * not exist. Will not return <code>null</code>.
1144         *
1145     * <p>
1146     * <b>Definition:</b>
1147     * One or more specimens that the diagnostic investigation is about
1148     * </p> 
1149         */
1150        public java.util.List<ResourceReferenceDt> getSpecimen() {  
1151                if (mySpecimen == null) {
1152                        mySpecimen = new java.util.ArrayList<ResourceReferenceDt>();
1153                }
1154                return mySpecimen;
1155        }
1156
1157        /**
1158         * Sets the value(s) for <b>specimen</b> ()
1159         *
1160     * <p>
1161     * <b>Definition:</b>
1162     * One or more specimens that the diagnostic investigation is about
1163     * </p> 
1164         */
1165        public DiagnosticOrder setSpecimen(java.util.List<ResourceReferenceDt> theValue) {
1166                mySpecimen = theValue;
1167                return this;
1168        }
1169        
1170        
1171
1172        /**
1173         * Adds and returns a new value for <b>specimen</b> ()
1174         *
1175     * <p>
1176     * <b>Definition:</b>
1177     * One or more specimens that the diagnostic investigation is about
1178     * </p> 
1179         */
1180        public ResourceReferenceDt addSpecimen() {
1181                ResourceReferenceDt newType = new ResourceReferenceDt();
1182                getSpecimen().add(newType);
1183                return newType; 
1184        }
1185  
1186        /**
1187         * Gets the value(s) for <b>status</b> (status).
1188         * creating it if it does
1189         * not exist. Will not return <code>null</code>.
1190         *
1191     * <p>
1192     * <b>Definition:</b>
1193     * The status of the order
1194     * </p> 
1195         */
1196        public BoundCodeDt<DiagnosticOrderStatusEnum> getStatusElement() {  
1197                if (myStatus == null) {
1198                        myStatus = new BoundCodeDt<DiagnosticOrderStatusEnum>(DiagnosticOrderStatusEnum.VALUESET_BINDER);
1199                }
1200                return myStatus;
1201        }
1202
1203        
1204        /**
1205         * Gets the value(s) for <b>status</b> (status).
1206         * creating it if it does
1207         * not exist. Will not return <code>null</code>.
1208         *
1209     * <p>
1210     * <b>Definition:</b>
1211     * The status of the order
1212     * </p> 
1213         */
1214        public String getStatus() {  
1215                return getStatusElement().getValue();
1216        }
1217
1218        /**
1219         * Sets the value(s) for <b>status</b> (status)
1220         *
1221     * <p>
1222     * <b>Definition:</b>
1223     * The status of the order
1224     * </p> 
1225         */
1226        public DiagnosticOrder setStatus(BoundCodeDt<DiagnosticOrderStatusEnum> theValue) {
1227                myStatus = theValue;
1228                return this;
1229        }
1230        
1231        
1232
1233        /**
1234         * Sets the value(s) for <b>status</b> (status)
1235         *
1236     * <p>
1237     * <b>Definition:</b>
1238     * The status of the order
1239     * </p> 
1240         */
1241        public DiagnosticOrder setStatus(DiagnosticOrderStatusEnum theValue) {
1242                setStatus(new BoundCodeDt<DiagnosticOrderStatusEnum>(DiagnosticOrderStatusEnum.VALUESET_BINDER, theValue));
1243                
1244/*
1245                getStatusElement().setValueAsEnum(theValue);
1246*/
1247                return this;
1248        }
1249
1250  
1251        /**
1252         * Gets the value(s) for <b>priority</b> (grade).
1253         * creating it if it does
1254         * not exist. Will not return <code>null</code>.
1255         *
1256     * <p>
1257     * <b>Definition:</b>
1258     * The clinical priority associated with this order
1259     * </p> 
1260         */
1261        public BoundCodeDt<DiagnosticOrderPriorityEnum> getPriorityElement() {  
1262                if (myPriority == null) {
1263                        myPriority = new BoundCodeDt<DiagnosticOrderPriorityEnum>(DiagnosticOrderPriorityEnum.VALUESET_BINDER);
1264                }
1265                return myPriority;
1266        }
1267
1268        
1269        /**
1270         * Gets the value(s) for <b>priority</b> (grade).
1271         * creating it if it does
1272         * not exist. Will not return <code>null</code>.
1273         *
1274     * <p>
1275     * <b>Definition:</b>
1276     * The clinical priority associated with this order
1277     * </p> 
1278         */
1279        public String getPriority() {  
1280                return getPriorityElement().getValue();
1281        }
1282
1283        /**
1284         * Sets the value(s) for <b>priority</b> (grade)
1285         *
1286     * <p>
1287     * <b>Definition:</b>
1288     * The clinical priority associated with this order
1289     * </p> 
1290         */
1291        public DiagnosticOrder setPriority(BoundCodeDt<DiagnosticOrderPriorityEnum> theValue) {
1292                myPriority = theValue;
1293                return this;
1294        }
1295        
1296        
1297
1298        /**
1299         * Sets the value(s) for <b>priority</b> (grade)
1300         *
1301     * <p>
1302     * <b>Definition:</b>
1303     * The clinical priority associated with this order
1304     * </p> 
1305         */
1306        public DiagnosticOrder setPriority(DiagnosticOrderPriorityEnum theValue) {
1307                setPriority(new BoundCodeDt<DiagnosticOrderPriorityEnum>(DiagnosticOrderPriorityEnum.VALUESET_BINDER, theValue));
1308                
1309/*
1310                getPriorityElement().setValueAsEnum(theValue);
1311*/
1312                return this;
1313        }
1314
1315  
1316        /**
1317         * Gets the value(s) for <b>event</b> ().
1318         * creating it if it does
1319         * not exist. Will not return <code>null</code>.
1320         *
1321     * <p>
1322     * <b>Definition:</b>
1323     * A summary of the events of interest that have occurred as the request is processed; e.g. when the order was made, various processing steps (specimens received), when it was completed
1324     * </p> 
1325         */
1326        public java.util.List<Event> getEvent() {  
1327                if (myEvent == null) {
1328                        myEvent = new java.util.ArrayList<Event>();
1329                }
1330                return myEvent;
1331        }
1332
1333        /**
1334         * Sets the value(s) for <b>event</b> ()
1335         *
1336     * <p>
1337     * <b>Definition:</b>
1338     * A summary of the events of interest that have occurred as the request is processed; e.g. when the order was made, various processing steps (specimens received), when it was completed
1339     * </p> 
1340         */
1341        public DiagnosticOrder setEvent(java.util.List<Event> theValue) {
1342                myEvent = theValue;
1343                return this;
1344        }
1345        
1346        
1347
1348        /**
1349         * Adds and returns a new value for <b>event</b> ()
1350         *
1351     * <p>
1352     * <b>Definition:</b>
1353     * A summary of the events of interest that have occurred as the request is processed; e.g. when the order was made, various processing steps (specimens received), when it was completed
1354     * </p> 
1355         */
1356        public Event addEvent() {
1357                Event newType = new Event();
1358                getEvent().add(newType);
1359                return newType; 
1360        }
1361
1362        /**
1363         * Adds a given new value for <b>event</b> ()
1364         *
1365         * <p>
1366         * <b>Definition:</b>
1367         * A summary of the events of interest that have occurred as the request is processed; e.g. when the order was made, various processing steps (specimens received), when it was completed
1368         * </p>
1369         * @param theValue The event to add (must not be <code>null</code>)
1370         */
1371        public DiagnosticOrder addEvent(Event theValue) {
1372                if (theValue == null) {
1373                        throw new NullPointerException("theValue must not be null");
1374                }
1375                getEvent().add(theValue);
1376                return this;
1377        }
1378
1379        /**
1380         * Gets the first repetition for <b>event</b> (),
1381         * creating it if it does not already exist.
1382         *
1383     * <p>
1384     * <b>Definition:</b>
1385     * A summary of the events of interest that have occurred as the request is processed; e.g. when the order was made, various processing steps (specimens received), when it was completed
1386     * </p> 
1387         */
1388        public Event getEventFirstRep() {
1389                if (getEvent().isEmpty()) {
1390                        return addEvent();
1391                }
1392                return getEvent().get(0); 
1393        }
1394  
1395        /**
1396         * Gets the value(s) for <b>item</b> ().
1397         * creating it if it does
1398         * not exist. Will not return <code>null</code>.
1399         *
1400     * <p>
1401     * <b>Definition:</b>
1402     * The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested
1403     * </p> 
1404         */
1405        public java.util.List<Item> getItem() {  
1406                if (myItem == null) {
1407                        myItem = new java.util.ArrayList<Item>();
1408                }
1409                return myItem;
1410        }
1411
1412        /**
1413         * Sets the value(s) for <b>item</b> ()
1414         *
1415     * <p>
1416     * <b>Definition:</b>
1417     * The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested
1418     * </p> 
1419         */
1420        public DiagnosticOrder setItem(java.util.List<Item> theValue) {
1421                myItem = theValue;
1422                return this;
1423        }
1424        
1425        
1426
1427        /**
1428         * Adds and returns a new value for <b>item</b> ()
1429         *
1430     * <p>
1431     * <b>Definition:</b>
1432     * The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested
1433     * </p> 
1434         */
1435        public Item addItem() {
1436                Item newType = new Item();
1437                getItem().add(newType);
1438                return newType; 
1439        }
1440
1441        /**
1442         * Adds a given new value for <b>item</b> ()
1443         *
1444         * <p>
1445         * <b>Definition:</b>
1446         * The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested
1447         * </p>
1448         * @param theValue The item to add (must not be <code>null</code>)
1449         */
1450        public DiagnosticOrder addItem(Item theValue) {
1451                if (theValue == null) {
1452                        throw new NullPointerException("theValue must not be null");
1453                }
1454                getItem().add(theValue);
1455                return this;
1456        }
1457
1458        /**
1459         * Gets the first repetition for <b>item</b> (),
1460         * creating it if it does not already exist.
1461         *
1462     * <p>
1463     * <b>Definition:</b>
1464     * The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested
1465     * </p> 
1466         */
1467        public Item getItemFirstRep() {
1468                if (getItem().isEmpty()) {
1469                        return addItem();
1470                }
1471                return getItem().get(0); 
1472        }
1473  
1474        /**
1475         * Gets the value(s) for <b>note</b> ().
1476         * creating it if it does
1477         * not exist. Will not return <code>null</code>.
1478         *
1479     * <p>
1480     * <b>Definition:</b>
1481     * Any other notes associated with this patient, specimen or order (e.g. \&quot;patient hates needles\&quot;)
1482     * </p> 
1483         */
1484        public java.util.List<AnnotationDt> getNote() {  
1485                if (myNote == null) {
1486                        myNote = new java.util.ArrayList<AnnotationDt>();
1487                }
1488                return myNote;
1489        }
1490
1491        /**
1492         * Sets the value(s) for <b>note</b> ()
1493         *
1494     * <p>
1495     * <b>Definition:</b>
1496     * Any other notes associated with this patient, specimen or order (e.g. \&quot;patient hates needles\&quot;)
1497     * </p> 
1498         */
1499        public DiagnosticOrder setNote(java.util.List<AnnotationDt> theValue) {
1500                myNote = theValue;
1501                return this;
1502        }
1503        
1504        
1505
1506        /**
1507         * Adds and returns a new value for <b>note</b> ()
1508         *
1509     * <p>
1510     * <b>Definition:</b>
1511     * Any other notes associated with this patient, specimen or order (e.g. \&quot;patient hates needles\&quot;)
1512     * </p> 
1513         */
1514        public AnnotationDt addNote() {
1515                AnnotationDt newType = new AnnotationDt();
1516                getNote().add(newType);
1517                return newType; 
1518        }
1519
1520        /**
1521         * Adds a given new value for <b>note</b> ()
1522         *
1523         * <p>
1524         * <b>Definition:</b>
1525         * Any other notes associated with this patient, specimen or order (e.g. \&quot;patient hates needles\&quot;)
1526         * </p>
1527         * @param theValue The note to add (must not be <code>null</code>)
1528         */
1529        public DiagnosticOrder addNote(AnnotationDt theValue) {
1530                if (theValue == null) {
1531                        throw new NullPointerException("theValue must not be null");
1532                }
1533                getNote().add(theValue);
1534                return this;
1535        }
1536
1537        /**
1538         * Gets the first repetition for <b>note</b> (),
1539         * creating it if it does not already exist.
1540         *
1541     * <p>
1542     * <b>Definition:</b>
1543     * Any other notes associated with this patient, specimen or order (e.g. \&quot;patient hates needles\&quot;)
1544     * </p> 
1545         */
1546        public AnnotationDt getNoteFirstRep() {
1547                if (getNote().isEmpty()) {
1548                        return addNote();
1549                }
1550                return getNote().get(0); 
1551        }
1552  
1553        /**
1554         * Block class for child element: <b>DiagnosticOrder.event</b> ()
1555         *
1556     * <p>
1557     * <b>Definition:</b>
1558     * A summary of the events of interest that have occurred as the request is processed; e.g. when the order was made, various processing steps (specimens received), when it was completed
1559     * </p> 
1560         */
1561        @Block()        
1562        public static class Event 
1563            extends  BaseIdentifiableElement        implements IResourceBlock {
1564        
1565        @Child(name="status", type=CodeDt.class, order=0, min=1, max=1, summary=true, modifier=false)   
1566        @Description(
1567                shortDefinition="",
1568                formalDefinition="The status for the event"
1569        )
1570        private BoundCodeDt<DiagnosticOrderStatusEnum> myStatus;
1571        
1572        @Child(name="description", type=CodeableConceptDt.class, order=1, min=0, max=1, summary=true, modifier=false)   
1573        @Description(
1574                shortDefinition="",
1575                formalDefinition="Additional information about the event that occurred - e.g. if the status remained unchanged"
1576        )
1577        private CodeableConceptDt myDescription;
1578        
1579        @Child(name="dateTime", type=DateTimeDt.class, order=2, min=1, max=1, summary=true, modifier=false)     
1580        @Description(
1581                shortDefinition="",
1582                formalDefinition="The date/time at which the event occurred"
1583        )
1584        private DateTimeDt myDateTime;
1585        
1586        @Child(name="actor", order=3, min=0, max=1, summary=false, modifier=false, type={
1587                ca.uhn.fhir.model.dstu2.resource.Practitioner.class,            ca.uhn.fhir.model.dstu2.resource.Device.class   })
1588        @Description(
1589                shortDefinition="",
1590                formalDefinition="The person responsible for performing or recording the action"
1591        )
1592        private ResourceReferenceDt myActor;
1593        
1594
1595        @Override
1596        public boolean isEmpty() {
1597                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myStatus,  myDescription,  myDateTime,  myActor);
1598        }
1599        
1600        @Override
1601        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1602                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myStatus, myDescription, myDateTime, myActor);
1603        }
1604
1605        /**
1606         * Gets the value(s) for <b>status</b> ().
1607         * creating it if it does
1608         * not exist. Will not return <code>null</code>.
1609         *
1610     * <p>
1611     * <b>Definition:</b>
1612     * The status for the event
1613     * </p> 
1614         */
1615        public BoundCodeDt<DiagnosticOrderStatusEnum> getStatusElement() {  
1616                if (myStatus == null) {
1617                        myStatus = new BoundCodeDt<DiagnosticOrderStatusEnum>(DiagnosticOrderStatusEnum.VALUESET_BINDER);
1618                }
1619                return myStatus;
1620        }
1621
1622        
1623        /**
1624         * Gets the value(s) for <b>status</b> ().
1625         * creating it if it does
1626         * not exist. Will not return <code>null</code>.
1627         *
1628     * <p>
1629     * <b>Definition:</b>
1630     * The status for the event
1631     * </p> 
1632         */
1633        public String getStatus() {  
1634                return getStatusElement().getValue();
1635        }
1636
1637        /**
1638         * Sets the value(s) for <b>status</b> ()
1639         *
1640     * <p>
1641     * <b>Definition:</b>
1642     * The status for the event
1643     * </p> 
1644         */
1645        public Event setStatus(BoundCodeDt<DiagnosticOrderStatusEnum> theValue) {
1646                myStatus = theValue;
1647                return this;
1648        }
1649        
1650        
1651
1652        /**
1653         * Sets the value(s) for <b>status</b> ()
1654         *
1655     * <p>
1656     * <b>Definition:</b>
1657     * The status for the event
1658     * </p> 
1659         */
1660        public Event setStatus(DiagnosticOrderStatusEnum theValue) {
1661                setStatus(new BoundCodeDt<DiagnosticOrderStatusEnum>(DiagnosticOrderStatusEnum.VALUESET_BINDER, theValue));
1662                
1663/*
1664                getStatusElement().setValueAsEnum(theValue);
1665*/
1666                return this;
1667        }
1668
1669  
1670        /**
1671         * Gets the value(s) for <b>description</b> ().
1672         * creating it if it does
1673         * not exist. Will not return <code>null</code>.
1674         *
1675     * <p>
1676     * <b>Definition:</b>
1677     * Additional information about the event that occurred - e.g. if the status remained unchanged
1678     * </p> 
1679         */
1680        public CodeableConceptDt getDescription() {  
1681                if (myDescription == null) {
1682                        myDescription = new CodeableConceptDt();
1683                }
1684                return myDescription;
1685        }
1686
1687        /**
1688         * Sets the value(s) for <b>description</b> ()
1689         *
1690     * <p>
1691     * <b>Definition:</b>
1692     * Additional information about the event that occurred - e.g. if the status remained unchanged
1693     * </p> 
1694         */
1695        public Event setDescription(CodeableConceptDt theValue) {
1696                myDescription = theValue;
1697                return this;
1698        }
1699        
1700        
1701
1702  
1703        /**
1704         * Gets the value(s) for <b>dateTime</b> ().
1705         * creating it if it does
1706         * not exist. Will not return <code>null</code>.
1707         *
1708     * <p>
1709     * <b>Definition:</b>
1710     * The date/time at which the event occurred
1711     * </p> 
1712         */
1713        public DateTimeDt getDateTimeElement() {  
1714                if (myDateTime == null) {
1715                        myDateTime = new DateTimeDt();
1716                }
1717                return myDateTime;
1718        }
1719
1720        
1721        /**
1722         * Gets the value(s) for <b>dateTime</b> ().
1723         * creating it if it does
1724         * not exist. Will not return <code>null</code>.
1725         *
1726     * <p>
1727     * <b>Definition:</b>
1728     * The date/time at which the event occurred
1729     * </p> 
1730         */
1731        public Date getDateTime() {  
1732                return getDateTimeElement().getValue();
1733        }
1734
1735        /**
1736         * Sets the value(s) for <b>dateTime</b> ()
1737         *
1738     * <p>
1739     * <b>Definition:</b>
1740     * The date/time at which the event occurred
1741     * </p> 
1742         */
1743        public Event setDateTime(DateTimeDt theValue) {
1744                myDateTime = theValue;
1745                return this;
1746        }
1747        
1748        
1749
1750        /**
1751         * Sets the value for <b>dateTime</b> ()
1752         *
1753     * <p>
1754     * <b>Definition:</b>
1755     * The date/time at which the event occurred
1756     * </p> 
1757         */
1758        public Event setDateTime( Date theDate,  TemporalPrecisionEnum thePrecision) {
1759                myDateTime = new DateTimeDt(theDate, thePrecision); 
1760                return this; 
1761        }
1762
1763        /**
1764         * Sets the value for <b>dateTime</b> ()
1765         *
1766     * <p>
1767     * <b>Definition:</b>
1768     * The date/time at which the event occurred
1769     * </p> 
1770         */
1771        public Event setDateTimeWithSecondsPrecision( Date theDate) {
1772                myDateTime = new DateTimeDt(theDate); 
1773                return this; 
1774        }
1775
1776 
1777        /**
1778         * Gets the value(s) for <b>actor</b> ().
1779         * creating it if it does
1780         * not exist. Will not return <code>null</code>.
1781         *
1782     * <p>
1783     * <b>Definition:</b>
1784     * The person responsible for performing or recording the action
1785     * </p> 
1786         */
1787        public ResourceReferenceDt getActor() {  
1788                if (myActor == null) {
1789                        myActor = new ResourceReferenceDt();
1790                }
1791                return myActor;
1792        }
1793
1794        /**
1795         * Sets the value(s) for <b>actor</b> ()
1796         *
1797     * <p>
1798     * <b>Definition:</b>
1799     * The person responsible for performing or recording the action
1800     * </p> 
1801         */
1802        public Event setActor(ResourceReferenceDt theValue) {
1803                myActor = theValue;
1804                return this;
1805        }
1806        
1807        
1808
1809  
1810
1811
1812        }
1813
1814
1815        /**
1816         * Block class for child element: <b>DiagnosticOrder.item</b> ()
1817         *
1818     * <p>
1819     * <b>Definition:</b>
1820     * The specific diagnostic investigations that are requested as part of this request. Sometimes, there can only be one item per request, but in most contexts, more than one investigation can be requested
1821     * </p> 
1822         */
1823        @Block()        
1824        public static class Item 
1825            extends  BaseIdentifiableElement        implements IResourceBlock {
1826        
1827        @Child(name="code", type=CodeableConceptDt.class, order=0, min=1, max=1, summary=true, modifier=false)  
1828        @Description(
1829                shortDefinition="",
1830                formalDefinition="A code that identifies a particular diagnostic investigation, or panel of investigations, that have been requested"
1831        )
1832        private CodeableConceptDt myCode;
1833        
1834        @Child(name="specimen", order=1, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
1835                ca.uhn.fhir.model.dstu2.resource.Specimen.class })
1836        @Description(
1837                shortDefinition="",
1838                formalDefinition="If the item is related to a specific specimen"
1839        )
1840        private java.util.List<ResourceReferenceDt> mySpecimen;
1841        
1842        @Child(name="bodySite", type=CodeableConceptDt.class, order=2, min=0, max=1, summary=false, modifier=false)     
1843        @Description(
1844                shortDefinition="",
1845                formalDefinition="Anatomical location where the request test should be performed.  This is the target site."
1846        )
1847        private CodeableConceptDt myBodySite;
1848        
1849        @Child(name="status", type=CodeDt.class, order=3, min=0, max=1, summary=true, modifier=false)   
1850        @Description(
1851                shortDefinition="",
1852                formalDefinition="The status of this individual item within the order"
1853        )
1854        private BoundCodeDt<DiagnosticOrderStatusEnum> myStatus;
1855        
1856        @Child(name="event", type=Event.class, order=4, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
1857        @Description(
1858                shortDefinition="",
1859                formalDefinition="A summary of the events of interest that have occurred as this item of the request is processed"
1860        )
1861        private java.util.List<Event> myEvent;
1862        
1863
1864        @Override
1865        public boolean isEmpty() {
1866                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCode,  mySpecimen,  myBodySite,  myStatus,  myEvent);
1867        }
1868        
1869        @Override
1870        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1871                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCode, mySpecimen, myBodySite, myStatus, myEvent);
1872        }
1873
1874        /**
1875         * Gets the value(s) for <b>code</b> ().
1876         * creating it if it does
1877         * not exist. Will not return <code>null</code>.
1878         *
1879     * <p>
1880     * <b>Definition:</b>
1881     * A code that identifies a particular diagnostic investigation, or panel of investigations, that have been requested
1882     * </p> 
1883         */
1884        public CodeableConceptDt getCode() {  
1885                if (myCode == null) {
1886                        myCode = new CodeableConceptDt();
1887                }
1888                return myCode;
1889        }
1890
1891        /**
1892         * Sets the value(s) for <b>code</b> ()
1893         *
1894     * <p>
1895     * <b>Definition:</b>
1896     * A code that identifies a particular diagnostic investigation, or panel of investigations, that have been requested
1897     * </p> 
1898         */
1899        public Item setCode(CodeableConceptDt theValue) {
1900                myCode = theValue;
1901                return this;
1902        }
1903        
1904        
1905
1906  
1907        /**
1908         * Gets the value(s) for <b>specimen</b> ().
1909         * creating it if it does
1910         * not exist. Will not return <code>null</code>.
1911         *
1912     * <p>
1913     * <b>Definition:</b>
1914     * If the item is related to a specific specimen
1915     * </p> 
1916         */
1917        public java.util.List<ResourceReferenceDt> getSpecimen() {  
1918                if (mySpecimen == null) {
1919                        mySpecimen = new java.util.ArrayList<ResourceReferenceDt>();
1920                }
1921                return mySpecimen;
1922        }
1923
1924        /**
1925         * Sets the value(s) for <b>specimen</b> ()
1926         *
1927     * <p>
1928     * <b>Definition:</b>
1929     * If the item is related to a specific specimen
1930     * </p> 
1931         */
1932        public Item setSpecimen(java.util.List<ResourceReferenceDt> theValue) {
1933                mySpecimen = theValue;
1934                return this;
1935        }
1936        
1937        
1938
1939        /**
1940         * Adds and returns a new value for <b>specimen</b> ()
1941         *
1942     * <p>
1943     * <b>Definition:</b>
1944     * If the item is related to a specific specimen
1945     * </p> 
1946         */
1947        public ResourceReferenceDt addSpecimen() {
1948                ResourceReferenceDt newType = new ResourceReferenceDt();
1949                getSpecimen().add(newType);
1950                return newType; 
1951        }
1952  
1953        /**
1954         * Gets the value(s) for <b>bodySite</b> ().
1955         * creating it if it does
1956         * not exist. Will not return <code>null</code>.
1957         *
1958     * <p>
1959     * <b>Definition:</b>
1960     * Anatomical location where the request test should be performed.  This is the target site.
1961     * </p> 
1962         */
1963        public CodeableConceptDt getBodySite() {  
1964                if (myBodySite == null) {
1965                        myBodySite = new CodeableConceptDt();
1966                }
1967                return myBodySite;
1968        }
1969
1970        /**
1971         * Sets the value(s) for <b>bodySite</b> ()
1972         *
1973     * <p>
1974     * <b>Definition:</b>
1975     * Anatomical location where the request test should be performed.  This is the target site.
1976     * </p> 
1977         */
1978        public Item setBodySite(CodeableConceptDt theValue) {
1979                myBodySite = theValue;
1980                return this;
1981        }
1982        
1983        
1984
1985  
1986        /**
1987         * Gets the value(s) for <b>status</b> ().
1988         * creating it if it does
1989         * not exist. Will not return <code>null</code>.
1990         *
1991     * <p>
1992     * <b>Definition:</b>
1993     * The status of this individual item within the order
1994     * </p> 
1995         */
1996        public BoundCodeDt<DiagnosticOrderStatusEnum> getStatusElement() {  
1997                if (myStatus == null) {
1998                        myStatus = new BoundCodeDt<DiagnosticOrderStatusEnum>(DiagnosticOrderStatusEnum.VALUESET_BINDER);
1999                }
2000                return myStatus;
2001        }
2002
2003        
2004        /**
2005         * Gets the value(s) for <b>status</b> ().
2006         * creating it if it does
2007         * not exist. Will not return <code>null</code>.
2008         *
2009     * <p>
2010     * <b>Definition:</b>
2011     * The status of this individual item within the order
2012     * </p> 
2013         */
2014        public String getStatus() {  
2015                return getStatusElement().getValue();
2016        }
2017
2018        /**
2019         * Sets the value(s) for <b>status</b> ()
2020         *
2021     * <p>
2022     * <b>Definition:</b>
2023     * The status of this individual item within the order
2024     * </p> 
2025         */
2026        public Item setStatus(BoundCodeDt<DiagnosticOrderStatusEnum> theValue) {
2027                myStatus = theValue;
2028                return this;
2029        }
2030        
2031        
2032
2033        /**
2034         * Sets the value(s) for <b>status</b> ()
2035         *
2036     * <p>
2037     * <b>Definition:</b>
2038     * The status of this individual item within the order
2039     * </p> 
2040         */
2041        public Item setStatus(DiagnosticOrderStatusEnum theValue) {
2042                setStatus(new BoundCodeDt<DiagnosticOrderStatusEnum>(DiagnosticOrderStatusEnum.VALUESET_BINDER, theValue));
2043                
2044/*
2045                getStatusElement().setValueAsEnum(theValue);
2046*/
2047                return this;
2048        }
2049
2050  
2051        /**
2052         * Gets the value(s) for <b>event</b> ().
2053         * creating it if it does
2054         * not exist. Will not return <code>null</code>.
2055         *
2056     * <p>
2057     * <b>Definition:</b>
2058     * A summary of the events of interest that have occurred as this item of the request is processed
2059     * </p> 
2060         */
2061        public java.util.List<Event> getEvent() {  
2062                if (myEvent == null) {
2063                        myEvent = new java.util.ArrayList<Event>();
2064                }
2065                return myEvent;
2066        }
2067
2068        /**
2069         * Sets the value(s) for <b>event</b> ()
2070         *
2071     * <p>
2072     * <b>Definition:</b>
2073     * A summary of the events of interest that have occurred as this item of the request is processed
2074     * </p> 
2075         */
2076        public Item setEvent(java.util.List<Event> theValue) {
2077                myEvent = theValue;
2078                return this;
2079        }
2080        
2081        
2082
2083        /**
2084         * Adds and returns a new value for <b>event</b> ()
2085         *
2086     * <p>
2087     * <b>Definition:</b>
2088     * A summary of the events of interest that have occurred as this item of the request is processed
2089     * </p> 
2090         */
2091        public Event addEvent() {
2092                Event newType = new Event();
2093                getEvent().add(newType);
2094                return newType; 
2095        }
2096
2097        /**
2098         * Adds a given new value for <b>event</b> ()
2099         *
2100         * <p>
2101         * <b>Definition:</b>
2102         * A summary of the events of interest that have occurred as this item of the request is processed
2103         * </p>
2104         * @param theValue The event to add (must not be <code>null</code>)
2105         */
2106        public Item addEvent(Event theValue) {
2107                if (theValue == null) {
2108                        throw new NullPointerException("theValue must not be null");
2109                }
2110                getEvent().add(theValue);
2111                return this;
2112        }
2113
2114        /**
2115         * Gets the first repetition for <b>event</b> (),
2116         * creating it if it does not already exist.
2117         *
2118     * <p>
2119     * <b>Definition:</b>
2120     * A summary of the events of interest that have occurred as this item of the request is processed
2121     * </p> 
2122         */
2123        public Event getEventFirstRep() {
2124                if (getEvent().isEmpty()) {
2125                        return addEvent();
2126                }
2127                return getEvent().get(0); 
2128        }
2129  
2130
2131
2132        }
2133
2134
2135
2136
2137    @Override
2138    public String getResourceName() {
2139        return "DiagnosticOrder";
2140    }
2141    
2142    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
2143        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
2144    }
2145
2146
2147}