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>ImmunizationRecommendation</b> Resource
282 * (clinical.medication)
283 *
284 * <p>
285 * <b>Definition:</b>
286 * A patient's point-in-time immunization and recommendation (i.e. forecasting a patient's immunization eligibility according to a published schedule) with optional supporting justification.
287 * </p> 
288 *
289 * <p>
290 * <b>Requirements:</b>
291 * 
292 * </p> 
293 *
294 * <p>
295 * <b>Profile Definition:</b>
296 * <a href="http://hl7.org/fhir/profiles/ImmunizationRecommendation">http://hl7.org/fhir/profiles/ImmunizationRecommendation</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="ImmunizationRecommendation", profile="http://hl7.org/fhir/profiles/ImmunizationRecommendation", id="immunizationrecommendation")
301public class ImmunizationRecommendation extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource 
303    {
304
305        /**
306         * Search parameter constant for <b>vaccine-type</b>
307         * <p>
308         * Description: <b></b><br>
309         * Type: <b>token</b><br>
310         * Path: <b>ImmunizationRecommendation.recommendation.vaccineCode</b><br>
311         * </p>
312         */
313        @SearchParamDefinition(name="vaccine-type", path="ImmunizationRecommendation.recommendation.vaccineCode", description="", type="token" 
314 )
315        public static final String SP_VACCINE_TYPE = "vaccine-type";
316
317        /**
318         * <b>Fluent Client</b> search parameter constant for <b>vaccine-type</b>
319         * <p>
320         * Description: <b></b><br>
321         * Type: <b>token</b><br>
322         * Path: <b>ImmunizationRecommendation.recommendation.vaccineCode</b><br>
323         * </p>
324         */
325        public static final TokenClientParam VACCINE_TYPE = new TokenClientParam(SP_VACCINE_TYPE);
326
327        /**
328         * Search parameter constant for <b>identifier</b>
329         * <p>
330         * Description: <b></b><br>
331         * Type: <b>token</b><br>
332         * Path: <b>ImmunizationRecommendation.identifier</b><br>
333         * </p>
334         */
335        @SearchParamDefinition(name="identifier", path="ImmunizationRecommendation.identifier", description="", type="token" 
336 )
337        public static final String SP_IDENTIFIER = "identifier";
338
339        /**
340         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
341         * <p>
342         * Description: <b></b><br>
343         * Type: <b>token</b><br>
344         * Path: <b>ImmunizationRecommendation.identifier</b><br>
345         * </p>
346         */
347        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
348
349        /**
350         * Search parameter constant for <b>date</b>
351         * <p>
352         * Description: <b></b><br>
353         * Type: <b>date</b><br>
354         * Path: <b>ImmunizationRecommendation.recommendation.date</b><br>
355         * </p>
356         */
357        @SearchParamDefinition(name="date", path="ImmunizationRecommendation.recommendation.date", description="", type="date" 
358 )
359        public static final String SP_DATE = "date";
360
361        /**
362         * <b>Fluent Client</b> search parameter constant for <b>date</b>
363         * <p>
364         * Description: <b></b><br>
365         * Type: <b>date</b><br>
366         * Path: <b>ImmunizationRecommendation.recommendation.date</b><br>
367         * </p>
368         */
369        public static final DateClientParam DATE = new DateClientParam(SP_DATE);
370
371        /**
372         * Search parameter constant for <b>dose-number</b>
373         * <p>
374         * Description: <b></b><br>
375         * Type: <b>number</b><br>
376         * Path: <b>ImmunizationRecommendation.recommendation.doseNumber</b><br>
377         * </p>
378         */
379        @SearchParamDefinition(name="dose-number", path="ImmunizationRecommendation.recommendation.doseNumber", description="", type="number" 
380 )
381        public static final String SP_DOSE_NUMBER = "dose-number";
382
383        /**
384         * <b>Fluent Client</b> search parameter constant for <b>dose-number</b>
385         * <p>
386         * Description: <b></b><br>
387         * Type: <b>number</b><br>
388         * Path: <b>ImmunizationRecommendation.recommendation.doseNumber</b><br>
389         * </p>
390         */
391        public static final NumberClientParam DOSE_NUMBER = new NumberClientParam(SP_DOSE_NUMBER);
392
393        /**
394         * Search parameter constant for <b>status</b>
395         * <p>
396         * Description: <b></b><br>
397         * Type: <b>token</b><br>
398         * Path: <b>ImmunizationRecommendation.recommendation.forecastStatus</b><br>
399         * </p>
400         */
401        @SearchParamDefinition(name="status", path="ImmunizationRecommendation.recommendation.forecastStatus", description="", type="token" 
402 )
403        public static final String SP_STATUS = "status";
404
405        /**
406         * <b>Fluent Client</b> search parameter constant for <b>status</b>
407         * <p>
408         * Description: <b></b><br>
409         * Type: <b>token</b><br>
410         * Path: <b>ImmunizationRecommendation.recommendation.forecastStatus</b><br>
411         * </p>
412         */
413        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
414
415        /**
416         * Search parameter constant for <b>dose-sequence</b>
417         * <p>
418         * Description: <b></b><br>
419         * Type: <b>number</b><br>
420         * Path: <b>ImmunizationRecommendation.recommendation.protocol.doseSequence</b><br>
421         * </p>
422         */
423        @SearchParamDefinition(name="dose-sequence", path="ImmunizationRecommendation.recommendation.protocol.doseSequence", description="", type="number" 
424 )
425        public static final String SP_DOSE_SEQUENCE = "dose-sequence";
426
427        /**
428         * <b>Fluent Client</b> search parameter constant for <b>dose-sequence</b>
429         * <p>
430         * Description: <b></b><br>
431         * Type: <b>number</b><br>
432         * Path: <b>ImmunizationRecommendation.recommendation.protocol.doseSequence</b><br>
433         * </p>
434         */
435        public static final NumberClientParam DOSE_SEQUENCE = new NumberClientParam(SP_DOSE_SEQUENCE);
436
437        /**
438         * Search parameter constant for <b>support</b>
439         * <p>
440         * Description: <b></b><br>
441         * Type: <b>reference</b><br>
442         * Path: <b>ImmunizationRecommendation.recommendation.supportingImmunization</b><br>
443         * </p>
444         */
445        @SearchParamDefinition(name="support", path="ImmunizationRecommendation.recommendation.supportingImmunization", description="", type="reference" 
446 )
447        public static final String SP_SUPPORT = "support";
448
449        /**
450         * <b>Fluent Client</b> search parameter constant for <b>support</b>
451         * <p>
452         * Description: <b></b><br>
453         * Type: <b>reference</b><br>
454         * Path: <b>ImmunizationRecommendation.recommendation.supportingImmunization</b><br>
455         * </p>
456         */
457        public static final ReferenceClientParam SUPPORT = new ReferenceClientParam(SP_SUPPORT);
458
459        /**
460         * Search parameter constant for <b>information</b>
461         * <p>
462         * Description: <b></b><br>
463         * Type: <b>reference</b><br>
464         * Path: <b>ImmunizationRecommendation.recommendation.supportingPatientInformation</b><br>
465         * </p>
466         */
467        @SearchParamDefinition(name="information", path="ImmunizationRecommendation.recommendation.supportingPatientInformation", description="", type="reference" 
468 )
469        public static final String SP_INFORMATION = "information";
470
471        /**
472         * <b>Fluent Client</b> search parameter constant for <b>information</b>
473         * <p>
474         * Description: <b></b><br>
475         * Type: <b>reference</b><br>
476         * Path: <b>ImmunizationRecommendation.recommendation.supportingPatientInformation</b><br>
477         * </p>
478         */
479        public static final ReferenceClientParam INFORMATION = new ReferenceClientParam(SP_INFORMATION);
480
481        /**
482         * Search parameter constant for <b>patient</b>
483         * <p>
484         * Description: <b></b><br>
485         * Type: <b>reference</b><br>
486         * Path: <b>ImmunizationRecommendation.patient</b><br>
487         * </p>
488         */
489        @SearchParamDefinition(name="patient", path="ImmunizationRecommendation.patient", description="", type="reference" 
490, providesMembershipIn={
491 @Compartment(name="Patient")   }
492 )
493        public static final String SP_PATIENT = "patient";
494
495        /**
496         * <b>Fluent Client</b> search parameter constant for <b>patient</b>
497         * <p>
498         * Description: <b></b><br>
499         * Type: <b>reference</b><br>
500         * Path: <b>ImmunizationRecommendation.patient</b><br>
501         * </p>
502         */
503        public static final ReferenceClientParam PATIENT = new ReferenceClientParam(SP_PATIENT);
504
505
506        /**
507         * Constant for fluent queries to be used to add include statements. Specifies
508         * the path value of "<b>ImmunizationRecommendation:information</b>".
509         */
510        public static final Include INCLUDE_INFORMATION = new Include("ImmunizationRecommendation:information");
511
512        /**
513         * Constant for fluent queries to be used to add include statements. Specifies
514         * the path value of "<b>ImmunizationRecommendation:patient</b>".
515         */
516        public static final Include INCLUDE_PATIENT = new Include("ImmunizationRecommendation:patient");
517
518        /**
519         * Constant for fluent queries to be used to add include statements. Specifies
520         * the path value of "<b>ImmunizationRecommendation:support</b>".
521         */
522        public static final Include INCLUDE_SUPPORT = new Include("ImmunizationRecommendation:support");
523
524
525        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)       
526        @Description(
527                shortDefinition="id",
528                formalDefinition="A unique identifier assigned to this particular recommendation record."
529        )
530        private java.util.List<IdentifierDt> myIdentifier;
531        
532        @Child(name="patient", order=1, min=1, max=1, summary=true, modifier=false, type={
533                ca.uhn.fhir.model.dstu2.resource.Patient.class
534        })
535        @Description(
536                shortDefinition="who.focus",
537                formalDefinition="The patient for whom the recommendations are for."
538        )
539        private ResourceReferenceDt myPatient;
540        
541        @Child(name="recommendation", order=2, min=1, max=Child.MAX_UNLIMITED, summary=true, modifier=false)    
542        @Description(
543                shortDefinition="",
544                formalDefinition="Vaccine administration recommendations"
545        )
546        private java.util.List<Recommendation> myRecommendation;
547        
548
549        @Override
550        public boolean isEmpty() {
551                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myPatient,  myRecommendation);
552        }
553        
554        @Override
555        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
556                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myPatient, myRecommendation);
557        }
558
559        /**
560         * Gets the value(s) for <b>identifier</b> (id).
561         * creating it if it does
562         * not exist. Will not return <code>null</code>.
563         *
564     * <p>
565     * <b>Definition:</b>
566     * A unique identifier assigned to this particular recommendation record.
567     * </p> 
568         */
569        public java.util.List<IdentifierDt> getIdentifier() {  
570                if (myIdentifier == null) {
571                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
572                }
573                return myIdentifier;
574        }
575
576        /**
577         * Sets the value(s) for <b>identifier</b> (id)
578         *
579     * <p>
580     * <b>Definition:</b>
581     * A unique identifier assigned to this particular recommendation record.
582     * </p> 
583         */
584        public ImmunizationRecommendation setIdentifier(java.util.List<IdentifierDt> theValue) {
585                myIdentifier = theValue;
586                return this;
587        }
588        
589        
590
591        /**
592         * Adds and returns a new value for <b>identifier</b> (id)
593         *
594     * <p>
595     * <b>Definition:</b>
596     * A unique identifier assigned to this particular recommendation record.
597     * </p> 
598         */
599        public IdentifierDt addIdentifier() {
600                IdentifierDt newType = new IdentifierDt();
601                getIdentifier().add(newType);
602                return newType; 
603        }
604
605        /**
606         * Adds a given new value for <b>identifier</b> (id)
607         *
608         * <p>
609         * <b>Definition:</b>
610         * A unique identifier assigned to this particular recommendation record.
611         * </p>
612         * @param theValue The identifier to add (must not be <code>null</code>)
613         */
614        public ImmunizationRecommendation addIdentifier(IdentifierDt theValue) {
615                if (theValue == null) {
616                        throw new NullPointerException("theValue must not be null");
617                }
618                getIdentifier().add(theValue);
619                return this;
620        }
621
622        /**
623         * Gets the first repetition for <b>identifier</b> (id),
624         * creating it if it does not already exist.
625         *
626     * <p>
627     * <b>Definition:</b>
628     * A unique identifier assigned to this particular recommendation record.
629     * </p> 
630         */
631        public IdentifierDt getIdentifierFirstRep() {
632                if (getIdentifier().isEmpty()) {
633                        return addIdentifier();
634                }
635                return getIdentifier().get(0); 
636        }
637  
638        /**
639         * Gets the value(s) for <b>patient</b> (who.focus).
640         * creating it if it does
641         * not exist. Will not return <code>null</code>.
642         *
643     * <p>
644     * <b>Definition:</b>
645     * The patient for whom the recommendations are for.
646     * </p> 
647         */
648        public ResourceReferenceDt getPatient() {  
649                if (myPatient == null) {
650                        myPatient = new ResourceReferenceDt();
651                }
652                return myPatient;
653        }
654
655        /**
656         * Sets the value(s) for <b>patient</b> (who.focus)
657         *
658     * <p>
659     * <b>Definition:</b>
660     * The patient for whom the recommendations are for.
661     * </p> 
662         */
663        public ImmunizationRecommendation setPatient(ResourceReferenceDt theValue) {
664                myPatient = theValue;
665                return this;
666        }
667        
668        
669
670  
671        /**
672         * Gets the value(s) for <b>recommendation</b> ().
673         * creating it if it does
674         * not exist. Will not return <code>null</code>.
675         *
676     * <p>
677     * <b>Definition:</b>
678     * Vaccine administration recommendations
679     * </p> 
680         */
681        public java.util.List<Recommendation> getRecommendation() {  
682                if (myRecommendation == null) {
683                        myRecommendation = new java.util.ArrayList<Recommendation>();
684                }
685                return myRecommendation;
686        }
687
688        /**
689         * Sets the value(s) for <b>recommendation</b> ()
690         *
691     * <p>
692     * <b>Definition:</b>
693     * Vaccine administration recommendations
694     * </p> 
695         */
696        public ImmunizationRecommendation setRecommendation(java.util.List<Recommendation> theValue) {
697                myRecommendation = theValue;
698                return this;
699        }
700        
701        
702
703        /**
704         * Adds and returns a new value for <b>recommendation</b> ()
705         *
706     * <p>
707     * <b>Definition:</b>
708     * Vaccine administration recommendations
709     * </p> 
710         */
711        public Recommendation addRecommendation() {
712                Recommendation newType = new Recommendation();
713                getRecommendation().add(newType);
714                return newType; 
715        }
716
717        /**
718         * Adds a given new value for <b>recommendation</b> ()
719         *
720         * <p>
721         * <b>Definition:</b>
722         * Vaccine administration recommendations
723         * </p>
724         * @param theValue The recommendation to add (must not be <code>null</code>)
725         */
726        public ImmunizationRecommendation addRecommendation(Recommendation theValue) {
727                if (theValue == null) {
728                        throw new NullPointerException("theValue must not be null");
729                }
730                getRecommendation().add(theValue);
731                return this;
732        }
733
734        /**
735         * Gets the first repetition for <b>recommendation</b> (),
736         * creating it if it does not already exist.
737         *
738     * <p>
739     * <b>Definition:</b>
740     * Vaccine administration recommendations
741     * </p> 
742         */
743        public Recommendation getRecommendationFirstRep() {
744                if (getRecommendation().isEmpty()) {
745                        return addRecommendation();
746                }
747                return getRecommendation().get(0); 
748        }
749  
750        /**
751         * Block class for child element: <b>ImmunizationRecommendation.recommendation</b> ()
752         *
753     * <p>
754     * <b>Definition:</b>
755     * Vaccine administration recommendations
756     * </p> 
757         */
758        @Block()        
759        public static class Recommendation 
760            extends  BaseIdentifiableElement  
761            implements IResourceBlock {
762        
763        @Child(name="date", type=DateTimeDt.class, order=0, min=1, max=1, summary=true, modifier=false) 
764        @Description(
765                shortDefinition="",
766                formalDefinition="The date the immunization recommendation was created."
767        )
768        private DateTimeDt myDate;
769        
770        @Child(name="vaccineCode", type=CodeableConceptDt.class, order=1, min=1, max=1, summary=true, modifier=false)   
771        @Description(
772                shortDefinition="",
773                formalDefinition="Vaccine that pertains to the recommendation"
774        )
775        private CodeableConceptDt myVaccineCode;
776        
777        @Child(name="doseNumber", type=PositiveIntDt.class, order=2, min=0, max=1, summary=true, modifier=false)        
778        @Description(
779                shortDefinition="",
780                formalDefinition="This indicates the next recommended dose number (e.g. dose 2 is the next recommended dose)."
781        )
782        private PositiveIntDt myDoseNumber;
783        
784        @Child(name="forecastStatus", type=CodeableConceptDt.class, order=3, min=1, max=1, summary=true, modifier=false)        
785        @Description(
786                shortDefinition="",
787                formalDefinition="Vaccine administration status"
788        )
789        private CodeableConceptDt myForecastStatus;
790        
791        @Child(name="dateCriterion", order=4, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
792        @Description(
793                shortDefinition="",
794                formalDefinition="Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc."
795        )
796        private java.util.List<RecommendationDateCriterion> myDateCriterion;
797        
798        @Child(name="protocol", order=5, min=0, max=1, summary=false, modifier=false)   
799        @Description(
800                shortDefinition="",
801                formalDefinition="Contains information about the protocol under which the vaccine was administered"
802        )
803        private RecommendationProtocol myProtocol;
804        
805        @Child(name="supportingImmunization", order=6, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
806                ca.uhn.fhir.model.dstu2.resource.Immunization.class
807        })
808        @Description(
809                shortDefinition="",
810                formalDefinition="Immunization event history that supports the status and recommendation"
811        )
812        private java.util.List<ResourceReferenceDt> mySupportingImmunization;
813        
814        @Child(name="supportingPatientInformation", order=7, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
815                ca.uhn.fhir.model.dstu2.resource.Observation.class, 
816                ca.uhn.fhir.model.dstu2.resource.AllergyIntolerance.class
817        })
818        @Description(
819                shortDefinition="",
820                formalDefinition="Patient Information that supports the status and recommendation.  This includes patient observations, adverse reactions and allergy/intolerance information."
821        )
822        private java.util.List<ResourceReferenceDt> mySupportingPatientInformation;
823        
824
825        @Override
826        public boolean isEmpty() {
827                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myDate,  myVaccineCode,  myDoseNumber,  myForecastStatus,  myDateCriterion,  myProtocol,  mySupportingImmunization,  mySupportingPatientInformation);
828        }
829        
830        @Override
831        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
832                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myDate, myVaccineCode, myDoseNumber, myForecastStatus, myDateCriterion, myProtocol, mySupportingImmunization, mySupportingPatientInformation);
833        }
834
835        /**
836         * Gets the value(s) for <b>date</b> ().
837         * creating it if it does
838         * not exist. Will not return <code>null</code>.
839         *
840     * <p>
841     * <b>Definition:</b>
842     * The date the immunization recommendation was created.
843     * </p> 
844         */
845        public DateTimeDt getDateElement() {  
846                if (myDate == null) {
847                        myDate = new DateTimeDt();
848                }
849                return myDate;
850        }
851
852        
853        /**
854         * Gets the value(s) for <b>date</b> ().
855         * creating it if it does
856         * not exist. This method may return <code>null</code>.
857         *
858     * <p>
859     * <b>Definition:</b>
860     * The date the immunization recommendation was created.
861     * </p> 
862         */
863        public Date getDate() {  
864                return getDateElement().getValue();
865        }
866
867        /**
868         * Sets the value(s) for <b>date</b> ()
869         *
870     * <p>
871     * <b>Definition:</b>
872     * The date the immunization recommendation was created.
873     * </p> 
874         */
875        public Recommendation setDate(DateTimeDt theValue) {
876                myDate = theValue;
877                return this;
878        }
879        
880        
881
882        /**
883         * Sets the value for <b>date</b> ()
884         *
885     * <p>
886     * <b>Definition:</b>
887     * The date the immunization recommendation was created.
888     * </p> 
889         */
890        public Recommendation setDateWithSecondsPrecision( Date theDate) {
891                myDate = new DateTimeDt(theDate); 
892                return this; 
893        }
894
895        /**
896         * Sets the value for <b>date</b> ()
897         *
898     * <p>
899     * <b>Definition:</b>
900     * The date the immunization recommendation was created.
901     * </p> 
902         */
903        public Recommendation setDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
904                myDate = new DateTimeDt(theDate, thePrecision); 
905                return this; 
906        }
907
908 
909        /**
910         * Gets the value(s) for <b>vaccineCode</b> ().
911         * creating it if it does
912         * not exist. Will not return <code>null</code>.
913         *
914     * <p>
915     * <b>Definition:</b>
916     * Vaccine that pertains to the recommendation
917     * </p> 
918         */
919        public CodeableConceptDt getVaccineCode() {  
920                if (myVaccineCode == null) {
921                        myVaccineCode = new CodeableConceptDt();
922                }
923                return myVaccineCode;
924        }
925
926        /**
927         * Sets the value(s) for <b>vaccineCode</b> ()
928         *
929     * <p>
930     * <b>Definition:</b>
931     * Vaccine that pertains to the recommendation
932     * </p> 
933         */
934        public Recommendation setVaccineCode(CodeableConceptDt theValue) {
935                myVaccineCode = theValue;
936                return this;
937        }
938        
939        
940
941  
942        /**
943         * Gets the value(s) for <b>doseNumber</b> ().
944         * creating it if it does
945         * not exist. Will not return <code>null</code>.
946         *
947     * <p>
948     * <b>Definition:</b>
949     * This indicates the next recommended dose number (e.g. dose 2 is the next recommended dose).
950     * </p> 
951         */
952        public PositiveIntDt getDoseNumberElement() {  
953                if (myDoseNumber == null) {
954                        myDoseNumber = new PositiveIntDt();
955                }
956                return myDoseNumber;
957        }
958
959        
960        /**
961         * Gets the value(s) for <b>doseNumber</b> ().
962         * creating it if it does
963         * not exist. This method may return <code>null</code>.
964         *
965     * <p>
966     * <b>Definition:</b>
967     * This indicates the next recommended dose number (e.g. dose 2 is the next recommended dose).
968     * </p> 
969         */
970        public Integer getDoseNumber() {  
971                return getDoseNumberElement().getValue();
972        }
973
974        /**
975         * Sets the value(s) for <b>doseNumber</b> ()
976         *
977     * <p>
978     * <b>Definition:</b>
979     * This indicates the next recommended dose number (e.g. dose 2 is the next recommended dose).
980     * </p> 
981         */
982        public Recommendation setDoseNumber(PositiveIntDt theValue) {
983                myDoseNumber = theValue;
984                return this;
985        }
986        
987        
988
989        /**
990         * Sets the value for <b>doseNumber</b> ()
991         *
992     * <p>
993     * <b>Definition:</b>
994     * This indicates the next recommended dose number (e.g. dose 2 is the next recommended dose).
995     * </p> 
996         */
997        public Recommendation setDoseNumber( int theInteger) {
998                myDoseNumber = new PositiveIntDt(theInteger); 
999                return this; 
1000        }
1001
1002 
1003        /**
1004         * Gets the value(s) for <b>forecastStatus</b> ().
1005         * creating it if it does
1006         * not exist. Will not return <code>null</code>.
1007         *
1008     * <p>
1009     * <b>Definition:</b>
1010     * Vaccine administration status
1011     * </p> 
1012         */
1013        public CodeableConceptDt getForecastStatus() {  
1014                if (myForecastStatus == null) {
1015                        myForecastStatus = new CodeableConceptDt();
1016                }
1017                return myForecastStatus;
1018        }
1019
1020        /**
1021         * Sets the value(s) for <b>forecastStatus</b> ()
1022         *
1023     * <p>
1024     * <b>Definition:</b>
1025     * Vaccine administration status
1026     * </p> 
1027         */
1028        public Recommendation setForecastStatus(CodeableConceptDt theValue) {
1029                myForecastStatus = theValue;
1030                return this;
1031        }
1032        
1033        
1034
1035  
1036        /**
1037         * Gets the value(s) for <b>dateCriterion</b> ().
1038         * creating it if it does
1039         * not exist. Will not return <code>null</code>.
1040         *
1041     * <p>
1042     * <b>Definition:</b>
1043     * Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc.
1044     * </p> 
1045         */
1046        public java.util.List<RecommendationDateCriterion> getDateCriterion() {  
1047                if (myDateCriterion == null) {
1048                        myDateCriterion = new java.util.ArrayList<RecommendationDateCriterion>();
1049                }
1050                return myDateCriterion;
1051        }
1052
1053        /**
1054         * Sets the value(s) for <b>dateCriterion</b> ()
1055         *
1056     * <p>
1057     * <b>Definition:</b>
1058     * Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc.
1059     * </p> 
1060         */
1061        public Recommendation setDateCriterion(java.util.List<RecommendationDateCriterion> theValue) {
1062                myDateCriterion = theValue;
1063                return this;
1064        }
1065        
1066        
1067
1068        /**
1069         * Adds and returns a new value for <b>dateCriterion</b> ()
1070         *
1071     * <p>
1072     * <b>Definition:</b>
1073     * Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc.
1074     * </p> 
1075         */
1076        public RecommendationDateCriterion addDateCriterion() {
1077                RecommendationDateCriterion newType = new RecommendationDateCriterion();
1078                getDateCriterion().add(newType);
1079                return newType; 
1080        }
1081
1082        /**
1083         * Adds a given new value for <b>dateCriterion</b> ()
1084         *
1085         * <p>
1086         * <b>Definition:</b>
1087         * Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc.
1088         * </p>
1089         * @param theValue The dateCriterion to add (must not be <code>null</code>)
1090         */
1091        public Recommendation addDateCriterion(RecommendationDateCriterion theValue) {
1092                if (theValue == null) {
1093                        throw new NullPointerException("theValue must not be null");
1094                }
1095                getDateCriterion().add(theValue);
1096                return this;
1097        }
1098
1099        /**
1100         * Gets the first repetition for <b>dateCriterion</b> (),
1101         * creating it if it does not already exist.
1102         *
1103     * <p>
1104     * <b>Definition:</b>
1105     * Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc.
1106     * </p> 
1107         */
1108        public RecommendationDateCriterion getDateCriterionFirstRep() {
1109                if (getDateCriterion().isEmpty()) {
1110                        return addDateCriterion();
1111                }
1112                return getDateCriterion().get(0); 
1113        }
1114  
1115        /**
1116         * Gets the value(s) for <b>protocol</b> ().
1117         * creating it if it does
1118         * not exist. Will not return <code>null</code>.
1119         *
1120     * <p>
1121     * <b>Definition:</b>
1122     * Contains information about the protocol under which the vaccine was administered
1123     * </p> 
1124         */
1125        public RecommendationProtocol getProtocol() {  
1126                if (myProtocol == null) {
1127                        myProtocol = new RecommendationProtocol();
1128                }
1129                return myProtocol;
1130        }
1131
1132        /**
1133         * Sets the value(s) for <b>protocol</b> ()
1134         *
1135     * <p>
1136     * <b>Definition:</b>
1137     * Contains information about the protocol under which the vaccine was administered
1138     * </p> 
1139         */
1140        public Recommendation setProtocol(RecommendationProtocol theValue) {
1141                myProtocol = theValue;
1142                return this;
1143        }
1144        
1145        
1146
1147  
1148        /**
1149         * Gets the value(s) for <b>supportingImmunization</b> ().
1150         * creating it if it does
1151         * not exist. Will not return <code>null</code>.
1152         *
1153     * <p>
1154     * <b>Definition:</b>
1155     * Immunization event history that supports the status and recommendation
1156     * </p> 
1157         */
1158        public java.util.List<ResourceReferenceDt> getSupportingImmunization() {  
1159                if (mySupportingImmunization == null) {
1160                        mySupportingImmunization = new java.util.ArrayList<ResourceReferenceDt>();
1161                }
1162                return mySupportingImmunization;
1163        }
1164
1165        /**
1166         * Sets the value(s) for <b>supportingImmunization</b> ()
1167         *
1168     * <p>
1169     * <b>Definition:</b>
1170     * Immunization event history that supports the status and recommendation
1171     * </p> 
1172         */
1173        public Recommendation setSupportingImmunization(java.util.List<ResourceReferenceDt> theValue) {
1174                mySupportingImmunization = theValue;
1175                return this;
1176        }
1177        
1178        
1179
1180        /**
1181         * Adds and returns a new value for <b>supportingImmunization</b> ()
1182         *
1183     * <p>
1184     * <b>Definition:</b>
1185     * Immunization event history that supports the status and recommendation
1186     * </p> 
1187         */
1188        public ResourceReferenceDt addSupportingImmunization() {
1189                ResourceReferenceDt newType = new ResourceReferenceDt();
1190                getSupportingImmunization().add(newType);
1191                return newType; 
1192        }
1193  
1194        /**
1195         * Gets the value(s) for <b>supportingPatientInformation</b> ().
1196         * creating it if it does
1197         * not exist. Will not return <code>null</code>.
1198         *
1199     * <p>
1200     * <b>Definition:</b>
1201     * Patient Information that supports the status and recommendation.  This includes patient observations, adverse reactions and allergy/intolerance information.
1202     * </p> 
1203         */
1204        public java.util.List<ResourceReferenceDt> getSupportingPatientInformation() {  
1205                if (mySupportingPatientInformation == null) {
1206                        mySupportingPatientInformation = new java.util.ArrayList<ResourceReferenceDt>();
1207                }
1208                return mySupportingPatientInformation;
1209        }
1210
1211        /**
1212         * Sets the value(s) for <b>supportingPatientInformation</b> ()
1213         *
1214     * <p>
1215     * <b>Definition:</b>
1216     * Patient Information that supports the status and recommendation.  This includes patient observations, adverse reactions and allergy/intolerance information.
1217     * </p> 
1218         */
1219        public Recommendation setSupportingPatientInformation(java.util.List<ResourceReferenceDt> theValue) {
1220                mySupportingPatientInformation = theValue;
1221                return this;
1222        }
1223        
1224        
1225
1226        /**
1227         * Adds and returns a new value for <b>supportingPatientInformation</b> ()
1228         *
1229     * <p>
1230     * <b>Definition:</b>
1231     * Patient Information that supports the status and recommendation.  This includes patient observations, adverse reactions and allergy/intolerance information.
1232     * </p> 
1233         */
1234        public ResourceReferenceDt addSupportingPatientInformation() {
1235                ResourceReferenceDt newType = new ResourceReferenceDt();
1236                getSupportingPatientInformation().add(newType);
1237                return newType; 
1238        }
1239  
1240
1241
1242        }
1243
1244        /**
1245         * Block class for child element: <b>ImmunizationRecommendation.recommendation.dateCriterion</b> ()
1246         *
1247     * <p>
1248     * <b>Definition:</b>
1249     * Vaccine date recommendations.  For example, earliest date to administer, latest date to administer, etc.
1250     * </p> 
1251         */
1252        @Block()        
1253        public static class RecommendationDateCriterion 
1254            extends  BaseIdentifiableElement  
1255            implements IResourceBlock {
1256        
1257        @Child(name="code", type=CodeableConceptDt.class, order=0, min=1, max=1, summary=false, modifier=false) 
1258        @Description(
1259                shortDefinition="",
1260                formalDefinition="Date classification of recommendation.  For example, earliest date to give, latest date to give, etc."
1261        )
1262        private CodeableConceptDt myCode;
1263        
1264        @Child(name="value", type=DateTimeDt.class, order=1, min=1, max=1, summary=false, modifier=false)       
1265        @Description(
1266                shortDefinition="",
1267                formalDefinition="The date whose meaning is specified by dateCriterion.code"
1268        )
1269        private DateTimeDt myValue;
1270        
1271
1272        @Override
1273        public boolean isEmpty() {
1274                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCode,  myValue);
1275        }
1276        
1277        @Override
1278        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1279                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCode, myValue);
1280        }
1281
1282        /**
1283         * Gets the value(s) for <b>code</b> ().
1284         * creating it if it does
1285         * not exist. Will not return <code>null</code>.
1286         *
1287     * <p>
1288     * <b>Definition:</b>
1289     * Date classification of recommendation.  For example, earliest date to give, latest date to give, etc.
1290     * </p> 
1291         */
1292        public CodeableConceptDt getCode() {  
1293                if (myCode == null) {
1294                        myCode = new CodeableConceptDt();
1295                }
1296                return myCode;
1297        }
1298
1299        /**
1300         * Sets the value(s) for <b>code</b> ()
1301         *
1302     * <p>
1303     * <b>Definition:</b>
1304     * Date classification of recommendation.  For example, earliest date to give, latest date to give, etc.
1305     * </p> 
1306         */
1307        public RecommendationDateCriterion setCode(CodeableConceptDt theValue) {
1308                myCode = theValue;
1309                return this;
1310        }
1311        
1312        
1313
1314  
1315        /**
1316         * Gets the value(s) for <b>value</b> ().
1317         * creating it if it does
1318         * not exist. Will not return <code>null</code>.
1319         *
1320     * <p>
1321     * <b>Definition:</b>
1322     * The date whose meaning is specified by dateCriterion.code
1323     * </p> 
1324         */
1325        public DateTimeDt getValueElement() {  
1326                if (myValue == null) {
1327                        myValue = new DateTimeDt();
1328                }
1329                return myValue;
1330        }
1331
1332        
1333        /**
1334         * Gets the value(s) for <b>value</b> ().
1335         * creating it if it does
1336         * not exist. This method may return <code>null</code>.
1337         *
1338     * <p>
1339     * <b>Definition:</b>
1340     * The date whose meaning is specified by dateCriterion.code
1341     * </p> 
1342         */
1343        public Date getValue() {  
1344                return getValueElement().getValue();
1345        }
1346
1347        /**
1348         * Sets the value(s) for <b>value</b> ()
1349         *
1350     * <p>
1351     * <b>Definition:</b>
1352     * The date whose meaning is specified by dateCriterion.code
1353     * </p> 
1354         */
1355        public RecommendationDateCriterion setValue(DateTimeDt theValue) {
1356                myValue = theValue;
1357                return this;
1358        }
1359        
1360        
1361
1362        /**
1363         * Sets the value for <b>value</b> ()
1364         *
1365     * <p>
1366     * <b>Definition:</b>
1367     * The date whose meaning is specified by dateCriterion.code
1368     * </p> 
1369         */
1370        public RecommendationDateCriterion setValueWithSecondsPrecision( Date theDate) {
1371                myValue = new DateTimeDt(theDate); 
1372                return this; 
1373        }
1374
1375        /**
1376         * Sets the value for <b>value</b> ()
1377         *
1378     * <p>
1379     * <b>Definition:</b>
1380     * The date whose meaning is specified by dateCriterion.code
1381     * </p> 
1382         */
1383        public RecommendationDateCriterion setValue( Date theDate,  TemporalPrecisionEnum thePrecision) {
1384                myValue = new DateTimeDt(theDate, thePrecision); 
1385                return this; 
1386        }
1387
1388 
1389
1390
1391        }
1392
1393
1394        /**
1395         * Block class for child element: <b>ImmunizationRecommendation.recommendation.protocol</b> ()
1396         *
1397     * <p>
1398     * <b>Definition:</b>
1399     * Contains information about the protocol under which the vaccine was administered
1400     * </p> 
1401         */
1402        @Block()        
1403        public static class RecommendationProtocol 
1404            extends  BaseIdentifiableElement  
1405            implements IResourceBlock {
1406        
1407        @Child(name="doseSequence", type=IntegerDt.class, order=0, min=0, max=1, summary=false, modifier=false) 
1408        @Description(
1409                shortDefinition="",
1410                formalDefinition="Indicates the nominal position in a series of the next dose.  This is the recommended dose number as per a specified protocol."
1411        )
1412        private IntegerDt myDoseSequence;
1413        
1414        @Child(name="description", type=StringDt.class, order=1, min=0, max=1, summary=false, modifier=false)   
1415        @Description(
1416                shortDefinition="",
1417                formalDefinition="Contains the description about the protocol under which the vaccine was administered"
1418        )
1419        private StringDt myDescription;
1420        
1421        @Child(name="authority", order=2, min=0, max=1, summary=false, modifier=false, type={
1422                ca.uhn.fhir.model.dstu2.resource.Organization.class
1423        })
1424        @Description(
1425                shortDefinition="",
1426                formalDefinition="Indicates the authority who published the protocol.  For example, ACIP"
1427        )
1428        private ResourceReferenceDt myAuthority;
1429        
1430        @Child(name="series", type=StringDt.class, order=3, min=0, max=1, summary=false, modifier=false)        
1431        @Description(
1432                shortDefinition="",
1433                formalDefinition="One possible path to achieve presumed immunity against a disease - within the context of an authority"
1434        )
1435        private StringDt mySeries;
1436        
1437
1438        @Override
1439        public boolean isEmpty() {
1440                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myDoseSequence,  myDescription,  myAuthority,  mySeries);
1441        }
1442        
1443        @Override
1444        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1445                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myDoseSequence, myDescription, myAuthority, mySeries);
1446        }
1447
1448        /**
1449         * Gets the value(s) for <b>doseSequence</b> ().
1450         * creating it if it does
1451         * not exist. Will not return <code>null</code>.
1452         *
1453     * <p>
1454     * <b>Definition:</b>
1455     * Indicates the nominal position in a series of the next dose.  This is the recommended dose number as per a specified protocol.
1456     * </p> 
1457         */
1458        public IntegerDt getDoseSequenceElement() {  
1459                if (myDoseSequence == null) {
1460                        myDoseSequence = new IntegerDt();
1461                }
1462                return myDoseSequence;
1463        }
1464
1465        
1466        /**
1467         * Gets the value(s) for <b>doseSequence</b> ().
1468         * creating it if it does
1469         * not exist. This method may return <code>null</code>.
1470         *
1471     * <p>
1472     * <b>Definition:</b>
1473     * Indicates the nominal position in a series of the next dose.  This is the recommended dose number as per a specified protocol.
1474     * </p> 
1475         */
1476        public Integer getDoseSequence() {  
1477                return getDoseSequenceElement().getValue();
1478        }
1479
1480        /**
1481         * Sets the value(s) for <b>doseSequence</b> ()
1482         *
1483     * <p>
1484     * <b>Definition:</b>
1485     * Indicates the nominal position in a series of the next dose.  This is the recommended dose number as per a specified protocol.
1486     * </p> 
1487         */
1488        public RecommendationProtocol setDoseSequence(IntegerDt theValue) {
1489                myDoseSequence = theValue;
1490                return this;
1491        }
1492        
1493        
1494
1495        /**
1496         * Sets the value for <b>doseSequence</b> ()
1497         *
1498     * <p>
1499     * <b>Definition:</b>
1500     * Indicates the nominal position in a series of the next dose.  This is the recommended dose number as per a specified protocol.
1501     * </p> 
1502         */
1503        public RecommendationProtocol setDoseSequence( int theInteger) {
1504                myDoseSequence = new IntegerDt(theInteger); 
1505                return this; 
1506        }
1507
1508 
1509        /**
1510         * Gets the value(s) for <b>description</b> ().
1511         * creating it if it does
1512         * not exist. Will not return <code>null</code>.
1513         *
1514     * <p>
1515     * <b>Definition:</b>
1516     * Contains the description about the protocol under which the vaccine was administered
1517     * </p> 
1518         */
1519        public StringDt getDescriptionElement() {  
1520                if (myDescription == null) {
1521                        myDescription = new StringDt();
1522                }
1523                return myDescription;
1524        }
1525
1526        
1527        /**
1528         * Gets the value(s) for <b>description</b> ().
1529         * creating it if it does
1530         * not exist. This method may return <code>null</code>.
1531         *
1532     * <p>
1533     * <b>Definition:</b>
1534     * Contains the description about the protocol under which the vaccine was administered
1535     * </p> 
1536         */
1537        public String getDescription() {  
1538                return getDescriptionElement().getValue();
1539        }
1540
1541        /**
1542         * Sets the value(s) for <b>description</b> ()
1543         *
1544     * <p>
1545     * <b>Definition:</b>
1546     * Contains the description about the protocol under which the vaccine was administered
1547     * </p> 
1548         */
1549        public RecommendationProtocol setDescription(StringDt theValue) {
1550                myDescription = theValue;
1551                return this;
1552        }
1553        
1554        
1555
1556        /**
1557         * Sets the value for <b>description</b> ()
1558         *
1559     * <p>
1560     * <b>Definition:</b>
1561     * Contains the description about the protocol under which the vaccine was administered
1562     * </p> 
1563         */
1564        public RecommendationProtocol setDescription( String theString) {
1565                myDescription = new StringDt(theString); 
1566                return this; 
1567        }
1568
1569 
1570        /**
1571         * Gets the value(s) for <b>authority</b> ().
1572         * creating it if it does
1573         * not exist. Will not return <code>null</code>.
1574         *
1575     * <p>
1576     * <b>Definition:</b>
1577     * Indicates the authority who published the protocol.  For example, ACIP
1578     * </p> 
1579         */
1580        public ResourceReferenceDt getAuthority() {  
1581                if (myAuthority == null) {
1582                        myAuthority = new ResourceReferenceDt();
1583                }
1584                return myAuthority;
1585        }
1586
1587        /**
1588         * Sets the value(s) for <b>authority</b> ()
1589         *
1590     * <p>
1591     * <b>Definition:</b>
1592     * Indicates the authority who published the protocol.  For example, ACIP
1593     * </p> 
1594         */
1595        public RecommendationProtocol setAuthority(ResourceReferenceDt theValue) {
1596                myAuthority = theValue;
1597                return this;
1598        }
1599        
1600        
1601
1602  
1603        /**
1604         * Gets the value(s) for <b>series</b> ().
1605         * creating it if it does
1606         * not exist. Will not return <code>null</code>.
1607         *
1608     * <p>
1609     * <b>Definition:</b>
1610     * One possible path to achieve presumed immunity against a disease - within the context of an authority
1611     * </p> 
1612         */
1613        public StringDt getSeriesElement() {  
1614                if (mySeries == null) {
1615                        mySeries = new StringDt();
1616                }
1617                return mySeries;
1618        }
1619
1620        
1621        /**
1622         * Gets the value(s) for <b>series</b> ().
1623         * creating it if it does
1624         * not exist. This method may return <code>null</code>.
1625         *
1626     * <p>
1627     * <b>Definition:</b>
1628     * One possible path to achieve presumed immunity against a disease - within the context of an authority
1629     * </p> 
1630         */
1631        public String getSeries() {  
1632                return getSeriesElement().getValue();
1633        }
1634
1635        /**
1636         * Sets the value(s) for <b>series</b> ()
1637         *
1638     * <p>
1639     * <b>Definition:</b>
1640     * One possible path to achieve presumed immunity against a disease - within the context of an authority
1641     * </p> 
1642         */
1643        public RecommendationProtocol setSeries(StringDt theValue) {
1644                mySeries = theValue;
1645                return this;
1646        }
1647        
1648        
1649
1650        /**
1651         * Sets the value for <b>series</b> ()
1652         *
1653     * <p>
1654     * <b>Definition:</b>
1655     * One possible path to achieve presumed immunity against a disease - within the context of an authority
1656     * </p> 
1657         */
1658        public RecommendationProtocol setSeries( String theString) {
1659                mySeries = new StringDt(theString); 
1660                return this; 
1661        }
1662
1663 
1664
1665
1666        }
1667
1668
1669
1670
1671
1672    @Override
1673    public String getResourceName() {
1674        return "ImmunizationRecommendation";
1675    }
1676    
1677    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
1678        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
1679    }
1680
1681
1682}