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>DeviceMetric</b> Resource
282 * (Measurement, calculation or setting capability of a medical device)
283 *
284 * <p>
285 * <b>Definition:</b>
286 * Describes a measurement, calculation or setting capability of a medical device.
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/DeviceMetric">http://hl7.org/fhir/profiles/DeviceMetric</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="DeviceMetric", profile="http://hl7.org/fhir/profiles/DeviceMetric", id="devicemetric")
301public class DeviceMetric extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource     {
303
304        /**
305         * Search parameter constant for <b>parent</b>
306         * <p>
307         * Description: <b>The parent DeviceMetric resource</b><br>
308         * Type: <b>reference</b><br>
309         * Path: <b>DeviceMetric.parent</b><br>
310         * </p>
311         */
312        @SearchParamDefinition(name="parent", path="DeviceMetric.parent", description="The parent DeviceMetric resource", type="reference"  )
313        public static final String SP_PARENT = "parent";
314
315        /**
316         * <b>Fluent Client</b> search parameter constant for <b>parent</b>
317         * <p>
318         * Description: <b>The parent DeviceMetric resource</b><br>
319         * Type: <b>reference</b><br>
320         * Path: <b>DeviceMetric.parent</b><br>
321         * </p>
322         */
323        public static final ReferenceClientParam PARENT = new ReferenceClientParam(SP_PARENT);
324
325        /**
326         * Search parameter constant for <b>type</b>
327         * <p>
328         * Description: <b>The component type</b><br>
329         * Type: <b>token</b><br>
330         * Path: <b>DeviceMetric.type</b><br>
331         * </p>
332         */
333        @SearchParamDefinition(name="type", path="DeviceMetric.type", description="The component type", type="token"  )
334        public static final String SP_TYPE = "type";
335
336        /**
337         * <b>Fluent Client</b> search parameter constant for <b>type</b>
338         * <p>
339         * Description: <b>The component type</b><br>
340         * Type: <b>token</b><br>
341         * Path: <b>DeviceMetric.type</b><br>
342         * </p>
343         */
344        public static final TokenClientParam TYPE = new TokenClientParam(SP_TYPE);
345
346        /**
347         * Search parameter constant for <b>source</b>
348         * <p>
349         * Description: <b>The device resource</b><br>
350         * Type: <b>reference</b><br>
351         * Path: <b>DeviceMetric.source</b><br>
352         * </p>
353         */
354        @SearchParamDefinition(name="source", path="DeviceMetric.source", description="The device resource", type="reference" , providesMembershipIn={
355 @Compartment(name="Patient")   }
356 )
357        public static final String SP_SOURCE = "source";
358
359        /**
360         * <b>Fluent Client</b> search parameter constant for <b>source</b>
361         * <p>
362         * Description: <b>The device resource</b><br>
363         * Type: <b>reference</b><br>
364         * Path: <b>DeviceMetric.source</b><br>
365         * </p>
366         */
367        public static final ReferenceClientParam SOURCE = new ReferenceClientParam(SP_SOURCE);
368
369        /**
370         * Search parameter constant for <b>category</b>
371         * <p>
372         * Description: <b>The category of the metric</b><br>
373         * Type: <b>token</b><br>
374         * Path: <b>DeviceMetric.category</b><br>
375         * </p>
376         */
377        @SearchParamDefinition(name="category", path="DeviceMetric.category", description="The category of the metric", type="token"  )
378        public static final String SP_CATEGORY = "category";
379
380        /**
381         * <b>Fluent Client</b> search parameter constant for <b>category</b>
382         * <p>
383         * Description: <b>The category of the metric</b><br>
384         * Type: <b>token</b><br>
385         * Path: <b>DeviceMetric.category</b><br>
386         * </p>
387         */
388        public static final TokenClientParam CATEGORY = new TokenClientParam(SP_CATEGORY);
389
390        /**
391         * Search parameter constant for <b>identifier</b>
392         * <p>
393         * Description: <b>The identifier of the metric</b><br>
394         * Type: <b>token</b><br>
395         * Path: <b>DeviceMetric.identifier</b><br>
396         * </p>
397         */
398        @SearchParamDefinition(name="identifier", path="DeviceMetric.identifier", description="The identifier of the metric", type="token"  )
399        public static final String SP_IDENTIFIER = "identifier";
400
401        /**
402         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
403         * <p>
404         * Description: <b>The identifier of the metric</b><br>
405         * Type: <b>token</b><br>
406         * Path: <b>DeviceMetric.identifier</b><br>
407         * </p>
408         */
409        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
410
411
412        /**
413         * Constant for fluent queries to be used to add include statements. Specifies
414         * the path value of "<b>DeviceMetric:parent</b>".
415         */
416        public static final Include INCLUDE_PARENT = new Include("DeviceMetric:parent");
417
418        /**
419         * Constant for fluent queries to be used to add include statements. Specifies
420         * the path value of "<b>DeviceMetric:source</b>".
421         */
422        public static final Include INCLUDE_SOURCE = new Include("DeviceMetric:source");
423
424
425        @Child(name="type", type=CodeableConceptDt.class, order=0, min=1, max=1, summary=false, modifier=false) 
426        @Description(
427                shortDefinition="Type of metric",
428                formalDefinition="Describes the type of the metric. For example: Heart Rate, PEEP Setting, etc."
429        )
430        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "https://rtmms.nist.gov/rtmms/index.htm#!hrosetta")
431        private CodeableConceptDt myType;
432        
433        @Child(name="identifier", type=IdentifierDt.class, order=1, min=1, max=1, summary=false, modifier=false)        
434        @Description(
435                shortDefinition="Unique identifier of this DeviceMetric",
436                formalDefinition="Describes the unique identification of this metric that has been assigned by the device or gateway software. For example: handle ID.  It should be noted that in order to make the identifier unique, the system element of the identifier should be set to the unique identifier of the device."
437        )
438        private IdentifierDt myIdentifier;
439        
440        @Child(name="unit", type=CodeableConceptDt.class, order=2, min=0, max=1, summary=false, modifier=false) 
441        @Description(
442                shortDefinition="Unit of metric",
443                formalDefinition="Describes the unit that an observed value determined for this metric will have. For example: Percent, Seconds, etc."
444        )
445        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "https://rtmms.nist.gov/rtmms/index.htm#!units")
446        private CodeableConceptDt myUnit;
447        
448        @Child(name="source", order=3, min=0, max=1, summary=false, modifier=false, type={
449                ca.uhn.fhir.model.dstu2.resource.Device.class   })
450        @Description(
451                shortDefinition="Describes the link to the source Device",
452                formalDefinition="Describes the link to the  Device that this DeviceMetric belongs to and that contains administrative device information such as manufacture, serial number, etc."
453        )
454        private ResourceReferenceDt mySource;
455        
456        @Child(name="parent", order=4, min=0, max=1, summary=false, modifier=false, type={
457                ca.uhn.fhir.model.dstu2.resource.DeviceComponent.class  })
458        @Description(
459                shortDefinition="Describes the link to the parent DeviceComponent",
460                formalDefinition="Describes the link to the  DeviceComponent that this DeviceMetric belongs to and that provide information about the location of this DeviceMetric in the containment structure of the parent Device. An example would be a DeviceComponent that represents a Channel. This reference can be used by a client application to distinguish DeviceMetrics that have the same type, but should be interpreted based on their containment location."
461        )
462        private ResourceReferenceDt myParent;
463        
464        @Child(name="operationalStatus", type=CodeDt.class, order=5, min=0, max=1, summary=false, modifier=false)       
465        @Description(
466                shortDefinition="on | off | standby",
467                formalDefinition="Indicates current operational state of the device. For example: On, Off, Standby, etc."
468        )
469        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/metric-operational-status")
470        private BoundCodeDt<DeviceMetricOperationalStatusEnum> myOperationalStatus;
471        
472        @Child(name="color", type=CodeDt.class, order=6, min=0, max=1, summary=false, modifier=false)   
473        @Description(
474                shortDefinition="black | red | green | yellow | blue | magenta | cyan | white",
475                formalDefinition="Describes the color representation for the metric. This is often used to aid clinicians to track and identify parameter types by color. In practice, consider a Patient Monitor that has ECG/HR and Pleth for example; the parameters are displayed in different characteristic colors, such as HR-blue, BP-green, and PR and SpO2- magenta."
476        )
477        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/metric-color")
478        private BoundCodeDt<DeviceMetricColorEnum> myColor;
479        
480        @Child(name="category", type=CodeDt.class, order=7, min=1, max=1, summary=false, modifier=false)        
481        @Description(
482                shortDefinition="measurement | setting | calculation | unspecified",
483                formalDefinition="Indicates the category of the observation generation process. A DeviceMetric can be for example a setting, measurement, or calculation."
484        )
485        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/metric-category")
486        private BoundCodeDt<DeviceMetricCategoryEnum> myCategory;
487        
488        @Child(name="measurementPeriod", type=TimingDt.class, order=8, min=0, max=1, summary=false, modifier=false)     
489        @Description(
490                shortDefinition="Describes the measurement repetition time",
491                formalDefinition="Describes the measurement repetition time. This is not necessarily the same as the update period. The measurement repetition time can range from milliseconds up to hours. An example for a measurement repetition time in the range of milliseconds is the sampling rate of an ECG. An example for a measurement repetition time in the range of hours is a NIBP that is triggered automatically every hour. The update period may be different than the measurement repetition time, if the device does not update the published observed value with the same frequency as it was measured."
492        )
493        private TimingDt myMeasurementPeriod;
494        
495        @Child(name="calibration", order=9, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
496        @Description(
497                shortDefinition="Describes the calibrations that have been performed or that are required to be performed",
498                formalDefinition="Describes the calibrations that have been performed or that are required to be performed"
499        )
500        private java.util.List<Calibration> myCalibration;
501        
502
503        @Override
504        public boolean isEmpty() {
505                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myType,  myIdentifier,  myUnit,  mySource,  myParent,  myOperationalStatus,  myColor,  myCategory,  myMeasurementPeriod,  myCalibration);
506        }
507        
508        @Override
509        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
510                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myType, myIdentifier, myUnit, mySource, myParent, myOperationalStatus, myColor, myCategory, myMeasurementPeriod, myCalibration);
511        }
512
513        /**
514         * Gets the value(s) for <b>type</b> (Type of metric).
515         * creating it if it does
516         * not exist. Will not return <code>null</code>.
517         *
518     * <p>
519     * <b>Definition:</b>
520     * Describes the type of the metric. For example: Heart Rate, PEEP Setting, etc.
521     * </p> 
522         */
523        public CodeableConceptDt getType() {  
524                if (myType == null) {
525                        myType = new CodeableConceptDt();
526                }
527                return myType;
528        }
529
530        /**
531         * Sets the value(s) for <b>type</b> (Type of metric)
532         *
533     * <p>
534     * <b>Definition:</b>
535     * Describes the type of the metric. For example: Heart Rate, PEEP Setting, etc.
536     * </p> 
537         */
538        public DeviceMetric setType(CodeableConceptDt theValue) {
539                myType = theValue;
540                return this;
541        }
542        
543        
544
545  
546        /**
547         * Gets the value(s) for <b>identifier</b> (Unique identifier of this DeviceMetric).
548         * creating it if it does
549         * not exist. Will not return <code>null</code>.
550         *
551     * <p>
552     * <b>Definition:</b>
553     * Describes the unique identification of this metric that has been assigned by the device or gateway software. For example: handle ID.  It should be noted that in order to make the identifier unique, the system element of the identifier should be set to the unique identifier of the device.
554     * </p> 
555         */
556        public IdentifierDt getIdentifier() {  
557                if (myIdentifier == null) {
558                        myIdentifier = new IdentifierDt();
559                }
560                return myIdentifier;
561        }
562
563        /**
564         * Sets the value(s) for <b>identifier</b> (Unique identifier of this DeviceMetric)
565         *
566     * <p>
567     * <b>Definition:</b>
568     * Describes the unique identification of this metric that has been assigned by the device or gateway software. For example: handle ID.  It should be noted that in order to make the identifier unique, the system element of the identifier should be set to the unique identifier of the device.
569     * </p> 
570         */
571        public DeviceMetric setIdentifier(IdentifierDt theValue) {
572                myIdentifier = theValue;
573                return this;
574        }
575        
576        
577
578  
579        /**
580         * Gets the value(s) for <b>unit</b> (Unit of metric).
581         * creating it if it does
582         * not exist. Will not return <code>null</code>.
583         *
584     * <p>
585     * <b>Definition:</b>
586     * Describes the unit that an observed value determined for this metric will have. For example: Percent, Seconds, etc.
587     * </p> 
588         */
589        public CodeableConceptDt getUnit() {  
590                if (myUnit == null) {
591                        myUnit = new CodeableConceptDt();
592                }
593                return myUnit;
594        }
595
596        /**
597         * Sets the value(s) for <b>unit</b> (Unit of metric)
598         *
599     * <p>
600     * <b>Definition:</b>
601     * Describes the unit that an observed value determined for this metric will have. For example: Percent, Seconds, etc.
602     * </p> 
603         */
604        public DeviceMetric setUnit(CodeableConceptDt theValue) {
605                myUnit = theValue;
606                return this;
607        }
608        
609        
610
611  
612        /**
613         * Gets the value(s) for <b>source</b> (Describes the link to the source Device).
614         * creating it if it does
615         * not exist. Will not return <code>null</code>.
616         *
617     * <p>
618     * <b>Definition:</b>
619     * Describes the link to the  Device that this DeviceMetric belongs to and that contains administrative device information such as manufacture, serial number, etc.
620     * </p> 
621         */
622        public ResourceReferenceDt getSource() {  
623                if (mySource == null) {
624                        mySource = new ResourceReferenceDt();
625                }
626                return mySource;
627        }
628
629        /**
630         * Sets the value(s) for <b>source</b> (Describes the link to the source Device)
631         *
632     * <p>
633     * <b>Definition:</b>
634     * Describes the link to the  Device that this DeviceMetric belongs to and that contains administrative device information such as manufacture, serial number, etc.
635     * </p> 
636         */
637        public DeviceMetric setSource(ResourceReferenceDt theValue) {
638                mySource = theValue;
639                return this;
640        }
641        
642        
643
644  
645        /**
646         * Gets the value(s) for <b>parent</b> (Describes the link to the parent DeviceComponent).
647         * creating it if it does
648         * not exist. Will not return <code>null</code>.
649         *
650     * <p>
651     * <b>Definition:</b>
652     * Describes the link to the  DeviceComponent that this DeviceMetric belongs to and that provide information about the location of this DeviceMetric in the containment structure of the parent Device. An example would be a DeviceComponent that represents a Channel. This reference can be used by a client application to distinguish DeviceMetrics that have the same type, but should be interpreted based on their containment location.
653     * </p> 
654         */
655        public ResourceReferenceDt getParent() {  
656                if (myParent == null) {
657                        myParent = new ResourceReferenceDt();
658                }
659                return myParent;
660        }
661
662        /**
663         * Sets the value(s) for <b>parent</b> (Describes the link to the parent DeviceComponent)
664         *
665     * <p>
666     * <b>Definition:</b>
667     * Describes the link to the  DeviceComponent that this DeviceMetric belongs to and that provide information about the location of this DeviceMetric in the containment structure of the parent Device. An example would be a DeviceComponent that represents a Channel. This reference can be used by a client application to distinguish DeviceMetrics that have the same type, but should be interpreted based on their containment location.
668     * </p> 
669         */
670        public DeviceMetric setParent(ResourceReferenceDt theValue) {
671                myParent = theValue;
672                return this;
673        }
674        
675        
676
677  
678        /**
679         * Gets the value(s) for <b>operationalStatus</b> (on | off | standby).
680         * creating it if it does
681         * not exist. Will not return <code>null</code>.
682         *
683     * <p>
684     * <b>Definition:</b>
685     * Indicates current operational state of the device. For example: On, Off, Standby, etc.
686     * </p> 
687         */
688        public BoundCodeDt<DeviceMetricOperationalStatusEnum> getOperationalStatusElement() {  
689                if (myOperationalStatus == null) {
690                        myOperationalStatus = new BoundCodeDt<DeviceMetricOperationalStatusEnum>(DeviceMetricOperationalStatusEnum.VALUESET_BINDER);
691                }
692                return myOperationalStatus;
693        }
694
695        
696        /**
697         * Gets the value(s) for <b>operationalStatus</b> (on | off | standby).
698         * creating it if it does
699         * not exist. This method may return <code>null</code>.
700         *
701     * <p>
702     * <b>Definition:</b>
703     * Indicates current operational state of the device. For example: On, Off, Standby, etc.
704     * </p> 
705         */
706        public String getOperationalStatus() {  
707                return getOperationalStatusElement().getValue();
708        }
709
710        /**
711         * Sets the value(s) for <b>operationalStatus</b> (on | off | standby)
712         *
713     * <p>
714     * <b>Definition:</b>
715     * Indicates current operational state of the device. For example: On, Off, Standby, etc.
716     * </p> 
717         */
718        public DeviceMetric setOperationalStatus(BoundCodeDt<DeviceMetricOperationalStatusEnum> theValue) {
719                myOperationalStatus = theValue;
720                return this;
721        }
722        
723        
724
725        /**
726         * Sets the value(s) for <b>operationalStatus</b> (on | off | standby)
727         *
728     * <p>
729     * <b>Definition:</b>
730     * Indicates current operational state of the device. For example: On, Off, Standby, etc.
731     * </p> 
732         */
733        public DeviceMetric setOperationalStatus(DeviceMetricOperationalStatusEnum theValue) {
734                setOperationalStatus(new BoundCodeDt<DeviceMetricOperationalStatusEnum>(DeviceMetricOperationalStatusEnum.VALUESET_BINDER, theValue));
735                
736/*
737                getOperationalStatusElement().setValueAsEnum(theValue);
738*/
739                return this;
740        }
741
742  
743        /**
744         * Gets the value(s) for <b>color</b> (black | red | green | yellow | blue | magenta | cyan | white).
745         * creating it if it does
746         * not exist. Will not return <code>null</code>.
747         *
748     * <p>
749     * <b>Definition:</b>
750     * Describes the color representation for the metric. This is often used to aid clinicians to track and identify parameter types by color. In practice, consider a Patient Monitor that has ECG/HR and Pleth for example; the parameters are displayed in different characteristic colors, such as HR-blue, BP-green, and PR and SpO2- magenta.
751     * </p> 
752         */
753        public BoundCodeDt<DeviceMetricColorEnum> getColorElement() {  
754                if (myColor == null) {
755                        myColor = new BoundCodeDt<DeviceMetricColorEnum>(DeviceMetricColorEnum.VALUESET_BINDER);
756                }
757                return myColor;
758        }
759
760        
761        /**
762         * Gets the value(s) for <b>color</b> (black | red | green | yellow | blue | magenta | cyan | white).
763         * creating it if it does
764         * not exist. This method may return <code>null</code>.
765         *
766     * <p>
767     * <b>Definition:</b>
768     * Describes the color representation for the metric. This is often used to aid clinicians to track and identify parameter types by color. In practice, consider a Patient Monitor that has ECG/HR and Pleth for example; the parameters are displayed in different characteristic colors, such as HR-blue, BP-green, and PR and SpO2- magenta.
769     * </p> 
770         */
771        public String getColor() {  
772                return getColorElement().getValue();
773        }
774
775        /**
776         * Sets the value(s) for <b>color</b> (black | red | green | yellow | blue | magenta | cyan | white)
777         *
778     * <p>
779     * <b>Definition:</b>
780     * Describes the color representation for the metric. This is often used to aid clinicians to track and identify parameter types by color. In practice, consider a Patient Monitor that has ECG/HR and Pleth for example; the parameters are displayed in different characteristic colors, such as HR-blue, BP-green, and PR and SpO2- magenta.
781     * </p> 
782         */
783        public DeviceMetric setColor(BoundCodeDt<DeviceMetricColorEnum> theValue) {
784                myColor = theValue;
785                return this;
786        }
787        
788        
789
790        /**
791         * Sets the value(s) for <b>color</b> (black | red | green | yellow | blue | magenta | cyan | white)
792         *
793     * <p>
794     * <b>Definition:</b>
795     * Describes the color representation for the metric. This is often used to aid clinicians to track and identify parameter types by color. In practice, consider a Patient Monitor that has ECG/HR and Pleth for example; the parameters are displayed in different characteristic colors, such as HR-blue, BP-green, and PR and SpO2- magenta.
796     * </p> 
797         */
798        public DeviceMetric setColor(DeviceMetricColorEnum theValue) {
799                setColor(new BoundCodeDt<DeviceMetricColorEnum>(DeviceMetricColorEnum.VALUESET_BINDER, theValue));
800                
801/*
802                getColorElement().setValueAsEnum(theValue);
803*/
804                return this;
805        }
806
807  
808        /**
809         * Gets the value(s) for <b>category</b> (measurement | setting | calculation | unspecified).
810         * creating it if it does
811         * not exist. Will not return <code>null</code>.
812         *
813     * <p>
814     * <b>Definition:</b>
815     * Indicates the category of the observation generation process. A DeviceMetric can be for example a setting, measurement, or calculation.
816     * </p> 
817         */
818        public BoundCodeDt<DeviceMetricCategoryEnum> getCategoryElement() {  
819                if (myCategory == null) {
820                        myCategory = new BoundCodeDt<DeviceMetricCategoryEnum>(DeviceMetricCategoryEnum.VALUESET_BINDER);
821                }
822                return myCategory;
823        }
824
825        
826        /**
827         * Gets the value(s) for <b>category</b> (measurement | setting | calculation | unspecified).
828         * creating it if it does
829         * not exist. This method may return <code>null</code>.
830         *
831     * <p>
832     * <b>Definition:</b>
833     * Indicates the category of the observation generation process. A DeviceMetric can be for example a setting, measurement, or calculation.
834     * </p> 
835         */
836        public String getCategory() {  
837                return getCategoryElement().getValue();
838        }
839
840        /**
841         * Sets the value(s) for <b>category</b> (measurement | setting | calculation | unspecified)
842         *
843     * <p>
844     * <b>Definition:</b>
845     * Indicates the category of the observation generation process. A DeviceMetric can be for example a setting, measurement, or calculation.
846     * </p> 
847         */
848        public DeviceMetric setCategory(BoundCodeDt<DeviceMetricCategoryEnum> theValue) {
849                myCategory = theValue;
850                return this;
851        }
852        
853        
854
855        /**
856         * Sets the value(s) for <b>category</b> (measurement | setting | calculation | unspecified)
857         *
858     * <p>
859     * <b>Definition:</b>
860     * Indicates the category of the observation generation process. A DeviceMetric can be for example a setting, measurement, or calculation.
861     * </p> 
862         */
863        public DeviceMetric setCategory(DeviceMetricCategoryEnum theValue) {
864                setCategory(new BoundCodeDt<DeviceMetricCategoryEnum>(DeviceMetricCategoryEnum.VALUESET_BINDER, theValue));
865                
866/*
867                getCategoryElement().setValueAsEnum(theValue);
868*/
869                return this;
870        }
871
872  
873        /**
874         * Gets the value(s) for <b>measurementPeriod</b> (Describes the measurement repetition time).
875         * creating it if it does
876         * not exist. Will not return <code>null</code>.
877         *
878     * <p>
879     * <b>Definition:</b>
880     * Describes the measurement repetition time. This is not necessarily the same as the update period. The measurement repetition time can range from milliseconds up to hours. An example for a measurement repetition time in the range of milliseconds is the sampling rate of an ECG. An example for a measurement repetition time in the range of hours is a NIBP that is triggered automatically every hour. The update period may be different than the measurement repetition time, if the device does not update the published observed value with the same frequency as it was measured.
881     * </p> 
882         */
883        public TimingDt getMeasurementPeriod() {  
884                if (myMeasurementPeriod == null) {
885                        myMeasurementPeriod = new TimingDt();
886                }
887                return myMeasurementPeriod;
888        }
889
890        /**
891         * Sets the value(s) for <b>measurementPeriod</b> (Describes the measurement repetition time)
892         *
893     * <p>
894     * <b>Definition:</b>
895     * Describes the measurement repetition time. This is not necessarily the same as the update period. The measurement repetition time can range from milliseconds up to hours. An example for a measurement repetition time in the range of milliseconds is the sampling rate of an ECG. An example for a measurement repetition time in the range of hours is a NIBP that is triggered automatically every hour. The update period may be different than the measurement repetition time, if the device does not update the published observed value with the same frequency as it was measured.
896     * </p> 
897         */
898        public DeviceMetric setMeasurementPeriod(TimingDt theValue) {
899                myMeasurementPeriod = theValue;
900                return this;
901        }
902        
903        
904
905  
906        /**
907         * Gets the value(s) for <b>calibration</b> (Describes the calibrations that have been performed or that are required to be performed).
908         * creating it if it does
909         * not exist. Will not return <code>null</code>.
910         *
911     * <p>
912     * <b>Definition:</b>
913     * Describes the calibrations that have been performed or that are required to be performed
914     * </p> 
915         */
916        public java.util.List<Calibration> getCalibration() {  
917                if (myCalibration == null) {
918                        myCalibration = new java.util.ArrayList<Calibration>();
919                }
920                return myCalibration;
921        }
922
923        /**
924         * Sets the value(s) for <b>calibration</b> (Describes the calibrations that have been performed or that are required to be performed)
925         *
926     * <p>
927     * <b>Definition:</b>
928     * Describes the calibrations that have been performed or that are required to be performed
929     * </p> 
930         */
931        public DeviceMetric setCalibration(java.util.List<Calibration> theValue) {
932                myCalibration = theValue;
933                return this;
934        }
935        
936        
937
938        /**
939         * Adds and returns a new value for <b>calibration</b> (Describes the calibrations that have been performed or that are required to be performed)
940         *
941     * <p>
942     * <b>Definition:</b>
943     * Describes the calibrations that have been performed or that are required to be performed
944     * </p> 
945         */
946        public Calibration addCalibration() {
947                Calibration newType = new Calibration();
948                getCalibration().add(newType);
949                return newType; 
950        }
951
952        /**
953         * Adds a given new value for <b>calibration</b> (Describes the calibrations that have been performed or that are required to be performed)
954         *
955         * <p>
956         * <b>Definition:</b>
957         * Describes the calibrations that have been performed or that are required to be performed
958         * </p>
959         * @param theValue The calibration to add (must not be <code>null</code>)
960         */
961        public DeviceMetric addCalibration(Calibration theValue) {
962                if (theValue == null) {
963                        throw new NullPointerException("theValue must not be null");
964                }
965                getCalibration().add(theValue);
966                return this;
967        }
968
969        /**
970         * Gets the first repetition for <b>calibration</b> (Describes the calibrations that have been performed or that are required to be performed),
971         * creating it if it does not already exist.
972         *
973     * <p>
974     * <b>Definition:</b>
975     * Describes the calibrations that have been performed or that are required to be performed
976     * </p> 
977         */
978        public Calibration getCalibrationFirstRep() {
979                if (getCalibration().isEmpty()) {
980                        return addCalibration();
981                }
982                return getCalibration().get(0); 
983        }
984  
985        /**
986         * Block class for child element: <b>DeviceMetric.calibration</b> (Describes the calibrations that have been performed or that are required to be performed)
987         *
988     * <p>
989     * <b>Definition:</b>
990     * Describes the calibrations that have been performed or that are required to be performed
991     * </p> 
992         */
993        @Block()        
994        public static class Calibration 
995            extends  BaseIdentifiableElement        implements IResourceBlock {
996        
997        @Child(name="type", type=CodeDt.class, order=0, min=0, max=1, summary=false, modifier=false)    
998        @Description(
999                shortDefinition="unspecified | offset | gain | two-point",
1000                formalDefinition="Describes the type of the calibration method."
1001        )
1002        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/metric-calibration-type")
1003        private BoundCodeDt<DeviceMetricCalibrationTypeEnum> myType;
1004        
1005        @Child(name="state", type=CodeDt.class, order=1, min=0, max=1, summary=false, modifier=false)   
1006        @Description(
1007                shortDefinition="not-calibrated | calibration-required | calibrated | unspecified",
1008                formalDefinition="Describes the state of the calibration."
1009        )
1010        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/metric-calibration-state")
1011        private BoundCodeDt<DeviceMetricCalibrationStateEnum> myState;
1012        
1013        @Child(name="time", type=InstantDt.class, order=2, min=0, max=1, summary=false, modifier=false) 
1014        @Description(
1015                shortDefinition="Describes the time last calibration has been performed",
1016                formalDefinition="Describes the time last calibration has been performed."
1017        )
1018        private InstantDt myTime;
1019        
1020
1021        @Override
1022        public boolean isEmpty() {
1023                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myType,  myState,  myTime);
1024        }
1025        
1026        @Override
1027        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1028                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myType, myState, myTime);
1029        }
1030
1031        /**
1032         * Gets the value(s) for <b>type</b> (unspecified | offset | gain | two-point).
1033         * creating it if it does
1034         * not exist. Will not return <code>null</code>.
1035         *
1036     * <p>
1037     * <b>Definition:</b>
1038     * Describes the type of the calibration method.
1039     * </p> 
1040         */
1041        public BoundCodeDt<DeviceMetricCalibrationTypeEnum> getTypeElement() {  
1042                if (myType == null) {
1043                        myType = new BoundCodeDt<DeviceMetricCalibrationTypeEnum>(DeviceMetricCalibrationTypeEnum.VALUESET_BINDER);
1044                }
1045                return myType;
1046        }
1047
1048        
1049        /**
1050         * Gets the value(s) for <b>type</b> (unspecified | offset | gain | two-point).
1051         * creating it if it does
1052         * not exist. This method may return <code>null</code>.
1053         *
1054     * <p>
1055     * <b>Definition:</b>
1056     * Describes the type of the calibration method.
1057     * </p> 
1058         */
1059        public String getType() {  
1060                return getTypeElement().getValue();
1061        }
1062
1063        /**
1064         * Sets the value(s) for <b>type</b> (unspecified | offset | gain | two-point)
1065         *
1066     * <p>
1067     * <b>Definition:</b>
1068     * Describes the type of the calibration method.
1069     * </p> 
1070         */
1071        public Calibration setType(BoundCodeDt<DeviceMetricCalibrationTypeEnum> theValue) {
1072                myType = theValue;
1073                return this;
1074        }
1075        
1076        
1077
1078        /**
1079         * Sets the value(s) for <b>type</b> (unspecified | offset | gain | two-point)
1080         *
1081     * <p>
1082     * <b>Definition:</b>
1083     * Describes the type of the calibration method.
1084     * </p> 
1085         */
1086        public Calibration setType(DeviceMetricCalibrationTypeEnum theValue) {
1087                setType(new BoundCodeDt<DeviceMetricCalibrationTypeEnum>(DeviceMetricCalibrationTypeEnum.VALUESET_BINDER, theValue));
1088                
1089/*
1090                getTypeElement().setValueAsEnum(theValue);
1091*/
1092                return this;
1093        }
1094
1095  
1096        /**
1097         * Gets the value(s) for <b>state</b> (not-calibrated | calibration-required | calibrated | unspecified).
1098         * creating it if it does
1099         * not exist. Will not return <code>null</code>.
1100         *
1101     * <p>
1102     * <b>Definition:</b>
1103     * Describes the state of the calibration.
1104     * </p> 
1105         */
1106        public BoundCodeDt<DeviceMetricCalibrationStateEnum> getStateElement() {  
1107                if (myState == null) {
1108                        myState = new BoundCodeDt<DeviceMetricCalibrationStateEnum>(DeviceMetricCalibrationStateEnum.VALUESET_BINDER);
1109                }
1110                return myState;
1111        }
1112
1113        
1114        /**
1115         * Gets the value(s) for <b>state</b> (not-calibrated | calibration-required | calibrated | unspecified).
1116         * creating it if it does
1117         * not exist. This method may return <code>null</code>.
1118         *
1119     * <p>
1120     * <b>Definition:</b>
1121     * Describes the state of the calibration.
1122     * </p> 
1123         */
1124        public String getState() {  
1125                return getStateElement().getValue();
1126        }
1127
1128        /**
1129         * Sets the value(s) for <b>state</b> (not-calibrated | calibration-required | calibrated | unspecified)
1130         *
1131     * <p>
1132     * <b>Definition:</b>
1133     * Describes the state of the calibration.
1134     * </p> 
1135         */
1136        public Calibration setState(BoundCodeDt<DeviceMetricCalibrationStateEnum> theValue) {
1137                myState = theValue;
1138                return this;
1139        }
1140        
1141        
1142
1143        /**
1144         * Sets the value(s) for <b>state</b> (not-calibrated | calibration-required | calibrated | unspecified)
1145         *
1146     * <p>
1147     * <b>Definition:</b>
1148     * Describes the state of the calibration.
1149     * </p> 
1150         */
1151        public Calibration setState(DeviceMetricCalibrationStateEnum theValue) {
1152                setState(new BoundCodeDt<DeviceMetricCalibrationStateEnum>(DeviceMetricCalibrationStateEnum.VALUESET_BINDER, theValue));
1153                
1154/*
1155                getStateElement().setValueAsEnum(theValue);
1156*/
1157                return this;
1158        }
1159
1160  
1161        /**
1162         * Gets the value(s) for <b>time</b> (Describes the time last calibration has been performed).
1163         * creating it if it does
1164         * not exist. Will not return <code>null</code>.
1165         *
1166     * <p>
1167     * <b>Definition:</b>
1168     * Describes the time last calibration has been performed.
1169     * </p> 
1170         */
1171        public InstantDt getTimeElement() {  
1172                if (myTime == null) {
1173                        myTime = new InstantDt();
1174                }
1175                return myTime;
1176        }
1177
1178        
1179        /**
1180         * Gets the value(s) for <b>time</b> (Describes the time last calibration has been performed).
1181         * creating it if it does
1182         * not exist. This method may return <code>null</code>.
1183         *
1184     * <p>
1185     * <b>Definition:</b>
1186     * Describes the time last calibration has been performed.
1187     * </p> 
1188         */
1189        public Date getTime() {  
1190                return getTimeElement().getValue();
1191        }
1192
1193        /**
1194         * Sets the value(s) for <b>time</b> (Describes the time last calibration has been performed)
1195         *
1196     * <p>
1197     * <b>Definition:</b>
1198     * Describes the time last calibration has been performed.
1199     * </p> 
1200         */
1201        public Calibration setTime(InstantDt theValue) {
1202                myTime = theValue;
1203                return this;
1204        }
1205        
1206        
1207
1208        /**
1209         * Sets the value for <b>time</b> (Describes the time last calibration has been performed)
1210         *
1211     * <p>
1212     * <b>Definition:</b>
1213     * Describes the time last calibration has been performed.
1214     * </p> 
1215         */
1216        public Calibration setTime( Date theDate,  TemporalPrecisionEnum thePrecision) {
1217                myTime = new InstantDt(theDate, thePrecision); 
1218                return this; 
1219        }
1220
1221        /**
1222         * Sets the value for <b>time</b> (Describes the time last calibration has been performed)
1223         *
1224     * <p>
1225     * <b>Definition:</b>
1226     * Describes the time last calibration has been performed.
1227     * </p> 
1228         */
1229        public Calibration setTimeWithMillisPrecision( Date theDate) {
1230                myTime = new InstantDt(theDate); 
1231                return this; 
1232        }
1233
1234 
1235
1236
1237        }
1238
1239
1240
1241
1242    @Override
1243    public String getResourceName() {
1244        return "DeviceMetric";
1245    }
1246    
1247    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
1248        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
1249    }
1250
1251
1252}