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>Device</b> Resource
282 * ()
283 *
284 * <p>
285 * <b>Definition:</b>
286 * This resource identifies an instance of a manufactured item that is used in the provision of healthcare without being substantially changed through that activity. The device may be a medical or non-medical device.  Medical devices includes durable (reusable) medical equipment, implantable devices, as well as disposable equipment used for diagnostic, treatment, and research for healthcare and public health.  Non-medical devices may include items such as a machine, cellphone, computer, application, etc.
287 * </p> 
288 *
289 * <p>
290 * <b>Requirements:</b>
291 * Allows institutions to track their devices. 
292 * </p> 
293 *
294 * <p>
295 * <b>Profile Definition:</b>
296 * <a href="http://hl7.org/fhir/profiles/Device">http://hl7.org/fhir/profiles/Device</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="Device", profile="http://hl7.org/fhir/profiles/Device", id="device")
301public class Device extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource 
303    {
304
305        /**
306         * Search parameter constant for <b>type</b>
307         * <p>
308         * Description: <b>The type of the device</b><br>
309         * Type: <b>token</b><br>
310         * Path: <b>Device.type</b><br>
311         * </p>
312         */
313        @SearchParamDefinition(name="type", path="Device.type", description="The type of the device", type="token" 
314 )
315        public static final String SP_TYPE = "type";
316
317        /**
318         * <b>Fluent Client</b> search parameter constant for <b>type</b>
319         * <p>
320         * Description: <b>The type of the device</b><br>
321         * Type: <b>token</b><br>
322         * Path: <b>Device.type</b><br>
323         * </p>
324         */
325        public static final TokenClientParam TYPE = new TokenClientParam(SP_TYPE);
326
327        /**
328         * Search parameter constant for <b>manufacturer</b>
329         * <p>
330         * Description: <b>The manufacturer of the device</b><br>
331         * Type: <b>string</b><br>
332         * Path: <b>Device.manufacturer</b><br>
333         * </p>
334         */
335        @SearchParamDefinition(name="manufacturer", path="Device.manufacturer", description="The manufacturer of the device", type="string" 
336 )
337        public static final String SP_MANUFACTURER = "manufacturer";
338
339        /**
340         * <b>Fluent Client</b> search parameter constant for <b>manufacturer</b>
341         * <p>
342         * Description: <b>The manufacturer of the device</b><br>
343         * Type: <b>string</b><br>
344         * Path: <b>Device.manufacturer</b><br>
345         * </p>
346         */
347        public static final StringClientParam MANUFACTURER = new StringClientParam(SP_MANUFACTURER);
348
349        /**
350         * Search parameter constant for <b>model</b>
351         * <p>
352         * Description: <b>The model of the device</b><br>
353         * Type: <b>string</b><br>
354         * Path: <b>Device.model</b><br>
355         * </p>
356         */
357        @SearchParamDefinition(name="model", path="Device.model", description="The model of the device", type="string" 
358 )
359        public static final String SP_MODEL = "model";
360
361        /**
362         * <b>Fluent Client</b> search parameter constant for <b>model</b>
363         * <p>
364         * Description: <b>The model of the device</b><br>
365         * Type: <b>string</b><br>
366         * Path: <b>Device.model</b><br>
367         * </p>
368         */
369        public static final StringClientParam MODEL = new StringClientParam(SP_MODEL);
370
371        /**
372         * Search parameter constant for <b>organization</b>
373         * <p>
374         * Description: <b>The organization responsible for the device</b><br>
375         * Type: <b>reference</b><br>
376         * Path: <b>Device.owner</b><br>
377         * </p>
378         */
379        @SearchParamDefinition(name="organization", path="Device.owner", description="The organization responsible for the device", type="reference" 
380 )
381        public static final String SP_ORGANIZATION = "organization";
382
383        /**
384         * <b>Fluent Client</b> search parameter constant for <b>organization</b>
385         * <p>
386         * Description: <b>The organization responsible for the device</b><br>
387         * Type: <b>reference</b><br>
388         * Path: <b>Device.owner</b><br>
389         * </p>
390         */
391        public static final ReferenceClientParam ORGANIZATION = new ReferenceClientParam(SP_ORGANIZATION);
392
393        /**
394         * Search parameter constant for <b>identifier</b>
395         * <p>
396         * Description: <b>Instance id from manufacturer, owner, and others</b><br>
397         * Type: <b>token</b><br>
398         * Path: <b>Device.identifier</b><br>
399         * </p>
400         */
401        @SearchParamDefinition(name="identifier", path="Device.identifier", description="Instance id from manufacturer, owner, and others", type="token" 
402 )
403        public static final String SP_IDENTIFIER = "identifier";
404
405        /**
406         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
407         * <p>
408         * Description: <b>Instance id from manufacturer, owner, and others</b><br>
409         * Type: <b>token</b><br>
410         * Path: <b>Device.identifier</b><br>
411         * </p>
412         */
413        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
414
415        /**
416         * Search parameter constant for <b>location</b>
417         * <p>
418         * Description: <b>A location, where the resource is found</b><br>
419         * Type: <b>reference</b><br>
420         * Path: <b>Device.location</b><br>
421         * </p>
422         */
423        @SearchParamDefinition(name="location", path="Device.location", description="A location, where the resource is found", type="reference" 
424 )
425        public static final String SP_LOCATION = "location";
426
427        /**
428         * <b>Fluent Client</b> search parameter constant for <b>location</b>
429         * <p>
430         * Description: <b>A location, where the resource is found</b><br>
431         * Type: <b>reference</b><br>
432         * Path: <b>Device.location</b><br>
433         * </p>
434         */
435        public static final ReferenceClientParam LOCATION = new ReferenceClientParam(SP_LOCATION);
436
437        /**
438         * Search parameter constant for <b>patient</b>
439         * <p>
440         * Description: <b>Patient information, if the resource is affixed to a person</b><br>
441         * Type: <b>reference</b><br>
442         * Path: <b>Device.patient</b><br>
443         * </p>
444         */
445        @SearchParamDefinition(name="patient", path="Device.patient", description="Patient information, if the resource is affixed to a person", type="reference" 
446 )
447        public static final String SP_PATIENT = "patient";
448
449        /**
450         * <b>Fluent Client</b> search parameter constant for <b>patient</b>
451         * <p>
452         * Description: <b>Patient information, if the resource is affixed to a person</b><br>
453         * Type: <b>reference</b><br>
454         * Path: <b>Device.patient</b><br>
455         * </p>
456         */
457        public static final ReferenceClientParam PATIENT = new ReferenceClientParam(SP_PATIENT);
458
459        /**
460         * Search parameter constant for <b>udi</b>
461         * <p>
462         * Description: <b>FDA mandated Unique Device Identifier</b><br>
463         * Type: <b>string</b><br>
464         * Path: <b>Device.udi</b><br>
465         * </p>
466         */
467        @SearchParamDefinition(name="udi", path="Device.udi", description="FDA mandated Unique Device Identifier", type="string" 
468 )
469        public static final String SP_UDI = "udi";
470
471        /**
472         * <b>Fluent Client</b> search parameter constant for <b>udi</b>
473         * <p>
474         * Description: <b>FDA mandated Unique Device Identifier</b><br>
475         * Type: <b>string</b><br>
476         * Path: <b>Device.udi</b><br>
477         * </p>
478         */
479        public static final StringClientParam UDI = new StringClientParam(SP_UDI);
480
481        /**
482         * Search parameter constant for <b>url</b>
483         * <p>
484         * Description: <b>Network address to contact device</b><br>
485         * Type: <b>uri</b><br>
486         * Path: <b>Device.url</b><br>
487         * </p>
488         */
489        @SearchParamDefinition(name="url", path="Device.url", description="Network address to contact device", type="uri" 
490 )
491        public static final String SP_URL = "url";
492
493        /**
494         * <b>Fluent Client</b> search parameter constant for <b>url</b>
495         * <p>
496         * Description: <b>Network address to contact device</b><br>
497         * Type: <b>uri</b><br>
498         * Path: <b>Device.url</b><br>
499         * </p>
500         */
501        public static final UriClientParam URL = new UriClientParam(SP_URL);
502
503
504        /**
505         * Constant for fluent queries to be used to add include statements. Specifies
506         * the path value of "<b>Device:location</b>".
507         */
508        public static final Include INCLUDE_LOCATION = new Include("Device:location");
509
510        /**
511         * Constant for fluent queries to be used to add include statements. Specifies
512         * the path value of "<b>Device:organization</b>".
513         */
514        public static final Include INCLUDE_ORGANIZATION = new Include("Device:organization");
515
516        /**
517         * Constant for fluent queries to be used to add include statements. Specifies
518         * the path value of "<b>Device:patient</b>".
519         */
520        public static final Include INCLUDE_PATIENT = new Include("Device:patient");
521
522
523        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
524        @Description(
525                shortDefinition="",
526                formalDefinition="Unique instance identifiers assigned to a device by organizations like manufacturers or owners. If the identifier identifies the type of device, Device.type should be used."
527        )
528        private java.util.List<IdentifierDt> myIdentifier;
529        
530        @Child(name="type", type=CodeableConceptDt.class, order=1, min=1, max=1, summary=false, modifier=false) 
531        @Description(
532                shortDefinition="",
533                formalDefinition="Code or identifier to identify a kind of device."
534        )
535        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "https://www.gmdnagency.org/Info.aspx?pageid=1091")
536        private CodeableConceptDt myType;
537        
538        @Child(name="note", type=AnnotationDt.class, order=2, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
539        @Description(
540                shortDefinition="",
541                formalDefinition="Descriptive information, usage information or implantation information that is not captured in an existing element."
542        )
543        private java.util.List<AnnotationDt> myNote;
544        
545        @Child(name="status", type=CodeDt.class, order=3, min=0, max=1, summary=true, modifier=true)    
546        @Description(
547                shortDefinition="",
548                formalDefinition="Status of the Device availability."
549        )
550        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/devicestatus")
551        private BoundCodeDt<DeviceStatusEnum> myStatus;
552        
553        @Child(name="manufacturer", type=StringDt.class, order=4, min=0, max=1, summary=false, modifier=false)  
554        @Description(
555                shortDefinition="",
556                formalDefinition="A name of the manufacturer"
557        )
558        private StringDt myManufacturer;
559        
560        @Child(name="model", type=StringDt.class, order=5, min=0, max=1, summary=false, modifier=false) 
561        @Description(
562                shortDefinition="",
563                formalDefinition="The \"model\" is an identifier assigned by the manufacturer to identify the product by its type. This number is shared by the all devices sold as the same type."
564        )
565        private StringDt myModel;
566        
567        @Child(name="version", type=StringDt.class, order=6, min=0, max=1, summary=false, modifier=false)       
568        @Description(
569                shortDefinition="",
570                formalDefinition="The version of the device, if the device has multiple releases under the same model, or if the device is software or carries firmware."
571        )
572        private StringDt myVersion;
573        
574        @Child(name="manufactureDate", type=DateTimeDt.class, order=7, min=0, max=1, summary=false, modifier=false)     
575        @Description(
576                shortDefinition="",
577                formalDefinition="The date and time when the device was manufactured."
578        )
579        private DateTimeDt myManufactureDate;
580        
581        @Child(name="expiry", type=DateTimeDt.class, order=8, min=0, max=1, summary=false, modifier=false)      
582        @Description(
583                shortDefinition="",
584                formalDefinition="The date and time beyond which this device is no longer valid or should not be used (if applicable)"
585        )
586        private DateTimeDt myExpiry;
587        
588        @Child(name="udi", type=StringDt.class, order=9, min=0, max=1, summary=false, modifier=false)   
589        @Description(
590                shortDefinition="",
591                formalDefinition="United States Food and Drug Administration mandated Unique Device Identifier (UDI). Use the human readable information (the content that the user sees, which is sometimes different to the exact syntax represented in the barcode)  - see http://www.fda.gov/MedicalDevices/DeviceRegulationandGuidance/UniqueDeviceIdentification/default.htm"
592        )
593        private StringDt myUdi;
594        
595        @Child(name="lotNumber", type=StringDt.class, order=10, min=0, max=1, summary=false, modifier=false)    
596        @Description(
597                shortDefinition="",
598                formalDefinition="Lot number assigned by the manufacturer"
599        )
600        private StringDt myLotNumber;
601        
602        @Child(name="owner", order=11, min=0, max=1, summary=false, modifier=false, type={
603                ca.uhn.fhir.model.dstu2.resource.Organization.class
604        })
605        @Description(
606                shortDefinition="",
607                formalDefinition="An organization that is responsible for the provision and ongoing maintenance of the device."
608        )
609        private ResourceReferenceDt myOwner;
610        
611        @Child(name="location", order=12, min=0, max=1, summary=false, modifier=false, type={
612                ca.uhn.fhir.model.dstu2.resource.Location.class
613        })
614        @Description(
615                shortDefinition="",
616                formalDefinition="The place where the device can be found."
617        )
618        private ResourceReferenceDt myLocation;
619        
620        @Child(name="patient", order=13, min=0, max=1, summary=false, modifier=false, type={
621                ca.uhn.fhir.model.dstu2.resource.Patient.class
622        })
623        @Description(
624                shortDefinition="",
625                formalDefinition="Patient information, if the resource is affixed to a person"
626        )
627        private ResourceReferenceDt myPatient;
628        
629        @Child(name="contact", type=ContactPointDt.class, order=14, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
630        @Description(
631                shortDefinition="",
632                formalDefinition="Contact details for an organization or a particular human that is responsible for the device"
633        )
634        private java.util.List<ContactPointDt> myContact;
635        
636        @Child(name="url", type=UriDt.class, order=15, min=0, max=1, summary=false, modifier=false)     
637        @Description(
638                shortDefinition="",
639                formalDefinition="A network address on which the device may be contacted directly"
640        )
641        private UriDt myUrl;
642        
643
644        @Override
645        public boolean isEmpty() {
646                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myType,  myNote,  myStatus,  myManufacturer,  myModel,  myVersion,  myManufactureDate,  myExpiry,  myUdi,  myLotNumber,  myOwner,  myLocation,  myPatient,  myContact,  myUrl);
647        }
648        
649        @Override
650        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
651                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myType, myNote, myStatus, myManufacturer, myModel, myVersion, myManufactureDate, myExpiry, myUdi, myLotNumber, myOwner, myLocation, myPatient, myContact, myUrl);
652        }
653
654        /**
655         * Gets the value(s) for <b>identifier</b> ().
656         * creating it if it does
657         * not exist. Will not return <code>null</code>.
658         *
659     * <p>
660     * <b>Definition:</b>
661     * Unique instance identifiers assigned to a device by organizations like manufacturers or owners. If the identifier identifies the type of device, Device.type should be used.
662     * </p> 
663         */
664        public java.util.List<IdentifierDt> getIdentifier() {  
665                if (myIdentifier == null) {
666                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
667                }
668                return myIdentifier;
669        }
670
671        /**
672         * Sets the value(s) for <b>identifier</b> ()
673         *
674     * <p>
675     * <b>Definition:</b>
676     * Unique instance identifiers assigned to a device by organizations like manufacturers or owners. If the identifier identifies the type of device, Device.type should be used.
677     * </p> 
678         */
679        public Device setIdentifier(java.util.List<IdentifierDt> theValue) {
680                myIdentifier = theValue;
681                return this;
682        }
683        
684        
685
686        /**
687         * Adds and returns a new value for <b>identifier</b> ()
688         *
689     * <p>
690     * <b>Definition:</b>
691     * Unique instance identifiers assigned to a device by organizations like manufacturers or owners. If the identifier identifies the type of device, Device.type should be used.
692     * </p> 
693         */
694        public IdentifierDt addIdentifier() {
695                IdentifierDt newType = new IdentifierDt();
696                getIdentifier().add(newType);
697                return newType; 
698        }
699
700        /**
701         * Adds a given new value for <b>identifier</b> ()
702         *
703         * <p>
704         * <b>Definition:</b>
705         * Unique instance identifiers assigned to a device by organizations like manufacturers or owners. If the identifier identifies the type of device, Device.type should be used.
706         * </p>
707         * @param theValue The identifier to add (must not be <code>null</code>)
708         */
709        public Device addIdentifier(IdentifierDt theValue) {
710                if (theValue == null) {
711                        throw new NullPointerException("theValue must not be null");
712                }
713                getIdentifier().add(theValue);
714                return this;
715        }
716
717        /**
718         * Gets the first repetition for <b>identifier</b> (),
719         * creating it if it does not already exist.
720         *
721     * <p>
722     * <b>Definition:</b>
723     * Unique instance identifiers assigned to a device by organizations like manufacturers or owners. If the identifier identifies the type of device, Device.type should be used.
724     * </p> 
725         */
726        public IdentifierDt getIdentifierFirstRep() {
727                if (getIdentifier().isEmpty()) {
728                        return addIdentifier();
729                }
730                return getIdentifier().get(0); 
731        }
732  
733        /**
734         * Gets the value(s) for <b>type</b> ().
735         * creating it if it does
736         * not exist. Will not return <code>null</code>.
737         *
738     * <p>
739     * <b>Definition:</b>
740     * Code or identifier to identify a kind of device.
741     * </p> 
742         */
743        public CodeableConceptDt getType() {  
744                if (myType == null) {
745                        myType = new CodeableConceptDt();
746                }
747                return myType;
748        }
749
750        /**
751         * Sets the value(s) for <b>type</b> ()
752         *
753     * <p>
754     * <b>Definition:</b>
755     * Code or identifier to identify a kind of device.
756     * </p> 
757         */
758        public Device setType(CodeableConceptDt theValue) {
759                myType = theValue;
760                return this;
761        }
762        
763        
764
765  
766        /**
767         * Gets the value(s) for <b>note</b> ().
768         * creating it if it does
769         * not exist. Will not return <code>null</code>.
770         *
771     * <p>
772     * <b>Definition:</b>
773     * Descriptive information, usage information or implantation information that is not captured in an existing element.
774     * </p> 
775         */
776        public java.util.List<AnnotationDt> getNote() {  
777                if (myNote == null) {
778                        myNote = new java.util.ArrayList<AnnotationDt>();
779                }
780                return myNote;
781        }
782
783        /**
784         * Sets the value(s) for <b>note</b> ()
785         *
786     * <p>
787     * <b>Definition:</b>
788     * Descriptive information, usage information or implantation information that is not captured in an existing element.
789     * </p> 
790         */
791        public Device setNote(java.util.List<AnnotationDt> theValue) {
792                myNote = theValue;
793                return this;
794        }
795        
796        
797
798        /**
799         * Adds and returns a new value for <b>note</b> ()
800         *
801     * <p>
802     * <b>Definition:</b>
803     * Descriptive information, usage information or implantation information that is not captured in an existing element.
804     * </p> 
805         */
806        public AnnotationDt addNote() {
807                AnnotationDt newType = new AnnotationDt();
808                getNote().add(newType);
809                return newType; 
810        }
811
812        /**
813         * Adds a given new value for <b>note</b> ()
814         *
815         * <p>
816         * <b>Definition:</b>
817         * Descriptive information, usage information or implantation information that is not captured in an existing element.
818         * </p>
819         * @param theValue The note to add (must not be <code>null</code>)
820         */
821        public Device addNote(AnnotationDt theValue) {
822                if (theValue == null) {
823                        throw new NullPointerException("theValue must not be null");
824                }
825                getNote().add(theValue);
826                return this;
827        }
828
829        /**
830         * Gets the first repetition for <b>note</b> (),
831         * creating it if it does not already exist.
832         *
833     * <p>
834     * <b>Definition:</b>
835     * Descriptive information, usage information or implantation information that is not captured in an existing element.
836     * </p> 
837         */
838        public AnnotationDt getNoteFirstRep() {
839                if (getNote().isEmpty()) {
840                        return addNote();
841                }
842                return getNote().get(0); 
843        }
844  
845        /**
846         * Gets the value(s) for <b>status</b> ().
847         * creating it if it does
848         * not exist. Will not return <code>null</code>.
849         *
850     * <p>
851     * <b>Definition:</b>
852     * Status of the Device availability.
853     * </p> 
854         */
855        public BoundCodeDt<DeviceStatusEnum> getStatusElement() {  
856                if (myStatus == null) {
857                        myStatus = new BoundCodeDt<DeviceStatusEnum>(DeviceStatusEnum.VALUESET_BINDER);
858                }
859                return myStatus;
860        }
861
862        
863        /**
864         * Gets the value(s) for <b>status</b> ().
865         * creating it if it does
866         * not exist. This method may return <code>null</code>.
867         *
868     * <p>
869     * <b>Definition:</b>
870     * Status of the Device availability.
871     * </p> 
872         */
873        public String getStatus() {  
874                return getStatusElement().getValue();
875        }
876
877        /**
878         * Sets the value(s) for <b>status</b> ()
879         *
880     * <p>
881     * <b>Definition:</b>
882     * Status of the Device availability.
883     * </p> 
884         */
885        public Device setStatus(BoundCodeDt<DeviceStatusEnum> theValue) {
886                myStatus = theValue;
887                return this;
888        }
889        
890        
891
892        /**
893         * Sets the value(s) for <b>status</b> ()
894         *
895     * <p>
896     * <b>Definition:</b>
897     * Status of the Device availability.
898     * </p> 
899         */
900        public Device setStatus(DeviceStatusEnum theValue) {
901                setStatus(new BoundCodeDt<DeviceStatusEnum>(DeviceStatusEnum.VALUESET_BINDER, theValue));
902                
903/*
904                getStatusElement().setValueAsEnum(theValue);
905*/
906                return this;
907        }
908
909  
910        /**
911         * Gets the value(s) for <b>manufacturer</b> ().
912         * creating it if it does
913         * not exist. Will not return <code>null</code>.
914         *
915     * <p>
916     * <b>Definition:</b>
917     * A name of the manufacturer
918     * </p> 
919         */
920        public StringDt getManufacturerElement() {  
921                if (myManufacturer == null) {
922                        myManufacturer = new StringDt();
923                }
924                return myManufacturer;
925        }
926
927        
928        /**
929         * Gets the value(s) for <b>manufacturer</b> ().
930         * creating it if it does
931         * not exist. This method may return <code>null</code>.
932         *
933     * <p>
934     * <b>Definition:</b>
935     * A name of the manufacturer
936     * </p> 
937         */
938        public String getManufacturer() {  
939                return getManufacturerElement().getValue();
940        }
941
942        /**
943         * Sets the value(s) for <b>manufacturer</b> ()
944         *
945     * <p>
946     * <b>Definition:</b>
947     * A name of the manufacturer
948     * </p> 
949         */
950        public Device setManufacturer(StringDt theValue) {
951                myManufacturer = theValue;
952                return this;
953        }
954        
955        
956
957        /**
958         * Sets the value for <b>manufacturer</b> ()
959         *
960     * <p>
961     * <b>Definition:</b>
962     * A name of the manufacturer
963     * </p> 
964         */
965        public Device setManufacturer( String theString) {
966                myManufacturer = new StringDt(theString); 
967                return this; 
968        }
969
970 
971        /**
972         * Gets the value(s) for <b>model</b> ().
973         * creating it if it does
974         * not exist. Will not return <code>null</code>.
975         *
976     * <p>
977     * <b>Definition:</b>
978     * The \&quot;model\&quot; is an identifier assigned by the manufacturer to identify the product by its type. This number is shared by the all devices sold as the same type.
979     * </p> 
980         */
981        public StringDt getModelElement() {  
982                if (myModel == null) {
983                        myModel = new StringDt();
984                }
985                return myModel;
986        }
987
988        
989        /**
990         * Gets the value(s) for <b>model</b> ().
991         * creating it if it does
992         * not exist. This method may return <code>null</code>.
993         *
994     * <p>
995     * <b>Definition:</b>
996     * The \&quot;model\&quot; is an identifier assigned by the manufacturer to identify the product by its type. This number is shared by the all devices sold as the same type.
997     * </p> 
998         */
999        public String getModel() {  
1000                return getModelElement().getValue();
1001        }
1002
1003        /**
1004         * Sets the value(s) for <b>model</b> ()
1005         *
1006     * <p>
1007     * <b>Definition:</b>
1008     * The \&quot;model\&quot; is an identifier assigned by the manufacturer to identify the product by its type. This number is shared by the all devices sold as the same type.
1009     * </p> 
1010         */
1011        public Device setModel(StringDt theValue) {
1012                myModel = theValue;
1013                return this;
1014        }
1015        
1016        
1017
1018        /**
1019         * Sets the value for <b>model</b> ()
1020         *
1021     * <p>
1022     * <b>Definition:</b>
1023     * The \&quot;model\&quot; is an identifier assigned by the manufacturer to identify the product by its type. This number is shared by the all devices sold as the same type.
1024     * </p> 
1025         */
1026        public Device setModel( String theString) {
1027                myModel = new StringDt(theString); 
1028                return this; 
1029        }
1030
1031 
1032        /**
1033         * Gets the value(s) for <b>version</b> ().
1034         * creating it if it does
1035         * not exist. Will not return <code>null</code>.
1036         *
1037     * <p>
1038     * <b>Definition:</b>
1039     * The version of the device, if the device has multiple releases under the same model, or if the device is software or carries firmware.
1040     * </p> 
1041         */
1042        public StringDt getVersionElement() {  
1043                if (myVersion == null) {
1044                        myVersion = new StringDt();
1045                }
1046                return myVersion;
1047        }
1048
1049        
1050        /**
1051         * Gets the value(s) for <b>version</b> ().
1052         * creating it if it does
1053         * not exist. This method may return <code>null</code>.
1054         *
1055     * <p>
1056     * <b>Definition:</b>
1057     * The version of the device, if the device has multiple releases under the same model, or if the device is software or carries firmware.
1058     * </p> 
1059         */
1060        public String getVersion() {  
1061                return getVersionElement().getValue();
1062        }
1063
1064        /**
1065         * Sets the value(s) for <b>version</b> ()
1066         *
1067     * <p>
1068     * <b>Definition:</b>
1069     * The version of the device, if the device has multiple releases under the same model, or if the device is software or carries firmware.
1070     * </p> 
1071         */
1072        public Device setVersion(StringDt theValue) {
1073                myVersion = theValue;
1074                return this;
1075        }
1076        
1077        
1078
1079        /**
1080         * Sets the value for <b>version</b> ()
1081         *
1082     * <p>
1083     * <b>Definition:</b>
1084     * The version of the device, if the device has multiple releases under the same model, or if the device is software or carries firmware.
1085     * </p> 
1086         */
1087        public Device setVersion( String theString) {
1088                myVersion = new StringDt(theString); 
1089                return this; 
1090        }
1091
1092 
1093        /**
1094         * Gets the value(s) for <b>manufactureDate</b> ().
1095         * creating it if it does
1096         * not exist. Will not return <code>null</code>.
1097         *
1098     * <p>
1099     * <b>Definition:</b>
1100     * The date and time when the device was manufactured.
1101     * </p> 
1102         */
1103        public DateTimeDt getManufactureDateElement() {  
1104                if (myManufactureDate == null) {
1105                        myManufactureDate = new DateTimeDt();
1106                }
1107                return myManufactureDate;
1108        }
1109
1110        
1111        /**
1112         * Gets the value(s) for <b>manufactureDate</b> ().
1113         * creating it if it does
1114         * not exist. This method may return <code>null</code>.
1115         *
1116     * <p>
1117     * <b>Definition:</b>
1118     * The date and time when the device was manufactured.
1119     * </p> 
1120         */
1121        public Date getManufactureDate() {  
1122                return getManufactureDateElement().getValue();
1123        }
1124
1125        /**
1126         * Sets the value(s) for <b>manufactureDate</b> ()
1127         *
1128     * <p>
1129     * <b>Definition:</b>
1130     * The date and time when the device was manufactured.
1131     * </p> 
1132         */
1133        public Device setManufactureDate(DateTimeDt theValue) {
1134                myManufactureDate = theValue;
1135                return this;
1136        }
1137        
1138        
1139
1140        /**
1141         * Sets the value for <b>manufactureDate</b> ()
1142         *
1143     * <p>
1144     * <b>Definition:</b>
1145     * The date and time when the device was manufactured.
1146     * </p> 
1147         */
1148        public Device setManufactureDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
1149                myManufactureDate = new DateTimeDt(theDate, thePrecision); 
1150                return this; 
1151        }
1152
1153        /**
1154         * Sets the value for <b>manufactureDate</b> ()
1155         *
1156     * <p>
1157     * <b>Definition:</b>
1158     * The date and time when the device was manufactured.
1159     * </p> 
1160         */
1161        public Device setManufactureDateWithSecondsPrecision( Date theDate) {
1162                myManufactureDate = new DateTimeDt(theDate); 
1163                return this; 
1164        }
1165
1166 
1167        /**
1168         * Gets the value(s) for <b>expiry</b> ().
1169         * creating it if it does
1170         * not exist. Will not return <code>null</code>.
1171         *
1172     * <p>
1173     * <b>Definition:</b>
1174     * The date and time beyond which this device is no longer valid or should not be used (if applicable)
1175     * </p> 
1176         */
1177        public DateTimeDt getExpiryElement() {  
1178                if (myExpiry == null) {
1179                        myExpiry = new DateTimeDt();
1180                }
1181                return myExpiry;
1182        }
1183
1184        
1185        /**
1186         * Gets the value(s) for <b>expiry</b> ().
1187         * creating it if it does
1188         * not exist. This method may return <code>null</code>.
1189         *
1190     * <p>
1191     * <b>Definition:</b>
1192     * The date and time beyond which this device is no longer valid or should not be used (if applicable)
1193     * </p> 
1194         */
1195        public Date getExpiry() {  
1196                return getExpiryElement().getValue();
1197        }
1198
1199        /**
1200         * Sets the value(s) for <b>expiry</b> ()
1201         *
1202     * <p>
1203     * <b>Definition:</b>
1204     * The date and time beyond which this device is no longer valid or should not be used (if applicable)
1205     * </p> 
1206         */
1207        public Device setExpiry(DateTimeDt theValue) {
1208                myExpiry = theValue;
1209                return this;
1210        }
1211        
1212        
1213
1214        /**
1215         * Sets the value for <b>expiry</b> ()
1216         *
1217     * <p>
1218     * <b>Definition:</b>
1219     * The date and time beyond which this device is no longer valid or should not be used (if applicable)
1220     * </p> 
1221         */
1222        public Device setExpiry( Date theDate,  TemporalPrecisionEnum thePrecision) {
1223                myExpiry = new DateTimeDt(theDate, thePrecision); 
1224                return this; 
1225        }
1226
1227        /**
1228         * Sets the value for <b>expiry</b> ()
1229         *
1230     * <p>
1231     * <b>Definition:</b>
1232     * The date and time beyond which this device is no longer valid or should not be used (if applicable)
1233     * </p> 
1234         */
1235        public Device setExpiryWithSecondsPrecision( Date theDate) {
1236                myExpiry = new DateTimeDt(theDate); 
1237                return this; 
1238        }
1239
1240 
1241        /**
1242         * Gets the value(s) for <b>udi</b> ().
1243         * creating it if it does
1244         * not exist. Will not return <code>null</code>.
1245         *
1246     * <p>
1247     * <b>Definition:</b>
1248     * United States Food and Drug Administration mandated Unique Device Identifier (UDI). Use the human readable information (the content that the user sees, which is sometimes different to the exact syntax represented in the barcode)  - see http://www.fda.gov/MedicalDevices/DeviceRegulationandGuidance/UniqueDeviceIdentification/default.htm
1249     * </p> 
1250         */
1251        public StringDt getUdiElement() {  
1252                if (myUdi == null) {
1253                        myUdi = new StringDt();
1254                }
1255                return myUdi;
1256        }
1257
1258        
1259        /**
1260         * Gets the value(s) for <b>udi</b> ().
1261         * creating it if it does
1262         * not exist. This method may return <code>null</code>.
1263         *
1264     * <p>
1265     * <b>Definition:</b>
1266     * United States Food and Drug Administration mandated Unique Device Identifier (UDI). Use the human readable information (the content that the user sees, which is sometimes different to the exact syntax represented in the barcode)  - see http://www.fda.gov/MedicalDevices/DeviceRegulationandGuidance/UniqueDeviceIdentification/default.htm
1267     * </p> 
1268         */
1269        public String getUdi() {  
1270                return getUdiElement().getValue();
1271        }
1272
1273        /**
1274         * Sets the value(s) for <b>udi</b> ()
1275         *
1276     * <p>
1277     * <b>Definition:</b>
1278     * United States Food and Drug Administration mandated Unique Device Identifier (UDI). Use the human readable information (the content that the user sees, which is sometimes different to the exact syntax represented in the barcode)  - see http://www.fda.gov/MedicalDevices/DeviceRegulationandGuidance/UniqueDeviceIdentification/default.htm
1279     * </p> 
1280         */
1281        public Device setUdi(StringDt theValue) {
1282                myUdi = theValue;
1283                return this;
1284        }
1285        
1286        
1287
1288        /**
1289         * Sets the value for <b>udi</b> ()
1290         *
1291     * <p>
1292     * <b>Definition:</b>
1293     * United States Food and Drug Administration mandated Unique Device Identifier (UDI). Use the human readable information (the content that the user sees, which is sometimes different to the exact syntax represented in the barcode)  - see http://www.fda.gov/MedicalDevices/DeviceRegulationandGuidance/UniqueDeviceIdentification/default.htm
1294     * </p> 
1295         */
1296        public Device setUdi( String theString) {
1297                myUdi = new StringDt(theString); 
1298                return this; 
1299        }
1300
1301 
1302        /**
1303         * Gets the value(s) for <b>lotNumber</b> ().
1304         * creating it if it does
1305         * not exist. Will not return <code>null</code>.
1306         *
1307     * <p>
1308     * <b>Definition:</b>
1309     * Lot number assigned by the manufacturer
1310     * </p> 
1311         */
1312        public StringDt getLotNumberElement() {  
1313                if (myLotNumber == null) {
1314                        myLotNumber = new StringDt();
1315                }
1316                return myLotNumber;
1317        }
1318
1319        
1320        /**
1321         * Gets the value(s) for <b>lotNumber</b> ().
1322         * creating it if it does
1323         * not exist. This method may return <code>null</code>.
1324         *
1325     * <p>
1326     * <b>Definition:</b>
1327     * Lot number assigned by the manufacturer
1328     * </p> 
1329         */
1330        public String getLotNumber() {  
1331                return getLotNumberElement().getValue();
1332        }
1333
1334        /**
1335         * Sets the value(s) for <b>lotNumber</b> ()
1336         *
1337     * <p>
1338     * <b>Definition:</b>
1339     * Lot number assigned by the manufacturer
1340     * </p> 
1341         */
1342        public Device setLotNumber(StringDt theValue) {
1343                myLotNumber = theValue;
1344                return this;
1345        }
1346        
1347        
1348
1349        /**
1350         * Sets the value for <b>lotNumber</b> ()
1351         *
1352     * <p>
1353     * <b>Definition:</b>
1354     * Lot number assigned by the manufacturer
1355     * </p> 
1356         */
1357        public Device setLotNumber( String theString) {
1358                myLotNumber = new StringDt(theString); 
1359                return this; 
1360        }
1361
1362 
1363        /**
1364         * Gets the value(s) for <b>owner</b> ().
1365         * creating it if it does
1366         * not exist. Will not return <code>null</code>.
1367         *
1368     * <p>
1369     * <b>Definition:</b>
1370     * An organization that is responsible for the provision and ongoing maintenance of the device.
1371     * </p> 
1372         */
1373        public ResourceReferenceDt getOwner() {  
1374                if (myOwner == null) {
1375                        myOwner = new ResourceReferenceDt();
1376                }
1377                return myOwner;
1378        }
1379
1380        /**
1381         * Sets the value(s) for <b>owner</b> ()
1382         *
1383     * <p>
1384     * <b>Definition:</b>
1385     * An organization that is responsible for the provision and ongoing maintenance of the device.
1386     * </p> 
1387         */
1388        public Device setOwner(ResourceReferenceDt theValue) {
1389                myOwner = theValue;
1390                return this;
1391        }
1392        
1393        
1394
1395  
1396        /**
1397         * Gets the value(s) for <b>location</b> ().
1398         * creating it if it does
1399         * not exist. Will not return <code>null</code>.
1400         *
1401     * <p>
1402     * <b>Definition:</b>
1403     * The place where the device can be found.
1404     * </p> 
1405         */
1406        public ResourceReferenceDt getLocation() {  
1407                if (myLocation == null) {
1408                        myLocation = new ResourceReferenceDt();
1409                }
1410                return myLocation;
1411        }
1412
1413        /**
1414         * Sets the value(s) for <b>location</b> ()
1415         *
1416     * <p>
1417     * <b>Definition:</b>
1418     * The place where the device can be found.
1419     * </p> 
1420         */
1421        public Device setLocation(ResourceReferenceDt theValue) {
1422                myLocation = theValue;
1423                return this;
1424        }
1425        
1426        
1427
1428  
1429        /**
1430         * Gets the value(s) for <b>patient</b> ().
1431         * creating it if it does
1432         * not exist. Will not return <code>null</code>.
1433         *
1434     * <p>
1435     * <b>Definition:</b>
1436     * Patient information, if the resource is affixed to a person
1437     * </p> 
1438         */
1439        public ResourceReferenceDt getPatient() {  
1440                if (myPatient == null) {
1441                        myPatient = new ResourceReferenceDt();
1442                }
1443                return myPatient;
1444        }
1445
1446        /**
1447         * Sets the value(s) for <b>patient</b> ()
1448         *
1449     * <p>
1450     * <b>Definition:</b>
1451     * Patient information, if the resource is affixed to a person
1452     * </p> 
1453         */
1454        public Device setPatient(ResourceReferenceDt theValue) {
1455                myPatient = theValue;
1456                return this;
1457        }
1458        
1459        
1460
1461  
1462        /**
1463         * Gets the value(s) for <b>contact</b> ().
1464         * creating it if it does
1465         * not exist. Will not return <code>null</code>.
1466         *
1467     * <p>
1468     * <b>Definition:</b>
1469     * Contact details for an organization or a particular human that is responsible for the device
1470     * </p> 
1471         */
1472        public java.util.List<ContactPointDt> getContact() {  
1473                if (myContact == null) {
1474                        myContact = new java.util.ArrayList<ContactPointDt>();
1475                }
1476                return myContact;
1477        }
1478
1479        /**
1480         * Sets the value(s) for <b>contact</b> ()
1481         *
1482     * <p>
1483     * <b>Definition:</b>
1484     * Contact details for an organization or a particular human that is responsible for the device
1485     * </p> 
1486         */
1487        public Device setContact(java.util.List<ContactPointDt> theValue) {
1488                myContact = theValue;
1489                return this;
1490        }
1491        
1492        
1493
1494        /**
1495         * Adds and returns a new value for <b>contact</b> ()
1496         *
1497     * <p>
1498     * <b>Definition:</b>
1499     * Contact details for an organization or a particular human that is responsible for the device
1500     * </p> 
1501         */
1502        public ContactPointDt addContact() {
1503                ContactPointDt newType = new ContactPointDt();
1504                getContact().add(newType);
1505                return newType; 
1506        }
1507
1508        /**
1509         * Adds a given new value for <b>contact</b> ()
1510         *
1511         * <p>
1512         * <b>Definition:</b>
1513         * Contact details for an organization or a particular human that is responsible for the device
1514         * </p>
1515         * @param theValue The contact to add (must not be <code>null</code>)
1516         */
1517        public Device addContact(ContactPointDt theValue) {
1518                if (theValue == null) {
1519                        throw new NullPointerException("theValue must not be null");
1520                }
1521                getContact().add(theValue);
1522                return this;
1523        }
1524
1525        /**
1526         * Gets the first repetition for <b>contact</b> (),
1527         * creating it if it does not already exist.
1528         *
1529     * <p>
1530     * <b>Definition:</b>
1531     * Contact details for an organization or a particular human that is responsible for the device
1532     * </p> 
1533         */
1534        public ContactPointDt getContactFirstRep() {
1535                if (getContact().isEmpty()) {
1536                        return addContact();
1537                }
1538                return getContact().get(0); 
1539        }
1540  
1541        /**
1542         * Gets the value(s) for <b>url</b> ().
1543         * creating it if it does
1544         * not exist. Will not return <code>null</code>.
1545         *
1546     * <p>
1547     * <b>Definition:</b>
1548     * A network address on which the device may be contacted directly
1549     * </p> 
1550         */
1551        public UriDt getUrlElement() {  
1552                if (myUrl == null) {
1553                        myUrl = new UriDt();
1554                }
1555                return myUrl;
1556        }
1557
1558        
1559        /**
1560         * Gets the value(s) for <b>url</b> ().
1561         * creating it if it does
1562         * not exist. This method may return <code>null</code>.
1563         *
1564     * <p>
1565     * <b>Definition:</b>
1566     * A network address on which the device may be contacted directly
1567     * </p> 
1568         */
1569        public String getUrl() {  
1570                return getUrlElement().getValue();
1571        }
1572
1573        /**
1574         * Sets the value(s) for <b>url</b> ()
1575         *
1576     * <p>
1577     * <b>Definition:</b>
1578     * A network address on which the device may be contacted directly
1579     * </p> 
1580         */
1581        public Device setUrl(UriDt theValue) {
1582                myUrl = theValue;
1583                return this;
1584        }
1585        
1586        
1587
1588        /**
1589         * Sets the value for <b>url</b> ()
1590         *
1591     * <p>
1592     * <b>Definition:</b>
1593     * A network address on which the device may be contacted directly
1594     * </p> 
1595         */
1596        public Device setUrl( String theUri) {
1597                myUrl = new UriDt(theUri); 
1598                return this; 
1599        }
1600
1601 
1602
1603
1604    @Override
1605    public String getResourceName() {
1606        return "Device";
1607    }
1608    
1609    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
1610        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
1611    }
1612
1613
1614}