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>DiagnosticOrder</b> Resource
282 * (clinical.diagnostics)
283 *
284 * <p>
285 * <b>Definition:</b>
286 * A record of a request for a diagnostic investigation service to be performed.
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/DiagnosticOrder">http://hl7.org/fhir/profiles/DiagnosticOrder</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="DiagnosticOrder", profile="http://hl7.org/fhir/profiles/DiagnosticOrder", id="diagnosticorder")
301public class DiagnosticOrder extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource     {
303
304        /**
305         * Search parameter constant for <b>actor</b>
306         * <p>
307         * Description: <b></b><br>
308         * Type: <b>reference</b><br>
309         * Path: <b>DiagnosticOrder.event.actor | DiagnosticOrder.item.event.actor</b><br>
310         * </p>
311         */
312        @SearchParamDefinition(name="actor", path="DiagnosticOrder.event.actor | DiagnosticOrder.item.event.actor", description="", type="reference" , providesMembershipIn={
313 @Compartment(name="RelatedPerson") ,  @Compartment(name="Practitioner")        }
314 )
315        public static final String SP_ACTOR = "actor";
316
317        /**
318         * <b>Fluent Client</b> search parameter constant for <b>actor</b>
319         * <p>
320         * Description: <b></b><br>
321         * Type: <b>reference</b><br>
322         * Path: <b>DiagnosticOrder.event.actor | DiagnosticOrder.item.event.actor</b><br>
323         * </p>
324         */
325        public static final ReferenceClientParam ACTOR = new ReferenceClientParam(SP_ACTOR);
326
327        /**
328         * Search parameter constant for <b>bodysite</b>
329         * <p>
330         * Description: <b></b><br>
331         * Type: <b>token</b><br>
332         * Path: <b>DiagnosticOrder.item.bodySite</b><br>
333         * </p>
334         */
335        @SearchParamDefinition(name="bodysite", path="DiagnosticOrder.item.bodySite", description="", type="token"  )
336        public static final String SP_BODYSITE = "bodysite";
337
338        /**
339         * <b>Fluent Client</b> search parameter constant for <b>bodysite</b>
340         * <p>
341         * Description: <b></b><br>
342         * Type: <b>token</b><br>
343         * Path: <b>DiagnosticOrder.item.bodySite</b><br>
344         * </p>
345         */
346        public static final TokenClientParam BODYSITE = new TokenClientParam(SP_BODYSITE);
347
348        /**
349         * Search parameter constant for <b>code</b>
350         * <p>
351         * Description: <b></b><br>
352         * Type: <b>token</b><br>
353         * Path: <b>DiagnosticOrder.item.code</b><br>
354         * </p>
355         */
356        @SearchParamDefinition(name="code", path="DiagnosticOrder.item.code", description="", type="token"  )
357        public static final String SP_CODE = "code";
358
359        /**
360         * <b>Fluent Client</b> search parameter constant for <b>code</b>
361         * <p>
362         * Description: <b></b><br>
363         * Type: <b>token</b><br>
364         * Path: <b>DiagnosticOrder.item.code</b><br>
365         * </p>
366         */
367        public static final TokenClientParam CODE = new TokenClientParam(SP_CODE);
368
369        /**
370         * Search parameter constant for <b>event-date</b>
371         * <p>
372         * Description: <b></b><br>
373         * Type: <b>date</b><br>
374         * Path: <b>DiagnosticOrder.event.dateTime</b><br>
375         * </p>
376         */
377        @SearchParamDefinition(name="event-date", path="DiagnosticOrder.event.dateTime", description="", type="date"  )
378        public static final String SP_EVENT_DATE = "event-date";
379
380        /**
381         * <b>Fluent Client</b> search parameter constant for <b>event-date</b>
382         * <p>
383         * Description: <b></b><br>
384         * Type: <b>date</b><br>
385         * Path: <b>DiagnosticOrder.event.dateTime</b><br>
386         * </p>
387         */
388        public static final DateClientParam EVENT_DATE = new DateClientParam(SP_EVENT_DATE);
389
390        /**
391         * Search parameter constant for <b>encounter</b>
392         * <p>
393         * Description: <b></b><br>
394         * Type: <b>reference</b><br>
395         * Path: <b>DiagnosticOrder.encounter</b><br>
396         * </p>
397         */
398        @SearchParamDefinition(name="encounter", path="DiagnosticOrder.encounter", description="", type="reference" , providesMembershipIn={
399 @Compartment(name="Encounter")         }
400 )
401        public static final String SP_ENCOUNTER = "encounter";
402
403        /**
404         * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
405         * <p>
406         * Description: <b></b><br>
407         * Type: <b>reference</b><br>
408         * Path: <b>DiagnosticOrder.encounter</b><br>
409         * </p>
410         */
411        public static final ReferenceClientParam ENCOUNTER = new ReferenceClientParam(SP_ENCOUNTER);
412
413        /**
414         * Search parameter constant for <b>identifier</b>
415         * <p>
416         * Description: <b></b><br>
417         * Type: <b>token</b><br>
418         * Path: <b>DiagnosticOrder.identifier</b><br>
419         * </p>
420         */
421        @SearchParamDefinition(name="identifier", path="DiagnosticOrder.identifier", description="", type="token"  )
422        public static final String SP_IDENTIFIER = "identifier";
423
424        /**
425         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
426         * <p>
427         * Description: <b></b><br>
428         * Type: <b>token</b><br>
429         * Path: <b>DiagnosticOrder.identifier</b><br>
430         * </p>
431         */
432        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
433
434        /**
435         * Search parameter constant for <b>item-date</b>
436         * <p>
437         * Description: <b></b><br>
438         * Type: <b>date</b><br>
439         * Path: <b>DiagnosticOrder.item.event.dateTime</b><br>
440         * </p>
441         */
442        @SearchParamDefinition(name="item-date", path="DiagnosticOrder.item.event.dateTime", description="", type="date"  )
443        public static final String SP_ITEM_DATE = "item-date";
444
445        /**
446         * <b>Fluent Client</b> search parameter constant for <b>item-date</b>
447         * <p>
448         * Description: <b></b><br>
449         * Type: <b>date</b><br>
450         * Path: <b>DiagnosticOrder.item.event.dateTime</b><br>
451         * </p>
452         */
453        public static final DateClientParam ITEM_DATE = new DateClientParam(SP_ITEM_DATE);
454
455        /**
456         * Search parameter constant for <b>item-past-status</b>
457         * <p>
458         * Description: <b></b><br>
459         * Type: <b>token</b><br>
460         * Path: <b>DiagnosticOrder.item.event.status</b><br>
461         * </p>
462         */
463        @SearchParamDefinition(name="item-past-status", path="DiagnosticOrder.item.event.status", description="", type="token"  )
464        public static final String SP_ITEM_PAST_STATUS = "item-past-status";
465
466        /**
467         * <b>Fluent Client</b> search parameter constant for <b>item-past-status</b>
468         * <p>
469         * Description: <b></b><br>
470         * Type: <b>token</b><br>
471         * Path: <b>DiagnosticOrder.item.event.status</b><br>
472         * </p>
473         */
474        public static final TokenClientParam ITEM_PAST_STATUS = new TokenClientParam(SP_ITEM_PAST_STATUS);
475
476        /**
477         * Search parameter constant for <b>item-status</b>
478         * <p>
479         * Description: <b></b><br>
480         * Type: <b>token</b><br>
481         * Path: <b>DiagnosticOrder.item.status</b><br>
482         * </p>
483         */
484        @SearchParamDefinition(name="item-status", path="DiagnosticOrder.item.status", description="", type="token"  )
485        public static final String SP_ITEM_STATUS = "item-status";
486
487        /**
488         * <b>Fluent Client</b> search parameter constant for <b>item-status</b>
489         * <p>
490         * Description: <b></b><br>
491         * Type: <b>token</b><br>
492         * Path: <b>DiagnosticOrder.item.status</b><br>
493         * </p>
494         */
495        public static final TokenClientParam ITEM_STATUS = new TokenClientParam(SP_ITEM_STATUS);
496
497        /**
498         * Search parameter constant for <b>orderer</b>
499         * <p>
500         * Description: <b></b><br>
501         * Type: <b>reference</b><br>
502         * Path: <b>DiagnosticOrder.orderer</b><br>
503         * </p>
504         */
505        @SearchParamDefinition(name="orderer", path="DiagnosticOrder.orderer", description="", type="reference" , providesMembershipIn={
506 @Compartment(name="RelatedPerson")     }
507 )
508        public static final String SP_ORDERER = "orderer";
509
510        /**
511         * <b>Fluent Client</b> search parameter constant for <b>orderer</b>
512         * <p>
513         * Description: <b></b><br>
514         * Type: <b>reference</b><br>
515         * Path: <b>DiagnosticOrder.orderer</b><br>
516         * </p>
517         */
518        public static final ReferenceClientParam ORDERER = new ReferenceClientParam(SP_ORDERER);
519
520        /**
521         * Search parameter constant for <b>event-status</b>
522         * <p>
523         * Description: <b></b><br>
524         * Type: <b>token</b><br>
525         * Path: <b>DiagnosticOrder.event.status</b><br>
526         * </p>
527         */
528        @SearchParamDefinition(name="event-status", path="DiagnosticOrder.event.status", description="", type="token"  )
529        public static final String SP_EVENT_STATUS = "event-status";
530
531        /**
532         * <b>Fluent Client</b> search parameter constant for <b>event-status</b>
533         * <p>
534         * Description: <b></b><br>
535         * Type: <b>token</b><br>
536         * Path: <b>DiagnosticOrder.event.status</b><br>
537         * </p>
538         */
539        public static final TokenClientParam EVENT_STATUS = new TokenClientParam(SP_EVENT_STATUS);
540
541        /**
542         * Search parameter constant for <b>specimen</b>
543         * <p>
544         * Description: <b></b><br>
545         * Type: <b>reference</b><br>
546         * Path: <b>DiagnosticOrder.specimen | DiagnosticOrder.item.specimen</b><br>
547         * </p>
548         */
549        @SearchParamDefinition(name="specimen", path="DiagnosticOrder.specimen | DiagnosticOrder.item.specimen", description="", type="reference"  )
550        public static final String SP_SPECIMEN = "specimen";
551
552        /**
553         * <b>Fluent Client</b> search parameter constant for <b>specimen</b>
554         * <p>
555         * Description: <b></b><br>
556         * Type: <b>reference</b><br>
557         * Path: <b>DiagnosticOrder.specimen | DiagnosticOrder.item.specimen</b><br>
558         * </p>
559         */
560        public static final ReferenceClientParam SPECIMEN = new ReferenceClientParam(SP_SPECIMEN);
561
562        /**
563         * Search parameter constant for <b>status</b>
564         * <p>
565         * Description: <b></b><br>
566         * Type: <b>token</b><br>
567         * Path: <b>DiagnosticOrder.status</b><br>
568         * </p>
569         */
570        @SearchParamDefinition(name="status", path="DiagnosticOrder.status", description="", type="token"  )
571        public static final String SP_STATUS = "status";
572
573        /**
574         * <b>Fluent Client</b> search parameter constant for <b>status</b>
575         * <p>
576         * Description: <b></b><br>
577         * Type: <b>token</b><br>
578         * Path: <b>DiagnosticOrder.status</b><br>
579         * </p>
580         */
581        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
582
583        /**
584         * Search parameter constant for <b>subject</b>
585         * <p>
586         * Description: <b></b><br>
587         * Type: <b>reference</b><br>
588         * Path: <b>DiagnosticOrder.subject</b><br>
589         * </p>
590         */
591        @SearchParamDefinition(name="subject", path="DiagnosticOrder.subject", description="", type="reference" , providesMembershipIn={
592 @Compartment(name="Patient") ,  @Compartment(name="Practitioner")      }
593 )
594        public static final String SP_SUBJECT = "subject";
595
596        /**
597         * <b>Fluent Client</b> search parameter constant for <b>subject</b>
598         * <p>
599         * Description: <b></b><br>
600         * Type: <b>reference</b><br>
601         * Path: <b>DiagnosticOrder.subject</b><br>
602         * </p>
603         */
604        public static final ReferenceClientParam SUBJECT = new ReferenceClientParam(SP_SUBJECT);
605
606        /**
607         * Search parameter constant for <b>patient</b>
608         * <p>
609         * Description: <b></b><br>
610         * Type: <b>reference</b><br>
611         * Path: <b>DiagnosticOrder.subject</b><br>
612         * </p>
613         */
614        @SearchParamDefinition(name="patient", path="DiagnosticOrder.subject", description="", type="reference" , target={
615 ca.uhn.fhir.model.dstu2.resource.Patient.class         }
616 )
617        public static final String SP_PATIENT = "patient";
618
619        /**
620         * <b>Fluent Client</b> search parameter constant for <b>patient</b>
621         * <p>
622         * Description: <b></b><br>
623         * Type: <b>reference</b><br>
624         * Path: <b>DiagnosticOrder.subject</b><br>
625         * </p>
626         */
627        public static final ReferenceClientParam PATIENT = new ReferenceClientParam(SP_PATIENT);
628
629        /**
630         * Search parameter constant for <b>item-past-status-item-date</b>
631         * <p>
632         * Description: <b>A combination of item-past-status and item-date</b><br>
633         * Type: <b>composite</b><br>
634         * Path: <b>item-past-status &amp; item-date</b><br>
635         * </p>
636         */
637        @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" }  )
638        public static final String SP_ITEM_PAST_STATUS_ITEM_DATE = "item-past-status-item-date";
639
640        /**
641         * <b>Fluent Client</b> search parameter constant for <b>item-past-status-item-date</b>
642         * <p>
643         * Description: <b>A combination of item-past-status and item-date</b><br>
644         * Type: <b>composite</b><br>
645         * Path: <b>item-past-status &amp; item-date</b><br>
646         * </p>
647         */
648        public static final CompositeClientParam<TokenClientParam, DateClientParam> ITEM_PAST_STATUS_ITEM_DATE = new CompositeClientParam<TokenClientParam, DateClientParam>(SP_ITEM_PAST_STATUS_ITEM_DATE);
649
650        /**
651         * Search parameter constant for <b>event-status-event-date</b>
652         * <p>
653         * Description: <b>A combination of past-status and date</b><br>
654         * Type: <b>composite</b><br>
655         * Path: <b>event-status &amp; event-date</b><br>
656         * </p>
657         */
658        @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" }  )
659        public static final String SP_EVENT_STATUS_EVENT_DATE = "event-status-event-date";
660
661        /**
662         * <b>Fluent Client</b> search parameter constant for <b>event-status-event-date</b>
663         * <p>
664         * Description: <b>A combination of past-status and date</b><br>
665         * Type: <b>composite</b><br>
666         * Path: <b>event-status &amp; event-date</b><br>
667         * </p>
668         */
669        public static final CompositeClientParam<TokenClientParam, DateClientParam> EVENT_STATUS_EVENT_DATE = new CompositeClientParam<TokenClientParam, DateClientParam>(SP_EVENT_STATUS_EVENT_DATE);
670
671
672        /**
673         * Constant for fluent queries to be used to add include statements. Specifies
674         * the path value of "<b>DiagnosticOrder:actor</b>".
675         */
676        public static final Include INCLUDE_ACTOR = new Include("DiagnosticOrder:actor");
677
678        /**
679         * Constant for fluent queries to be used to add include statements. Specifies
680         * the path value of "<b>DiagnosticOrder:encounter</b>".
681         */
682        public static final Include INCLUDE_ENCOUNTER = new Include("DiagnosticOrder:encounter");
683
684        /**
685         * Constant for fluent queries to be used to add include statements. Specifies
686         * the path value of "<b>DiagnosticOrder:orderer</b>".
687         */
688        public static final Include INCLUDE_ORDERER = new Include("DiagnosticOrder:orderer");
689
690        /**
691         * Constant for fluent queries to be used to add include statements. Specifies
692         * the path value of "<b>DiagnosticOrder:patient</b>".
693         */
694        public static final Include INCLUDE_PATIENT = new Include("DiagnosticOrder:patient");
695
696        /**
697         * Constant for fluent queries to be used to add include statements. Specifies
698         * the path value of "<b>DiagnosticOrder:specimen</b>".
699         */
700        public static final Include INCLUDE_SPECIMEN = new Include("DiagnosticOrder:specimen");
701
702        /**
703         * Constant for fluent queries to be used to add include statements. Specifies
704         * the path value of "<b>DiagnosticOrder:subject</b>".
705         */
706        public static final Include INCLUDE_SUBJECT = new Include("DiagnosticOrder:subject");
707
708
709        @Child(name="subject", order=0, min=1, max=1, summary=true, modifier=false, type={
710                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   })
711        @Description(
712                shortDefinition="who.focus",
713                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)"
714        )
715        private ResourceReferenceDt mySubject;
716        
717        @Child(name="orderer", order=1, min=0, max=1, summary=true, modifier=false, type={
718                ca.uhn.fhir.model.dstu2.resource.Practitioner.class     })
719        @Description(
720                shortDefinition="who.actor",
721                formalDefinition="The practitioner that holds legal responsibility for ordering the investigation"
722        )
723        private ResourceReferenceDt myOrderer;
724        
725        @Child(name="identifier", type=IdentifierDt.class, order=2, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)       
726        @Description(
727                shortDefinition="id",
728                formalDefinition="Identifiers assigned to this order instance by the orderer and/or  the receiver and/or order fulfiller."
729        )
730        private java.util.List<IdentifierDt> myIdentifier;
731        
732        @Child(name="encounter", order=3, min=0, max=1, summary=true, modifier=false, type={
733                ca.uhn.fhir.model.dstu2.resource.Encounter.class        })
734        @Description(
735                shortDefinition="context",
736                formalDefinition="An encounter that provides additional information about the healthcare context in which this request is made"
737        )
738        private ResourceReferenceDt myEncounter;
739        
740        @Child(name="reason", type=CodeableConceptDt.class, order=4, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
741        @Description(
742                shortDefinition="",
743                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."
744        )
745        private java.util.List<CodeableConceptDt> myReason;
746        
747        @Child(name="supportingInformation", order=5, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
748                ca.uhn.fhir.model.dstu2.resource.Observation.class,             ca.uhn.fhir.model.dstu2.resource.Condition.class,               ca.uhn.fhir.model.dstu2.resource.DocumentReference.class        })
749        @Description(
750                shortDefinition="",
751                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."
752        )
753        private java.util.List<ResourceReferenceDt> mySupportingInformation;
754        
755        @Child(name="specimen", order=6, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
756                ca.uhn.fhir.model.dstu2.resource.Specimen.class })
757        @Description(
758                shortDefinition="",
759                formalDefinition="One or more specimens that the diagnostic investigation is about"
760        )
761        private java.util.List<ResourceReferenceDt> mySpecimen;
762        
763        @Child(name="status", type=CodeDt.class, order=7, min=0, max=1, summary=true, modifier=true)    
764        @Description(
765                shortDefinition="status",
766                formalDefinition="The status of the order"
767        )
768        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/diagnostic-order-status")
769        private BoundCodeDt<DiagnosticOrderStatusEnum> myStatus;
770        
771        @Child(name="priority", type=CodeDt.class, order=8, min=0, max=1, summary=true, modifier=false) 
772        @Description(
773                shortDefinition="grade",
774                formalDefinition="The clinical priority associated with this order"
775        )
776        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/diagnostic-order-priority")
777        private BoundCodeDt<DiagnosticOrderPriorityEnum> myPriority;
778        
779        @Child(name="event", order=9, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
780        @Description(
781                shortDefinition="",
782                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"
783        )
784        private java.util.List<Event> myEvent;
785        
786        @Child(name="item", order=10, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
787        @Description(
788                shortDefinition="",
789                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"
790        )
791        private java.util.List<Item> myItem;
792        
793        @Child(name="note", type=AnnotationDt.class, order=11, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
794        @Description(
795                shortDefinition="",
796                formalDefinition="Any other notes associated with this patient, specimen or order (e.g. \"patient hates needles\")"
797        )
798        private java.util.List<AnnotationDt> myNote;
799        
800
801        @Override
802        public boolean isEmpty() {
803                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  mySubject,  myOrderer,  myIdentifier,  myEncounter,  myReason,  mySupportingInformation,  mySpecimen,  myStatus,  myPriority,  myEvent,  myItem,  myNote);
804        }
805        
806        @Override
807        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
808                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, mySubject, myOrderer, myIdentifier, myEncounter, myReason, mySupportingInformation, mySpecimen, myStatus, myPriority, myEvent, myItem, myNote);
809        }
810
811        /**
812         * Gets the value(s) for <b>subject</b> (who.focus).
813         * creating it if it does
814         * not exist. Will not return <code>null</code>.
815         *
816     * <p>
817     * <b>Definition:</b>
818     * 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)
819     * </p> 
820         */
821        public ResourceReferenceDt getSubject() {  
822                if (mySubject == null) {
823                        mySubject = new ResourceReferenceDt();
824                }
825                return mySubject;
826        }
827
828        /**
829         * Sets the value(s) for <b>subject</b> (who.focus)
830         *
831     * <p>
832     * <b>Definition:</b>
833     * 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)
834     * </p> 
835         */
836        public DiagnosticOrder setSubject(ResourceReferenceDt theValue) {
837                mySubject = theValue;
838                return this;
839        }
840        
841        
842
843  
844        /**
845         * Gets the value(s) for <b>orderer</b> (who.actor).
846         * creating it if it does
847         * not exist. Will not return <code>null</code>.
848         *
849     * <p>
850     * <b>Definition:</b>
851     * The practitioner that holds legal responsibility for ordering the investigation
852     * </p> 
853         */
854        public ResourceReferenceDt getOrderer() {  
855                if (myOrderer == null) {
856                        myOrderer = new ResourceReferenceDt();
857                }
858                return myOrderer;
859        }
860
861        /**
862         * Sets the value(s) for <b>orderer</b> (who.actor)
863         *
864     * <p>
865     * <b>Definition:</b>
866     * The practitioner that holds legal responsibility for ordering the investigation
867     * </p> 
868         */
869        public DiagnosticOrder setOrderer(ResourceReferenceDt theValue) {
870                myOrderer = theValue;
871                return this;
872        }
873        
874        
875
876  
877        /**
878         * Gets the value(s) for <b>identifier</b> (id).
879         * creating it if it does
880         * not exist. Will not return <code>null</code>.
881         *
882     * <p>
883     * <b>Definition:</b>
884     * Identifiers assigned to this order instance by the orderer and/or  the receiver and/or order fulfiller.
885     * </p> 
886         */
887        public java.util.List<IdentifierDt> getIdentifier() {  
888                if (myIdentifier == null) {
889                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
890                }
891                return myIdentifier;
892        }
893
894        /**
895         * Sets the value(s) for <b>identifier</b> (id)
896         *
897     * <p>
898     * <b>Definition:</b>
899     * Identifiers assigned to this order instance by the orderer and/or  the receiver and/or order fulfiller.
900     * </p> 
901         */
902        public DiagnosticOrder setIdentifier(java.util.List<IdentifierDt> theValue) {
903                myIdentifier = theValue;
904                return this;
905        }
906        
907        
908
909        /**
910         * Adds and returns a new value for <b>identifier</b> (id)
911         *
912     * <p>
913     * <b>Definition:</b>
914     * Identifiers assigned to this order instance by the orderer and/or  the receiver and/or order fulfiller.
915     * </p> 
916         */
917        public IdentifierDt addIdentifier() {
918                IdentifierDt newType = new IdentifierDt();
919                getIdentifier().add(newType);
920                return newType; 
921        }
922
923        /**
924         * Adds a given new value for <b>identifier</b> (id)
925         *
926         * <p>
927         * <b>Definition:</b>
928         * Identifiers assigned to this order instance by the orderer and/or  the receiver and/or order fulfiller.
929         * </p>
930         * @param theValue The identifier to add (must not be <code>null</code>)
931         */
932        public DiagnosticOrder addIdentifier(IdentifierDt theValue) {
933                if (theValue == null) {
934                        throw new NullPointerException("theValue must not be null");
935                }
936                getIdentifier().add(theValue);
937                return this;
938        }
939
940        /**
941         * Gets the first repetition for <b>identifier</b> (id),
942         * creating it if it does not already exist.
943         *
944     * <p>
945     * <b>Definition:</b>
946     * Identifiers assigned to this order instance by the orderer and/or  the receiver and/or order fulfiller.
947     * </p> 
948         */
949        public IdentifierDt getIdentifierFirstRep() {
950                if (getIdentifier().isEmpty()) {
951                        return addIdentifier();
952                }
953                return getIdentifier().get(0); 
954        }
955  
956        /**
957         * Gets the value(s) for <b>encounter</b> (context).
958         * creating it if it does
959         * not exist. Will not return <code>null</code>.
960         *
961     * <p>
962     * <b>Definition:</b>
963     * An encounter that provides additional information about the healthcare context in which this request is made
964     * </p> 
965         */
966        public ResourceReferenceDt getEncounter() {  
967                if (myEncounter == null) {
968                        myEncounter = new ResourceReferenceDt();
969                }
970                return myEncounter;
971        }
972
973        /**
974         * Sets the value(s) for <b>encounter</b> (context)
975         *
976     * <p>
977     * <b>Definition:</b>
978     * An encounter that provides additional information about the healthcare context in which this request is made
979     * </p> 
980         */
981        public DiagnosticOrder setEncounter(ResourceReferenceDt theValue) {
982                myEncounter = theValue;
983                return this;
984        }
985        
986        
987
988  
989        /**
990         * Gets the value(s) for <b>reason</b> ().
991         * creating it if it does
992         * not exist. Will not return <code>null</code>.
993         *
994     * <p>
995     * <b>Definition:</b>
996     * 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.
997     * </p> 
998         */
999        public java.util.List<CodeableConceptDt> getReason() {  
1000                if (myReason == null) {
1001                        myReason = new java.util.ArrayList<CodeableConceptDt>();
1002                }
1003                return myReason;
1004        }
1005
1006        /**
1007         * Sets the value(s) for <b>reason</b> ()
1008         *
1009     * <p>
1010     * <b>Definition:</b>
1011     * 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.
1012     * </p> 
1013         */
1014        public DiagnosticOrder setReason(java.util.List<CodeableConceptDt> theValue) {
1015                myReason = theValue;
1016                return this;
1017        }
1018        
1019        
1020
1021        /**
1022         * Adds and returns a new value for <b>reason</b> ()
1023         *
1024     * <p>
1025     * <b>Definition:</b>
1026     * 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.
1027     * </p> 
1028         */
1029        public CodeableConceptDt addReason() {
1030                CodeableConceptDt newType = new CodeableConceptDt();
1031                getReason().add(newType);
1032                return newType; 
1033        }
1034
1035        /**
1036         * Adds a given new value for <b>reason</b> ()
1037         *
1038         * <p>
1039         * <b>Definition:</b>
1040         * 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.
1041         * </p>
1042         * @param theValue The reason to add (must not be <code>null</code>)
1043         */
1044        public DiagnosticOrder addReason(CodeableConceptDt theValue) {
1045                if (theValue == null) {
1046                        throw new NullPointerException("theValue must not be null");
1047                }
1048                getReason().add(theValue);
1049                return this;
1050        }
1051
1052        /**
1053         * Gets the first repetition for <b>reason</b> (),
1054         * creating it if it does not already exist.
1055         *
1056     * <p>
1057     * <b>Definition:</b>
1058     * 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.
1059     * </p> 
1060         */
1061        public CodeableConceptDt getReasonFirstRep() {
1062                if (getReason().isEmpty()) {
1063                        return addReason();
1064                }
1065                return getReason().get(0); 
1066        }
1067  
1068        /**
1069         * Gets the value(s) for <b>supportingInformation</b> ().
1070         * creating it if it does
1071         * not exist. Will not return <code>null</code>.
1072         *
1073     * <p>
1074     * <b>Definition:</b>
1075     * 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.
1076     * </p> 
1077         */
1078        public java.util.List<ResourceReferenceDt> getSupportingInformation() {  
1079                if (mySupportingInformation == null) {
1080                        mySupportingInformation = new java.util.ArrayList<ResourceReferenceDt>();
1081                }
1082                return mySupportingInformation;
1083        }
1084
1085        /**
1086         * Sets the value(s) for <b>supportingInformation</b> ()
1087         *
1088     * <p>
1089     * <b>Definition:</b>
1090     * 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.
1091     * </p> 
1092         */
1093        public DiagnosticOrder setSupportingInformation(java.util.List<ResourceReferenceDt> theValue) {
1094                mySupportingInformation = theValue;
1095                return this;
1096        }
1097        
1098        
1099
1100        /**
1101         * Adds and returns a new value for <b>supportingInformation</b> ()
1102         *
1103     * <p>
1104     * <b>Definition:</b>
1105     * 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.
1106     * </p> 
1107         */
1108        public ResourceReferenceDt addSupportingInformation() {
1109                ResourceReferenceDt newType = new ResourceReferenceDt();
1110                getSupportingInformation().add(newType);
1111                return newType; 
1112        }
1113  
1114        /**
1115         * Gets the value(s) for <b>specimen</b> ().
1116         * creating it if it does
1117         * not exist. Will not return <code>null</code>.
1118         *
1119     * <p>
1120     * <b>Definition:</b>
1121     * One or more specimens that the diagnostic investigation is about
1122     * </p> 
1123         */
1124        public java.util.List<ResourceReferenceDt> getSpecimen() {  
1125                if (mySpecimen == null) {
1126                        mySpecimen = new java.util.ArrayList<ResourceReferenceDt>();
1127                }
1128                return mySpecimen;
1129        }
1130
1131        /**
1132         * Sets the value(s) for <b>specimen</b> ()
1133         *
1134     * <p>
1135     * <b>Definition:</b>
1136     * One or more specimens that the diagnostic investigation is about
1137     * </p> 
1138         */
1139        public DiagnosticOrder setSpecimen(java.util.List<ResourceReferenceDt> theValue) {
1140                mySpecimen = theValue;
1141                return this;
1142        }
1143        
1144        
1145
1146        /**
1147         * Adds and returns a new value for <b>specimen</b> ()
1148         *
1149     * <p>
1150     * <b>Definition:</b>
1151     * One or more specimens that the diagnostic investigation is about
1152     * </p> 
1153         */
1154        public ResourceReferenceDt addSpecimen() {
1155                ResourceReferenceDt newType = new ResourceReferenceDt();
1156                getSpecimen().add(newType);
1157                return newType; 
1158        }
1159  
1160        /**
1161         * Gets the value(s) for <b>status</b> (status).
1162         * creating it if it does
1163         * not exist. Will not return <code>null</code>.
1164         *
1165     * <p>
1166     * <b>Definition:</b>
1167     * The status of the order
1168     * </p> 
1169         */
1170        public BoundCodeDt<DiagnosticOrderStatusEnum> getStatusElement() {  
1171                if (myStatus == null) {
1172                        myStatus = new BoundCodeDt<DiagnosticOrderStatusEnum>(DiagnosticOrderStatusEnum.VALUESET_BINDER);
1173                }
1174                return myStatus;
1175        }
1176
1177        
1178        /**
1179         * Gets the value(s) for <b>status</b> (status).
1180         * creating it if it does
1181         * not exist. This method may return <code>null</code>.
1182         *
1183     * <p>
1184     * <b>Definition:</b>
1185     * The status of the order
1186     * </p> 
1187         */
1188        public String getStatus() {  
1189                return getStatusElement().getValue();
1190        }
1191
1192        /**
1193         * Sets the value(s) for <b>status</b> (status)
1194         *
1195     * <p>
1196     * <b>Definition:</b>
1197     * The status of the order
1198     * </p> 
1199         */
1200        public DiagnosticOrder setStatus(BoundCodeDt<DiagnosticOrderStatusEnum> theValue) {
1201                myStatus = theValue;
1202                return this;
1203        }
1204        
1205        
1206
1207        /**
1208         * Sets the value(s) for <b>status</b> (status)
1209         *
1210     * <p>
1211     * <b>Definition:</b>
1212     * The status of the order
1213     * </p> 
1214         */
1215        public DiagnosticOrder setStatus(DiagnosticOrderStatusEnum theValue) {
1216                setStatus(new BoundCodeDt<DiagnosticOrderStatusEnum>(DiagnosticOrderStatusEnum.VALUESET_BINDER, theValue));
1217                
1218/*
1219                getStatusElement().setValueAsEnum(theValue);
1220*/
1221                return this;
1222        }
1223
1224  
1225        /**
1226         * Gets the value(s) for <b>priority</b> (grade).
1227         * creating it if it does
1228         * not exist. Will not return <code>null</code>.
1229         *
1230     * <p>
1231     * <b>Definition:</b>
1232     * The clinical priority associated with this order
1233     * </p> 
1234         */
1235        public BoundCodeDt<DiagnosticOrderPriorityEnum> getPriorityElement() {  
1236                if (myPriority == null) {
1237                        myPriority = new BoundCodeDt<DiagnosticOrderPriorityEnum>(DiagnosticOrderPriorityEnum.VALUESET_BINDER);
1238                }
1239                return myPriority;
1240        }
1241
1242        
1243        /**
1244         * Gets the value(s) for <b>priority</b> (grade).
1245         * creating it if it does
1246         * not exist. This method may return <code>null</code>.
1247         *
1248     * <p>
1249     * <b>Definition:</b>
1250     * The clinical priority associated with this order
1251     * </p> 
1252         */
1253        public String getPriority() {  
1254                return getPriorityElement().getValue();
1255        }
1256
1257        /**
1258         * Sets the value(s) for <b>priority</b> (grade)
1259         *
1260     * <p>
1261     * <b>Definition:</b>
1262     * The clinical priority associated with this order
1263     * </p> 
1264         */
1265        public DiagnosticOrder setPriority(BoundCodeDt<DiagnosticOrderPriorityEnum> theValue) {
1266                myPriority = theValue;
1267                return this;
1268        }
1269        
1270        
1271
1272        /**
1273         * Sets the value(s) for <b>priority</b> (grade)
1274         *
1275     * <p>
1276     * <b>Definition:</b>
1277     * The clinical priority associated with this order
1278     * </p> 
1279         */
1280        public DiagnosticOrder setPriority(DiagnosticOrderPriorityEnum theValue) {
1281                setPriority(new BoundCodeDt<DiagnosticOrderPriorityEnum>(DiagnosticOrderPriorityEnum.VALUESET_BINDER, theValue));
1282                
1283/*
1284                getPriorityElement().setValueAsEnum(theValue);
1285*/
1286                return this;
1287        }
1288
1289  
1290        /**
1291         * Gets the value(s) for <b>event</b> ().
1292         * creating it if it does
1293         * not exist. Will not return <code>null</code>.
1294         *
1295     * <p>
1296     * <b>Definition:</b>
1297     * 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
1298     * </p> 
1299         */
1300        public java.util.List<Event> getEvent() {  
1301                if (myEvent == null) {
1302                        myEvent = new java.util.ArrayList<Event>();
1303                }
1304                return myEvent;
1305        }
1306
1307        /**
1308         * Sets the value(s) for <b>event</b> ()
1309         *
1310     * <p>
1311     * <b>Definition:</b>
1312     * 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
1313     * </p> 
1314         */
1315        public DiagnosticOrder setEvent(java.util.List<Event> theValue) {
1316                myEvent = theValue;
1317                return this;
1318        }
1319        
1320        
1321
1322        /**
1323         * Adds and returns a new value for <b>event</b> ()
1324         *
1325     * <p>
1326     * <b>Definition:</b>
1327     * 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
1328     * </p> 
1329         */
1330        public Event addEvent() {
1331                Event newType = new Event();
1332                getEvent().add(newType);
1333                return newType; 
1334        }
1335
1336        /**
1337         * Adds a given new value for <b>event</b> ()
1338         *
1339         * <p>
1340         * <b>Definition:</b>
1341         * 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
1342         * </p>
1343         * @param theValue The event to add (must not be <code>null</code>)
1344         */
1345        public DiagnosticOrder addEvent(Event theValue) {
1346                if (theValue == null) {
1347                        throw new NullPointerException("theValue must not be null");
1348                }
1349                getEvent().add(theValue);
1350                return this;
1351        }
1352
1353        /**
1354         * Gets the first repetition for <b>event</b> (),
1355         * creating it if it does not already exist.
1356         *
1357     * <p>
1358     * <b>Definition:</b>
1359     * 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
1360     * </p> 
1361         */
1362        public Event getEventFirstRep() {
1363                if (getEvent().isEmpty()) {
1364                        return addEvent();
1365                }
1366                return getEvent().get(0); 
1367        }
1368  
1369        /**
1370         * Gets the value(s) for <b>item</b> ().
1371         * creating it if it does
1372         * not exist. Will not return <code>null</code>.
1373         *
1374     * <p>
1375     * <b>Definition:</b>
1376     * 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
1377     * </p> 
1378         */
1379        public java.util.List<Item> getItem() {  
1380                if (myItem == null) {
1381                        myItem = new java.util.ArrayList<Item>();
1382                }
1383                return myItem;
1384        }
1385
1386        /**
1387         * Sets the value(s) for <b>item</b> ()
1388         *
1389     * <p>
1390     * <b>Definition:</b>
1391     * 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
1392     * </p> 
1393         */
1394        public DiagnosticOrder setItem(java.util.List<Item> theValue) {
1395                myItem = theValue;
1396                return this;
1397        }
1398        
1399        
1400
1401        /**
1402         * Adds and returns a new value for <b>item</b> ()
1403         *
1404     * <p>
1405     * <b>Definition:</b>
1406     * 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
1407     * </p> 
1408         */
1409        public Item addItem() {
1410                Item newType = new Item();
1411                getItem().add(newType);
1412                return newType; 
1413        }
1414
1415        /**
1416         * Adds a given new value for <b>item</b> ()
1417         *
1418         * <p>
1419         * <b>Definition:</b>
1420         * 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
1421         * </p>
1422         * @param theValue The item to add (must not be <code>null</code>)
1423         */
1424        public DiagnosticOrder addItem(Item theValue) {
1425                if (theValue == null) {
1426                        throw new NullPointerException("theValue must not be null");
1427                }
1428                getItem().add(theValue);
1429                return this;
1430        }
1431
1432        /**
1433         * Gets the first repetition for <b>item</b> (),
1434         * creating it if it does not already exist.
1435         *
1436     * <p>
1437     * <b>Definition:</b>
1438     * 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
1439     * </p> 
1440         */
1441        public Item getItemFirstRep() {
1442                if (getItem().isEmpty()) {
1443                        return addItem();
1444                }
1445                return getItem().get(0); 
1446        }
1447  
1448        /**
1449         * Gets the value(s) for <b>note</b> ().
1450         * creating it if it does
1451         * not exist. Will not return <code>null</code>.
1452         *
1453     * <p>
1454     * <b>Definition:</b>
1455     * Any other notes associated with this patient, specimen or order (e.g. \&quot;patient hates needles\&quot;)
1456     * </p> 
1457         */
1458        public java.util.List<AnnotationDt> getNote() {  
1459                if (myNote == null) {
1460                        myNote = new java.util.ArrayList<AnnotationDt>();
1461                }
1462                return myNote;
1463        }
1464
1465        /**
1466         * Sets the value(s) for <b>note</b> ()
1467         *
1468     * <p>
1469     * <b>Definition:</b>
1470     * Any other notes associated with this patient, specimen or order (e.g. \&quot;patient hates needles\&quot;)
1471     * </p> 
1472         */
1473        public DiagnosticOrder setNote(java.util.List<AnnotationDt> theValue) {
1474                myNote = theValue;
1475                return this;
1476        }
1477        
1478        
1479
1480        /**
1481         * Adds and returns a new value for <b>note</b> ()
1482         *
1483     * <p>
1484     * <b>Definition:</b>
1485     * Any other notes associated with this patient, specimen or order (e.g. \&quot;patient hates needles\&quot;)
1486     * </p> 
1487         */
1488        public AnnotationDt addNote() {
1489                AnnotationDt newType = new AnnotationDt();
1490                getNote().add(newType);
1491                return newType; 
1492        }
1493
1494        /**
1495         * Adds a given new value for <b>note</b> ()
1496         *
1497         * <p>
1498         * <b>Definition:</b>
1499         * Any other notes associated with this patient, specimen or order (e.g. \&quot;patient hates needles\&quot;)
1500         * </p>
1501         * @param theValue The note to add (must not be <code>null</code>)
1502         */
1503        public DiagnosticOrder addNote(AnnotationDt theValue) {
1504                if (theValue == null) {
1505                        throw new NullPointerException("theValue must not be null");
1506                }
1507                getNote().add(theValue);
1508                return this;
1509        }
1510
1511        /**
1512         * Gets the first repetition for <b>note</b> (),
1513         * creating it if it does not already exist.
1514         *
1515     * <p>
1516     * <b>Definition:</b>
1517     * Any other notes associated with this patient, specimen or order (e.g. \&quot;patient hates needles\&quot;)
1518     * </p> 
1519         */
1520        public AnnotationDt getNoteFirstRep() {
1521                if (getNote().isEmpty()) {
1522                        return addNote();
1523                }
1524                return getNote().get(0); 
1525        }
1526  
1527        /**
1528         * Block class for child element: <b>DiagnosticOrder.event</b> ()
1529         *
1530     * <p>
1531     * <b>Definition:</b>
1532     * 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
1533     * </p> 
1534         */
1535        @Block()        
1536        public static class Event 
1537            extends  BaseIdentifiableElement        implements IResourceBlock {
1538        
1539        @Child(name="status", type=CodeDt.class, order=0, min=1, max=1, summary=true, modifier=false)   
1540        @Description(
1541                shortDefinition="",
1542                formalDefinition="The status for the event"
1543        )
1544        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/diagnostic-order-status")
1545        private BoundCodeDt<DiagnosticOrderStatusEnum> myStatus;
1546        
1547        @Child(name="description", type=CodeableConceptDt.class, order=1, min=0, max=1, summary=true, modifier=false)   
1548        @Description(
1549                shortDefinition="",
1550                formalDefinition="Additional information about the event that occurred - e.g. if the status remained unchanged"
1551        )
1552        private CodeableConceptDt myDescription;
1553        
1554        @Child(name="dateTime", type=DateTimeDt.class, order=2, min=1, max=1, summary=true, modifier=false)     
1555        @Description(
1556                shortDefinition="",
1557                formalDefinition="The date/time at which the event occurred"
1558        )
1559        private DateTimeDt myDateTime;
1560        
1561        @Child(name="actor", order=3, min=0, max=1, summary=false, modifier=false, type={
1562                ca.uhn.fhir.model.dstu2.resource.Practitioner.class,            ca.uhn.fhir.model.dstu2.resource.Device.class   })
1563        @Description(
1564                shortDefinition="",
1565                formalDefinition="The person responsible for performing or recording the action"
1566        )
1567        private ResourceReferenceDt myActor;
1568        
1569
1570        @Override
1571        public boolean isEmpty() {
1572                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myStatus,  myDescription,  myDateTime,  myActor);
1573        }
1574        
1575        @Override
1576        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1577                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myStatus, myDescription, myDateTime, myActor);
1578        }
1579
1580        /**
1581         * Gets the value(s) for <b>status</b> ().
1582         * creating it if it does
1583         * not exist. Will not return <code>null</code>.
1584         *
1585     * <p>
1586     * <b>Definition:</b>
1587     * The status for the event
1588     * </p> 
1589         */
1590        public BoundCodeDt<DiagnosticOrderStatusEnum> getStatusElement() {  
1591                if (myStatus == null) {
1592                        myStatus = new BoundCodeDt<DiagnosticOrderStatusEnum>(DiagnosticOrderStatusEnum.VALUESET_BINDER);
1593                }
1594                return myStatus;
1595        }
1596
1597        
1598        /**
1599         * Gets the value(s) for <b>status</b> ().
1600         * creating it if it does
1601         * not exist. This method may return <code>null</code>.
1602         *
1603     * <p>
1604     * <b>Definition:</b>
1605     * The status for the event
1606     * </p> 
1607         */
1608        public String getStatus() {  
1609                return getStatusElement().getValue();
1610        }
1611
1612        /**
1613         * Sets the value(s) for <b>status</b> ()
1614         *
1615     * <p>
1616     * <b>Definition:</b>
1617     * The status for the event
1618     * </p> 
1619         */
1620        public Event setStatus(BoundCodeDt<DiagnosticOrderStatusEnum> theValue) {
1621                myStatus = theValue;
1622                return this;
1623        }
1624        
1625        
1626
1627        /**
1628         * Sets the value(s) for <b>status</b> ()
1629         *
1630     * <p>
1631     * <b>Definition:</b>
1632     * The status for the event
1633     * </p> 
1634         */
1635        public Event setStatus(DiagnosticOrderStatusEnum theValue) {
1636                setStatus(new BoundCodeDt<DiagnosticOrderStatusEnum>(DiagnosticOrderStatusEnum.VALUESET_BINDER, theValue));
1637                
1638/*
1639                getStatusElement().setValueAsEnum(theValue);
1640*/
1641                return this;
1642        }
1643
1644  
1645        /**
1646         * Gets the value(s) for <b>description</b> ().
1647         * creating it if it does
1648         * not exist. Will not return <code>null</code>.
1649         *
1650     * <p>
1651     * <b>Definition:</b>
1652     * Additional information about the event that occurred - e.g. if the status remained unchanged
1653     * </p> 
1654         */
1655        public CodeableConceptDt getDescription() {  
1656                if (myDescription == null) {
1657                        myDescription = new CodeableConceptDt();
1658                }
1659                return myDescription;
1660        }
1661
1662        /**
1663         * Sets the value(s) for <b>description</b> ()
1664         *
1665     * <p>
1666     * <b>Definition:</b>
1667     * Additional information about the event that occurred - e.g. if the status remained unchanged
1668     * </p> 
1669         */
1670        public Event setDescription(CodeableConceptDt theValue) {
1671                myDescription = theValue;
1672                return this;
1673        }
1674        
1675        
1676
1677  
1678        /**
1679         * Gets the value(s) for <b>dateTime</b> ().
1680         * creating it if it does
1681         * not exist. Will not return <code>null</code>.
1682         *
1683     * <p>
1684     * <b>Definition:</b>
1685     * The date/time at which the event occurred
1686     * </p> 
1687         */
1688        public DateTimeDt getDateTimeElement() {  
1689                if (myDateTime == null) {
1690                        myDateTime = new DateTimeDt();
1691                }
1692                return myDateTime;
1693        }
1694
1695        
1696        /**
1697         * Gets the value(s) for <b>dateTime</b> ().
1698         * creating it if it does
1699         * not exist. This method may return <code>null</code>.
1700         *
1701     * <p>
1702     * <b>Definition:</b>
1703     * The date/time at which the event occurred
1704     * </p> 
1705         */
1706        public Date getDateTime() {  
1707                return getDateTimeElement().getValue();
1708        }
1709
1710        /**
1711         * Sets the value(s) for <b>dateTime</b> ()
1712         *
1713     * <p>
1714     * <b>Definition:</b>
1715     * The date/time at which the event occurred
1716     * </p> 
1717         */
1718        public Event setDateTime(DateTimeDt theValue) {
1719                myDateTime = theValue;
1720                return this;
1721        }
1722        
1723        
1724
1725        /**
1726         * Sets the value for <b>dateTime</b> ()
1727         *
1728     * <p>
1729     * <b>Definition:</b>
1730     * The date/time at which the event occurred
1731     * </p> 
1732         */
1733        public Event setDateTimeWithSecondsPrecision( Date theDate) {
1734                myDateTime = new DateTimeDt(theDate); 
1735                return this; 
1736        }
1737
1738        /**
1739         * Sets the value for <b>dateTime</b> ()
1740         *
1741     * <p>
1742     * <b>Definition:</b>
1743     * The date/time at which the event occurred
1744     * </p> 
1745         */
1746        public Event setDateTime( Date theDate,  TemporalPrecisionEnum thePrecision) {
1747                myDateTime = new DateTimeDt(theDate, thePrecision); 
1748                return this; 
1749        }
1750
1751 
1752        /**
1753         * Gets the value(s) for <b>actor</b> ().
1754         * creating it if it does
1755         * not exist. Will not return <code>null</code>.
1756         *
1757     * <p>
1758     * <b>Definition:</b>
1759     * The person responsible for performing or recording the action
1760     * </p> 
1761         */
1762        public ResourceReferenceDt getActor() {  
1763                if (myActor == null) {
1764                        myActor = new ResourceReferenceDt();
1765                }
1766                return myActor;
1767        }
1768
1769        /**
1770         * Sets the value(s) for <b>actor</b> ()
1771         *
1772     * <p>
1773     * <b>Definition:</b>
1774     * The person responsible for performing or recording the action
1775     * </p> 
1776         */
1777        public Event setActor(ResourceReferenceDt theValue) {
1778                myActor = theValue;
1779                return this;
1780        }
1781        
1782        
1783
1784  
1785
1786
1787        }
1788
1789
1790        /**
1791         * Block class for child element: <b>DiagnosticOrder.item</b> ()
1792         *
1793     * <p>
1794     * <b>Definition:</b>
1795     * 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
1796     * </p> 
1797         */
1798        @Block()        
1799        public static class Item 
1800            extends  BaseIdentifiableElement        implements IResourceBlock {
1801        
1802        @Child(name="code", type=CodeableConceptDt.class, order=0, min=1, max=1, summary=true, modifier=false)  
1803        @Description(
1804                shortDefinition="",
1805                formalDefinition="A code that identifies a particular diagnostic investigation, or panel of investigations, that have been requested"
1806        )
1807        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/valueset-diagnostic-requests")
1808        private CodeableConceptDt myCode;
1809        
1810        @Child(name="specimen", order=1, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
1811                ca.uhn.fhir.model.dstu2.resource.Specimen.class })
1812        @Description(
1813                shortDefinition="",
1814                formalDefinition="If the item is related to a specific specimen"
1815        )
1816        private java.util.List<ResourceReferenceDt> mySpecimen;
1817        
1818        @Child(name="bodySite", type=CodeableConceptDt.class, order=2, min=0, max=1, summary=false, modifier=false)     
1819        @Description(
1820                shortDefinition="",
1821                formalDefinition="Anatomical location where the request test should be performed.  This is the target site."
1822        )
1823        private CodeableConceptDt myBodySite;
1824        
1825        @Child(name="status", type=CodeDt.class, order=3, min=0, max=1, summary=true, modifier=false)   
1826        @Description(
1827                shortDefinition="",
1828                formalDefinition="The status of this individual item within the order"
1829        )
1830        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/diagnostic-order-status")
1831        private BoundCodeDt<DiagnosticOrderStatusEnum> myStatus;
1832        
1833        @Child(name="event", type=Event.class, order=4, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
1834        @Description(
1835                shortDefinition="",
1836                formalDefinition="A summary of the events of interest that have occurred as this item of the request is processed"
1837        )
1838        private java.util.List<Event> myEvent;
1839        
1840
1841        @Override
1842        public boolean isEmpty() {
1843                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCode,  mySpecimen,  myBodySite,  myStatus,  myEvent);
1844        }
1845        
1846        @Override
1847        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1848                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCode, mySpecimen, myBodySite, myStatus, myEvent);
1849        }
1850
1851        /**
1852         * Gets the value(s) for <b>code</b> ().
1853         * creating it if it does
1854         * not exist. Will not return <code>null</code>.
1855         *
1856     * <p>
1857     * <b>Definition:</b>
1858     * A code that identifies a particular diagnostic investigation, or panel of investigations, that have been requested
1859     * </p> 
1860         */
1861        public CodeableConceptDt getCode() {  
1862                if (myCode == null) {
1863                        myCode = new CodeableConceptDt();
1864                }
1865                return myCode;
1866        }
1867
1868        /**
1869         * Sets the value(s) for <b>code</b> ()
1870         *
1871     * <p>
1872     * <b>Definition:</b>
1873     * A code that identifies a particular diagnostic investigation, or panel of investigations, that have been requested
1874     * </p> 
1875         */
1876        public Item setCode(CodeableConceptDt theValue) {
1877                myCode = theValue;
1878                return this;
1879        }
1880        
1881        
1882
1883  
1884        /**
1885         * Gets the value(s) for <b>specimen</b> ().
1886         * creating it if it does
1887         * not exist. Will not return <code>null</code>.
1888         *
1889     * <p>
1890     * <b>Definition:</b>
1891     * If the item is related to a specific specimen
1892     * </p> 
1893         */
1894        public java.util.List<ResourceReferenceDt> getSpecimen() {  
1895                if (mySpecimen == null) {
1896                        mySpecimen = new java.util.ArrayList<ResourceReferenceDt>();
1897                }
1898                return mySpecimen;
1899        }
1900
1901        /**
1902         * Sets the value(s) for <b>specimen</b> ()
1903         *
1904     * <p>
1905     * <b>Definition:</b>
1906     * If the item is related to a specific specimen
1907     * </p> 
1908         */
1909        public Item setSpecimen(java.util.List<ResourceReferenceDt> theValue) {
1910                mySpecimen = theValue;
1911                return this;
1912        }
1913        
1914        
1915
1916        /**
1917         * Adds and returns a new value for <b>specimen</b> ()
1918         *
1919     * <p>
1920     * <b>Definition:</b>
1921     * If the item is related to a specific specimen
1922     * </p> 
1923         */
1924        public ResourceReferenceDt addSpecimen() {
1925                ResourceReferenceDt newType = new ResourceReferenceDt();
1926                getSpecimen().add(newType);
1927                return newType; 
1928        }
1929  
1930        /**
1931         * Gets the value(s) for <b>bodySite</b> ().
1932         * creating it if it does
1933         * not exist. Will not return <code>null</code>.
1934         *
1935     * <p>
1936     * <b>Definition:</b>
1937     * Anatomical location where the request test should be performed.  This is the target site.
1938     * </p> 
1939         */
1940        public CodeableConceptDt getBodySite() {  
1941                if (myBodySite == null) {
1942                        myBodySite = new CodeableConceptDt();
1943                }
1944                return myBodySite;
1945        }
1946
1947        /**
1948         * Sets the value(s) for <b>bodySite</b> ()
1949         *
1950     * <p>
1951     * <b>Definition:</b>
1952     * Anatomical location where the request test should be performed.  This is the target site.
1953     * </p> 
1954         */
1955        public Item setBodySite(CodeableConceptDt theValue) {
1956                myBodySite = theValue;
1957                return this;
1958        }
1959        
1960        
1961
1962  
1963        /**
1964         * Gets the value(s) for <b>status</b> ().
1965         * creating it if it does
1966         * not exist. Will not return <code>null</code>.
1967         *
1968     * <p>
1969     * <b>Definition:</b>
1970     * The status of this individual item within the order
1971     * </p> 
1972         */
1973        public BoundCodeDt<DiagnosticOrderStatusEnum> getStatusElement() {  
1974                if (myStatus == null) {
1975                        myStatus = new BoundCodeDt<DiagnosticOrderStatusEnum>(DiagnosticOrderStatusEnum.VALUESET_BINDER);
1976                }
1977                return myStatus;
1978        }
1979
1980        
1981        /**
1982         * Gets the value(s) for <b>status</b> ().
1983         * creating it if it does
1984         * not exist. This method may return <code>null</code>.
1985         *
1986     * <p>
1987     * <b>Definition:</b>
1988     * The status of this individual item within the order
1989     * </p> 
1990         */
1991        public String getStatus() {  
1992                return getStatusElement().getValue();
1993        }
1994
1995        /**
1996         * Sets the value(s) for <b>status</b> ()
1997         *
1998     * <p>
1999     * <b>Definition:</b>
2000     * The status of this individual item within the order
2001     * </p> 
2002         */
2003        public Item setStatus(BoundCodeDt<DiagnosticOrderStatusEnum> theValue) {
2004                myStatus = theValue;
2005                return this;
2006        }
2007        
2008        
2009
2010        /**
2011         * Sets the value(s) for <b>status</b> ()
2012         *
2013     * <p>
2014     * <b>Definition:</b>
2015     * The status of this individual item within the order
2016     * </p> 
2017         */
2018        public Item setStatus(DiagnosticOrderStatusEnum theValue) {
2019                setStatus(new BoundCodeDt<DiagnosticOrderStatusEnum>(DiagnosticOrderStatusEnum.VALUESET_BINDER, theValue));
2020                
2021/*
2022                getStatusElement().setValueAsEnum(theValue);
2023*/
2024                return this;
2025        }
2026
2027  
2028        /**
2029         * Gets the value(s) for <b>event</b> ().
2030         * creating it if it does
2031         * not exist. Will not return <code>null</code>.
2032         *
2033     * <p>
2034     * <b>Definition:</b>
2035     * A summary of the events of interest that have occurred as this item of the request is processed
2036     * </p> 
2037         */
2038        public java.util.List<Event> getEvent() {  
2039                if (myEvent == null) {
2040                        myEvent = new java.util.ArrayList<Event>();
2041                }
2042                return myEvent;
2043        }
2044
2045        /**
2046         * Sets the value(s) for <b>event</b> ()
2047         *
2048     * <p>
2049     * <b>Definition:</b>
2050     * A summary of the events of interest that have occurred as this item of the request is processed
2051     * </p> 
2052         */
2053        public Item setEvent(java.util.List<Event> theValue) {
2054                myEvent = theValue;
2055                return this;
2056        }
2057        
2058        
2059
2060        /**
2061         * Adds and returns a new value for <b>event</b> ()
2062         *
2063     * <p>
2064     * <b>Definition:</b>
2065     * A summary of the events of interest that have occurred as this item of the request is processed
2066     * </p> 
2067         */
2068        public Event addEvent() {
2069                Event newType = new Event();
2070                getEvent().add(newType);
2071                return newType; 
2072        }
2073
2074        /**
2075         * Adds a given new value for <b>event</b> ()
2076         *
2077         * <p>
2078         * <b>Definition:</b>
2079         * A summary of the events of interest that have occurred as this item of the request is processed
2080         * </p>
2081         * @param theValue The event to add (must not be <code>null</code>)
2082         */
2083        public Item addEvent(Event theValue) {
2084                if (theValue == null) {
2085                        throw new NullPointerException("theValue must not be null");
2086                }
2087                getEvent().add(theValue);
2088                return this;
2089        }
2090
2091        /**
2092         * Gets the first repetition for <b>event</b> (),
2093         * creating it if it does not already exist.
2094         *
2095     * <p>
2096     * <b>Definition:</b>
2097     * A summary of the events of interest that have occurred as this item of the request is processed
2098     * </p> 
2099         */
2100        public Event getEventFirstRep() {
2101                if (getEvent().isEmpty()) {
2102                        return addEvent();
2103                }
2104                return getEvent().get(0); 
2105        }
2106  
2107
2108
2109        }
2110
2111
2112
2113
2114    @Override
2115    public String getResourceName() {
2116        return "DiagnosticOrder";
2117    }
2118    
2119    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
2120        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
2121    }
2122
2123
2124}