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