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>Observation</b> Resource
282 * (clinical.diagnostics)
283 *
284 * <p>
285 * <b>Definition:</b>
286 * Measurements and simple assertions made about a patient, device or other subject.
287 * </p> 
288 *
289 * <p>
290 * <b>Requirements:</b>
291 * Observations are a key aspect of healthcare.  This resource is used to capture those that do not require more sophisticated mechanisms.
292 * </p> 
293 *
294 * <p>
295 * <b>Profile Definition:</b>
296 * <a href="http://hl7.org/fhir/profiles/Observation">http://hl7.org/fhir/profiles/Observation</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="Observation", profile="http://hl7.org/fhir/profiles/Observation", id="observation")
301public class Observation extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource 
303    {
304
305        /**
306         * Search parameter constant for <b>code</b>
307         * <p>
308         * Description: <b>The code of the observation type</b><br>
309         * Type: <b>token</b><br>
310         * Path: <b>Observation.code</b><br>
311         * </p>
312         */
313        @SearchParamDefinition(name="code", path="Observation.code", description="The code of the observation type", type="token" 
314 )
315        public static final String SP_CODE = "code";
316
317        /**
318         * <b>Fluent Client</b> search parameter constant for <b>code</b>
319         * <p>
320         * Description: <b>The code of the observation type</b><br>
321         * Type: <b>token</b><br>
322         * Path: <b>Observation.code</b><br>
323         * </p>
324         */
325        public static final TokenClientParam CODE = new TokenClientParam(SP_CODE);
326
327        /**
328         * Search parameter constant for <b>component-code</b>
329         * <p>
330         * Description: <b>The component code of the observation type</b><br>
331         * Type: <b>token</b><br>
332         * Path: <b>Observation.component.code</b><br>
333         * </p>
334         */
335        @SearchParamDefinition(name="component-code", path="Observation.component.code", description="The component code of the observation type", type="token" 
336 )
337        public static final String SP_COMPONENT_CODE = "component-code";
338
339        /**
340         * <b>Fluent Client</b> search parameter constant for <b>component-code</b>
341         * <p>
342         * Description: <b>The component code of the observation type</b><br>
343         * Type: <b>token</b><br>
344         * Path: <b>Observation.component.code</b><br>
345         * </p>
346         */
347        public static final TokenClientParam COMPONENT_CODE = new TokenClientParam(SP_COMPONENT_CODE);
348
349        /**
350         * Search parameter constant for <b>value-quantity</b>
351         * <p>
352         * Description: <b>The value of the observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data)</b><br>
353         * Type: <b>quantity</b><br>
354         * Path: <b>Observation.valueQuantity</b><br>
355         * </p>
356         */
357        @SearchParamDefinition(name="value-quantity", path="Observation.valueQuantity", description="The value of the observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data)", type="quantity" 
358 )
359        public static final String SP_VALUE_QUANTITY = "value-quantity";
360
361        /**
362         * <b>Fluent Client</b> search parameter constant for <b>value-quantity</b>
363         * <p>
364         * Description: <b>The value of the observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data)</b><br>
365         * Type: <b>quantity</b><br>
366         * Path: <b>Observation.valueQuantity</b><br>
367         * </p>
368         */
369        public static final QuantityClientParam VALUE_QUANTITY = new QuantityClientParam(SP_VALUE_QUANTITY);
370
371        /**
372         * Search parameter constant for <b>component-value-quantity</b>
373         * <p>
374         * Description: <b>The value of the component observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data)</b><br>
375         * Type: <b>quantity</b><br>
376         * Path: <b>Observation.component.valueQuantity</b><br>
377         * </p>
378         */
379        @SearchParamDefinition(name="component-value-quantity", path="Observation.component.valueQuantity", description="The value of the component observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data)", type="quantity" 
380 )
381        public static final String SP_COMPONENT_VALUE_QUANTITY = "component-value-quantity";
382
383        /**
384         * <b>Fluent Client</b> search parameter constant for <b>component-value-quantity</b>
385         * <p>
386         * Description: <b>The value of the component observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data)</b><br>
387         * Type: <b>quantity</b><br>
388         * Path: <b>Observation.component.valueQuantity</b><br>
389         * </p>
390         */
391        public static final QuantityClientParam COMPONENT_VALUE_QUANTITY = new QuantityClientParam(SP_COMPONENT_VALUE_QUANTITY);
392
393        /**
394         * Search parameter constant for <b>value-concept</b>
395         * <p>
396         * Description: <b>The value of the observation, if the value is a CodeableConcept</b><br>
397         * Type: <b>token</b><br>
398         * Path: <b>Observation.valueCodeableConcept</b><br>
399         * </p>
400         */
401        @SearchParamDefinition(name="value-concept", path="Observation.valueCodeableConcept", description="The value of the observation, if the value is a CodeableConcept", type="token" 
402 )
403        public static final String SP_VALUE_CONCEPT = "value-concept";
404
405        /**
406         * <b>Fluent Client</b> search parameter constant for <b>value-concept</b>
407         * <p>
408         * Description: <b>The value of the observation, if the value is a CodeableConcept</b><br>
409         * Type: <b>token</b><br>
410         * Path: <b>Observation.valueCodeableConcept</b><br>
411         * </p>
412         */
413        public static final TokenClientParam VALUE_CONCEPT = new TokenClientParam(SP_VALUE_CONCEPT);
414
415        /**
416         * Search parameter constant for <b>component-value-concept</b>
417         * <p>
418         * Description: <b>The value of the component observation, if the value is a CodeableConcept</b><br>
419         * Type: <b>token</b><br>
420         * Path: <b>Observation.component.valueCodeableConcept</b><br>
421         * </p>
422         */
423        @SearchParamDefinition(name="component-value-concept", path="Observation.component.valueCodeableConcept", description="The value of the component observation, if the value is a CodeableConcept", type="token" 
424 )
425        public static final String SP_COMPONENT_VALUE_CONCEPT = "component-value-concept";
426
427        /**
428         * <b>Fluent Client</b> search parameter constant for <b>component-value-concept</b>
429         * <p>
430         * Description: <b>The value of the component observation, if the value is a CodeableConcept</b><br>
431         * Type: <b>token</b><br>
432         * Path: <b>Observation.component.valueCodeableConcept</b><br>
433         * </p>
434         */
435        public static final TokenClientParam COMPONENT_VALUE_CONCEPT = new TokenClientParam(SP_COMPONENT_VALUE_CONCEPT);
436
437        /**
438         * Search parameter constant for <b>value-date</b>
439         * <p>
440         * Description: <b>The value of the observation, if the value is a date or period of time</b><br>
441         * Type: <b>date</b><br>
442         * Path: <b>Observation.valueDateTime | Observation.valuePeriod</b><br>
443         * </p>
444         */
445        @SearchParamDefinition(name="value-date", path="Observation.valueDateTime | Observation.valuePeriod", description="The value of the observation, if the value is a date or period of time", type="date" 
446 )
447        public static final String SP_VALUE_DATE = "value-date";
448
449        /**
450         * <b>Fluent Client</b> search parameter constant for <b>value-date</b>
451         * <p>
452         * Description: <b>The value of the observation, if the value is a date or period of time</b><br>
453         * Type: <b>date</b><br>
454         * Path: <b>Observation.valueDateTime | Observation.valuePeriod</b><br>
455         * </p>
456         */
457        public static final DateClientParam VALUE_DATE = new DateClientParam(SP_VALUE_DATE);
458
459        /**
460         * Search parameter constant for <b>value-string</b>
461         * <p>
462         * Description: <b>The value of the observation, if the value is a string, and also searches in CodeableConcept.text</b><br>
463         * Type: <b>string</b><br>
464         * Path: <b>Observation.valueString</b><br>
465         * </p>
466         */
467        @SearchParamDefinition(name="value-string", path="Observation.valueString", description="The value of the observation, if the value is a string, and also searches in CodeableConcept.text", type="string" 
468 )
469        public static final String SP_VALUE_STRING = "value-string";
470
471        /**
472         * <b>Fluent Client</b> search parameter constant for <b>value-string</b>
473         * <p>
474         * Description: <b>The value of the observation, if the value is a string, and also searches in CodeableConcept.text</b><br>
475         * Type: <b>string</b><br>
476         * Path: <b>Observation.valueString</b><br>
477         * </p>
478         */
479        public static final StringClientParam VALUE_STRING = new StringClientParam(SP_VALUE_STRING);
480
481        /**
482         * Search parameter constant for <b>component-value-string</b>
483         * <p>
484         * Description: <b>The value of the component observation, if the value is a string, and also searches in CodeableConcept.text</b><br>
485         * Type: <b>string</b><br>
486         * Path: <b>Observation.component.valueString</b><br>
487         * </p>
488         */
489        @SearchParamDefinition(name="component-value-string", path="Observation.component.valueString", description="The value of the component observation, if the value is a string, and also searches in CodeableConcept.text", type="string" 
490 )
491        public static final String SP_COMPONENT_VALUE_STRING = "component-value-string";
492
493        /**
494         * <b>Fluent Client</b> search parameter constant for <b>component-value-string</b>
495         * <p>
496         * Description: <b>The value of the component observation, if the value is a string, and also searches in CodeableConcept.text</b><br>
497         * Type: <b>string</b><br>
498         * Path: <b>Observation.component.valueString</b><br>
499         * </p>
500         */
501        public static final StringClientParam COMPONENT_VALUE_STRING = new StringClientParam(SP_COMPONENT_VALUE_STRING);
502
503        /**
504         * Search parameter constant for <b>date</b>
505         * <p>
506         * Description: <b>Obtained date/time. If the obtained element is a period, a date that falls in the period</b><br>
507         * Type: <b>date</b><br>
508         * Path: <b>Observation.effective[x]</b><br>
509         * </p>
510         */
511        @SearchParamDefinition(name="date", path="Observation.effective[x]", description="Obtained date/time. If the obtained element is a period, a date that falls in the period", type="date" 
512 )
513        public static final String SP_DATE = "date";
514
515        /**
516         * <b>Fluent Client</b> search parameter constant for <b>date</b>
517         * <p>
518         * Description: <b>Obtained date/time. If the obtained element is a period, a date that falls in the period</b><br>
519         * Type: <b>date</b><br>
520         * Path: <b>Observation.effective[x]</b><br>
521         * </p>
522         */
523        public static final DateClientParam DATE = new DateClientParam(SP_DATE);
524
525        /**
526         * Search parameter constant for <b>status</b>
527         * <p>
528         * Description: <b>The status of the observation</b><br>
529         * Type: <b>token</b><br>
530         * Path: <b>Observation.status</b><br>
531         * </p>
532         */
533        @SearchParamDefinition(name="status", path="Observation.status", description="The status of the observation", type="token" 
534 )
535        public static final String SP_STATUS = "status";
536
537        /**
538         * <b>Fluent Client</b> search parameter constant for <b>status</b>
539         * <p>
540         * Description: <b>The status of the observation</b><br>
541         * Type: <b>token</b><br>
542         * Path: <b>Observation.status</b><br>
543         * </p>
544         */
545        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
546
547        /**
548         * Search parameter constant for <b>subject</b>
549         * <p>
550         * Description: <b>The subject that the observation is about</b><br>
551         * Type: <b>reference</b><br>
552         * Path: <b>Observation.subject</b><br>
553         * </p>
554         */
555        @SearchParamDefinition(name="subject", path="Observation.subject", description="The subject that the observation is about", type="reference" 
556, providesMembershipIn={
557 @Compartment(name="Patient") ,  @Compartment(name="Device")    }
558 )
559        public static final String SP_SUBJECT = "subject";
560
561        /**
562         * <b>Fluent Client</b> search parameter constant for <b>subject</b>
563         * <p>
564         * Description: <b>The subject that the observation is about</b><br>
565         * Type: <b>reference</b><br>
566         * Path: <b>Observation.subject</b><br>
567         * </p>
568         */
569        public static final ReferenceClientParam SUBJECT = new ReferenceClientParam(SP_SUBJECT);
570
571        /**
572         * Search parameter constant for <b>performer</b>
573         * <p>
574         * Description: <b>Who performed the observation</b><br>
575         * Type: <b>reference</b><br>
576         * Path: <b>Observation.performer</b><br>
577         * </p>
578         */
579        @SearchParamDefinition(name="performer", path="Observation.performer", description="Who performed the observation", type="reference" 
580, providesMembershipIn={
581 @Compartment(name="Patient") ,  @Compartment(name="RelatedPerson") ,  @Compartment(name="Practitioner")        }
582 )
583        public static final String SP_PERFORMER = "performer";
584
585        /**
586         * <b>Fluent Client</b> search parameter constant for <b>performer</b>
587         * <p>
588         * Description: <b>Who performed the observation</b><br>
589         * Type: <b>reference</b><br>
590         * Path: <b>Observation.performer</b><br>
591         * </p>
592         */
593        public static final ReferenceClientParam PERFORMER = new ReferenceClientParam(SP_PERFORMER);
594
595        /**
596         * Search parameter constant for <b>specimen</b>
597         * <p>
598         * Description: <b></b><br>
599         * Type: <b>reference</b><br>
600         * Path: <b>Observation.specimen</b><br>
601         * </p>
602         */
603        @SearchParamDefinition(name="specimen", path="Observation.specimen", description="", type="reference" 
604 )
605        public static final String SP_SPECIMEN = "specimen";
606
607        /**
608         * <b>Fluent Client</b> search parameter constant for <b>specimen</b>
609         * <p>
610         * Description: <b></b><br>
611         * Type: <b>reference</b><br>
612         * Path: <b>Observation.specimen</b><br>
613         * </p>
614         */
615        public static final ReferenceClientParam SPECIMEN = new ReferenceClientParam(SP_SPECIMEN);
616
617        /**
618         * Search parameter constant for <b>related-type</b>
619         * <p>
620         * Description: <b></b><br>
621         * Type: <b>token</b><br>
622         * Path: <b>Observation.related.type</b><br>
623         * </p>
624         */
625        @SearchParamDefinition(name="related-type", path="Observation.related.type", description="", type="token" 
626 )
627        public static final String SP_RELATED_TYPE = "related-type";
628
629        /**
630         * <b>Fluent Client</b> search parameter constant for <b>related-type</b>
631         * <p>
632         * Description: <b></b><br>
633         * Type: <b>token</b><br>
634         * Path: <b>Observation.related.type</b><br>
635         * </p>
636         */
637        public static final TokenClientParam RELATED_TYPE = new TokenClientParam(SP_RELATED_TYPE);
638
639        /**
640         * Search parameter constant for <b>related-target</b>
641         * <p>
642         * Description: <b></b><br>
643         * Type: <b>reference</b><br>
644         * Path: <b>Observation.related.target</b><br>
645         * </p>
646         */
647        @SearchParamDefinition(name="related-target", path="Observation.related.target", description="", type="reference" 
648 )
649        public static final String SP_RELATED_TARGET = "related-target";
650
651        /**
652         * <b>Fluent Client</b> search parameter constant for <b>related-target</b>
653         * <p>
654         * Description: <b></b><br>
655         * Type: <b>reference</b><br>
656         * Path: <b>Observation.related.target</b><br>
657         * </p>
658         */
659        public static final ReferenceClientParam RELATED_TARGET = new ReferenceClientParam(SP_RELATED_TARGET);
660
661        /**
662         * Search parameter constant for <b>encounter</b>
663         * <p>
664         * Description: <b>Healthcare event related to the observation</b><br>
665         * Type: <b>reference</b><br>
666         * Path: <b>Observation.encounter</b><br>
667         * </p>
668         */
669        @SearchParamDefinition(name="encounter", path="Observation.encounter", description="Healthcare event related to the observation", type="reference" 
670, providesMembershipIn={
671 @Compartment(name="Encounter")         }
672 )
673        public static final String SP_ENCOUNTER = "encounter";
674
675        /**
676         * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
677         * <p>
678         * Description: <b>Healthcare event related to the observation</b><br>
679         * Type: <b>reference</b><br>
680         * Path: <b>Observation.encounter</b><br>
681         * </p>
682         */
683        public static final ReferenceClientParam ENCOUNTER = new ReferenceClientParam(SP_ENCOUNTER);
684
685        /**
686         * Search parameter constant for <b>data-absent-reason</b>
687         * <p>
688         * Description: <b>The reason why the expected value in the element Observation.value[x] is missing.</b><br>
689         * Type: <b>token</b><br>
690         * Path: <b>Observation.dataAbsentReason</b><br>
691         * </p>
692         */
693        @SearchParamDefinition(name="data-absent-reason", path="Observation.dataAbsentReason", description="The reason why the expected value in the element Observation.value[x] is missing.", type="token" 
694 )
695        public static final String SP_DATA_ABSENT_REASON = "data-absent-reason";
696
697        /**
698         * <b>Fluent Client</b> search parameter constant for <b>data-absent-reason</b>
699         * <p>
700         * Description: <b>The reason why the expected value in the element Observation.value[x] is missing.</b><br>
701         * Type: <b>token</b><br>
702         * Path: <b>Observation.dataAbsentReason</b><br>
703         * </p>
704         */
705        public static final TokenClientParam DATA_ABSENT_REASON = new TokenClientParam(SP_DATA_ABSENT_REASON);
706
707        /**
708         * Search parameter constant for <b>component-data-absent-reason</b>
709         * <p>
710         * Description: <b>The reason why the expected value in the element Observation.component.value[x] is missing.</b><br>
711         * Type: <b>token</b><br>
712         * Path: <b>Observation.component.dataAbsentReason</b><br>
713         * </p>
714         */
715        @SearchParamDefinition(name="component-data-absent-reason", path="Observation.component.dataAbsentReason", description="The reason why the expected value in the element Observation.component.value[x] is missing.", type="token" 
716 )
717        public static final String SP_COMPONENT_DATA_ABSENT_REASON = "component-data-absent-reason";
718
719        /**
720         * <b>Fluent Client</b> search parameter constant for <b>component-data-absent-reason</b>
721         * <p>
722         * Description: <b>The reason why the expected value in the element Observation.component.value[x] is missing.</b><br>
723         * Type: <b>token</b><br>
724         * Path: <b>Observation.component.dataAbsentReason</b><br>
725         * </p>
726         */
727        public static final TokenClientParam COMPONENT_DATA_ABSENT_REASON = new TokenClientParam(SP_COMPONENT_DATA_ABSENT_REASON);
728
729        /**
730         * Search parameter constant for <b>patient</b>
731         * <p>
732         * Description: <b>The subject that the observation is about (if patient)</b><br>
733         * Type: <b>reference</b><br>
734         * Path: <b>Observation.subject</b><br>
735         * </p>
736         */
737        @SearchParamDefinition(name="patient", path="Observation.subject", description="The subject that the observation is about (if patient)", type="reference" 
738, target={
739 ca.uhn.fhir.model.dstu2.resource.Patient.class         }
740 )
741        public static final String SP_PATIENT = "patient";
742
743        /**
744         * <b>Fluent Client</b> search parameter constant for <b>patient</b>
745         * <p>
746         * Description: <b>The subject that the observation is about (if patient)</b><br>
747         * Type: <b>reference</b><br>
748         * Path: <b>Observation.subject</b><br>
749         * </p>
750         */
751        public static final ReferenceClientParam PATIENT = new ReferenceClientParam(SP_PATIENT);
752
753        /**
754         * Search parameter constant for <b>identifier</b>
755         * <p>
756         * Description: <b>The unique id for a particular observation</b><br>
757         * Type: <b>token</b><br>
758         * Path: <b>Observation.identifier</b><br>
759         * </p>
760         */
761        @SearchParamDefinition(name="identifier", path="Observation.identifier", description="The unique id for a particular observation", type="token" 
762 )
763        public static final String SP_IDENTIFIER = "identifier";
764
765        /**
766         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
767         * <p>
768         * Description: <b>The unique id for a particular observation</b><br>
769         * Type: <b>token</b><br>
770         * Path: <b>Observation.identifier</b><br>
771         * </p>
772         */
773        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
774
775        /**
776         * Search parameter constant for <b>device</b>
777         * <p>
778         * Description: <b>The Device that generated the observation data.</b><br>
779         * Type: <b>reference</b><br>
780         * Path: <b>Observation.device</b><br>
781         * </p>
782         */
783        @SearchParamDefinition(name="device", path="Observation.device", description="The Device that generated the observation data.", type="reference" 
784, providesMembershipIn={
785 @Compartment(name="Device")    }
786 )
787        public static final String SP_DEVICE = "device";
788
789        /**
790         * <b>Fluent Client</b> search parameter constant for <b>device</b>
791         * <p>
792         * Description: <b>The Device that generated the observation data.</b><br>
793         * Type: <b>reference</b><br>
794         * Path: <b>Observation.device</b><br>
795         * </p>
796         */
797        public static final ReferenceClientParam DEVICE = new ReferenceClientParam(SP_DEVICE);
798
799        /**
800         * Search parameter constant for <b>category</b>
801         * <p>
802         * Description: <b>The classification of the type of observation</b><br>
803         * Type: <b>token</b><br>
804         * Path: <b>Observation.category</b><br>
805         * </p>
806         */
807        @SearchParamDefinition(name="category", path="Observation.category", description="The classification of the type of observation", type="token" 
808 )
809        public static final String SP_CATEGORY = "category";
810
811        /**
812         * <b>Fluent Client</b> search parameter constant for <b>category</b>
813         * <p>
814         * Description: <b>The classification of the type of observation</b><br>
815         * Type: <b>token</b><br>
816         * Path: <b>Observation.category</b><br>
817         * </p>
818         */
819        public static final TokenClientParam CATEGORY = new TokenClientParam(SP_CATEGORY);
820
821        /**
822         * Search parameter constant for <b>code-value-quantity</b>
823         * <p>
824         * Description: <b>Both code and one of the value parameters</b><br>
825         * Type: <b>composite</b><br>
826         * Path: <b>code &amp; value[x]</b><br>
827         * </p>
828         */
829        @SearchParamDefinition(name="code-value-quantity", path="code & value[x]", description="Both code and one of the value parameters", type="composite"  , compositeOf={  "code",  "value-quantity" } 
830 )
831        public static final String SP_CODE_VALUE_QUANTITY = "code-value-quantity";
832
833        /**
834         * <b>Fluent Client</b> search parameter constant for <b>code-value-quantity</b>
835         * <p>
836         * Description: <b>Both code and one of the value parameters</b><br>
837         * Type: <b>composite</b><br>
838         * Path: <b>code &amp; value[x]</b><br>
839         * </p>
840         */
841        public static final CompositeClientParam<TokenClientParam, QuantityClientParam> CODE_VALUE_QUANTITY = new CompositeClientParam<TokenClientParam, QuantityClientParam>(SP_CODE_VALUE_QUANTITY);
842
843        /**
844         * Search parameter constant for <b>code-value-concept</b>
845         * <p>
846         * Description: <b>Both code and one of the value parameters</b><br>
847         * Type: <b>composite</b><br>
848         * Path: <b>code &amp; value[x]</b><br>
849         * </p>
850         */
851        @SearchParamDefinition(name="code-value-concept", path="code & value[x]", description="Both code and one of the value parameters", type="composite"  , compositeOf={  "code",  "value-concept" } 
852 )
853        public static final String SP_CODE_VALUE_CONCEPT = "code-value-concept";
854
855        /**
856         * <b>Fluent Client</b> search parameter constant for <b>code-value-concept</b>
857         * <p>
858         * Description: <b>Both code and one of the value parameters</b><br>
859         * Type: <b>composite</b><br>
860         * Path: <b>code &amp; value[x]</b><br>
861         * </p>
862         */
863        public static final CompositeClientParam<TokenClientParam, TokenClientParam> CODE_VALUE_CONCEPT = new CompositeClientParam<TokenClientParam, TokenClientParam>(SP_CODE_VALUE_CONCEPT);
864
865        /**
866         * Search parameter constant for <b>code-value-date</b>
867         * <p>
868         * Description: <b>Both code and one of the value parameters</b><br>
869         * Type: <b>composite</b><br>
870         * Path: <b>code &amp; value[x]</b><br>
871         * </p>
872         */
873        @SearchParamDefinition(name="code-value-date", path="code & value[x]", description="Both code and one of the value parameters", type="composite"  , compositeOf={  "code",  "value-date" } 
874 )
875        public static final String SP_CODE_VALUE_DATE = "code-value-date";
876
877        /**
878         * <b>Fluent Client</b> search parameter constant for <b>code-value-date</b>
879         * <p>
880         * Description: <b>Both code and one of the value parameters</b><br>
881         * Type: <b>composite</b><br>
882         * Path: <b>code &amp; value[x]</b><br>
883         * </p>
884         */
885        public static final CompositeClientParam<TokenClientParam, DateClientParam> CODE_VALUE_DATE = new CompositeClientParam<TokenClientParam, DateClientParam>(SP_CODE_VALUE_DATE);
886
887        /**
888         * Search parameter constant for <b>code-value-string</b>
889         * <p>
890         * Description: <b>Both code and one of the value parameters</b><br>
891         * Type: <b>composite</b><br>
892         * Path: <b>code &amp; value[x]</b><br>
893         * </p>
894         */
895        @SearchParamDefinition(name="code-value-string", path="code & value[x]", description="Both code and one of the value parameters", type="composite"  , compositeOf={  "code",  "value-string" } 
896 )
897        public static final String SP_CODE_VALUE_STRING = "code-value-string";
898
899        /**
900         * <b>Fluent Client</b> search parameter constant for <b>code-value-string</b>
901         * <p>
902         * Description: <b>Both code and one of the value parameters</b><br>
903         * Type: <b>composite</b><br>
904         * Path: <b>code &amp; value[x]</b><br>
905         * </p>
906         */
907        public static final CompositeClientParam<TokenClientParam, StringClientParam> CODE_VALUE_STRING = new CompositeClientParam<TokenClientParam, StringClientParam>(SP_CODE_VALUE_STRING);
908
909        /**
910         * Search parameter constant for <b>component-code-component-value-quantity</b>
911         * <p>
912         * Description: <b>Both component code and one of the component value parameters</b><br>
913         * Type: <b>composite</b><br>
914         * Path: <b>component-code &amp; component-value[x]</b><br>
915         * </p>
916         */
917        @SearchParamDefinition(name="component-code-component-value-quantity", path="component-code & component-value[x]", description="Both component code and one of the component value parameters", type="composite"  , compositeOf={  "component-code",  "component-value-quantity" } 
918 )
919        public static final String SP_COMPONENT_CODE_COMPONENT_VALUE_QUANTITY = "component-code-component-value-quantity";
920
921        /**
922         * <b>Fluent Client</b> search parameter constant for <b>component-code-component-value-quantity</b>
923         * <p>
924         * Description: <b>Both component code and one of the component value parameters</b><br>
925         * Type: <b>composite</b><br>
926         * Path: <b>component-code &amp; component-value[x]</b><br>
927         * </p>
928         */
929        public static final CompositeClientParam<TokenClientParam, QuantityClientParam> COMPONENT_CODE_COMPONENT_VALUE_QUANTITY = new CompositeClientParam<TokenClientParam, QuantityClientParam>(SP_COMPONENT_CODE_COMPONENT_VALUE_QUANTITY);
930
931        /**
932         * Search parameter constant for <b>component-code-component-value-concept</b>
933         * <p>
934         * Description: <b>Both component code and one of the component value parameters</b><br>
935         * Type: <b>composite</b><br>
936         * Path: <b>component-code &amp; component-value[x]</b><br>
937         * </p>
938         */
939        @SearchParamDefinition(name="component-code-component-value-concept", path="component-code & component-value[x]", description="Both component code and one of the component value parameters", type="composite"  , compositeOf={  "component-code",  "component-value-concept" } 
940 )
941        public static final String SP_COMPONENT_CODE_COMPONENT_VALUE_CONCEPT = "component-code-component-value-concept";
942
943        /**
944         * <b>Fluent Client</b> search parameter constant for <b>component-code-component-value-concept</b>
945         * <p>
946         * Description: <b>Both component code and one of the component value parameters</b><br>
947         * Type: <b>composite</b><br>
948         * Path: <b>component-code &amp; component-value[x]</b><br>
949         * </p>
950         */
951        public static final CompositeClientParam<TokenClientParam, TokenClientParam> COMPONENT_CODE_COMPONENT_VALUE_CONCEPT = new CompositeClientParam<TokenClientParam, TokenClientParam>(SP_COMPONENT_CODE_COMPONENT_VALUE_CONCEPT);
952
953        /**
954         * Search parameter constant for <b>component-code-component-value-string</b>
955         * <p>
956         * Description: <b>Both component code and one of the component value parameters</b><br>
957         * Type: <b>composite</b><br>
958         * Path: <b>component-code &amp; component-value[x]</b><br>
959         * </p>
960         */
961        @SearchParamDefinition(name="component-code-component-value-string", path="component-code & component-value[x]", description="Both component code and one of the component value parameters", type="composite"  , compositeOf={  "component-code",  "component-value-string" } 
962 )
963        public static final String SP_COMPONENT_CODE_COMPONENT_VALUE_STRING = "component-code-component-value-string";
964
965        /**
966         * <b>Fluent Client</b> search parameter constant for <b>component-code-component-value-string</b>
967         * <p>
968         * Description: <b>Both component code and one of the component value parameters</b><br>
969         * Type: <b>composite</b><br>
970         * Path: <b>component-code &amp; component-value[x]</b><br>
971         * </p>
972         */
973        public static final CompositeClientParam<TokenClientParam, StringClientParam> COMPONENT_CODE_COMPONENT_VALUE_STRING = new CompositeClientParam<TokenClientParam, StringClientParam>(SP_COMPONENT_CODE_COMPONENT_VALUE_STRING);
974
975        /**
976         * Search parameter constant for <b>related-target-related-type</b>
977         * <p>
978         * Description: <b>Related Observations - search on related-type and related-target together</b><br>
979         * Type: <b>composite</b><br>
980         * Path: <b>related-target &amp; related-type</b><br>
981         * </p>
982         */
983        @SearchParamDefinition(name="related-target-related-type", path="related-target & related-type", description="Related Observations - search on related-type and related-target together", type="composite"  , compositeOf={  "related-target",  "related-type" } 
984 )
985        public static final String SP_RELATED_TARGET_RELATED_TYPE = "related-target-related-type";
986
987        /**
988         * <b>Fluent Client</b> search parameter constant for <b>related-target-related-type</b>
989         * <p>
990         * Description: <b>Related Observations - search on related-type and related-target together</b><br>
991         * Type: <b>composite</b><br>
992         * Path: <b>related-target &amp; related-type</b><br>
993         * </p>
994         */
995        public static final CompositeClientParam<ReferenceClientParam, TokenClientParam> RELATED_TARGET_RELATED_TYPE = new CompositeClientParam<ReferenceClientParam, TokenClientParam>(SP_RELATED_TARGET_RELATED_TYPE);
996
997
998        /**
999         * Constant for fluent queries to be used to add include statements. Specifies
1000         * the path value of "<b>Observation:device</b>".
1001         */
1002        public static final Include INCLUDE_DEVICE = new Include("Observation:device");
1003
1004        /**
1005         * Constant for fluent queries to be used to add include statements. Specifies
1006         * the path value of "<b>Observation:encounter</b>".
1007         */
1008        public static final Include INCLUDE_ENCOUNTER = new Include("Observation:encounter");
1009
1010        /**
1011         * Constant for fluent queries to be used to add include statements. Specifies
1012         * the path value of "<b>Observation:patient</b>".
1013         */
1014        public static final Include INCLUDE_PATIENT = new Include("Observation:patient");
1015
1016        /**
1017         * Constant for fluent queries to be used to add include statements. Specifies
1018         * the path value of "<b>Observation:performer</b>".
1019         */
1020        public static final Include INCLUDE_PERFORMER = new Include("Observation:performer");
1021
1022        /**
1023         * Constant for fluent queries to be used to add include statements. Specifies
1024         * the path value of "<b>Observation:related-target</b>".
1025         */
1026        public static final Include INCLUDE_RELATED_TARGET = new Include("Observation:related-target");
1027
1028        /**
1029         * Constant for fluent queries to be used to add include statements. Specifies
1030         * the path value of "<b>Observation:specimen</b>".
1031         */
1032        public static final Include INCLUDE_SPECIMEN = new Include("Observation:specimen");
1033
1034        /**
1035         * Constant for fluent queries to be used to add include statements. Specifies
1036         * the path value of "<b>Observation:subject</b>".
1037         */
1038        public static final Include INCLUDE_SUBJECT = new Include("Observation:subject");
1039
1040
1041        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
1042        @Description(
1043                shortDefinition="id",
1044                formalDefinition="A unique identifier for the simple observation instance."
1045        )
1046        private java.util.List<IdentifierDt> myIdentifier;
1047        
1048        @Child(name="status", type=CodeDt.class, order=1, min=1, max=1, summary=true, modifier=true)    
1049        @Description(
1050                shortDefinition="status",
1051                formalDefinition="The status of the result value"
1052        )
1053        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/observation-status")
1054        private BoundCodeDt<ObservationStatusEnum> myStatus;
1055        
1056        @Child(name="category", type=CodeableConceptDt.class, order=2, min=0, max=1, summary=false, modifier=false)     
1057        @Description(
1058                shortDefinition="class",
1059                formalDefinition="A code that classifies the general type of observation being made.  This is used  for searching, sorting and display purposes."
1060        )
1061        private CodeableConceptDt myCategory;
1062        
1063        @Child(name="code", type=CodeableConceptDt.class, order=3, min=1, max=1, summary=true, modifier=false)  
1064        @Description(
1065                shortDefinition="what",
1066                formalDefinition="Describes what was observed. Sometimes this is called the observation \"name\""
1067        )
1068        private CodeableConceptDt myCode;
1069        
1070        @Child(name="subject", order=4, min=0, max=1, summary=true, modifier=false, type={
1071                ca.uhn.fhir.model.dstu2.resource.Patient.class, 
1072                ca.uhn.fhir.model.dstu2.resource.Group.class, 
1073                ca.uhn.fhir.model.dstu2.resource.Device.class, 
1074                ca.uhn.fhir.model.dstu2.resource.Location.class
1075        })
1076        @Description(
1077                shortDefinition="who.focus",
1078                formalDefinition="The patient, or group of patients, location, or device whose characteristics (direct or indirect) are described by the observation and into whose record the observation is placed.  Comments: Indirect characteristics may be those of a specimen, fetus, donor,  other observer (for example a relative or EMT), or any observation made about the subject."
1079        )
1080        private ResourceReferenceDt mySubject;
1081        
1082        @Child(name="encounter", order=5, min=0, max=1, summary=false, modifier=false, type={
1083                ca.uhn.fhir.model.dstu2.resource.Encounter.class
1084        })
1085        @Description(
1086                shortDefinition="context",
1087                formalDefinition="The healthcare event  (e.g. a patient and healthcare provider interaction) during which this observation is made"
1088        )
1089        private ResourceReferenceDt myEncounter;
1090        
1091        @Child(name="effective", order=6, min=0, max=1, summary=true, modifier=false, type={
1092                DateTimeDt.class, 
1093                PeriodDt.class
1094        })
1095        @Description(
1096                shortDefinition="when.done",
1097                formalDefinition="The time or time-period the observed value is asserted as being true. For biological subjects - e.g. human patients - this is usually called the \"physiologically relevant time\". This is usually either the time of the procedure or of specimen collection, but very often the source of the date/time is not known, only the date/time itself"
1098        )
1099        private IDatatype myEffective;
1100        
1101        @Child(name="issued", type=InstantDt.class, order=7, min=0, max=1, summary=true, modifier=false)        
1102        @Description(
1103                shortDefinition="when.recorded",
1104                formalDefinition="The date and time this observation was made available to providers, typically after the results have been reviewed and verified."
1105        )
1106        private InstantDt myIssued;
1107        
1108        @Child(name="performer", order=8, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false, type={
1109                ca.uhn.fhir.model.dstu2.resource.Practitioner.class, 
1110                ca.uhn.fhir.model.dstu2.resource.Organization.class, 
1111                ca.uhn.fhir.model.dstu2.resource.Patient.class, 
1112                ca.uhn.fhir.model.dstu2.resource.RelatedPerson.class
1113        })
1114        @Description(
1115                shortDefinition="who.actor",
1116                formalDefinition="Who was responsible for asserting the observed value as \"true\""
1117        )
1118        private java.util.List<ResourceReferenceDt> myPerformer;
1119        
1120        @Child(name="value", order=9, min=0, max=1, summary=true, modifier=false, type={
1121                QuantityDt.class, 
1122                CodeableConceptDt.class, 
1123                StringDt.class, 
1124                RangeDt.class, 
1125                RatioDt.class, 
1126                SampledDataDt.class, 
1127                AttachmentDt.class, 
1128                TimeDt.class, 
1129                DateTimeDt.class, 
1130                PeriodDt.class
1131        })
1132        @Description(
1133                shortDefinition="",
1134                formalDefinition="The information determined as a result of making the observation, if the information has a simple value"
1135        )
1136        private IDatatype myValue;
1137        
1138        @Child(name="dataAbsentReason", type=CodeableConceptDt.class, order=10, min=0, max=1, summary=false, modifier=false)    
1139        @Description(
1140                shortDefinition="",
1141                formalDefinition="Provides a reason why the expected value in the element Observation.value[x] is missing."
1142        )
1143        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/valueset-observation-valueabsentreason")
1144        private CodeableConceptDt myDataAbsentReason;
1145        
1146        @Child(name="interpretation", type=CodeableConceptDt.class, order=11, min=0, max=1, summary=false, modifier=false)      
1147        @Description(
1148                shortDefinition="",
1149                formalDefinition="The assessment made based on the result of the observation.  Intended as a simple compact code often placed adjacent to the result value in reports and flow sheets to signal the meaning/normalcy status of the result. Otherwise known as abnormal flag."
1150        )
1151        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/valueset-observation-interpretation")
1152        private CodeableConceptDt myInterpretation;
1153        
1154        @Child(name="comments", type=StringDt.class, order=12, min=0, max=1, summary=false, modifier=false)     
1155        @Description(
1156                shortDefinition="",
1157                formalDefinition="May include statements about significant, unexpected or unreliable values, or information about the source of the value where this may be relevant to the interpretation of the result."
1158        )
1159        private StringDt myComments;
1160        
1161        @Child(name="bodySite", type=CodeableConceptDt.class, order=13, min=0, max=1, summary=false, modifier=false)    
1162        @Description(
1163                shortDefinition="",
1164                formalDefinition="Indicates the site on the subject's body where the observation was made (i.e. the target site)."
1165        )
1166        private CodeableConceptDt myBodySite;
1167        
1168        @Child(name="method", type=CodeableConceptDt.class, order=14, min=0, max=1, summary=false, modifier=false)      
1169        @Description(
1170                shortDefinition="",
1171                formalDefinition="Indicates the mechanism used to perform the observation"
1172        )
1173        private CodeableConceptDt myMethod;
1174        
1175        @Child(name="specimen", order=15, min=0, max=1, summary=false, modifier=false, type={
1176                ca.uhn.fhir.model.dstu2.resource.Specimen.class
1177        })
1178        @Description(
1179                shortDefinition="",
1180                formalDefinition="The specimen that was used when this observation was made"
1181        )
1182        private ResourceReferenceDt mySpecimen;
1183        
1184        @Child(name="device", order=16, min=0, max=1, summary=false, modifier=false, type={
1185                ca.uhn.fhir.model.dstu2.resource.Device.class, 
1186                ca.uhn.fhir.model.dstu2.resource.DeviceMetric.class
1187        })
1188        @Description(
1189                shortDefinition="",
1190                formalDefinition="The device used to generate the observation data."
1191        )
1192        private ResourceReferenceDt myDevice;
1193        
1194        @Child(name="referenceRange", order=17, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
1195        @Description(
1196                shortDefinition="",
1197                formalDefinition="Guidance on how to interpret the value by comparison to a normal or recommended range"
1198        )
1199        private java.util.List<ReferenceRange> myReferenceRange;
1200        
1201        @Child(name="related", order=18, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)  
1202        @Description(
1203                shortDefinition="",
1204                formalDefinition="A  reference to another resource (usually another Observation but could  also be a QuestionnaireAnswer) whose relationship is defined by the relationship type code."
1205        )
1206        private java.util.List<Related> myRelated;
1207        
1208        @Child(name="component", order=19, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
1209        @Description(
1210                shortDefinition="",
1211                formalDefinition="Some observations have multiple component observations.  These component observations are expressed as separate code value pairs that share the same attributes.  Examples include systolic and diastolic component observations for blood pressure measurement and multiple component observations for genetics observations."
1212        )
1213        private java.util.List<Component> myComponent;
1214        
1215
1216        @Override
1217        public boolean isEmpty() {
1218                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myStatus,  myCategory,  myCode,  mySubject,  myEncounter,  myEffective,  myIssued,  myPerformer,  myValue,  myDataAbsentReason,  myInterpretation,  myComments,  myBodySite,  myMethod,  mySpecimen,  myDevice,  myReferenceRange,  myRelated,  myComponent);
1219        }
1220        
1221        @Override
1222        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1223                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myStatus, myCategory, myCode, mySubject, myEncounter, myEffective, myIssued, myPerformer, myValue, myDataAbsentReason, myInterpretation, myComments, myBodySite, myMethod, mySpecimen, myDevice, myReferenceRange, myRelated, myComponent);
1224        }
1225
1226        /**
1227         * Gets the value(s) for <b>identifier</b> (id).
1228         * creating it if it does
1229         * not exist. Will not return <code>null</code>.
1230         *
1231     * <p>
1232     * <b>Definition:</b>
1233     * A unique identifier for the simple observation instance.
1234     * </p> 
1235         */
1236        public java.util.List<IdentifierDt> getIdentifier() {  
1237                if (myIdentifier == null) {
1238                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
1239                }
1240                return myIdentifier;
1241        }
1242
1243        /**
1244         * Sets the value(s) for <b>identifier</b> (id)
1245         *
1246     * <p>
1247     * <b>Definition:</b>
1248     * A unique identifier for the simple observation instance.
1249     * </p> 
1250         */
1251        public Observation setIdentifier(java.util.List<IdentifierDt> theValue) {
1252                myIdentifier = theValue;
1253                return this;
1254        }
1255        
1256        
1257
1258        /**
1259         * Adds and returns a new value for <b>identifier</b> (id)
1260         *
1261     * <p>
1262     * <b>Definition:</b>
1263     * A unique identifier for the simple observation instance.
1264     * </p> 
1265         */
1266        public IdentifierDt addIdentifier() {
1267                IdentifierDt newType = new IdentifierDt();
1268                getIdentifier().add(newType);
1269                return newType; 
1270        }
1271
1272        /**
1273         * Adds a given new value for <b>identifier</b> (id)
1274         *
1275         * <p>
1276         * <b>Definition:</b>
1277         * A unique identifier for the simple observation instance.
1278         * </p>
1279         * @param theValue The identifier to add (must not be <code>null</code>)
1280         */
1281        public Observation addIdentifier(IdentifierDt theValue) {
1282                if (theValue == null) {
1283                        throw new NullPointerException("theValue must not be null");
1284                }
1285                getIdentifier().add(theValue);
1286                return this;
1287        }
1288
1289        /**
1290         * Gets the first repetition for <b>identifier</b> (id),
1291         * creating it if it does not already exist.
1292         *
1293     * <p>
1294     * <b>Definition:</b>
1295     * A unique identifier for the simple observation instance.
1296     * </p> 
1297         */
1298        public IdentifierDt getIdentifierFirstRep() {
1299                if (getIdentifier().isEmpty()) {
1300                        return addIdentifier();
1301                }
1302                return getIdentifier().get(0); 
1303        }
1304  
1305        /**
1306         * Gets the value(s) for <b>status</b> (status).
1307         * creating it if it does
1308         * not exist. Will not return <code>null</code>.
1309         *
1310     * <p>
1311     * <b>Definition:</b>
1312     * The status of the result value
1313     * </p> 
1314         */
1315        public BoundCodeDt<ObservationStatusEnum> getStatusElement() {  
1316                if (myStatus == null) {
1317                        myStatus = new BoundCodeDt<ObservationStatusEnum>(ObservationStatusEnum.VALUESET_BINDER);
1318                }
1319                return myStatus;
1320        }
1321
1322        
1323        /**
1324         * Gets the value(s) for <b>status</b> (status).
1325         * creating it if it does
1326         * not exist. This method may return <code>null</code>.
1327         *
1328     * <p>
1329     * <b>Definition:</b>
1330     * The status of the result value
1331     * </p> 
1332         */
1333        public String getStatus() {  
1334                return getStatusElement().getValue();
1335        }
1336
1337        /**
1338         * Sets the value(s) for <b>status</b> (status)
1339         *
1340     * <p>
1341     * <b>Definition:</b>
1342     * The status of the result value
1343     * </p> 
1344         */
1345        public Observation setStatus(BoundCodeDt<ObservationStatusEnum> theValue) {
1346                myStatus = theValue;
1347                return this;
1348        }
1349        
1350        
1351
1352        /**
1353         * Sets the value(s) for <b>status</b> (status)
1354         *
1355     * <p>
1356     * <b>Definition:</b>
1357     * The status of the result value
1358     * </p> 
1359         */
1360        public Observation setStatus(ObservationStatusEnum theValue) {
1361                setStatus(new BoundCodeDt<ObservationStatusEnum>(ObservationStatusEnum.VALUESET_BINDER, theValue));
1362                
1363/*
1364                getStatusElement().setValueAsEnum(theValue);
1365*/
1366                return this;
1367        }
1368
1369  
1370        /**
1371         * Gets the value(s) for <b>category</b> (class).
1372         * creating it if it does
1373         * not exist. Will not return <code>null</code>.
1374         *
1375     * <p>
1376     * <b>Definition:</b>
1377     * A code that classifies the general type of observation being made.  This is used  for searching, sorting and display purposes.
1378     * </p> 
1379         */
1380        public CodeableConceptDt getCategory() {  
1381                if (myCategory == null) {
1382                        myCategory = new CodeableConceptDt();
1383                }
1384                return myCategory;
1385        }
1386
1387        /**
1388         * Sets the value(s) for <b>category</b> (class)
1389         *
1390     * <p>
1391     * <b>Definition:</b>
1392     * A code that classifies the general type of observation being made.  This is used  for searching, sorting and display purposes.
1393     * </p> 
1394         */
1395        public Observation setCategory(CodeableConceptDt theValue) {
1396                myCategory = theValue;
1397                return this;
1398        }
1399        
1400        
1401
1402  
1403        /**
1404         * Gets the value(s) for <b>code</b> (what).
1405         * creating it if it does
1406         * not exist. Will not return <code>null</code>.
1407         *
1408     * <p>
1409     * <b>Definition:</b>
1410     * Describes what was observed. Sometimes this is called the observation \&quot;name\&quot;
1411     * </p> 
1412         */
1413        public CodeableConceptDt getCode() {  
1414                if (myCode == null) {
1415                        myCode = new CodeableConceptDt();
1416                }
1417                return myCode;
1418        }
1419
1420        /**
1421         * Sets the value(s) for <b>code</b> (what)
1422         *
1423     * <p>
1424     * <b>Definition:</b>
1425     * Describes what was observed. Sometimes this is called the observation \&quot;name\&quot;
1426     * </p> 
1427         */
1428        public Observation setCode(CodeableConceptDt theValue) {
1429                myCode = theValue;
1430                return this;
1431        }
1432        
1433        
1434
1435  
1436        /**
1437         * Gets the value(s) for <b>subject</b> (who.focus).
1438         * creating it if it does
1439         * not exist. Will not return <code>null</code>.
1440         *
1441     * <p>
1442     * <b>Definition:</b>
1443     * The patient, or group of patients, location, or device whose characteristics (direct or indirect) are described by the observation and into whose record the observation is placed.  Comments: Indirect characteristics may be those of a specimen, fetus, donor,  other observer (for example a relative or EMT), or any observation made about the subject.
1444     * </p> 
1445         */
1446        public ResourceReferenceDt getSubject() {  
1447                if (mySubject == null) {
1448                        mySubject = new ResourceReferenceDt();
1449                }
1450                return mySubject;
1451        }
1452
1453        /**
1454         * Sets the value(s) for <b>subject</b> (who.focus)
1455         *
1456     * <p>
1457     * <b>Definition:</b>
1458     * The patient, or group of patients, location, or device whose characteristics (direct or indirect) are described by the observation and into whose record the observation is placed.  Comments: Indirect characteristics may be those of a specimen, fetus, donor,  other observer (for example a relative or EMT), or any observation made about the subject.
1459     * </p> 
1460         */
1461        public Observation setSubject(ResourceReferenceDt theValue) {
1462                mySubject = theValue;
1463                return this;
1464        }
1465        
1466        
1467
1468  
1469        /**
1470         * Gets the value(s) for <b>encounter</b> (context).
1471         * creating it if it does
1472         * not exist. Will not return <code>null</code>.
1473         *
1474     * <p>
1475     * <b>Definition:</b>
1476     * The healthcare event  (e.g. a patient and healthcare provider interaction) during which this observation is made
1477     * </p> 
1478         */
1479        public ResourceReferenceDt getEncounter() {  
1480                if (myEncounter == null) {
1481                        myEncounter = new ResourceReferenceDt();
1482                }
1483                return myEncounter;
1484        }
1485
1486        /**
1487         * Sets the value(s) for <b>encounter</b> (context)
1488         *
1489     * <p>
1490     * <b>Definition:</b>
1491     * The healthcare event  (e.g. a patient and healthcare provider interaction) during which this observation is made
1492     * </p> 
1493         */
1494        public Observation setEncounter(ResourceReferenceDt theValue) {
1495                myEncounter = theValue;
1496                return this;
1497        }
1498        
1499        
1500
1501  
1502        /**
1503         * Gets the value(s) for <b>effective[x]</b> (when.done).
1504         * creating it if it does
1505         * not exist. Will not return <code>null</code>.
1506         *
1507     * <p>
1508     * <b>Definition:</b>
1509     * The time or time-period the observed value is asserted as being true. For biological subjects - e.g. human patients - this is usually called the \&quot;physiologically relevant time\&quot;. This is usually either the time of the procedure or of specimen collection, but very often the source of the date/time is not known, only the date/time itself
1510     * </p> 
1511         */
1512        public IDatatype getEffective() {  
1513                return myEffective;
1514        }
1515
1516        /**
1517         * Sets the value(s) for <b>effective[x]</b> (when.done)
1518         *
1519     * <p>
1520     * <b>Definition:</b>
1521     * The time or time-period the observed value is asserted as being true. For biological subjects - e.g. human patients - this is usually called the \&quot;physiologically relevant time\&quot;. This is usually either the time of the procedure or of specimen collection, but very often the source of the date/time is not known, only the date/time itself
1522     * </p> 
1523         */
1524        public Observation setEffective(IDatatype theValue) {
1525                myEffective = theValue;
1526                return this;
1527        }
1528        
1529        
1530
1531  
1532        /**
1533         * Gets the value(s) for <b>issued</b> (when.recorded).
1534         * creating it if it does
1535         * not exist. Will not return <code>null</code>.
1536         *
1537     * <p>
1538     * <b>Definition:</b>
1539     * The date and time this observation was made available to providers, typically after the results have been reviewed and verified.
1540     * </p> 
1541         */
1542        public InstantDt getIssuedElement() {  
1543                if (myIssued == null) {
1544                        myIssued = new InstantDt();
1545                }
1546                return myIssued;
1547        }
1548
1549        
1550        /**
1551         * Gets the value(s) for <b>issued</b> (when.recorded).
1552         * creating it if it does
1553         * not exist. This method may return <code>null</code>.
1554         *
1555     * <p>
1556     * <b>Definition:</b>
1557     * The date and time this observation was made available to providers, typically after the results have been reviewed and verified.
1558     * </p> 
1559         */
1560        public Date getIssued() {  
1561                return getIssuedElement().getValue();
1562        }
1563
1564        /**
1565         * Sets the value(s) for <b>issued</b> (when.recorded)
1566         *
1567     * <p>
1568     * <b>Definition:</b>
1569     * The date and time this observation was made available to providers, typically after the results have been reviewed and verified.
1570     * </p> 
1571         */
1572        public Observation setIssued(InstantDt theValue) {
1573                myIssued = theValue;
1574                return this;
1575        }
1576        
1577        
1578
1579        /**
1580         * Sets the value for <b>issued</b> (when.recorded)
1581         *
1582     * <p>
1583     * <b>Definition:</b>
1584     * The date and time this observation was made available to providers, typically after the results have been reviewed and verified.
1585     * </p> 
1586         */
1587        public Observation setIssuedWithMillisPrecision( Date theDate) {
1588                myIssued = new InstantDt(theDate); 
1589                return this; 
1590        }
1591
1592        /**
1593         * Sets the value for <b>issued</b> (when.recorded)
1594         *
1595     * <p>
1596     * <b>Definition:</b>
1597     * The date and time this observation was made available to providers, typically after the results have been reviewed and verified.
1598     * </p> 
1599         */
1600        public Observation setIssued( Date theDate,  TemporalPrecisionEnum thePrecision) {
1601                myIssued = new InstantDt(theDate, thePrecision); 
1602                return this; 
1603        }
1604
1605 
1606        /**
1607         * Gets the value(s) for <b>performer</b> (who.actor).
1608         * creating it if it does
1609         * not exist. Will not return <code>null</code>.
1610         *
1611     * <p>
1612     * <b>Definition:</b>
1613     * Who was responsible for asserting the observed value as \&quot;true\&quot;
1614     * </p> 
1615         */
1616        public java.util.List<ResourceReferenceDt> getPerformer() {  
1617                if (myPerformer == null) {
1618                        myPerformer = new java.util.ArrayList<ResourceReferenceDt>();
1619                }
1620                return myPerformer;
1621        }
1622
1623        /**
1624         * Sets the value(s) for <b>performer</b> (who.actor)
1625         *
1626     * <p>
1627     * <b>Definition:</b>
1628     * Who was responsible for asserting the observed value as \&quot;true\&quot;
1629     * </p> 
1630         */
1631        public Observation setPerformer(java.util.List<ResourceReferenceDt> theValue) {
1632                myPerformer = theValue;
1633                return this;
1634        }
1635        
1636        
1637
1638        /**
1639         * Adds and returns a new value for <b>performer</b> (who.actor)
1640         *
1641     * <p>
1642     * <b>Definition:</b>
1643     * Who was responsible for asserting the observed value as \&quot;true\&quot;
1644     * </p> 
1645         */
1646        public ResourceReferenceDt addPerformer() {
1647                ResourceReferenceDt newType = new ResourceReferenceDt();
1648                getPerformer().add(newType);
1649                return newType; 
1650        }
1651  
1652        /**
1653         * Gets the value(s) for <b>value[x]</b> ().
1654         * creating it if it does
1655         * not exist. Will not return <code>null</code>.
1656         *
1657     * <p>
1658     * <b>Definition:</b>
1659     * The information determined as a result of making the observation, if the information has a simple value
1660     * </p> 
1661         */
1662        public IDatatype getValue() {  
1663                return myValue;
1664        }
1665
1666        /**
1667         * Sets the value(s) for <b>value[x]</b> ()
1668         *
1669     * <p>
1670     * <b>Definition:</b>
1671     * The information determined as a result of making the observation, if the information has a simple value
1672     * </p> 
1673         */
1674        public Observation setValue(IDatatype theValue) {
1675                myValue = theValue;
1676                return this;
1677        }
1678        
1679        
1680
1681  
1682        /**
1683         * Gets the value(s) for <b>dataAbsentReason</b> ().
1684         * creating it if it does
1685         * not exist. Will not return <code>null</code>.
1686         *
1687     * <p>
1688     * <b>Definition:</b>
1689     * Provides a reason why the expected value in the element Observation.value[x] is missing.
1690     * </p> 
1691         */
1692        public CodeableConceptDt getDataAbsentReason() {  
1693                if (myDataAbsentReason == null) {
1694                        myDataAbsentReason = new CodeableConceptDt();
1695                }
1696                return myDataAbsentReason;
1697        }
1698
1699        /**
1700         * Sets the value(s) for <b>dataAbsentReason</b> ()
1701         *
1702     * <p>
1703     * <b>Definition:</b>
1704     * Provides a reason why the expected value in the element Observation.value[x] is missing.
1705     * </p> 
1706         */
1707        public Observation setDataAbsentReason(CodeableConceptDt theValue) {
1708                myDataAbsentReason = theValue;
1709                return this;
1710        }
1711        
1712        
1713
1714  
1715        /**
1716         * Gets the value(s) for <b>interpretation</b> ().
1717         * creating it if it does
1718         * not exist. Will not return <code>null</code>.
1719         *
1720     * <p>
1721     * <b>Definition:</b>
1722     * The assessment made based on the result of the observation.  Intended as a simple compact code often placed adjacent to the result value in reports and flow sheets to signal the meaning/normalcy status of the result. Otherwise known as abnormal flag.
1723     * </p> 
1724         */
1725        public CodeableConceptDt getInterpretation() {  
1726                if (myInterpretation == null) {
1727                        myInterpretation = new CodeableConceptDt();
1728                }
1729                return myInterpretation;
1730        }
1731
1732        /**
1733         * Sets the value(s) for <b>interpretation</b> ()
1734         *
1735     * <p>
1736     * <b>Definition:</b>
1737     * The assessment made based on the result of the observation.  Intended as a simple compact code often placed adjacent to the result value in reports and flow sheets to signal the meaning/normalcy status of the result. Otherwise known as abnormal flag.
1738     * </p> 
1739         */
1740        public Observation setInterpretation(CodeableConceptDt theValue) {
1741                myInterpretation = theValue;
1742                return this;
1743        }
1744        
1745        
1746
1747  
1748        /**
1749         * Gets the value(s) for <b>comments</b> ().
1750         * creating it if it does
1751         * not exist. Will not return <code>null</code>.
1752         *
1753     * <p>
1754     * <b>Definition:</b>
1755     * May include statements about significant, unexpected or unreliable values, or information about the source of the value where this may be relevant to the interpretation of the result.
1756     * </p> 
1757         */
1758        public StringDt getCommentsElement() {  
1759                if (myComments == null) {
1760                        myComments = new StringDt();
1761                }
1762                return myComments;
1763        }
1764
1765        
1766        /**
1767         * Gets the value(s) for <b>comments</b> ().
1768         * creating it if it does
1769         * not exist. This method may return <code>null</code>.
1770         *
1771     * <p>
1772     * <b>Definition:</b>
1773     * May include statements about significant, unexpected or unreliable values, or information about the source of the value where this may be relevant to the interpretation of the result.
1774     * </p> 
1775         */
1776        public String getComments() {  
1777                return getCommentsElement().getValue();
1778        }
1779
1780        /**
1781         * Sets the value(s) for <b>comments</b> ()
1782         *
1783     * <p>
1784     * <b>Definition:</b>
1785     * May include statements about significant, unexpected or unreliable values, or information about the source of the value where this may be relevant to the interpretation of the result.
1786     * </p> 
1787         */
1788        public Observation setComments(StringDt theValue) {
1789                myComments = theValue;
1790                return this;
1791        }
1792        
1793        
1794
1795        /**
1796         * Sets the value for <b>comments</b> ()
1797         *
1798     * <p>
1799     * <b>Definition:</b>
1800     * May include statements about significant, unexpected or unreliable values, or information about the source of the value where this may be relevant to the interpretation of the result.
1801     * </p> 
1802         */
1803        public Observation setComments( String theString) {
1804                myComments = new StringDt(theString); 
1805                return this; 
1806        }
1807
1808 
1809        /**
1810         * Gets the value(s) for <b>bodySite</b> ().
1811         * creating it if it does
1812         * not exist. Will not return <code>null</code>.
1813         *
1814     * <p>
1815     * <b>Definition:</b>
1816     * Indicates the site on the subject's body where the observation was made (i.e. the target site).
1817     * </p> 
1818         */
1819        public CodeableConceptDt getBodySite() {  
1820                if (myBodySite == null) {
1821                        myBodySite = new CodeableConceptDt();
1822                }
1823                return myBodySite;
1824        }
1825
1826        /**
1827         * Sets the value(s) for <b>bodySite</b> ()
1828         *
1829     * <p>
1830     * <b>Definition:</b>
1831     * Indicates the site on the subject's body where the observation was made (i.e. the target site).
1832     * </p> 
1833         */
1834        public Observation setBodySite(CodeableConceptDt theValue) {
1835                myBodySite = theValue;
1836                return this;
1837        }
1838        
1839        
1840
1841  
1842        /**
1843         * Gets the value(s) for <b>method</b> ().
1844         * creating it if it does
1845         * not exist. Will not return <code>null</code>.
1846         *
1847     * <p>
1848     * <b>Definition:</b>
1849     * Indicates the mechanism used to perform the observation
1850     * </p> 
1851         */
1852        public CodeableConceptDt getMethod() {  
1853                if (myMethod == null) {
1854                        myMethod = new CodeableConceptDt();
1855                }
1856                return myMethod;
1857        }
1858
1859        /**
1860         * Sets the value(s) for <b>method</b> ()
1861         *
1862     * <p>
1863     * <b>Definition:</b>
1864     * Indicates the mechanism used to perform the observation
1865     * </p> 
1866         */
1867        public Observation setMethod(CodeableConceptDt theValue) {
1868                myMethod = theValue;
1869                return this;
1870        }
1871        
1872        
1873
1874  
1875        /**
1876         * Gets the value(s) for <b>specimen</b> ().
1877         * creating it if it does
1878         * not exist. Will not return <code>null</code>.
1879         *
1880     * <p>
1881     * <b>Definition:</b>
1882     * The specimen that was used when this observation was made
1883     * </p> 
1884         */
1885        public ResourceReferenceDt getSpecimen() {  
1886                if (mySpecimen == null) {
1887                        mySpecimen = new ResourceReferenceDt();
1888                }
1889                return mySpecimen;
1890        }
1891
1892        /**
1893         * Sets the value(s) for <b>specimen</b> ()
1894         *
1895     * <p>
1896     * <b>Definition:</b>
1897     * The specimen that was used when this observation was made
1898     * </p> 
1899         */
1900        public Observation setSpecimen(ResourceReferenceDt theValue) {
1901                mySpecimen = theValue;
1902                return this;
1903        }
1904        
1905        
1906
1907  
1908        /**
1909         * Gets the value(s) for <b>device</b> ().
1910         * creating it if it does
1911         * not exist. Will not return <code>null</code>.
1912         *
1913     * <p>
1914     * <b>Definition:</b>
1915     * The device used to generate the observation data.
1916     * </p> 
1917         */
1918        public ResourceReferenceDt getDevice() {  
1919                if (myDevice == null) {
1920                        myDevice = new ResourceReferenceDt();
1921                }
1922                return myDevice;
1923        }
1924
1925        /**
1926         * Sets the value(s) for <b>device</b> ()
1927         *
1928     * <p>
1929     * <b>Definition:</b>
1930     * The device used to generate the observation data.
1931     * </p> 
1932         */
1933        public Observation setDevice(ResourceReferenceDt theValue) {
1934                myDevice = theValue;
1935                return this;
1936        }
1937        
1938        
1939
1940  
1941        /**
1942         * Gets the value(s) for <b>referenceRange</b> ().
1943         * creating it if it does
1944         * not exist. Will not return <code>null</code>.
1945         *
1946     * <p>
1947     * <b>Definition:</b>
1948     * Guidance on how to interpret the value by comparison to a normal or recommended range
1949     * </p> 
1950         */
1951        public java.util.List<ReferenceRange> getReferenceRange() {  
1952                if (myReferenceRange == null) {
1953                        myReferenceRange = new java.util.ArrayList<ReferenceRange>();
1954                }
1955                return myReferenceRange;
1956        }
1957
1958        /**
1959         * Sets the value(s) for <b>referenceRange</b> ()
1960         *
1961     * <p>
1962     * <b>Definition:</b>
1963     * Guidance on how to interpret the value by comparison to a normal or recommended range
1964     * </p> 
1965         */
1966        public Observation setReferenceRange(java.util.List<ReferenceRange> theValue) {
1967                myReferenceRange = theValue;
1968                return this;
1969        }
1970        
1971        
1972
1973        /**
1974         * Adds and returns a new value for <b>referenceRange</b> ()
1975         *
1976     * <p>
1977     * <b>Definition:</b>
1978     * Guidance on how to interpret the value by comparison to a normal or recommended range
1979     * </p> 
1980         */
1981        public ReferenceRange addReferenceRange() {
1982                ReferenceRange newType = new ReferenceRange();
1983                getReferenceRange().add(newType);
1984                return newType; 
1985        }
1986
1987        /**
1988         * Adds a given new value for <b>referenceRange</b> ()
1989         *
1990         * <p>
1991         * <b>Definition:</b>
1992         * Guidance on how to interpret the value by comparison to a normal or recommended range
1993         * </p>
1994         * @param theValue The referenceRange to add (must not be <code>null</code>)
1995         */
1996        public Observation addReferenceRange(ReferenceRange theValue) {
1997                if (theValue == null) {
1998                        throw new NullPointerException("theValue must not be null");
1999                }
2000                getReferenceRange().add(theValue);
2001                return this;
2002        }
2003
2004        /**
2005         * Gets the first repetition for <b>referenceRange</b> (),
2006         * creating it if it does not already exist.
2007         *
2008     * <p>
2009     * <b>Definition:</b>
2010     * Guidance on how to interpret the value by comparison to a normal or recommended range
2011     * </p> 
2012         */
2013        public ReferenceRange getReferenceRangeFirstRep() {
2014                if (getReferenceRange().isEmpty()) {
2015                        return addReferenceRange();
2016                }
2017                return getReferenceRange().get(0); 
2018        }
2019  
2020        /**
2021         * Gets the value(s) for <b>related</b> ().
2022         * creating it if it does
2023         * not exist. Will not return <code>null</code>.
2024         *
2025     * <p>
2026     * <b>Definition:</b>
2027     * A  reference to another resource (usually another Observation but could  also be a QuestionnaireAnswer) whose relationship is defined by the relationship type code.
2028     * </p> 
2029         */
2030        public java.util.List<Related> getRelated() {  
2031                if (myRelated == null) {
2032                        myRelated = new java.util.ArrayList<Related>();
2033                }
2034                return myRelated;
2035        }
2036
2037        /**
2038         * Sets the value(s) for <b>related</b> ()
2039         *
2040     * <p>
2041     * <b>Definition:</b>
2042     * A  reference to another resource (usually another Observation but could  also be a QuestionnaireAnswer) whose relationship is defined by the relationship type code.
2043     * </p> 
2044         */
2045        public Observation setRelated(java.util.List<Related> theValue) {
2046                myRelated = theValue;
2047                return this;
2048        }
2049        
2050        
2051
2052        /**
2053         * Adds and returns a new value for <b>related</b> ()
2054         *
2055     * <p>
2056     * <b>Definition:</b>
2057     * A  reference to another resource (usually another Observation but could  also be a QuestionnaireAnswer) whose relationship is defined by the relationship type code.
2058     * </p> 
2059         */
2060        public Related addRelated() {
2061                Related newType = new Related();
2062                getRelated().add(newType);
2063                return newType; 
2064        }
2065
2066        /**
2067         * Adds a given new value for <b>related</b> ()
2068         *
2069         * <p>
2070         * <b>Definition:</b>
2071         * A  reference to another resource (usually another Observation but could  also be a QuestionnaireAnswer) whose relationship is defined by the relationship type code.
2072         * </p>
2073         * @param theValue The related to add (must not be <code>null</code>)
2074         */
2075        public Observation addRelated(Related theValue) {
2076                if (theValue == null) {
2077                        throw new NullPointerException("theValue must not be null");
2078                }
2079                getRelated().add(theValue);
2080                return this;
2081        }
2082
2083        /**
2084         * Gets the first repetition for <b>related</b> (),
2085         * creating it if it does not already exist.
2086         *
2087     * <p>
2088     * <b>Definition:</b>
2089     * A  reference to another resource (usually another Observation but could  also be a QuestionnaireAnswer) whose relationship is defined by the relationship type code.
2090     * </p> 
2091         */
2092        public Related getRelatedFirstRep() {
2093                if (getRelated().isEmpty()) {
2094                        return addRelated();
2095                }
2096                return getRelated().get(0); 
2097        }
2098  
2099        /**
2100         * Gets the value(s) for <b>component</b> ().
2101         * creating it if it does
2102         * not exist. Will not return <code>null</code>.
2103         *
2104     * <p>
2105     * <b>Definition:</b>
2106     * Some observations have multiple component observations.  These component observations are expressed as separate code value pairs that share the same attributes.  Examples include systolic and diastolic component observations for blood pressure measurement and multiple component observations for genetics observations.
2107     * </p> 
2108         */
2109        public java.util.List<Component> getComponent() {  
2110                if (myComponent == null) {
2111                        myComponent = new java.util.ArrayList<Component>();
2112                }
2113                return myComponent;
2114        }
2115
2116        /**
2117         * Sets the value(s) for <b>component</b> ()
2118         *
2119     * <p>
2120     * <b>Definition:</b>
2121     * Some observations have multiple component observations.  These component observations are expressed as separate code value pairs that share the same attributes.  Examples include systolic and diastolic component observations for blood pressure measurement and multiple component observations for genetics observations.
2122     * </p> 
2123         */
2124        public Observation setComponent(java.util.List<Component> theValue) {
2125                myComponent = theValue;
2126                return this;
2127        }
2128        
2129        
2130
2131        /**
2132         * Adds and returns a new value for <b>component</b> ()
2133         *
2134     * <p>
2135     * <b>Definition:</b>
2136     * Some observations have multiple component observations.  These component observations are expressed as separate code value pairs that share the same attributes.  Examples include systolic and diastolic component observations for blood pressure measurement and multiple component observations for genetics observations.
2137     * </p> 
2138         */
2139        public Component addComponent() {
2140                Component newType = new Component();
2141                getComponent().add(newType);
2142                return newType; 
2143        }
2144
2145        /**
2146         * Adds a given new value for <b>component</b> ()
2147         *
2148         * <p>
2149         * <b>Definition:</b>
2150         * Some observations have multiple component observations.  These component observations are expressed as separate code value pairs that share the same attributes.  Examples include systolic and diastolic component observations for blood pressure measurement and multiple component observations for genetics observations.
2151         * </p>
2152         * @param theValue The component to add (must not be <code>null</code>)
2153         */
2154        public Observation addComponent(Component theValue) {
2155                if (theValue == null) {
2156                        throw new NullPointerException("theValue must not be null");
2157                }
2158                getComponent().add(theValue);
2159                return this;
2160        }
2161
2162        /**
2163         * Gets the first repetition for <b>component</b> (),
2164         * creating it if it does not already exist.
2165         *
2166     * <p>
2167     * <b>Definition:</b>
2168     * Some observations have multiple component observations.  These component observations are expressed as separate code value pairs that share the same attributes.  Examples include systolic and diastolic component observations for blood pressure measurement and multiple component observations for genetics observations.
2169     * </p> 
2170         */
2171        public Component getComponentFirstRep() {
2172                if (getComponent().isEmpty()) {
2173                        return addComponent();
2174                }
2175                return getComponent().get(0); 
2176        }
2177  
2178        /**
2179         * Block class for child element: <b>Observation.referenceRange</b> ()
2180         *
2181     * <p>
2182     * <b>Definition:</b>
2183     * Guidance on how to interpret the value by comparison to a normal or recommended range
2184     * </p> 
2185         */
2186        @Block()        
2187        public static class ReferenceRange 
2188            extends  BaseIdentifiableElement  
2189            implements IResourceBlock {
2190        
2191        @Child(name="low", type=SimpleQuantityDt.class, order=0, min=0, max=1, summary=false, modifier=false)   
2192        @Description(
2193                shortDefinition="",
2194                formalDefinition="The value of the low bound of the reference range.  The low bound of the reference range endpoint is inclusive of the value (e.g.  reference range is >=5 - <=9).   If the low bound is omitted,  it is assumed to be meaningless (e.g. reference range is <=2.3)."
2195        )
2196        private SimpleQuantityDt myLow;
2197        
2198        @Child(name="high", type=SimpleQuantityDt.class, order=1, min=0, max=1, summary=false, modifier=false)  
2199        @Description(
2200                shortDefinition="",
2201                formalDefinition="The value of the high bound of the reference range.  The high bound of the reference range endpoint is inclusive of the value (e.g.  reference range is >=5 - <=9).   If the high bound is omitted,  it is assumed to be meaningless (e.g. reference range is >= 2.3)."
2202        )
2203        private SimpleQuantityDt myHigh;
2204        
2205        @Child(name="meaning", type=CodeableConceptDt.class, order=2, min=0, max=1, summary=false, modifier=false)      
2206        @Description(
2207                shortDefinition="",
2208                formalDefinition="Code for the meaning of the reference range"
2209        )
2210        private CodeableConceptDt myMeaning;
2211        
2212        @Child(name="age", type=RangeDt.class, order=3, min=0, max=1, summary=false, modifier=false)    
2213        @Description(
2214                shortDefinition="",
2215                formalDefinition="The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so"
2216        )
2217        private RangeDt myAge;
2218        
2219        @Child(name="text", type=StringDt.class, order=4, min=0, max=1, summary=false, modifier=false)  
2220        @Description(
2221                shortDefinition="",
2222                formalDefinition="Text based reference range in an observation which may be used when a quantitative range is not appropriate for an observation.  An example would be a reference value of \"Negative\" or a list or table of 'normals'."
2223        )
2224        private StringDt myText;
2225        
2226
2227        @Override
2228        public boolean isEmpty() {
2229                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myLow,  myHigh,  myMeaning,  myAge,  myText);
2230        }
2231        
2232        @Override
2233        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2234                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myLow, myHigh, myMeaning, myAge, myText);
2235        }
2236
2237        /**
2238         * Gets the value(s) for <b>low</b> ().
2239         * creating it if it does
2240         * not exist. Will not return <code>null</code>.
2241         *
2242     * <p>
2243     * <b>Definition:</b>
2244     * The value of the low bound of the reference range.  The low bound of the reference range endpoint is inclusive of the value (e.g.  reference range is &gt;=5 - &lt;=9).   If the low bound is omitted,  it is assumed to be meaningless (e.g. reference range is &lt;=2.3).
2245     * </p> 
2246         */
2247        public SimpleQuantityDt getLow() {  
2248                if (myLow == null) {
2249                        myLow = new SimpleQuantityDt();
2250                }
2251                return myLow;
2252        }
2253
2254        /**
2255         * Sets the value(s) for <b>low</b> ()
2256         *
2257     * <p>
2258     * <b>Definition:</b>
2259     * The value of the low bound of the reference range.  The low bound of the reference range endpoint is inclusive of the value (e.g.  reference range is &gt;=5 - &lt;=9).   If the low bound is omitted,  it is assumed to be meaningless (e.g. reference range is &lt;=2.3).
2260     * </p> 
2261         */
2262        public ReferenceRange setLow(SimpleQuantityDt theValue) {
2263                myLow = theValue;
2264                return this;
2265        }
2266        
2267        
2268
2269  
2270        /**
2271         * Gets the value(s) for <b>high</b> ().
2272         * creating it if it does
2273         * not exist. Will not return <code>null</code>.
2274         *
2275     * <p>
2276     * <b>Definition:</b>
2277     * The value of the high bound of the reference range.  The high bound of the reference range endpoint is inclusive of the value (e.g.  reference range is &gt;=5 - &lt;=9).   If the high bound is omitted,  it is assumed to be meaningless (e.g. reference range is &gt;= 2.3).
2278     * </p> 
2279         */
2280        public SimpleQuantityDt getHigh() {  
2281                if (myHigh == null) {
2282                        myHigh = new SimpleQuantityDt();
2283                }
2284                return myHigh;
2285        }
2286
2287        /**
2288         * Sets the value(s) for <b>high</b> ()
2289         *
2290     * <p>
2291     * <b>Definition:</b>
2292     * The value of the high bound of the reference range.  The high bound of the reference range endpoint is inclusive of the value (e.g.  reference range is &gt;=5 - &lt;=9).   If the high bound is omitted,  it is assumed to be meaningless (e.g. reference range is &gt;= 2.3).
2293     * </p> 
2294         */
2295        public ReferenceRange setHigh(SimpleQuantityDt theValue) {
2296                myHigh = theValue;
2297                return this;
2298        }
2299        
2300        
2301
2302  
2303        /**
2304         * Gets the value(s) for <b>meaning</b> ().
2305         * creating it if it does
2306         * not exist. Will not return <code>null</code>.
2307         *
2308     * <p>
2309     * <b>Definition:</b>
2310     * Code for the meaning of the reference range
2311     * </p> 
2312         */
2313        public CodeableConceptDt getMeaning() {  
2314                if (myMeaning == null) {
2315                        myMeaning = new CodeableConceptDt();
2316                }
2317                return myMeaning;
2318        }
2319
2320        /**
2321         * Sets the value(s) for <b>meaning</b> ()
2322         *
2323     * <p>
2324     * <b>Definition:</b>
2325     * Code for the meaning of the reference range
2326     * </p> 
2327         */
2328        public ReferenceRange setMeaning(CodeableConceptDt theValue) {
2329                myMeaning = theValue;
2330                return this;
2331        }
2332        
2333        
2334
2335  
2336        /**
2337         * Gets the value(s) for <b>age</b> ().
2338         * creating it if it does
2339         * not exist. Will not return <code>null</code>.
2340         *
2341     * <p>
2342     * <b>Definition:</b>
2343     * The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so
2344     * </p> 
2345         */
2346        public RangeDt getAge() {  
2347                if (myAge == null) {
2348                        myAge = new RangeDt();
2349                }
2350                return myAge;
2351        }
2352
2353        /**
2354         * Sets the value(s) for <b>age</b> ()
2355         *
2356     * <p>
2357     * <b>Definition:</b>
2358     * The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so
2359     * </p> 
2360         */
2361        public ReferenceRange setAge(RangeDt theValue) {
2362                myAge = theValue;
2363                return this;
2364        }
2365        
2366        
2367
2368  
2369        /**
2370         * Gets the value(s) for <b>text</b> ().
2371         * creating it if it does
2372         * not exist. Will not return <code>null</code>.
2373         *
2374     * <p>
2375     * <b>Definition:</b>
2376     * Text based reference range in an observation which may be used when a quantitative range is not appropriate for an observation.  An example would be a reference value of \&quot;Negative\&quot; or a list or table of 'normals'.
2377     * </p> 
2378         */
2379        public StringDt getTextElement() {  
2380                if (myText == null) {
2381                        myText = new StringDt();
2382                }
2383                return myText;
2384        }
2385
2386        
2387        /**
2388         * Gets the value(s) for <b>text</b> ().
2389         * creating it if it does
2390         * not exist. This method may return <code>null</code>.
2391         *
2392     * <p>
2393     * <b>Definition:</b>
2394     * Text based reference range in an observation which may be used when a quantitative range is not appropriate for an observation.  An example would be a reference value of \&quot;Negative\&quot; or a list or table of 'normals'.
2395     * </p> 
2396         */
2397        public String getText() {  
2398                return getTextElement().getValue();
2399        }
2400
2401        /**
2402         * Sets the value(s) for <b>text</b> ()
2403         *
2404     * <p>
2405     * <b>Definition:</b>
2406     * Text based reference range in an observation which may be used when a quantitative range is not appropriate for an observation.  An example would be a reference value of \&quot;Negative\&quot; or a list or table of 'normals'.
2407     * </p> 
2408         */
2409        public ReferenceRange setText(StringDt theValue) {
2410                myText = theValue;
2411                return this;
2412        }
2413        
2414        
2415
2416        /**
2417         * Sets the value for <b>text</b> ()
2418         *
2419     * <p>
2420     * <b>Definition:</b>
2421     * Text based reference range in an observation which may be used when a quantitative range is not appropriate for an observation.  An example would be a reference value of \&quot;Negative\&quot; or a list or table of 'normals'.
2422     * </p> 
2423         */
2424        public ReferenceRange setText( String theString) {
2425                myText = new StringDt(theString); 
2426                return this; 
2427        }
2428
2429 
2430
2431
2432        }
2433
2434
2435        /**
2436         * Block class for child element: <b>Observation.related</b> ()
2437         *
2438     * <p>
2439     * <b>Definition:</b>
2440     * A  reference to another resource (usually another Observation but could  also be a QuestionnaireAnswer) whose relationship is defined by the relationship type code.
2441     * </p> 
2442         */
2443        @Block()        
2444        public static class Related 
2445            extends  BaseIdentifiableElement  
2446            implements IResourceBlock {
2447        
2448        @Child(name="type", type=CodeDt.class, order=0, min=0, max=1, summary=false, modifier=false)    
2449        @Description(
2450                shortDefinition="",
2451                formalDefinition="A code specifying the kind of relationship that exists with the target resource"
2452        )
2453        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/observation-relationshiptypes")
2454        private BoundCodeDt<ObservationRelationshipTypeEnum> myType;
2455        
2456        @Child(name="target", order=1, min=1, max=1, summary=false, modifier=false, type={
2457                ca.uhn.fhir.model.dstu2.resource.Observation.class, 
2458                ca.uhn.fhir.model.dstu2.resource.QuestionnaireResponse.class
2459        })
2460        @Description(
2461                shortDefinition="",
2462                formalDefinition="A reference to the observation or [[[QuestionnaireResponse]]] resource that is related to this observation"
2463        )
2464        private ResourceReferenceDt myTarget;
2465        
2466
2467        @Override
2468        public boolean isEmpty() {
2469                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myType,  myTarget);
2470        }
2471        
2472        @Override
2473        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2474                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myType, myTarget);
2475        }
2476
2477        /**
2478         * Gets the value(s) for <b>type</b> ().
2479         * creating it if it does
2480         * not exist. Will not return <code>null</code>.
2481         *
2482     * <p>
2483     * <b>Definition:</b>
2484     * A code specifying the kind of relationship that exists with the target resource
2485     * </p> 
2486         */
2487        public BoundCodeDt<ObservationRelationshipTypeEnum> getTypeElement() {  
2488                if (myType == null) {
2489                        myType = new BoundCodeDt<ObservationRelationshipTypeEnum>(ObservationRelationshipTypeEnum.VALUESET_BINDER);
2490                }
2491                return myType;
2492        }
2493
2494        
2495        /**
2496         * Gets the value(s) for <b>type</b> ().
2497         * creating it if it does
2498         * not exist. This method may return <code>null</code>.
2499         *
2500     * <p>
2501     * <b>Definition:</b>
2502     * A code specifying the kind of relationship that exists with the target resource
2503     * </p> 
2504         */
2505        public String getType() {  
2506                return getTypeElement().getValue();
2507        }
2508
2509        /**
2510         * Sets the value(s) for <b>type</b> ()
2511         *
2512     * <p>
2513     * <b>Definition:</b>
2514     * A code specifying the kind of relationship that exists with the target resource
2515     * </p> 
2516         */
2517        public Related setType(BoundCodeDt<ObservationRelationshipTypeEnum> theValue) {
2518                myType = theValue;
2519                return this;
2520        }
2521        
2522        
2523
2524        /**
2525         * Sets the value(s) for <b>type</b> ()
2526         *
2527     * <p>
2528     * <b>Definition:</b>
2529     * A code specifying the kind of relationship that exists with the target resource
2530     * </p> 
2531         */
2532        public Related setType(ObservationRelationshipTypeEnum theValue) {
2533                setType(new BoundCodeDt<ObservationRelationshipTypeEnum>(ObservationRelationshipTypeEnum.VALUESET_BINDER, theValue));
2534                
2535/*
2536                getTypeElement().setValueAsEnum(theValue);
2537*/
2538                return this;
2539        }
2540
2541  
2542        /**
2543         * Gets the value(s) for <b>target</b> ().
2544         * creating it if it does
2545         * not exist. Will not return <code>null</code>.
2546         *
2547     * <p>
2548     * <b>Definition:</b>
2549     * A reference to the observation or [[[QuestionnaireResponse]]] resource that is related to this observation
2550     * </p> 
2551         */
2552        public ResourceReferenceDt getTarget() {  
2553                if (myTarget == null) {
2554                        myTarget = new ResourceReferenceDt();
2555                }
2556                return myTarget;
2557        }
2558
2559        /**
2560         * Sets the value(s) for <b>target</b> ()
2561         *
2562     * <p>
2563     * <b>Definition:</b>
2564     * A reference to the observation or [[[QuestionnaireResponse]]] resource that is related to this observation
2565     * </p> 
2566         */
2567        public Related setTarget(ResourceReferenceDt theValue) {
2568                myTarget = theValue;
2569                return this;
2570        }
2571        
2572        
2573
2574  
2575
2576
2577        }
2578
2579
2580        /**
2581         * Block class for child element: <b>Observation.component</b> ()
2582         *
2583     * <p>
2584     * <b>Definition:</b>
2585     * Some observations have multiple component observations.  These component observations are expressed as separate code value pairs that share the same attributes.  Examples include systolic and diastolic component observations for blood pressure measurement and multiple component observations for genetics observations.
2586     * </p> 
2587         */
2588        @Block()        
2589        public static class Component 
2590            extends  BaseIdentifiableElement  
2591            implements IResourceBlock {
2592        
2593        @Child(name="code", type=CodeableConceptDt.class, order=0, min=1, max=1, summary=true, modifier=false)  
2594        @Description(
2595                shortDefinition="what",
2596                formalDefinition="Describes what was observed. Sometimes this is called the observation \"code\""
2597        )
2598        private CodeableConceptDt myCode;
2599        
2600        @Child(name="value", order=1, min=0, max=1, summary=true, modifier=false, type={
2601                QuantityDt.class, 
2602                CodeableConceptDt.class, 
2603                StringDt.class, 
2604                RangeDt.class, 
2605                RatioDt.class, 
2606                SampledDataDt.class, 
2607                AttachmentDt.class, 
2608                TimeDt.class, 
2609                DateTimeDt.class, 
2610                PeriodDt.class
2611        })
2612        @Description(
2613                shortDefinition="",
2614                formalDefinition="The information determined as a result of making the observation, if the information has a simple value"
2615        )
2616        private IDatatype myValue;
2617        
2618        @Child(name="dataAbsentReason", type=CodeableConceptDt.class, order=2, min=0, max=1, summary=false, modifier=false)     
2619        @Description(
2620                shortDefinition="",
2621                formalDefinition="Provides a reason why the expected value in the element Observation.value[x] is missing."
2622        )
2623        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/valueset-observation-valueabsentreason")
2624        private CodeableConceptDt myDataAbsentReason;
2625        
2626        @Child(name="referenceRange", type=ReferenceRange.class, order=3, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
2627        @Description(
2628                shortDefinition="",
2629                formalDefinition="Guidance on how to interpret the value by comparison to a normal or recommended range"
2630        )
2631        private java.util.List<ReferenceRange> myReferenceRange;
2632        
2633
2634        @Override
2635        public boolean isEmpty() {
2636                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCode,  myValue,  myDataAbsentReason,  myReferenceRange);
2637        }
2638        
2639        @Override
2640        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2641                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCode, myValue, myDataAbsentReason, myReferenceRange);
2642        }
2643
2644        /**
2645         * Gets the value(s) for <b>code</b> (what).
2646         * creating it if it does
2647         * not exist. Will not return <code>null</code>.
2648         *
2649     * <p>
2650     * <b>Definition:</b>
2651     * Describes what was observed. Sometimes this is called the observation \&quot;code\&quot;
2652     * </p> 
2653         */
2654        public CodeableConceptDt getCode() {  
2655                if (myCode == null) {
2656                        myCode = new CodeableConceptDt();
2657                }
2658                return myCode;
2659        }
2660
2661        /**
2662         * Sets the value(s) for <b>code</b> (what)
2663         *
2664     * <p>
2665     * <b>Definition:</b>
2666     * Describes what was observed. Sometimes this is called the observation \&quot;code\&quot;
2667     * </p> 
2668         */
2669        public Component setCode(CodeableConceptDt theValue) {
2670                myCode = theValue;
2671                return this;
2672        }
2673        
2674        
2675
2676  
2677        /**
2678         * Gets the value(s) for <b>value[x]</b> ().
2679         * creating it if it does
2680         * not exist. Will not return <code>null</code>.
2681         *
2682     * <p>
2683     * <b>Definition:</b>
2684     * The information determined as a result of making the observation, if the information has a simple value
2685     * </p> 
2686         */
2687        public IDatatype getValue() {  
2688                return myValue;
2689        }
2690
2691        /**
2692         * Sets the value(s) for <b>value[x]</b> ()
2693         *
2694     * <p>
2695     * <b>Definition:</b>
2696     * The information determined as a result of making the observation, if the information has a simple value
2697     * </p> 
2698         */
2699        public Component setValue(IDatatype theValue) {
2700                myValue = theValue;
2701                return this;
2702        }
2703        
2704        
2705
2706  
2707        /**
2708         * Gets the value(s) for <b>dataAbsentReason</b> ().
2709         * creating it if it does
2710         * not exist. Will not return <code>null</code>.
2711         *
2712     * <p>
2713     * <b>Definition:</b>
2714     * Provides a reason why the expected value in the element Observation.value[x] is missing.
2715     * </p> 
2716         */
2717        public CodeableConceptDt getDataAbsentReason() {  
2718                if (myDataAbsentReason == null) {
2719                        myDataAbsentReason = new CodeableConceptDt();
2720                }
2721                return myDataAbsentReason;
2722        }
2723
2724        /**
2725         * Sets the value(s) for <b>dataAbsentReason</b> ()
2726         *
2727     * <p>
2728     * <b>Definition:</b>
2729     * Provides a reason why the expected value in the element Observation.value[x] is missing.
2730     * </p> 
2731         */
2732        public Component setDataAbsentReason(CodeableConceptDt theValue) {
2733                myDataAbsentReason = theValue;
2734                return this;
2735        }
2736        
2737        
2738
2739  
2740        /**
2741         * Gets the value(s) for <b>referenceRange</b> ().
2742         * creating it if it does
2743         * not exist. Will not return <code>null</code>.
2744         *
2745     * <p>
2746     * <b>Definition:</b>
2747     * Guidance on how to interpret the value by comparison to a normal or recommended range
2748     * </p> 
2749         */
2750        public java.util.List<ReferenceRange> getReferenceRange() {  
2751                if (myReferenceRange == null) {
2752                        myReferenceRange = new java.util.ArrayList<ReferenceRange>();
2753                }
2754                return myReferenceRange;
2755        }
2756
2757        /**
2758         * Sets the value(s) for <b>referenceRange</b> ()
2759         *
2760     * <p>
2761     * <b>Definition:</b>
2762     * Guidance on how to interpret the value by comparison to a normal or recommended range
2763     * </p> 
2764         */
2765        public Component setReferenceRange(java.util.List<ReferenceRange> theValue) {
2766                myReferenceRange = theValue;
2767                return this;
2768        }
2769        
2770        
2771
2772        /**
2773         * Adds and returns a new value for <b>referenceRange</b> ()
2774         *
2775     * <p>
2776     * <b>Definition:</b>
2777     * Guidance on how to interpret the value by comparison to a normal or recommended range
2778     * </p> 
2779         */
2780        public ReferenceRange addReferenceRange() {
2781                ReferenceRange newType = new ReferenceRange();
2782                getReferenceRange().add(newType);
2783                return newType; 
2784        }
2785
2786        /**
2787         * Adds a given new value for <b>referenceRange</b> ()
2788         *
2789         * <p>
2790         * <b>Definition:</b>
2791         * Guidance on how to interpret the value by comparison to a normal or recommended range
2792         * </p>
2793         * @param theValue The referenceRange to add (must not be <code>null</code>)
2794         */
2795        public Component addReferenceRange(ReferenceRange theValue) {
2796                if (theValue == null) {
2797                        throw new NullPointerException("theValue must not be null");
2798                }
2799                getReferenceRange().add(theValue);
2800                return this;
2801        }
2802
2803        /**
2804         * Gets the first repetition for <b>referenceRange</b> (),
2805         * creating it if it does not already exist.
2806         *
2807     * <p>
2808     * <b>Definition:</b>
2809     * Guidance on how to interpret the value by comparison to a normal or recommended range
2810     * </p> 
2811         */
2812        public ReferenceRange getReferenceRangeFirstRep() {
2813                if (getReferenceRange().isEmpty()) {
2814                        return addReferenceRange();
2815                }
2816                return getReferenceRange().get(0); 
2817        }
2818  
2819
2820
2821        }
2822
2823
2824
2825
2826    @Override
2827    public String getResourceName() {
2828        return "Observation";
2829    }
2830    
2831    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
2832        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
2833    }
2834
2835
2836}