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.valueset.AnimalSpeciesEnum;
042import ca.uhn.fhir.model.dstu2.composite.AnnotationDt;
043import ca.uhn.fhir.model.dstu2.valueset.AnswerFormatEnum;
044import ca.uhn.fhir.model.dstu2.resource.Appointment;
045import ca.uhn.fhir.model.dstu2.valueset.AppointmentStatusEnum;
046import ca.uhn.fhir.model.dstu2.valueset.AssertionDirectionTypeEnum;
047import ca.uhn.fhir.model.dstu2.valueset.AssertionOperatorTypeEnum;
048import ca.uhn.fhir.model.dstu2.valueset.AssertionResponseTypesEnum;
049import ca.uhn.fhir.model.dstu2.composite.AttachmentDt;
050import ca.uhn.fhir.model.dstu2.valueset.AuditEventActionEnum;
051import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectLifecycleEnum;
052import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectRoleEnum;
053import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectTypeEnum;
054import ca.uhn.fhir.model.dstu2.valueset.AuditEventOutcomeEnum;
055import ca.uhn.fhir.model.dstu2.valueset.AuditEventParticipantNetworkTypeEnum;
056import ca.uhn.fhir.model.dstu2.valueset.AuditEventSourceTypeEnum;
057import ca.uhn.fhir.model.dstu2.valueset.BindingStrengthEnum;
058import ca.uhn.fhir.model.dstu2.resource.BodySite;
059import ca.uhn.fhir.model.dstu2.valueset.BundleTypeEnum;
060import ca.uhn.fhir.model.dstu2.resource.CarePlan;
061import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityCategoryEnum;
062import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityStatusEnum;
063import ca.uhn.fhir.model.dstu2.valueset.CarePlanRelationshipEnum;
064import ca.uhn.fhir.model.dstu2.valueset.CarePlanStatusEnum;
065import ca.uhn.fhir.model.dstu2.resource.Claim;
066import ca.uhn.fhir.model.dstu2.resource.ClaimResponse;
067import ca.uhn.fhir.model.dstu2.valueset.ClaimTypeEnum;
068import ca.uhn.fhir.model.dstu2.resource.ClinicalImpression;
069import ca.uhn.fhir.model.dstu2.valueset.ClinicalImpressionStatusEnum;
070import ca.uhn.fhir.model.dstu2.composite.CodeableConceptDt;
071import ca.uhn.fhir.model.dstu2.composite.CodingDt;
072import ca.uhn.fhir.model.dstu2.resource.CommunicationRequest;
073import ca.uhn.fhir.model.dstu2.valueset.CommunicationRequestStatusEnum;
074import ca.uhn.fhir.model.dstu2.valueset.CommunicationStatusEnum;
075import ca.uhn.fhir.model.dstu2.resource.Composition;
076import ca.uhn.fhir.model.dstu2.valueset.CompositionAttestationModeEnum;
077import ca.uhn.fhir.model.dstu2.valueset.CompositionStatusEnum;
078import ca.uhn.fhir.model.dstu2.valueset.ConceptMapEquivalenceEnum;
079import ca.uhn.fhir.model.dstu2.resource.Condition;
080import ca.uhn.fhir.model.dstu2.valueset.ConditionCategoryCodesEnum;
081import ca.uhn.fhir.model.dstu2.valueset.ConditionClinicalStatusCodesEnum;
082import ca.uhn.fhir.model.dstu2.valueset.ConditionVerificationStatusEnum;
083import ca.uhn.fhir.model.dstu2.valueset.ConditionalDeleteStatusEnum;
084import ca.uhn.fhir.model.dstu2.valueset.ConditionsCodesEnum;
085import ca.uhn.fhir.model.dstu2.resource.Conformance;
086import ca.uhn.fhir.model.dstu2.valueset.ConformanceEventModeEnum;
087import ca.uhn.fhir.model.dstu2.valueset.ConformanceResourceStatusEnum;
088import ca.uhn.fhir.model.dstu2.valueset.ConformanceStatementKindEnum;
089import ca.uhn.fhir.model.dstu2.composite.ContactPointDt;
090import ca.uhn.fhir.model.dstu2.valueset.ContentTypeEnum;
091import ca.uhn.fhir.model.dstu2.resource.Contract;
092import ca.uhn.fhir.model.dstu2.valueset.ContractActionCodesEnum;
093import ca.uhn.fhir.model.dstu2.valueset.ContractActorRoleCodesEnum;
094import ca.uhn.fhir.model.dstu2.valueset.ContractSubtypeCodesEnum;
095import ca.uhn.fhir.model.dstu2.valueset.ContractTermTypeCodesEnum;
096import ca.uhn.fhir.model.dstu2.valueset.ContractTypeCodesEnum;
097import ca.uhn.fhir.model.dstu2.resource.Coverage;
098import ca.uhn.fhir.model.dstu2.valueset.DataElementStringencyEnum;
099import ca.uhn.fhir.model.dstu2.valueset.DaysOfWeekEnum;
100import ca.uhn.fhir.model.dstu2.valueset.DetectedIssueSeverityEnum;
101import ca.uhn.fhir.model.dstu2.resource.Device;
102import ca.uhn.fhir.model.dstu2.resource.DeviceComponent;
103import ca.uhn.fhir.model.dstu2.resource.DeviceMetric;
104import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationStateEnum;
105import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationTypeEnum;
106import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCategoryEnum;
107import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricColorEnum;
108import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricOperationalStatusEnum;
109import ca.uhn.fhir.model.dstu2.valueset.DeviceStatusEnum;
110import ca.uhn.fhir.model.dstu2.resource.DeviceUseRequest;
111import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestPriorityEnum;
112import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestStatusEnum;
113import ca.uhn.fhir.model.dstu2.resource.DiagnosticOrder;
114import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderPriorityEnum;
115import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderStatusEnum;
116import ca.uhn.fhir.model.dstu2.resource.DiagnosticReport;
117import ca.uhn.fhir.model.dstu2.valueset.DiagnosticReportStatusEnum;
118import ca.uhn.fhir.model.dstu2.valueset.DigitalMediaTypeEnum;
119import ca.uhn.fhir.model.dstu2.valueset.DocumentModeEnum;
120import ca.uhn.fhir.model.dstu2.resource.DocumentReference;
121import ca.uhn.fhir.model.dstu2.valueset.DocumentReferenceStatusEnum;
122import ca.uhn.fhir.model.dstu2.valueset.DocumentRelationshipTypeEnum;
123import ca.uhn.fhir.model.dstu2.composite.ElementDefinitionDt;
124import ca.uhn.fhir.model.dstu2.resource.EligibilityRequest;
125import ca.uhn.fhir.model.dstu2.resource.Encounter;
126import ca.uhn.fhir.model.dstu2.valueset.EncounterClassEnum;
127import ca.uhn.fhir.model.dstu2.valueset.EncounterLocationStatusEnum;
128import ca.uhn.fhir.model.dstu2.valueset.EncounterStateEnum;
129import ca.uhn.fhir.model.dstu2.valueset.EncounterTypeEnum;
130import ca.uhn.fhir.model.dstu2.resource.EnrollmentRequest;
131import ca.uhn.fhir.model.dstu2.valueset.EnteralFormulaTypeCodesEnum;
132import ca.uhn.fhir.model.dstu2.resource.EpisodeOfCare;
133import ca.uhn.fhir.model.dstu2.valueset.EpisodeOfCareStatusEnum;
134import ca.uhn.fhir.model.dstu2.valueset.ExceptionCodesEnum;
135import ca.uhn.fhir.model.dstu2.valueset.ExtensionContextEnum;
136import ca.uhn.fhir.model.dstu2.valueset.FamilyHistoryStatusEnum;
137import ca.uhn.fhir.model.dstu2.resource.FamilyMemberHistory;
138import ca.uhn.fhir.model.dstu2.valueset.FilterOperatorEnum;
139import ca.uhn.fhir.model.dstu2.valueset.FlagCategoryCodesEnum;
140import ca.uhn.fhir.model.dstu2.valueset.FlagStatusEnum;
141import ca.uhn.fhir.model.dstu2.valueset.FluidConsistencyTypeCodesEnum;
142import ca.uhn.fhir.model.dstu2.resource.Goal;
143import ca.uhn.fhir.model.dstu2.valueset.GoalCategoryEnum;
144import ca.uhn.fhir.model.dstu2.valueset.GoalPriorityEnum;
145import ca.uhn.fhir.model.dstu2.valueset.GoalStartEventEnum;
146import ca.uhn.fhir.model.dstu2.valueset.GoalStatusEnum;
147import ca.uhn.fhir.model.dstu2.valueset.GoalStatusReasonEnum;
148import ca.uhn.fhir.model.dstu2.resource.Group;
149import ca.uhn.fhir.model.dstu2.valueset.GroupTypeEnum;
150import ca.uhn.fhir.model.dstu2.valueset.GuideDependencyTypeEnum;
151import ca.uhn.fhir.model.dstu2.valueset.GuidePageKindEnum;
152import ca.uhn.fhir.model.dstu2.valueset.GuideResourcePurposeEnum;
153import ca.uhn.fhir.model.dstu2.valueset.HTTPVerbEnum;
154import ca.uhn.fhir.model.dstu2.resource.HealthcareService;
155import ca.uhn.fhir.model.dstu2.composite.HumanNameDt;
156import ca.uhn.fhir.model.dstu2.composite.IdentifierDt;
157import ca.uhn.fhir.model.dstu2.valueset.IdentifierTypeCodesEnum;
158import ca.uhn.fhir.model.dstu2.valueset.IdentityAssuranceLevelEnum;
159import ca.uhn.fhir.model.dstu2.resource.ImagingObjectSelection;
160import ca.uhn.fhir.model.dstu2.resource.ImagingStudy;
161import ca.uhn.fhir.model.dstu2.resource.Immunization;
162import ca.uhn.fhir.model.dstu2.valueset.ImmunizationReasonCodesEnum;
163import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRecommendationDateCriterionCodesEnum;
164import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRecommendationStatusCodesEnum;
165import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRouteCodesEnum;
166import ca.uhn.fhir.model.dstu2.valueset.InstanceAvailabilityEnum;
167import ca.uhn.fhir.model.dstu2.valueset.InterventionCodesEnum;
168import ca.uhn.fhir.model.dstu2.valueset.IssueSeverityEnum;
169import ca.uhn.fhir.model.dstu2.valueset.IssueTypeEnum;
170import ca.uhn.fhir.model.dstu2.valueset.KOStitleEnum;
171import ca.uhn.fhir.model.dstu2.valueset.LateralityEnum;
172import ca.uhn.fhir.model.dstu2.valueset.LinkTypeEnum;
173import ca.uhn.fhir.model.dstu2.valueset.ListModeEnum;
174import ca.uhn.fhir.model.dstu2.valueset.ListOrderCodesEnum;
175import ca.uhn.fhir.model.dstu2.valueset.ListStatusEnum;
176import ca.uhn.fhir.model.dstu2.resource.Location;
177import ca.uhn.fhir.model.dstu2.valueset.LocationModeEnum;
178import ca.uhn.fhir.model.dstu2.valueset.LocationStatusEnum;
179import ca.uhn.fhir.model.dstu2.valueset.LocationTypeEnum;
180import ca.uhn.fhir.model.dstu2.valueset.MaritalStatusCodesEnum;
181import ca.uhn.fhir.model.dstu2.valueset.MeasmntPrincipleEnum;
182import ca.uhn.fhir.model.dstu2.resource.Media;
183import ca.uhn.fhir.model.dstu2.resource.Medication;
184import ca.uhn.fhir.model.dstu2.valueset.MedicationAdministrationStatusEnum;
185import ca.uhn.fhir.model.dstu2.valueset.MedicationDispenseStatusEnum;
186import ca.uhn.fhir.model.dstu2.resource.MedicationOrder;
187import ca.uhn.fhir.model.dstu2.valueset.MedicationOrderStatusEnum;
188import ca.uhn.fhir.model.dstu2.resource.MedicationStatement;
189import ca.uhn.fhir.model.dstu2.valueset.MedicationStatementStatusEnum;
190import ca.uhn.fhir.model.dstu2.valueset.MessageEventEnum;
191import ca.uhn.fhir.model.dstu2.valueset.MessageSignificanceCategoryEnum;
192import ca.uhn.fhir.model.dstu2.valueset.MessageTransportEnum;
193import ca.uhn.fhir.model.dstu2.resource.NamingSystem;
194import ca.uhn.fhir.model.dstu2.valueset.NamingSystemIdentifierTypeEnum;
195import ca.uhn.fhir.model.dstu2.valueset.NamingSystemTypeEnum;
196import ca.uhn.fhir.model.dstu2.valueset.NoteTypeEnum;
197import ca.uhn.fhir.model.dstu2.valueset.NutrientModifierCodesEnum;
198import ca.uhn.fhir.model.dstu2.resource.NutritionOrder;
199import ca.uhn.fhir.model.dstu2.valueset.NutritionOrderStatusEnum;
200import ca.uhn.fhir.model.dstu2.resource.Observation;
201import ca.uhn.fhir.model.dstu2.valueset.ObservationCategoryCodesEnum;
202import ca.uhn.fhir.model.dstu2.valueset.ObservationRelationshipTypeEnum;
203import ca.uhn.fhir.model.dstu2.valueset.ObservationStatusEnum;
204import ca.uhn.fhir.model.dstu2.resource.OperationDefinition;
205import ca.uhn.fhir.model.dstu2.valueset.OperationKindEnum;
206import ca.uhn.fhir.model.dstu2.resource.OperationOutcome;
207import ca.uhn.fhir.model.dstu2.valueset.OperationParameterUseEnum;
208import ca.uhn.fhir.model.dstu2.resource.Order;
209import ca.uhn.fhir.model.dstu2.valueset.OrderStatusEnum;
210import ca.uhn.fhir.model.dstu2.resource.Organization;
211import ca.uhn.fhir.model.dstu2.valueset.OrganizationTypeEnum;
212import ca.uhn.fhir.model.dstu2.valueset.ParticipantRequiredEnum;
213import ca.uhn.fhir.model.dstu2.valueset.ParticipantStatusEnum;
214import ca.uhn.fhir.model.dstu2.valueset.ParticipantTypeEnum;
215import ca.uhn.fhir.model.dstu2.valueset.ParticipationStatusEnum;
216import ca.uhn.fhir.model.dstu2.resource.Patient;
217import ca.uhn.fhir.model.dstu2.valueset.PayeeTypeCodesEnum;
218import ca.uhn.fhir.model.dstu2.valueset.PaymentStatusCodesEnum;
219import ca.uhn.fhir.model.dstu2.valueset.PaymentTypeCodesEnum;
220import ca.uhn.fhir.model.dstu2.composite.PeriodDt;
221import ca.uhn.fhir.model.dstu2.resource.Person;
222import ca.uhn.fhir.model.dstu2.resource.Practitioner;
223import ca.uhn.fhir.model.dstu2.valueset.PractitionerRoleEnum;
224import ca.uhn.fhir.model.dstu2.valueset.PractitionerSpecialtyEnum;
225import ca.uhn.fhir.model.dstu2.valueset.PriorityCodesEnum;
226import ca.uhn.fhir.model.dstu2.resource.Procedure;
227import ca.uhn.fhir.model.dstu2.resource.ProcedureRequest;
228import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestPriorityEnum;
229import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestStatusEnum;
230import ca.uhn.fhir.model.dstu2.valueset.ProcedureStatusEnum;
231import ca.uhn.fhir.model.dstu2.resource.ProcessRequest;
232import ca.uhn.fhir.model.dstu2.valueset.ProvenanceEntityRoleEnum;
233import ca.uhn.fhir.model.dstu2.composite.QuantityDt;
234import ca.uhn.fhir.model.dstu2.resource.Questionnaire;
235import ca.uhn.fhir.model.dstu2.resource.QuestionnaireResponse;
236import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireResponseStatusEnum;
237import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireStatusEnum;
238import ca.uhn.fhir.model.dstu2.composite.RangeDt;
239import ca.uhn.fhir.model.dstu2.composite.RatioDt;
240import ca.uhn.fhir.model.dstu2.valueset.ReferralMethodEnum;
241import ca.uhn.fhir.model.dstu2.resource.ReferralRequest;
242import ca.uhn.fhir.model.dstu2.valueset.ReferralStatusEnum;
243import ca.uhn.fhir.model.dstu2.resource.RelatedPerson;
244import ca.uhn.fhir.model.dstu2.valueset.RemittanceOutcomeEnum;
245import ca.uhn.fhir.model.dstu2.valueset.ResourceTypeEnum;
246import ca.uhn.fhir.model.dstu2.valueset.ResourceVersionPolicyEnum;
247import ca.uhn.fhir.model.dstu2.valueset.ResponseTypeEnum;
248import ca.uhn.fhir.model.dstu2.valueset.RestfulConformanceModeEnum;
249import ca.uhn.fhir.model.dstu2.valueset.RestfulSecurityServiceEnum;
250import ca.uhn.fhir.model.dstu2.resource.RiskAssessment;
251import ca.uhn.fhir.model.dstu2.valueset.RulesetCodesEnum;
252import ca.uhn.fhir.model.dstu2.composite.SampledDataDt;
253import ca.uhn.fhir.model.dstu2.resource.Schedule;
254import ca.uhn.fhir.model.dstu2.valueset.SearchEntryModeEnum;
255import ca.uhn.fhir.model.dstu2.valueset.SearchModifierCodeEnum;
256import ca.uhn.fhir.model.dstu2.valueset.SearchParamTypeEnum;
257import ca.uhn.fhir.model.dstu2.valueset.ServiceProvisionConditionsEnum;
258import ca.uhn.fhir.model.dstu2.composite.SignatureDt;
259import ca.uhn.fhir.model.dstu2.resource.Slot;
260import ca.uhn.fhir.model.dstu2.valueset.SlotStatusEnum;
261import ca.uhn.fhir.model.dstu2.resource.Specimen;
262import ca.uhn.fhir.model.dstu2.valueset.SpecimenCollectionMethodEnum;
263import ca.uhn.fhir.model.dstu2.valueset.SpecimenStatusEnum;
264import ca.uhn.fhir.model.dstu2.resource.StructureDefinition;
265import ca.uhn.fhir.model.dstu2.valueset.StructureDefinitionKindEnum;
266import ca.uhn.fhir.model.dstu2.valueset.SubscriptionChannelTypeEnum;
267import ca.uhn.fhir.model.dstu2.valueset.SubscriptionStatusEnum;
268import ca.uhn.fhir.model.dstu2.valueset.SubscriptionTagEnum;
269import ca.uhn.fhir.model.dstu2.resource.Substance;
270import ca.uhn.fhir.model.dstu2.valueset.SubstanceCategoryCodesEnum;
271import ca.uhn.fhir.model.dstu2.valueset.SupplementTypeCodesEnum;
272import ca.uhn.fhir.model.dstu2.valueset.SupplyDeliveryStatusEnum;
273import ca.uhn.fhir.model.dstu2.resource.SupplyRequest;
274import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestReasonEnum;
275import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestStatusEnum;
276import ca.uhn.fhir.model.dstu2.valueset.SurfaceCodesEnum;
277import ca.uhn.fhir.model.dstu2.valueset.SystemRestfulInteractionEnum;
278import ca.uhn.fhir.model.api.TemporalPrecisionEnum;
279import ca.uhn.fhir.model.dstu2.valueset.TextureModifiedFoodTypeCodesEnum;
280import ca.uhn.fhir.model.dstu2.valueset.TextureModifierCodesEnum;
281import ca.uhn.fhir.model.dstu2.composite.TimingDt;
282import ca.uhn.fhir.model.dstu2.valueset.TransactionModeEnum;
283import ca.uhn.fhir.model.dstu2.valueset.TypeRestfulInteractionEnum;
284import ca.uhn.fhir.model.dstu2.valueset.UDICodesEnum;
285import ca.uhn.fhir.model.dstu2.valueset.UnknownContentCodeEnum;
286import ca.uhn.fhir.model.dstu2.valueset.UseEnum;
287import ca.uhn.fhir.model.dstu2.resource.ValueSet;
288import ca.uhn.fhir.model.dstu2.valueset.VisionBaseEnum;
289import ca.uhn.fhir.model.dstu2.valueset.VisionEyesEnum;
290import ca.uhn.fhir.model.dstu2.resource.VisionPrescription;
291import ca.uhn.fhir.model.dstu2.valueset.XPathUsageTypeEnum;
292import ca.uhn.fhir.model.api.IResource;
293import ca.uhn.fhir.model.dstu2.composite.AgeDt;
294import ca.uhn.fhir.model.dstu2.composite.BoundCodeableConceptDt;
295import ca.uhn.fhir.model.dstu2.composite.DurationDt;
296import ca.uhn.fhir.model.dstu2.composite.MoneyDt;
297import ca.uhn.fhir.model.dstu2.composite.NarrativeDt;
298import ca.uhn.fhir.model.dstu2.composite.ResourceReferenceDt;
299import ca.uhn.fhir.model.dstu2.composite.SimpleQuantityDt;
300import ca.uhn.fhir.model.primitive.Base64BinaryDt;
301import ca.uhn.fhir.model.primitive.BooleanDt;
302import ca.uhn.fhir.model.primitive.BoundCodeDt;
303import ca.uhn.fhir.model.primitive.CodeDt;
304import ca.uhn.fhir.model.primitive.DateDt;
305import ca.uhn.fhir.model.primitive.DateTimeDt;
306import ca.uhn.fhir.model.primitive.DecimalDt;
307import ca.uhn.fhir.model.primitive.IdDt;
308import ca.uhn.fhir.model.primitive.InstantDt;
309import ca.uhn.fhir.model.primitive.IntegerDt;
310import ca.uhn.fhir.model.primitive.OidDt;
311import ca.uhn.fhir.model.primitive.PositiveIntDt;
312import ca.uhn.fhir.model.primitive.StringDt;
313import ca.uhn.fhir.model.primitive.TimeDt;
314import ca.uhn.fhir.model.primitive.UnsignedIntDt;
315import ca.uhn.fhir.model.primitive.UriDt;
316
317
318/**
319 * HAPI/FHIR <b>HealthcareService</b> Resource
320 * (administrative.group)
321 *
322 * <p>
323 * <b>Definition:</b>
324 * The details of a healthcare service available at a location.
325 * </p> 
326 *
327 * <p>
328 * <b>Requirements:</b>
329 * 
330 * </p> 
331 *
332 * <p>
333 * <b>Profile Definition:</b>
334 * <a href="http://hl7.org/fhir/profiles/HealthcareService">http://hl7.org/fhir/profiles/HealthcareService</a> 
335 * </p>
336 *
337 */
338@ResourceDef(name="HealthcareService", profile="http://hl7.org/fhir/profiles/HealthcareService", id="healthcareservice")
339public class HealthcareService extends ca.uhn.fhir.model.dstu2.resource.BaseResource
340    implements  IResource     {
341
342        /**
343         * Search parameter constant for <b>identifier</b>
344         * <p>
345         * Description: <b></b><br>
346         * Type: <b>token</b><br>
347         * Path: <b>HealthcareService.identifier</b><br>
348         * </p>
349         */
350        @SearchParamDefinition(name="identifier", path="HealthcareService.identifier", description="", type="token"  )
351        public static final String SP_IDENTIFIER = "identifier";
352
353        /**
354         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
355         * <p>
356         * Description: <b></b><br>
357         * Type: <b>token</b><br>
358         * Path: <b>HealthcareService.identifier</b><br>
359         * </p>
360         */
361        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
362
363        /**
364         * Search parameter constant for <b>servicecategory</b>
365         * <p>
366         * Description: <b>Service Category of the Healthcare Service</b><br>
367         * Type: <b>token</b><br>
368         * Path: <b>HealthcareService.serviceCategory</b><br>
369         * </p>
370         */
371        @SearchParamDefinition(name="servicecategory", path="HealthcareService.serviceCategory", description="Service Category of the Healthcare Service", type="token"  )
372        public static final String SP_SERVICECATEGORY = "servicecategory";
373
374        /**
375         * <b>Fluent Client</b> search parameter constant for <b>servicecategory</b>
376         * <p>
377         * Description: <b>Service Category of the Healthcare Service</b><br>
378         * Type: <b>token</b><br>
379         * Path: <b>HealthcareService.serviceCategory</b><br>
380         * </p>
381         */
382        public static final TokenClientParam SERVICECATEGORY = new TokenClientParam(SP_SERVICECATEGORY);
383
384        /**
385         * Search parameter constant for <b>servicetype</b>
386         * <p>
387         * Description: <b>The type of service provided by this healthcare service</b><br>
388         * Type: <b>token</b><br>
389         * Path: <b>HealthcareService.serviceType.type</b><br>
390         * </p>
391         */
392        @SearchParamDefinition(name="servicetype", path="HealthcareService.serviceType.type", description="The type of service provided by this healthcare service", type="token"  )
393        public static final String SP_SERVICETYPE = "servicetype";
394
395        /**
396         * <b>Fluent Client</b> search parameter constant for <b>servicetype</b>
397         * <p>
398         * Description: <b>The type of service provided by this healthcare service</b><br>
399         * Type: <b>token</b><br>
400         * Path: <b>HealthcareService.serviceType.type</b><br>
401         * </p>
402         */
403        public static final TokenClientParam SERVICETYPE = new TokenClientParam(SP_SERVICETYPE);
404
405        /**
406         * Search parameter constant for <b>name</b>
407         * <p>
408         * Description: <b>A portion of the Healthcare service name</b><br>
409         * Type: <b>string</b><br>
410         * Path: <b>HealthcareService.serviceName</b><br>
411         * </p>
412         */
413        @SearchParamDefinition(name="name", path="HealthcareService.serviceName", description="A portion of the Healthcare service name", type="string"  )
414        public static final String SP_NAME = "name";
415
416        /**
417         * <b>Fluent Client</b> search parameter constant for <b>name</b>
418         * <p>
419         * Description: <b>A portion of the Healthcare service name</b><br>
420         * Type: <b>string</b><br>
421         * Path: <b>HealthcareService.serviceName</b><br>
422         * </p>
423         */
424        public static final StringClientParam NAME = new StringClientParam(SP_NAME);
425
426        /**
427         * Search parameter constant for <b>location</b>
428         * <p>
429         * Description: <b>The location of the Healthcare Service</b><br>
430         * Type: <b>reference</b><br>
431         * Path: <b>HealthcareService.location</b><br>
432         * </p>
433         */
434        @SearchParamDefinition(name="location", path="HealthcareService.location", description="The location of the Healthcare Service", type="reference"  )
435        public static final String SP_LOCATION = "location";
436
437        /**
438         * <b>Fluent Client</b> search parameter constant for <b>location</b>
439         * <p>
440         * Description: <b>The location of the Healthcare Service</b><br>
441         * Type: <b>reference</b><br>
442         * Path: <b>HealthcareService.location</b><br>
443         * </p>
444         */
445        public static final ReferenceClientParam LOCATION = new ReferenceClientParam(SP_LOCATION);
446
447        /**
448         * Search parameter constant for <b>organization</b>
449         * <p>
450         * Description: <b>The organization that provides this Healthcare Service</b><br>
451         * Type: <b>reference</b><br>
452         * Path: <b>HealthcareService.providedBy</b><br>
453         * </p>
454         */
455        @SearchParamDefinition(name="organization", path="HealthcareService.providedBy", description="The organization that provides this Healthcare Service", type="reference"  )
456        public static final String SP_ORGANIZATION = "organization";
457
458        /**
459         * <b>Fluent Client</b> search parameter constant for <b>organization</b>
460         * <p>
461         * Description: <b>The organization that provides this Healthcare Service</b><br>
462         * Type: <b>reference</b><br>
463         * Path: <b>HealthcareService.providedBy</b><br>
464         * </p>
465         */
466        public static final ReferenceClientParam ORGANIZATION = new ReferenceClientParam(SP_ORGANIZATION);
467
468        /**
469         * Search parameter constant for <b>programname</b>
470         * <p>
471         * Description: <b>One of the Program Names serviced by this HealthcareService</b><br>
472         * Type: <b>string</b><br>
473         * Path: <b>HealthcareService.programName</b><br>
474         * </p>
475         */
476        @SearchParamDefinition(name="programname", path="HealthcareService.programName", description="One of the Program Names serviced by this HealthcareService", type="string"  )
477        public static final String SP_PROGRAMNAME = "programname";
478
479        /**
480         * <b>Fluent Client</b> search parameter constant for <b>programname</b>
481         * <p>
482         * Description: <b>One of the Program Names serviced by this HealthcareService</b><br>
483         * Type: <b>string</b><br>
484         * Path: <b>HealthcareService.programName</b><br>
485         * </p>
486         */
487        public static final StringClientParam PROGRAMNAME = new StringClientParam(SP_PROGRAMNAME);
488
489        /**
490         * Search parameter constant for <b>characteristic</b>
491         * <p>
492         * Description: <b>One of the HealthcareService's characteristics</b><br>
493         * Type: <b>token</b><br>
494         * Path: <b>HealthcareService.characteristic</b><br>
495         * </p>
496         */
497        @SearchParamDefinition(name="characteristic", path="HealthcareService.characteristic", description="One of the HealthcareService's characteristics", type="token"  )
498        public static final String SP_CHARACTERISTIC = "characteristic";
499
500        /**
501         * <b>Fluent Client</b> search parameter constant for <b>characteristic</b>
502         * <p>
503         * Description: <b>One of the HealthcareService's characteristics</b><br>
504         * Type: <b>token</b><br>
505         * Path: <b>HealthcareService.characteristic</b><br>
506         * </p>
507         */
508        public static final TokenClientParam CHARACTERISTIC = new TokenClientParam(SP_CHARACTERISTIC);
509
510
511        /**
512         * Constant for fluent queries to be used to add include statements. Specifies
513         * the path value of "<b>HealthcareService:location</b>".
514         */
515        public static final Include INCLUDE_LOCATION = new Include("HealthcareService:location");
516
517        /**
518         * Constant for fluent queries to be used to add include statements. Specifies
519         * the path value of "<b>HealthcareService:organization</b>".
520         */
521        public static final Include INCLUDE_ORGANIZATION = new Include("HealthcareService:organization");
522
523
524        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)       
525        @Description(
526                shortDefinition="id",
527                formalDefinition="External identifiers for this item"
528        )
529        private java.util.List<IdentifierDt> myIdentifier;
530        
531        @Child(name="providedBy", order=1, min=0, max=1, summary=true, modifier=false, type={
532                ca.uhn.fhir.model.dstu2.resource.Organization.class     })
533        @Description(
534                shortDefinition="",
535                formalDefinition="The organization that provides this healthcare service"
536        )
537        private ResourceReferenceDt myProvidedBy;
538        
539        @Child(name="serviceCategory", type=CodeableConceptDt.class, order=2, min=0, max=1, summary=true, modifier=false)       
540        @Description(
541                shortDefinition="class",
542                formalDefinition="Identifies the broad category of service being performed or delivered"
543        )
544        private CodeableConceptDt myServiceCategory;
545        
546        @Child(name="serviceType", order=3, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)       
547        @Description(
548                shortDefinition="",
549                formalDefinition="A specific type of service that may be delivered or performed"
550        )
551        private java.util.List<ServiceType> myServiceType;
552        
553        @Child(name="location", order=4, min=1, max=1, summary=true, modifier=false, type={
554                ca.uhn.fhir.model.dstu2.resource.Location.class })
555        @Description(
556                shortDefinition="where",
557                formalDefinition="The location where this healthcare service may be provided"
558        )
559        private ResourceReferenceDt myLocation;
560        
561        @Child(name="serviceName", type=StringDt.class, order=5, min=0, max=1, summary=true, modifier=false)    
562        @Description(
563                shortDefinition="",
564                formalDefinition="Further description of the service as it would be presented to a consumer while searching"
565        )
566        private StringDt myServiceName;
567        
568        @Child(name="comment", type=StringDt.class, order=6, min=0, max=1, summary=true, modifier=false)        
569        @Description(
570                shortDefinition="",
571                formalDefinition="Any additional description of the service and/or any specific issues not covered by the other attributes, which can be displayed as further detail under the serviceName"
572        )
573        private StringDt myComment;
574        
575        @Child(name="extraDetails", type=StringDt.class, order=7, min=0, max=1, summary=false, modifier=false)  
576        @Description(
577                shortDefinition="",
578                formalDefinition="Extra details about the service that can't be placed in the other fields"
579        )
580        private StringDt myExtraDetails;
581        
582        @Child(name="photo", type=AttachmentDt.class, order=8, min=0, max=1, summary=true, modifier=false)      
583        @Description(
584                shortDefinition="",
585                formalDefinition="If there is a photo/symbol associated with this HealthcareService, it may be included here to facilitate quick identification of the service in a list"
586        )
587        private AttachmentDt myPhoto;
588        
589        @Child(name="telecom", type=ContactPointDt.class, order=9, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
590        @Description(
591                shortDefinition="",
592                formalDefinition="List of contacts related to this specific healthcare service"
593        )
594        private java.util.List<ContactPointDt> myTelecom;
595        
596        @Child(name="coverageArea", order=10, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
597                ca.uhn.fhir.model.dstu2.resource.Location.class })
598        @Description(
599                shortDefinition="",
600                formalDefinition="The location(s) that this service is available to (not where the service is provided)"
601        )
602        private java.util.List<ResourceReferenceDt> myCoverageArea;
603        
604        @Child(name="serviceProvisionCode", type=CodeableConceptDt.class, order=11, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
605        @Description(
606                shortDefinition="",
607                formalDefinition="The code(s) that detail the conditions under which the healthcare service is available/offered"
608        )
609        private java.util.List<BoundCodeableConceptDt<ServiceProvisionConditionsEnum>> myServiceProvisionCode;
610        
611        @Child(name="eligibility", type=CodeableConceptDt.class, order=12, min=0, max=1, summary=false, modifier=false) 
612        @Description(
613                shortDefinition="",
614                formalDefinition="Does this service have specific eligibility requirements that need to be met in order to use the service?"
615        )
616        private CodeableConceptDt myEligibility;
617        
618        @Child(name="eligibilityNote", type=StringDt.class, order=13, min=0, max=1, summary=false, modifier=false)      
619        @Description(
620                shortDefinition="",
621                formalDefinition="Describes the eligibility conditions for the service"
622        )
623        private StringDt myEligibilityNote;
624        
625        @Child(name="programName", type=StringDt.class, order=14, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
626        @Description(
627                shortDefinition="",
628                formalDefinition="Program Names that can be used to categorize the service"
629        )
630        private java.util.List<StringDt> myProgramName;
631        
632        @Child(name="characteristic", type=CodeableConceptDt.class, order=15, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
633        @Description(
634                shortDefinition="",
635                formalDefinition="Collection of characteristics (attributes)"
636        )
637        private java.util.List<CodeableConceptDt> myCharacteristic;
638        
639        @Child(name="referralMethod", type=CodeableConceptDt.class, order=16, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
640        @Description(
641                shortDefinition="",
642                formalDefinition="Ways that the service accepts referrals, if this is not provided then it is implied that no referral is required"
643        )
644        private java.util.List<BoundCodeableConceptDt<ReferralMethodEnum>> myReferralMethod;
645        
646        @Child(name="publicKey", type=StringDt.class, order=17, min=0, max=1, summary=false, modifier=false)    
647        @Description(
648                shortDefinition="",
649                formalDefinition="The public part of the 'keys' allocated to an Organization by an accredited body to support secure exchange of data over the internet. To be provided by the Organization, where available"
650        )
651        private StringDt myPublicKey;
652        
653        @Child(name="appointmentRequired", type=BooleanDt.class, order=18, min=0, max=1, summary=false, modifier=false) 
654        @Description(
655                shortDefinition="",
656                formalDefinition="Indicates whether or not a prospective consumer will require an appointment for a particular service at a site to be provided by the Organization. Indicates if an appointment is required for access to this service."
657        )
658        private BooleanDt myAppointmentRequired;
659        
660        @Child(name="availableTime", order=19, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
661        @Description(
662                shortDefinition="",
663                formalDefinition="A collection of times that the Service Site is available"
664        )
665        private java.util.List<AvailableTime> myAvailableTime;
666        
667        @Child(name="notAvailable", order=20, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
668        @Description(
669                shortDefinition="",
670                formalDefinition="The HealthcareService is not available during this period of time due to the provided reason"
671        )
672        private java.util.List<NotAvailable> myNotAvailable;
673        
674        @Child(name="availabilityExceptions", type=StringDt.class, order=21, min=0, max=1, summary=false, modifier=false)       
675        @Description(
676                shortDefinition="",
677                formalDefinition="A description of site availability exceptions, e.g. public holiday availability. Succinctly describing all possible exceptions to normal site availability as details in the available Times and not available Times"
678        )
679        private StringDt myAvailabilityExceptions;
680        
681
682        @Override
683        public boolean isEmpty() {
684                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myProvidedBy,  myServiceCategory,  myServiceType,  myLocation,  myServiceName,  myComment,  myExtraDetails,  myPhoto,  myTelecom,  myCoverageArea,  myServiceProvisionCode,  myEligibility,  myEligibilityNote,  myProgramName,  myCharacteristic,  myReferralMethod,  myPublicKey,  myAppointmentRequired,  myAvailableTime,  myNotAvailable,  myAvailabilityExceptions);
685        }
686        
687        @Override
688        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
689                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myProvidedBy, myServiceCategory, myServiceType, myLocation, myServiceName, myComment, myExtraDetails, myPhoto, myTelecom, myCoverageArea, myServiceProvisionCode, myEligibility, myEligibilityNote, myProgramName, myCharacteristic, myReferralMethod, myPublicKey, myAppointmentRequired, myAvailableTime, myNotAvailable, myAvailabilityExceptions);
690        }
691
692        /**
693         * Gets the value(s) for <b>identifier</b> (id).
694         * creating it if it does
695         * not exist. Will not return <code>null</code>.
696         *
697     * <p>
698     * <b>Definition:</b>
699     * External identifiers for this item
700     * </p> 
701         */
702        public java.util.List<IdentifierDt> getIdentifier() {  
703                if (myIdentifier == null) {
704                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
705                }
706                return myIdentifier;
707        }
708
709        /**
710         * Sets the value(s) for <b>identifier</b> (id)
711         *
712     * <p>
713     * <b>Definition:</b>
714     * External identifiers for this item
715     * </p> 
716         */
717        public HealthcareService setIdentifier(java.util.List<IdentifierDt> theValue) {
718                myIdentifier = theValue;
719                return this;
720        }
721        
722        
723
724        /**
725         * Adds and returns a new value for <b>identifier</b> (id)
726         *
727     * <p>
728     * <b>Definition:</b>
729     * External identifiers for this item
730     * </p> 
731         */
732        public IdentifierDt addIdentifier() {
733                IdentifierDt newType = new IdentifierDt();
734                getIdentifier().add(newType);
735                return newType; 
736        }
737
738        /**
739         * Adds a given new value for <b>identifier</b> (id)
740         *
741         * <p>
742         * <b>Definition:</b>
743         * External identifiers for this item
744         * </p>
745         * @param theValue The identifier to add (must not be <code>null</code>)
746         */
747        public HealthcareService addIdentifier(IdentifierDt theValue) {
748                if (theValue == null) {
749                        throw new NullPointerException("theValue must not be null");
750                }
751                getIdentifier().add(theValue);
752                return this;
753        }
754
755        /**
756         * Gets the first repetition for <b>identifier</b> (id),
757         * creating it if it does not already exist.
758         *
759     * <p>
760     * <b>Definition:</b>
761     * External identifiers for this item
762     * </p> 
763         */
764        public IdentifierDt getIdentifierFirstRep() {
765                if (getIdentifier().isEmpty()) {
766                        return addIdentifier();
767                }
768                return getIdentifier().get(0); 
769        }
770  
771        /**
772         * Gets the value(s) for <b>providedBy</b> ().
773         * creating it if it does
774         * not exist. Will not return <code>null</code>.
775         *
776     * <p>
777     * <b>Definition:</b>
778     * The organization that provides this healthcare service
779     * </p> 
780         */
781        public ResourceReferenceDt getProvidedBy() {  
782                if (myProvidedBy == null) {
783                        myProvidedBy = new ResourceReferenceDt();
784                }
785                return myProvidedBy;
786        }
787
788        /**
789         * Sets the value(s) for <b>providedBy</b> ()
790         *
791     * <p>
792     * <b>Definition:</b>
793     * The organization that provides this healthcare service
794     * </p> 
795         */
796        public HealthcareService setProvidedBy(ResourceReferenceDt theValue) {
797                myProvidedBy = theValue;
798                return this;
799        }
800        
801        
802
803  
804        /**
805         * Gets the value(s) for <b>serviceCategory</b> (class).
806         * creating it if it does
807         * not exist. Will not return <code>null</code>.
808         *
809     * <p>
810     * <b>Definition:</b>
811     * Identifies the broad category of service being performed or delivered
812     * </p> 
813         */
814        public CodeableConceptDt getServiceCategory() {  
815                if (myServiceCategory == null) {
816                        myServiceCategory = new CodeableConceptDt();
817                }
818                return myServiceCategory;
819        }
820
821        /**
822         * Sets the value(s) for <b>serviceCategory</b> (class)
823         *
824     * <p>
825     * <b>Definition:</b>
826     * Identifies the broad category of service being performed or delivered
827     * </p> 
828         */
829        public HealthcareService setServiceCategory(CodeableConceptDt theValue) {
830                myServiceCategory = theValue;
831                return this;
832        }
833        
834        
835
836  
837        /**
838         * Gets the value(s) for <b>serviceType</b> ().
839         * creating it if it does
840         * not exist. Will not return <code>null</code>.
841         *
842     * <p>
843     * <b>Definition:</b>
844     * A specific type of service that may be delivered or performed
845     * </p> 
846         */
847        public java.util.List<ServiceType> getServiceType() {  
848                if (myServiceType == null) {
849                        myServiceType = new java.util.ArrayList<ServiceType>();
850                }
851                return myServiceType;
852        }
853
854        /**
855         * Sets the value(s) for <b>serviceType</b> ()
856         *
857     * <p>
858     * <b>Definition:</b>
859     * A specific type of service that may be delivered or performed
860     * </p> 
861         */
862        public HealthcareService setServiceType(java.util.List<ServiceType> theValue) {
863                myServiceType = theValue;
864                return this;
865        }
866        
867        
868
869        /**
870         * Adds and returns a new value for <b>serviceType</b> ()
871         *
872     * <p>
873     * <b>Definition:</b>
874     * A specific type of service that may be delivered or performed
875     * </p> 
876         */
877        public ServiceType addServiceType() {
878                ServiceType newType = new ServiceType();
879                getServiceType().add(newType);
880                return newType; 
881        }
882
883        /**
884         * Adds a given new value for <b>serviceType</b> ()
885         *
886         * <p>
887         * <b>Definition:</b>
888         * A specific type of service that may be delivered or performed
889         * </p>
890         * @param theValue The serviceType to add (must not be <code>null</code>)
891         */
892        public HealthcareService addServiceType(ServiceType theValue) {
893                if (theValue == null) {
894                        throw new NullPointerException("theValue must not be null");
895                }
896                getServiceType().add(theValue);
897                return this;
898        }
899
900        /**
901         * Gets the first repetition for <b>serviceType</b> (),
902         * creating it if it does not already exist.
903         *
904     * <p>
905     * <b>Definition:</b>
906     * A specific type of service that may be delivered or performed
907     * </p> 
908         */
909        public ServiceType getServiceTypeFirstRep() {
910                if (getServiceType().isEmpty()) {
911                        return addServiceType();
912                }
913                return getServiceType().get(0); 
914        }
915  
916        /**
917         * Gets the value(s) for <b>location</b> (where).
918         * creating it if it does
919         * not exist. Will not return <code>null</code>.
920         *
921     * <p>
922     * <b>Definition:</b>
923     * The location where this healthcare service may be provided
924     * </p> 
925         */
926        public ResourceReferenceDt getLocation() {  
927                if (myLocation == null) {
928                        myLocation = new ResourceReferenceDt();
929                }
930                return myLocation;
931        }
932
933        /**
934         * Sets the value(s) for <b>location</b> (where)
935         *
936     * <p>
937     * <b>Definition:</b>
938     * The location where this healthcare service may be provided
939     * </p> 
940         */
941        public HealthcareService setLocation(ResourceReferenceDt theValue) {
942                myLocation = theValue;
943                return this;
944        }
945        
946        
947
948  
949        /**
950         * Gets the value(s) for <b>serviceName</b> ().
951         * creating it if it does
952         * not exist. Will not return <code>null</code>.
953         *
954     * <p>
955     * <b>Definition:</b>
956     * Further description of the service as it would be presented to a consumer while searching
957     * </p> 
958         */
959        public StringDt getServiceNameElement() {  
960                if (myServiceName == null) {
961                        myServiceName = new StringDt();
962                }
963                return myServiceName;
964        }
965
966        
967        /**
968         * Gets the value(s) for <b>serviceName</b> ().
969         * creating it if it does
970         * not exist. Will not return <code>null</code>.
971         *
972     * <p>
973     * <b>Definition:</b>
974     * Further description of the service as it would be presented to a consumer while searching
975     * </p> 
976         */
977        public String getServiceName() {  
978                return getServiceNameElement().getValue();
979        }
980
981        /**
982         * Sets the value(s) for <b>serviceName</b> ()
983         *
984     * <p>
985     * <b>Definition:</b>
986     * Further description of the service as it would be presented to a consumer while searching
987     * </p> 
988         */
989        public HealthcareService setServiceName(StringDt theValue) {
990                myServiceName = theValue;
991                return this;
992        }
993        
994        
995
996        /**
997         * Sets the value for <b>serviceName</b> ()
998         *
999     * <p>
1000     * <b>Definition:</b>
1001     * Further description of the service as it would be presented to a consumer while searching
1002     * </p> 
1003         */
1004        public HealthcareService setServiceName( String theString) {
1005                myServiceName = new StringDt(theString); 
1006                return this; 
1007        }
1008
1009 
1010        /**
1011         * Gets the value(s) for <b>comment</b> ().
1012         * creating it if it does
1013         * not exist. Will not return <code>null</code>.
1014         *
1015     * <p>
1016     * <b>Definition:</b>
1017     * Any additional description of the service and/or any specific issues not covered by the other attributes, which can be displayed as further detail under the serviceName
1018     * </p> 
1019         */
1020        public StringDt getCommentElement() {  
1021                if (myComment == null) {
1022                        myComment = new StringDt();
1023                }
1024                return myComment;
1025        }
1026
1027        
1028        /**
1029         * Gets the value(s) for <b>comment</b> ().
1030         * creating it if it does
1031         * not exist. Will not return <code>null</code>.
1032         *
1033     * <p>
1034     * <b>Definition:</b>
1035     * Any additional description of the service and/or any specific issues not covered by the other attributes, which can be displayed as further detail under the serviceName
1036     * </p> 
1037         */
1038        public String getComment() {  
1039                return getCommentElement().getValue();
1040        }
1041
1042        /**
1043         * Sets the value(s) for <b>comment</b> ()
1044         *
1045     * <p>
1046     * <b>Definition:</b>
1047     * Any additional description of the service and/or any specific issues not covered by the other attributes, which can be displayed as further detail under the serviceName
1048     * </p> 
1049         */
1050        public HealthcareService setComment(StringDt theValue) {
1051                myComment = theValue;
1052                return this;
1053        }
1054        
1055        
1056
1057        /**
1058         * Sets the value for <b>comment</b> ()
1059         *
1060     * <p>
1061     * <b>Definition:</b>
1062     * Any additional description of the service and/or any specific issues not covered by the other attributes, which can be displayed as further detail under the serviceName
1063     * </p> 
1064         */
1065        public HealthcareService setComment( String theString) {
1066                myComment = new StringDt(theString); 
1067                return this; 
1068        }
1069
1070 
1071        /**
1072         * Gets the value(s) for <b>extraDetails</b> ().
1073         * creating it if it does
1074         * not exist. Will not return <code>null</code>.
1075         *
1076     * <p>
1077     * <b>Definition:</b>
1078     * Extra details about the service that can't be placed in the other fields
1079     * </p> 
1080         */
1081        public StringDt getExtraDetailsElement() {  
1082                if (myExtraDetails == null) {
1083                        myExtraDetails = new StringDt();
1084                }
1085                return myExtraDetails;
1086        }
1087
1088        
1089        /**
1090         * Gets the value(s) for <b>extraDetails</b> ().
1091         * creating it if it does
1092         * not exist. Will not return <code>null</code>.
1093         *
1094     * <p>
1095     * <b>Definition:</b>
1096     * Extra details about the service that can't be placed in the other fields
1097     * </p> 
1098         */
1099        public String getExtraDetails() {  
1100                return getExtraDetailsElement().getValue();
1101        }
1102
1103        /**
1104         * Sets the value(s) for <b>extraDetails</b> ()
1105         *
1106     * <p>
1107     * <b>Definition:</b>
1108     * Extra details about the service that can't be placed in the other fields
1109     * </p> 
1110         */
1111        public HealthcareService setExtraDetails(StringDt theValue) {
1112                myExtraDetails = theValue;
1113                return this;
1114        }
1115        
1116        
1117
1118        /**
1119         * Sets the value for <b>extraDetails</b> ()
1120         *
1121     * <p>
1122     * <b>Definition:</b>
1123     * Extra details about the service that can't be placed in the other fields
1124     * </p> 
1125         */
1126        public HealthcareService setExtraDetails( String theString) {
1127                myExtraDetails = new StringDt(theString); 
1128                return this; 
1129        }
1130
1131 
1132        /**
1133         * Gets the value(s) for <b>photo</b> ().
1134         * creating it if it does
1135         * not exist. Will not return <code>null</code>.
1136         *
1137     * <p>
1138     * <b>Definition:</b>
1139     * If there is a photo/symbol associated with this HealthcareService, it may be included here to facilitate quick identification of the service in a list
1140     * </p> 
1141         */
1142        public AttachmentDt getPhoto() {  
1143                if (myPhoto == null) {
1144                        myPhoto = new AttachmentDt();
1145                }
1146                return myPhoto;
1147        }
1148
1149        /**
1150         * Sets the value(s) for <b>photo</b> ()
1151         *
1152     * <p>
1153     * <b>Definition:</b>
1154     * If there is a photo/symbol associated with this HealthcareService, it may be included here to facilitate quick identification of the service in a list
1155     * </p> 
1156         */
1157        public HealthcareService setPhoto(AttachmentDt theValue) {
1158                myPhoto = theValue;
1159                return this;
1160        }
1161        
1162        
1163
1164  
1165        /**
1166         * Gets the value(s) for <b>telecom</b> ().
1167         * creating it if it does
1168         * not exist. Will not return <code>null</code>.
1169         *
1170     * <p>
1171     * <b>Definition:</b>
1172     * List of contacts related to this specific healthcare service
1173     * </p> 
1174         */
1175        public java.util.List<ContactPointDt> getTelecom() {  
1176                if (myTelecom == null) {
1177                        myTelecom = new java.util.ArrayList<ContactPointDt>();
1178                }
1179                return myTelecom;
1180        }
1181
1182        /**
1183         * Sets the value(s) for <b>telecom</b> ()
1184         *
1185     * <p>
1186     * <b>Definition:</b>
1187     * List of contacts related to this specific healthcare service
1188     * </p> 
1189         */
1190        public HealthcareService setTelecom(java.util.List<ContactPointDt> theValue) {
1191                myTelecom = theValue;
1192                return this;
1193        }
1194        
1195        
1196
1197        /**
1198         * Adds and returns a new value for <b>telecom</b> ()
1199         *
1200     * <p>
1201     * <b>Definition:</b>
1202     * List of contacts related to this specific healthcare service
1203     * </p> 
1204         */
1205        public ContactPointDt addTelecom() {
1206                ContactPointDt newType = new ContactPointDt();
1207                getTelecom().add(newType);
1208                return newType; 
1209        }
1210
1211        /**
1212         * Adds a given new value for <b>telecom</b> ()
1213         *
1214         * <p>
1215         * <b>Definition:</b>
1216         * List of contacts related to this specific healthcare service
1217         * </p>
1218         * @param theValue The telecom to add (must not be <code>null</code>)
1219         */
1220        public HealthcareService addTelecom(ContactPointDt theValue) {
1221                if (theValue == null) {
1222                        throw new NullPointerException("theValue must not be null");
1223                }
1224                getTelecom().add(theValue);
1225                return this;
1226        }
1227
1228        /**
1229         * Gets the first repetition for <b>telecom</b> (),
1230         * creating it if it does not already exist.
1231         *
1232     * <p>
1233     * <b>Definition:</b>
1234     * List of contacts related to this specific healthcare service
1235     * </p> 
1236         */
1237        public ContactPointDt getTelecomFirstRep() {
1238                if (getTelecom().isEmpty()) {
1239                        return addTelecom();
1240                }
1241                return getTelecom().get(0); 
1242        }
1243  
1244        /**
1245         * Gets the value(s) for <b>coverageArea</b> ().
1246         * creating it if it does
1247         * not exist. Will not return <code>null</code>.
1248         *
1249     * <p>
1250     * <b>Definition:</b>
1251     * The location(s) that this service is available to (not where the service is provided)
1252     * </p> 
1253         */
1254        public java.util.List<ResourceReferenceDt> getCoverageArea() {  
1255                if (myCoverageArea == null) {
1256                        myCoverageArea = new java.util.ArrayList<ResourceReferenceDt>();
1257                }
1258                return myCoverageArea;
1259        }
1260
1261        /**
1262         * Sets the value(s) for <b>coverageArea</b> ()
1263         *
1264     * <p>
1265     * <b>Definition:</b>
1266     * The location(s) that this service is available to (not where the service is provided)
1267     * </p> 
1268         */
1269        public HealthcareService setCoverageArea(java.util.List<ResourceReferenceDt> theValue) {
1270                myCoverageArea = theValue;
1271                return this;
1272        }
1273        
1274        
1275
1276        /**
1277         * Adds and returns a new value for <b>coverageArea</b> ()
1278         *
1279     * <p>
1280     * <b>Definition:</b>
1281     * The location(s) that this service is available to (not where the service is provided)
1282     * </p> 
1283         */
1284        public ResourceReferenceDt addCoverageArea() {
1285                ResourceReferenceDt newType = new ResourceReferenceDt();
1286                getCoverageArea().add(newType);
1287                return newType; 
1288        }
1289  
1290        /**
1291         * Gets the value(s) for <b>serviceProvisionCode</b> ().
1292         * creating it if it does
1293         * not exist. Will not return <code>null</code>.
1294         *
1295     * <p>
1296     * <b>Definition:</b>
1297     * The code(s) that detail the conditions under which the healthcare service is available/offered
1298     * </p> 
1299         */
1300        public java.util.List<BoundCodeableConceptDt<ServiceProvisionConditionsEnum>> getServiceProvisionCode() {  
1301                if (myServiceProvisionCode == null) {
1302                        myServiceProvisionCode = new java.util.ArrayList<BoundCodeableConceptDt<ServiceProvisionConditionsEnum>>();
1303                }
1304                return myServiceProvisionCode;
1305        }
1306
1307        /**
1308         * Sets the value(s) for <b>serviceProvisionCode</b> ()
1309         *
1310     * <p>
1311     * <b>Definition:</b>
1312     * The code(s) that detail the conditions under which the healthcare service is available/offered
1313     * </p> 
1314         */
1315        public HealthcareService setServiceProvisionCode(java.util.List<BoundCodeableConceptDt<ServiceProvisionConditionsEnum>> theValue) {
1316                myServiceProvisionCode = theValue;
1317                return this;
1318        }
1319        
1320        
1321
1322        /**
1323         * Add a value for <b>serviceProvisionCode</b> () using an enumerated type. This
1324         * is intended as a convenience method for situations where the FHIR defined ValueSets are mandatory
1325         * or contain the desirable codes. If you wish to use codes other than those which are built-in, 
1326         * you may also use the {@link #addServiceProvisionCode()} method.
1327         *
1328     * <p>
1329     * <b>Definition:</b>
1330     * The code(s) that detail the conditions under which the healthcare service is available/offered
1331     * </p> 
1332         */
1333        public BoundCodeableConceptDt<ServiceProvisionConditionsEnum> addServiceProvisionCode(ServiceProvisionConditionsEnum theValue) {
1334                BoundCodeableConceptDt<ServiceProvisionConditionsEnum> retVal = new BoundCodeableConceptDt<ServiceProvisionConditionsEnum>(ServiceProvisionConditionsEnum.VALUESET_BINDER, theValue);
1335                getServiceProvisionCode().add(retVal);
1336                return retVal;
1337        }
1338
1339        /**
1340         * Gets the first repetition for <b>serviceProvisionCode</b> (),
1341         * creating it if it does not already exist.
1342         *
1343     * <p>
1344     * <b>Definition:</b>
1345     * The code(s) that detail the conditions under which the healthcare service is available/offered
1346     * </p> 
1347         */
1348        public BoundCodeableConceptDt<ServiceProvisionConditionsEnum> getServiceProvisionCodeFirstRep() {
1349                if (getServiceProvisionCode().size() == 0) {
1350                        addServiceProvisionCode();
1351                }
1352                return getServiceProvisionCode().get(0);
1353        }
1354
1355        /**
1356         * Add a value for <b>serviceProvisionCode</b> ()
1357         *
1358     * <p>
1359     * <b>Definition:</b>
1360     * The code(s) that detail the conditions under which the healthcare service is available/offered
1361     * </p> 
1362         */
1363        public BoundCodeableConceptDt<ServiceProvisionConditionsEnum> addServiceProvisionCode() {
1364                BoundCodeableConceptDt<ServiceProvisionConditionsEnum> retVal = new BoundCodeableConceptDt<ServiceProvisionConditionsEnum>(ServiceProvisionConditionsEnum.VALUESET_BINDER);
1365                getServiceProvisionCode().add(retVal);
1366                return retVal;
1367        }
1368
1369        /**
1370         * Sets the value(s), and clears any existing value(s) for <b>serviceProvisionCode</b> ()
1371         *
1372     * <p>
1373     * <b>Definition:</b>
1374     * The code(s) that detail the conditions under which the healthcare service is available/offered
1375     * </p> 
1376         */
1377        public HealthcareService setServiceProvisionCode(ServiceProvisionConditionsEnum theValue) {
1378                getServiceProvisionCode().clear();
1379                addServiceProvisionCode(theValue);
1380                return this;
1381        }
1382
1383  
1384        /**
1385         * Gets the value(s) for <b>eligibility</b> ().
1386         * creating it if it does
1387         * not exist. Will not return <code>null</code>.
1388         *
1389     * <p>
1390     * <b>Definition:</b>
1391     * Does this service have specific eligibility requirements that need to be met in order to use the service?
1392     * </p> 
1393         */
1394        public CodeableConceptDt getEligibility() {  
1395                if (myEligibility == null) {
1396                        myEligibility = new CodeableConceptDt();
1397                }
1398                return myEligibility;
1399        }
1400
1401        /**
1402         * Sets the value(s) for <b>eligibility</b> ()
1403         *
1404     * <p>
1405     * <b>Definition:</b>
1406     * Does this service have specific eligibility requirements that need to be met in order to use the service?
1407     * </p> 
1408         */
1409        public HealthcareService setEligibility(CodeableConceptDt theValue) {
1410                myEligibility = theValue;
1411                return this;
1412        }
1413        
1414        
1415
1416  
1417        /**
1418         * Gets the value(s) for <b>eligibilityNote</b> ().
1419         * creating it if it does
1420         * not exist. Will not return <code>null</code>.
1421         *
1422     * <p>
1423     * <b>Definition:</b>
1424     * Describes the eligibility conditions for the service
1425     * </p> 
1426         */
1427        public StringDt getEligibilityNoteElement() {  
1428                if (myEligibilityNote == null) {
1429                        myEligibilityNote = new StringDt();
1430                }
1431                return myEligibilityNote;
1432        }
1433
1434        
1435        /**
1436         * Gets the value(s) for <b>eligibilityNote</b> ().
1437         * creating it if it does
1438         * not exist. Will not return <code>null</code>.
1439         *
1440     * <p>
1441     * <b>Definition:</b>
1442     * Describes the eligibility conditions for the service
1443     * </p> 
1444         */
1445        public String getEligibilityNote() {  
1446                return getEligibilityNoteElement().getValue();
1447        }
1448
1449        /**
1450         * Sets the value(s) for <b>eligibilityNote</b> ()
1451         *
1452     * <p>
1453     * <b>Definition:</b>
1454     * Describes the eligibility conditions for the service
1455     * </p> 
1456         */
1457        public HealthcareService setEligibilityNote(StringDt theValue) {
1458                myEligibilityNote = theValue;
1459                return this;
1460        }
1461        
1462        
1463
1464        /**
1465         * Sets the value for <b>eligibilityNote</b> ()
1466         *
1467     * <p>
1468     * <b>Definition:</b>
1469     * Describes the eligibility conditions for the service
1470     * </p> 
1471         */
1472        public HealthcareService setEligibilityNote( String theString) {
1473                myEligibilityNote = new StringDt(theString); 
1474                return this; 
1475        }
1476
1477 
1478        /**
1479         * Gets the value(s) for <b>programName</b> ().
1480         * creating it if it does
1481         * not exist. Will not return <code>null</code>.
1482         *
1483     * <p>
1484     * <b>Definition:</b>
1485     * Program Names that can be used to categorize the service
1486     * </p> 
1487         */
1488        public java.util.List<StringDt> getProgramName() {  
1489                if (myProgramName == null) {
1490                        myProgramName = new java.util.ArrayList<StringDt>();
1491                }
1492                return myProgramName;
1493        }
1494
1495        /**
1496         * Sets the value(s) for <b>programName</b> ()
1497         *
1498     * <p>
1499     * <b>Definition:</b>
1500     * Program Names that can be used to categorize the service
1501     * </p> 
1502         */
1503        public HealthcareService setProgramName(java.util.List<StringDt> theValue) {
1504                myProgramName = theValue;
1505                return this;
1506        }
1507        
1508        
1509
1510        /**
1511         * Adds and returns a new value for <b>programName</b> ()
1512         *
1513     * <p>
1514     * <b>Definition:</b>
1515     * Program Names that can be used to categorize the service
1516     * </p> 
1517         */
1518        public StringDt addProgramName() {
1519                StringDt newType = new StringDt();
1520                getProgramName().add(newType);
1521                return newType; 
1522        }
1523
1524        /**
1525         * Adds a given new value for <b>programName</b> ()
1526         *
1527         * <p>
1528         * <b>Definition:</b>
1529         * Program Names that can be used to categorize the service
1530         * </p>
1531         * @param theValue The programName to add (must not be <code>null</code>)
1532         */
1533        public HealthcareService addProgramName(StringDt theValue) {
1534                if (theValue == null) {
1535                        throw new NullPointerException("theValue must not be null");
1536                }
1537                getProgramName().add(theValue);
1538                return this;
1539        }
1540
1541        /**
1542         * Gets the first repetition for <b>programName</b> (),
1543         * creating it if it does not already exist.
1544         *
1545     * <p>
1546     * <b>Definition:</b>
1547     * Program Names that can be used to categorize the service
1548     * </p> 
1549         */
1550        public StringDt getProgramNameFirstRep() {
1551                if (getProgramName().isEmpty()) {
1552                        return addProgramName();
1553                }
1554                return getProgramName().get(0); 
1555        }
1556        /**
1557         * Adds a new value for <b>programName</b> ()
1558         *
1559     * <p>
1560     * <b>Definition:</b>
1561     * Program Names that can be used to categorize the service
1562     * </p> 
1563     *
1564     * @return Returns a reference to this object, to allow for simple chaining.
1565         */
1566        public HealthcareService addProgramName( String theString) {
1567                if (myProgramName == null) {
1568                        myProgramName = new java.util.ArrayList<StringDt>();
1569                }
1570                myProgramName.add(new StringDt(theString));
1571                return this; 
1572        }
1573
1574 
1575        /**
1576         * Gets the value(s) for <b>characteristic</b> ().
1577         * creating it if it does
1578         * not exist. Will not return <code>null</code>.
1579         *
1580     * <p>
1581     * <b>Definition:</b>
1582     * Collection of characteristics (attributes)
1583     * </p> 
1584         */
1585        public java.util.List<CodeableConceptDt> getCharacteristic() {  
1586                if (myCharacteristic == null) {
1587                        myCharacteristic = new java.util.ArrayList<CodeableConceptDt>();
1588                }
1589                return myCharacteristic;
1590        }
1591
1592        /**
1593         * Sets the value(s) for <b>characteristic</b> ()
1594         *
1595     * <p>
1596     * <b>Definition:</b>
1597     * Collection of characteristics (attributes)
1598     * </p> 
1599         */
1600        public HealthcareService setCharacteristic(java.util.List<CodeableConceptDt> theValue) {
1601                myCharacteristic = theValue;
1602                return this;
1603        }
1604        
1605        
1606
1607        /**
1608         * Adds and returns a new value for <b>characteristic</b> ()
1609         *
1610     * <p>
1611     * <b>Definition:</b>
1612     * Collection of characteristics (attributes)
1613     * </p> 
1614         */
1615        public CodeableConceptDt addCharacteristic() {
1616                CodeableConceptDt newType = new CodeableConceptDt();
1617                getCharacteristic().add(newType);
1618                return newType; 
1619        }
1620
1621        /**
1622         * Adds a given new value for <b>characteristic</b> ()
1623         *
1624         * <p>
1625         * <b>Definition:</b>
1626         * Collection of characteristics (attributes)
1627         * </p>
1628         * @param theValue The characteristic to add (must not be <code>null</code>)
1629         */
1630        public HealthcareService addCharacteristic(CodeableConceptDt theValue) {
1631                if (theValue == null) {
1632                        throw new NullPointerException("theValue must not be null");
1633                }
1634                getCharacteristic().add(theValue);
1635                return this;
1636        }
1637
1638        /**
1639         * Gets the first repetition for <b>characteristic</b> (),
1640         * creating it if it does not already exist.
1641         *
1642     * <p>
1643     * <b>Definition:</b>
1644     * Collection of characteristics (attributes)
1645     * </p> 
1646         */
1647        public CodeableConceptDt getCharacteristicFirstRep() {
1648                if (getCharacteristic().isEmpty()) {
1649                        return addCharacteristic();
1650                }
1651                return getCharacteristic().get(0); 
1652        }
1653  
1654        /**
1655         * Gets the value(s) for <b>referralMethod</b> ().
1656         * creating it if it does
1657         * not exist. Will not return <code>null</code>.
1658         *
1659     * <p>
1660     * <b>Definition:</b>
1661     * Ways that the service accepts referrals, if this is not provided then it is implied that no referral is required
1662     * </p> 
1663         */
1664        public java.util.List<BoundCodeableConceptDt<ReferralMethodEnum>> getReferralMethod() {  
1665                if (myReferralMethod == null) {
1666                        myReferralMethod = new java.util.ArrayList<BoundCodeableConceptDt<ReferralMethodEnum>>();
1667                }
1668                return myReferralMethod;
1669        }
1670
1671        /**
1672         * Sets the value(s) for <b>referralMethod</b> ()
1673         *
1674     * <p>
1675     * <b>Definition:</b>
1676     * Ways that the service accepts referrals, if this is not provided then it is implied that no referral is required
1677     * </p> 
1678         */
1679        public HealthcareService setReferralMethod(java.util.List<BoundCodeableConceptDt<ReferralMethodEnum>> theValue) {
1680                myReferralMethod = theValue;
1681                return this;
1682        }
1683        
1684        
1685
1686        /**
1687         * Add a value for <b>referralMethod</b> () using an enumerated type. This
1688         * is intended as a convenience method for situations where the FHIR defined ValueSets are mandatory
1689         * or contain the desirable codes. If you wish to use codes other than those which are built-in, 
1690         * you may also use the {@link #addReferralMethod()} method.
1691         *
1692     * <p>
1693     * <b>Definition:</b>
1694     * Ways that the service accepts referrals, if this is not provided then it is implied that no referral is required
1695     * </p> 
1696         */
1697        public BoundCodeableConceptDt<ReferralMethodEnum> addReferralMethod(ReferralMethodEnum theValue) {
1698                BoundCodeableConceptDt<ReferralMethodEnum> retVal = new BoundCodeableConceptDt<ReferralMethodEnum>(ReferralMethodEnum.VALUESET_BINDER, theValue);
1699                getReferralMethod().add(retVal);
1700                return retVal;
1701        }
1702
1703        /**
1704         * Gets the first repetition for <b>referralMethod</b> (),
1705         * creating it if it does not already exist.
1706         *
1707     * <p>
1708     * <b>Definition:</b>
1709     * Ways that the service accepts referrals, if this is not provided then it is implied that no referral is required
1710     * </p> 
1711         */
1712        public BoundCodeableConceptDt<ReferralMethodEnum> getReferralMethodFirstRep() {
1713                if (getReferralMethod().size() == 0) {
1714                        addReferralMethod();
1715                }
1716                return getReferralMethod().get(0);
1717        }
1718
1719        /**
1720         * Add a value for <b>referralMethod</b> ()
1721         *
1722     * <p>
1723     * <b>Definition:</b>
1724     * Ways that the service accepts referrals, if this is not provided then it is implied that no referral is required
1725     * </p> 
1726         */
1727        public BoundCodeableConceptDt<ReferralMethodEnum> addReferralMethod() {
1728                BoundCodeableConceptDt<ReferralMethodEnum> retVal = new BoundCodeableConceptDt<ReferralMethodEnum>(ReferralMethodEnum.VALUESET_BINDER);
1729                getReferralMethod().add(retVal);
1730                return retVal;
1731        }
1732
1733        /**
1734         * Sets the value(s), and clears any existing value(s) for <b>referralMethod</b> ()
1735         *
1736     * <p>
1737     * <b>Definition:</b>
1738     * Ways that the service accepts referrals, if this is not provided then it is implied that no referral is required
1739     * </p> 
1740         */
1741        public HealthcareService setReferralMethod(ReferralMethodEnum theValue) {
1742                getReferralMethod().clear();
1743                addReferralMethod(theValue);
1744                return this;
1745        }
1746
1747  
1748        /**
1749         * Gets the value(s) for <b>publicKey</b> ().
1750         * creating it if it does
1751         * not exist. Will not return <code>null</code>.
1752         *
1753     * <p>
1754     * <b>Definition:</b>
1755     * The public part of the 'keys' allocated to an Organization by an accredited body to support secure exchange of data over the internet. To be provided by the Organization, where available
1756     * </p> 
1757         */
1758        public StringDt getPublicKeyElement() {  
1759                if (myPublicKey == null) {
1760                        myPublicKey = new StringDt();
1761                }
1762                return myPublicKey;
1763        }
1764
1765        
1766        /**
1767         * Gets the value(s) for <b>publicKey</b> ().
1768         * creating it if it does
1769         * not exist. Will not return <code>null</code>.
1770         *
1771     * <p>
1772     * <b>Definition:</b>
1773     * The public part of the 'keys' allocated to an Organization by an accredited body to support secure exchange of data over the internet. To be provided by the Organization, where available
1774     * </p> 
1775         */
1776        public String getPublicKey() {  
1777                return getPublicKeyElement().getValue();
1778        }
1779
1780        /**
1781         * Sets the value(s) for <b>publicKey</b> ()
1782         *
1783     * <p>
1784     * <b>Definition:</b>
1785     * The public part of the 'keys' allocated to an Organization by an accredited body to support secure exchange of data over the internet. To be provided by the Organization, where available
1786     * </p> 
1787         */
1788        public HealthcareService setPublicKey(StringDt theValue) {
1789                myPublicKey = theValue;
1790                return this;
1791        }
1792        
1793        
1794
1795        /**
1796         * Sets the value for <b>publicKey</b> ()
1797         *
1798     * <p>
1799     * <b>Definition:</b>
1800     * The public part of the 'keys' allocated to an Organization by an accredited body to support secure exchange of data over the internet. To be provided by the Organization, where available
1801     * </p> 
1802         */
1803        public HealthcareService setPublicKey( String theString) {
1804                myPublicKey = new StringDt(theString); 
1805                return this; 
1806        }
1807
1808 
1809        /**
1810         * Gets the value(s) for <b>appointmentRequired</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 whether or not a prospective consumer will require an appointment for a particular service at a site to be provided by the Organization. Indicates if an appointment is required for access to this service.
1817     * </p> 
1818         */
1819        public BooleanDt getAppointmentRequiredElement() {  
1820                if (myAppointmentRequired == null) {
1821                        myAppointmentRequired = new BooleanDt();
1822                }
1823                return myAppointmentRequired;
1824        }
1825
1826        
1827        /**
1828         * Gets the value(s) for <b>appointmentRequired</b> ().
1829         * creating it if it does
1830         * not exist. Will not return <code>null</code>.
1831         *
1832     * <p>
1833     * <b>Definition:</b>
1834     * Indicates whether or not a prospective consumer will require an appointment for a particular service at a site to be provided by the Organization. Indicates if an appointment is required for access to this service.
1835     * </p> 
1836         */
1837        public Boolean getAppointmentRequired() {  
1838                return getAppointmentRequiredElement().getValue();
1839        }
1840
1841        /**
1842         * Sets the value(s) for <b>appointmentRequired</b> ()
1843         *
1844     * <p>
1845     * <b>Definition:</b>
1846     * Indicates whether or not a prospective consumer will require an appointment for a particular service at a site to be provided by the Organization. Indicates if an appointment is required for access to this service.
1847     * </p> 
1848         */
1849        public HealthcareService setAppointmentRequired(BooleanDt theValue) {
1850                myAppointmentRequired = theValue;
1851                return this;
1852        }
1853        
1854        
1855
1856        /**
1857         * Sets the value for <b>appointmentRequired</b> ()
1858         *
1859     * <p>
1860     * <b>Definition:</b>
1861     * Indicates whether or not a prospective consumer will require an appointment for a particular service at a site to be provided by the Organization. Indicates if an appointment is required for access to this service.
1862     * </p> 
1863         */
1864        public HealthcareService setAppointmentRequired( boolean theBoolean) {
1865                myAppointmentRequired = new BooleanDt(theBoolean); 
1866                return this; 
1867        }
1868
1869 
1870        /**
1871         * Gets the value(s) for <b>availableTime</b> ().
1872         * creating it if it does
1873         * not exist. Will not return <code>null</code>.
1874         *
1875     * <p>
1876     * <b>Definition:</b>
1877     * A collection of times that the Service Site is available
1878     * </p> 
1879         */
1880        public java.util.List<AvailableTime> getAvailableTime() {  
1881                if (myAvailableTime == null) {
1882                        myAvailableTime = new java.util.ArrayList<AvailableTime>();
1883                }
1884                return myAvailableTime;
1885        }
1886
1887        /**
1888         * Sets the value(s) for <b>availableTime</b> ()
1889         *
1890     * <p>
1891     * <b>Definition:</b>
1892     * A collection of times that the Service Site is available
1893     * </p> 
1894         */
1895        public HealthcareService setAvailableTime(java.util.List<AvailableTime> theValue) {
1896                myAvailableTime = theValue;
1897                return this;
1898        }
1899        
1900        
1901
1902        /**
1903         * Adds and returns a new value for <b>availableTime</b> ()
1904         *
1905     * <p>
1906     * <b>Definition:</b>
1907     * A collection of times that the Service Site is available
1908     * </p> 
1909         */
1910        public AvailableTime addAvailableTime() {
1911                AvailableTime newType = new AvailableTime();
1912                getAvailableTime().add(newType);
1913                return newType; 
1914        }
1915
1916        /**
1917         * Adds a given new value for <b>availableTime</b> ()
1918         *
1919         * <p>
1920         * <b>Definition:</b>
1921         * A collection of times that the Service Site is available
1922         * </p>
1923         * @param theValue The availableTime to add (must not be <code>null</code>)
1924         */
1925        public HealthcareService addAvailableTime(AvailableTime theValue) {
1926                if (theValue == null) {
1927                        throw new NullPointerException("theValue must not be null");
1928                }
1929                getAvailableTime().add(theValue);
1930                return this;
1931        }
1932
1933        /**
1934         * Gets the first repetition for <b>availableTime</b> (),
1935         * creating it if it does not already exist.
1936         *
1937     * <p>
1938     * <b>Definition:</b>
1939     * A collection of times that the Service Site is available
1940     * </p> 
1941         */
1942        public AvailableTime getAvailableTimeFirstRep() {
1943                if (getAvailableTime().isEmpty()) {
1944                        return addAvailableTime();
1945                }
1946                return getAvailableTime().get(0); 
1947        }
1948  
1949        /**
1950         * Gets the value(s) for <b>notAvailable</b> ().
1951         * creating it if it does
1952         * not exist. Will not return <code>null</code>.
1953         *
1954     * <p>
1955     * <b>Definition:</b>
1956     * The HealthcareService is not available during this period of time due to the provided reason
1957     * </p> 
1958         */
1959        public java.util.List<NotAvailable> getNotAvailable() {  
1960                if (myNotAvailable == null) {
1961                        myNotAvailable = new java.util.ArrayList<NotAvailable>();
1962                }
1963                return myNotAvailable;
1964        }
1965
1966        /**
1967         * Sets the value(s) for <b>notAvailable</b> ()
1968         *
1969     * <p>
1970     * <b>Definition:</b>
1971     * The HealthcareService is not available during this period of time due to the provided reason
1972     * </p> 
1973         */
1974        public HealthcareService setNotAvailable(java.util.List<NotAvailable> theValue) {
1975                myNotAvailable = theValue;
1976                return this;
1977        }
1978        
1979        
1980
1981        /**
1982         * Adds and returns a new value for <b>notAvailable</b> ()
1983         *
1984     * <p>
1985     * <b>Definition:</b>
1986     * The HealthcareService is not available during this period of time due to the provided reason
1987     * </p> 
1988         */
1989        public NotAvailable addNotAvailable() {
1990                NotAvailable newType = new NotAvailable();
1991                getNotAvailable().add(newType);
1992                return newType; 
1993        }
1994
1995        /**
1996         * Adds a given new value for <b>notAvailable</b> ()
1997         *
1998         * <p>
1999         * <b>Definition:</b>
2000         * The HealthcareService is not available during this period of time due to the provided reason
2001         * </p>
2002         * @param theValue The notAvailable to add (must not be <code>null</code>)
2003         */
2004        public HealthcareService addNotAvailable(NotAvailable theValue) {
2005                if (theValue == null) {
2006                        throw new NullPointerException("theValue must not be null");
2007                }
2008                getNotAvailable().add(theValue);
2009                return this;
2010        }
2011
2012        /**
2013         * Gets the first repetition for <b>notAvailable</b> (),
2014         * creating it if it does not already exist.
2015         *
2016     * <p>
2017     * <b>Definition:</b>
2018     * The HealthcareService is not available during this period of time due to the provided reason
2019     * </p> 
2020         */
2021        public NotAvailable getNotAvailableFirstRep() {
2022                if (getNotAvailable().isEmpty()) {
2023                        return addNotAvailable();
2024                }
2025                return getNotAvailable().get(0); 
2026        }
2027  
2028        /**
2029         * Gets the value(s) for <b>availabilityExceptions</b> ().
2030         * creating it if it does
2031         * not exist. Will not return <code>null</code>.
2032         *
2033     * <p>
2034     * <b>Definition:</b>
2035     * A description of site availability exceptions, e.g. public holiday availability. Succinctly describing all possible exceptions to normal site availability as details in the available Times and not available Times
2036     * </p> 
2037         */
2038        public StringDt getAvailabilityExceptionsElement() {  
2039                if (myAvailabilityExceptions == null) {
2040                        myAvailabilityExceptions = new StringDt();
2041                }
2042                return myAvailabilityExceptions;
2043        }
2044
2045        
2046        /**
2047         * Gets the value(s) for <b>availabilityExceptions</b> ().
2048         * creating it if it does
2049         * not exist. Will not return <code>null</code>.
2050         *
2051     * <p>
2052     * <b>Definition:</b>
2053     * A description of site availability exceptions, e.g. public holiday availability. Succinctly describing all possible exceptions to normal site availability as details in the available Times and not available Times
2054     * </p> 
2055         */
2056        public String getAvailabilityExceptions() {  
2057                return getAvailabilityExceptionsElement().getValue();
2058        }
2059
2060        /**
2061         * Sets the value(s) for <b>availabilityExceptions</b> ()
2062         *
2063     * <p>
2064     * <b>Definition:</b>
2065     * A description of site availability exceptions, e.g. public holiday availability. Succinctly describing all possible exceptions to normal site availability as details in the available Times and not available Times
2066     * </p> 
2067         */
2068        public HealthcareService setAvailabilityExceptions(StringDt theValue) {
2069                myAvailabilityExceptions = theValue;
2070                return this;
2071        }
2072        
2073        
2074
2075        /**
2076         * Sets the value for <b>availabilityExceptions</b> ()
2077         *
2078     * <p>
2079     * <b>Definition:</b>
2080     * A description of site availability exceptions, e.g. public holiday availability. Succinctly describing all possible exceptions to normal site availability as details in the available Times and not available Times
2081     * </p> 
2082         */
2083        public HealthcareService setAvailabilityExceptions( String theString) {
2084                myAvailabilityExceptions = new StringDt(theString); 
2085                return this; 
2086        }
2087
2088 
2089        /**
2090         * Block class for child element: <b>HealthcareService.serviceType</b> ()
2091         *
2092     * <p>
2093     * <b>Definition:</b>
2094     * A specific type of service that may be delivered or performed
2095     * </p> 
2096         */
2097        @Block()        
2098        public static class ServiceType 
2099            extends  BaseIdentifiableElement        implements IResourceBlock {
2100        
2101        @Child(name="type", type=CodeableConceptDt.class, order=0, min=1, max=1, summary=true, modifier=false)  
2102        @Description(
2103                shortDefinition="",
2104                formalDefinition="The specific type of service being delivered or performed"
2105        )
2106        private CodeableConceptDt myType;
2107        
2108        @Child(name="specialty", type=CodeableConceptDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
2109        @Description(
2110                shortDefinition="",
2111                formalDefinition="Collection of specialties handled by the service site. This is more of a medical term"
2112        )
2113        private java.util.List<CodeableConceptDt> mySpecialty;
2114        
2115
2116        @Override
2117        public boolean isEmpty() {
2118                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myType,  mySpecialty);
2119        }
2120        
2121        @Override
2122        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2123                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myType, mySpecialty);
2124        }
2125
2126        /**
2127         * Gets the value(s) for <b>type</b> ().
2128         * creating it if it does
2129         * not exist. Will not return <code>null</code>.
2130         *
2131     * <p>
2132     * <b>Definition:</b>
2133     * The specific type of service being delivered or performed
2134     * </p> 
2135         */
2136        public CodeableConceptDt getType() {  
2137                if (myType == null) {
2138                        myType = new CodeableConceptDt();
2139                }
2140                return myType;
2141        }
2142
2143        /**
2144         * Sets the value(s) for <b>type</b> ()
2145         *
2146     * <p>
2147     * <b>Definition:</b>
2148     * The specific type of service being delivered or performed
2149     * </p> 
2150         */
2151        public ServiceType setType(CodeableConceptDt theValue) {
2152                myType = theValue;
2153                return this;
2154        }
2155        
2156        
2157
2158  
2159        /**
2160         * Gets the value(s) for <b>specialty</b> ().
2161         * creating it if it does
2162         * not exist. Will not return <code>null</code>.
2163         *
2164     * <p>
2165     * <b>Definition:</b>
2166     * Collection of specialties handled by the service site. This is more of a medical term
2167     * </p> 
2168         */
2169        public java.util.List<CodeableConceptDt> getSpecialty() {  
2170                if (mySpecialty == null) {
2171                        mySpecialty = new java.util.ArrayList<CodeableConceptDt>();
2172                }
2173                return mySpecialty;
2174        }
2175
2176        /**
2177         * Sets the value(s) for <b>specialty</b> ()
2178         *
2179     * <p>
2180     * <b>Definition:</b>
2181     * Collection of specialties handled by the service site. This is more of a medical term
2182     * </p> 
2183         */
2184        public ServiceType setSpecialty(java.util.List<CodeableConceptDt> theValue) {
2185                mySpecialty = theValue;
2186                return this;
2187        }
2188        
2189        
2190
2191        /**
2192         * Adds and returns a new value for <b>specialty</b> ()
2193         *
2194     * <p>
2195     * <b>Definition:</b>
2196     * Collection of specialties handled by the service site. This is more of a medical term
2197     * </p> 
2198         */
2199        public CodeableConceptDt addSpecialty() {
2200                CodeableConceptDt newType = new CodeableConceptDt();
2201                getSpecialty().add(newType);
2202                return newType; 
2203        }
2204
2205        /**
2206         * Adds a given new value for <b>specialty</b> ()
2207         *
2208         * <p>
2209         * <b>Definition:</b>
2210         * Collection of specialties handled by the service site. This is more of a medical term
2211         * </p>
2212         * @param theValue The specialty to add (must not be <code>null</code>)
2213         */
2214        public ServiceType addSpecialty(CodeableConceptDt theValue) {
2215                if (theValue == null) {
2216                        throw new NullPointerException("theValue must not be null");
2217                }
2218                getSpecialty().add(theValue);
2219                return this;
2220        }
2221
2222        /**
2223         * Gets the first repetition for <b>specialty</b> (),
2224         * creating it if it does not already exist.
2225         *
2226     * <p>
2227     * <b>Definition:</b>
2228     * Collection of specialties handled by the service site. This is more of a medical term
2229     * </p> 
2230         */
2231        public CodeableConceptDt getSpecialtyFirstRep() {
2232                if (getSpecialty().isEmpty()) {
2233                        return addSpecialty();
2234                }
2235                return getSpecialty().get(0); 
2236        }
2237  
2238
2239
2240        }
2241
2242
2243        /**
2244         * Block class for child element: <b>HealthcareService.availableTime</b> ()
2245         *
2246     * <p>
2247     * <b>Definition:</b>
2248     * A collection of times that the Service Site is available
2249     * </p> 
2250         */
2251        @Block()        
2252        public static class AvailableTime 
2253            extends  BaseIdentifiableElement        implements IResourceBlock {
2254        
2255        @Child(name="daysOfWeek", type=CodeDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
2256        @Description(
2257                shortDefinition="",
2258                formalDefinition="Indicates which days of the week are available between the start and end Times"
2259        )
2260        private java.util.List<BoundCodeDt<DaysOfWeekEnum>> myDaysOfWeek;
2261        
2262        @Child(name="allDay", type=BooleanDt.class, order=1, min=0, max=1, summary=false, modifier=false)       
2263        @Description(
2264                shortDefinition="",
2265                formalDefinition="Is this always available? (hence times are irrelevant) e.g. 24 hour service"
2266        )
2267        private BooleanDt myAllDay;
2268        
2269        @Child(name="availableStartTime", type=TimeDt.class, order=2, min=0, max=1, summary=false, modifier=false)      
2270        @Description(
2271                shortDefinition="",
2272                formalDefinition="The opening time of day. Note: If the AllDay flag is set, then this time is ignored"
2273        )
2274        private TimeDt myAvailableStartTime;
2275        
2276        @Child(name="availableEndTime", type=TimeDt.class, order=3, min=0, max=1, summary=false, modifier=false)        
2277        @Description(
2278                shortDefinition="",
2279                formalDefinition="The closing time of day. Note: If the AllDay flag is set, then this time is ignored"
2280        )
2281        private TimeDt myAvailableEndTime;
2282        
2283
2284        @Override
2285        public boolean isEmpty() {
2286                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myDaysOfWeek,  myAllDay,  myAvailableStartTime,  myAvailableEndTime);
2287        }
2288        
2289        @Override
2290        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2291                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myDaysOfWeek, myAllDay, myAvailableStartTime, myAvailableEndTime);
2292        }
2293
2294        /**
2295         * Gets the value(s) for <b>daysOfWeek</b> ().
2296         * creating it if it does
2297         * not exist. Will not return <code>null</code>.
2298         *
2299     * <p>
2300     * <b>Definition:</b>
2301     * Indicates which days of the week are available between the start and end Times
2302     * </p> 
2303         */
2304        public java.util.List<BoundCodeDt<DaysOfWeekEnum>> getDaysOfWeek() {  
2305                if (myDaysOfWeek == null) {
2306                        myDaysOfWeek = new java.util.ArrayList<BoundCodeDt<DaysOfWeekEnum>>();
2307                }
2308                return myDaysOfWeek;
2309        }
2310
2311        /**
2312         * Sets the value(s) for <b>daysOfWeek</b> ()
2313         *
2314     * <p>
2315     * <b>Definition:</b>
2316     * Indicates which days of the week are available between the start and end Times
2317     * </p> 
2318         */
2319        public AvailableTime setDaysOfWeek(java.util.List<BoundCodeDt<DaysOfWeekEnum>> theValue) {
2320                myDaysOfWeek = theValue;
2321                return this;
2322        }
2323        
2324        
2325
2326        /**
2327         * Add a value for <b>daysOfWeek</b> () using an enumerated type. This
2328         * is intended as a convenience method for situations where the FHIR defined ValueSets are mandatory
2329         * or contain the desirable codes. If you wish to use codes other than those which are built-in, 
2330         * you may also use the {@link #addDaysOfWeek()} method.
2331         *
2332     * <p>
2333     * <b>Definition:</b>
2334     * Indicates which days of the week are available between the start and end Times
2335     * </p> 
2336         */
2337        public BoundCodeDt<DaysOfWeekEnum> addDaysOfWeek(DaysOfWeekEnum theValue) {
2338                BoundCodeDt<DaysOfWeekEnum> retVal = new BoundCodeDt<DaysOfWeekEnum>(DaysOfWeekEnum.VALUESET_BINDER, theValue);
2339                getDaysOfWeek().add(retVal);
2340                return retVal;
2341        }
2342
2343        /**
2344         * Gets the first repetition for <b>daysOfWeek</b> (),
2345         * creating it if it does not already exist.
2346         *
2347     * <p>
2348     * <b>Definition:</b>
2349     * Indicates which days of the week are available between the start and end Times
2350     * </p> 
2351         */
2352        public BoundCodeDt<DaysOfWeekEnum> getDaysOfWeekFirstRep() {
2353                if (getDaysOfWeek().size() == 0) {
2354                        addDaysOfWeek();
2355                }
2356                return getDaysOfWeek().get(0);
2357        }
2358
2359        /**
2360         * Add a value for <b>daysOfWeek</b> ()
2361         *
2362     * <p>
2363     * <b>Definition:</b>
2364     * Indicates which days of the week are available between the start and end Times
2365     * </p> 
2366         */
2367        public BoundCodeDt<DaysOfWeekEnum> addDaysOfWeek() {
2368                BoundCodeDt<DaysOfWeekEnum> retVal = new BoundCodeDt<DaysOfWeekEnum>(DaysOfWeekEnum.VALUESET_BINDER);
2369                getDaysOfWeek().add(retVal);
2370                return retVal;
2371        }
2372
2373        /**
2374         * Sets the value(s), and clears any existing value(s) for <b>daysOfWeek</b> ()
2375         *
2376     * <p>
2377     * <b>Definition:</b>
2378     * Indicates which days of the week are available between the start and end Times
2379     * </p> 
2380         */
2381        public AvailableTime setDaysOfWeek(DaysOfWeekEnum theValue) {
2382                getDaysOfWeek().clear();
2383                addDaysOfWeek(theValue);
2384                return this;
2385        }
2386
2387  
2388        /**
2389         * Gets the value(s) for <b>allDay</b> ().
2390         * creating it if it does
2391         * not exist. Will not return <code>null</code>.
2392         *
2393     * <p>
2394     * <b>Definition:</b>
2395     * Is this always available? (hence times are irrelevant) e.g. 24 hour service
2396     * </p> 
2397         */
2398        public BooleanDt getAllDayElement() {  
2399                if (myAllDay == null) {
2400                        myAllDay = new BooleanDt();
2401                }
2402                return myAllDay;
2403        }
2404
2405        
2406        /**
2407         * Gets the value(s) for <b>allDay</b> ().
2408         * creating it if it does
2409         * not exist. Will not return <code>null</code>.
2410         *
2411     * <p>
2412     * <b>Definition:</b>
2413     * Is this always available? (hence times are irrelevant) e.g. 24 hour service
2414     * </p> 
2415         */
2416        public Boolean getAllDay() {  
2417                return getAllDayElement().getValue();
2418        }
2419
2420        /**
2421         * Sets the value(s) for <b>allDay</b> ()
2422         *
2423     * <p>
2424     * <b>Definition:</b>
2425     * Is this always available? (hence times are irrelevant) e.g. 24 hour service
2426     * </p> 
2427         */
2428        public AvailableTime setAllDay(BooleanDt theValue) {
2429                myAllDay = theValue;
2430                return this;
2431        }
2432        
2433        
2434
2435        /**
2436         * Sets the value for <b>allDay</b> ()
2437         *
2438     * <p>
2439     * <b>Definition:</b>
2440     * Is this always available? (hence times are irrelevant) e.g. 24 hour service
2441     * </p> 
2442         */
2443        public AvailableTime setAllDay( boolean theBoolean) {
2444                myAllDay = new BooleanDt(theBoolean); 
2445                return this; 
2446        }
2447
2448 
2449        /**
2450         * Gets the value(s) for <b>availableStartTime</b> ().
2451         * creating it if it does
2452         * not exist. Will not return <code>null</code>.
2453         *
2454     * <p>
2455     * <b>Definition:</b>
2456     * The opening time of day. Note: If the AllDay flag is set, then this time is ignored
2457     * </p> 
2458         */
2459        public TimeDt getAvailableStartTimeElement() {  
2460                if (myAvailableStartTime == null) {
2461                        myAvailableStartTime = new TimeDt();
2462                }
2463                return myAvailableStartTime;
2464        }
2465
2466        
2467        /**
2468         * Gets the value(s) for <b>availableStartTime</b> ().
2469         * creating it if it does
2470         * not exist. Will not return <code>null</code>.
2471         *
2472     * <p>
2473     * <b>Definition:</b>
2474     * The opening time of day. Note: If the AllDay flag is set, then this time is ignored
2475     * </p> 
2476         */
2477        public String getAvailableStartTime() {  
2478                return getAvailableStartTimeElement().getValue();
2479        }
2480
2481        /**
2482         * Sets the value(s) for <b>availableStartTime</b> ()
2483         *
2484     * <p>
2485     * <b>Definition:</b>
2486     * The opening time of day. Note: If the AllDay flag is set, then this time is ignored
2487     * </p> 
2488         */
2489        public AvailableTime setAvailableStartTime(TimeDt theValue) {
2490                myAvailableStartTime = theValue;
2491                return this;
2492        }
2493        
2494        
2495
2496        /**
2497         * Sets the value for <b>availableStartTime</b> ()
2498         *
2499     * <p>
2500     * <b>Definition:</b>
2501     * The opening time of day. Note: If the AllDay flag is set, then this time is ignored
2502     * </p> 
2503         */
2504        public AvailableTime setAvailableStartTime( String theString) {
2505                myAvailableStartTime = new TimeDt(theString); 
2506                return this; 
2507        }
2508
2509 
2510        /**
2511         * Gets the value(s) for <b>availableEndTime</b> ().
2512         * creating it if it does
2513         * not exist. Will not return <code>null</code>.
2514         *
2515     * <p>
2516     * <b>Definition:</b>
2517     * The closing time of day. Note: If the AllDay flag is set, then this time is ignored
2518     * </p> 
2519         */
2520        public TimeDt getAvailableEndTimeElement() {  
2521                if (myAvailableEndTime == null) {
2522                        myAvailableEndTime = new TimeDt();
2523                }
2524                return myAvailableEndTime;
2525        }
2526
2527        
2528        /**
2529         * Gets the value(s) for <b>availableEndTime</b> ().
2530         * creating it if it does
2531         * not exist. Will not return <code>null</code>.
2532         *
2533     * <p>
2534     * <b>Definition:</b>
2535     * The closing time of day. Note: If the AllDay flag is set, then this time is ignored
2536     * </p> 
2537         */
2538        public String getAvailableEndTime() {  
2539                return getAvailableEndTimeElement().getValue();
2540        }
2541
2542        /**
2543         * Sets the value(s) for <b>availableEndTime</b> ()
2544         *
2545     * <p>
2546     * <b>Definition:</b>
2547     * The closing time of day. Note: If the AllDay flag is set, then this time is ignored
2548     * </p> 
2549         */
2550        public AvailableTime setAvailableEndTime(TimeDt theValue) {
2551                myAvailableEndTime = theValue;
2552                return this;
2553        }
2554        
2555        
2556
2557        /**
2558         * Sets the value for <b>availableEndTime</b> ()
2559         *
2560     * <p>
2561     * <b>Definition:</b>
2562     * The closing time of day. Note: If the AllDay flag is set, then this time is ignored
2563     * </p> 
2564         */
2565        public AvailableTime setAvailableEndTime( String theString) {
2566                myAvailableEndTime = new TimeDt(theString); 
2567                return this; 
2568        }
2569
2570 
2571
2572
2573        }
2574
2575
2576        /**
2577         * Block class for child element: <b>HealthcareService.notAvailable</b> ()
2578         *
2579     * <p>
2580     * <b>Definition:</b>
2581     * The HealthcareService is not available during this period of time due to the provided reason
2582     * </p> 
2583         */
2584        @Block()        
2585        public static class NotAvailable 
2586            extends  BaseIdentifiableElement        implements IResourceBlock {
2587        
2588        @Child(name="description", type=StringDt.class, order=0, min=1, max=1, summary=false, modifier=false)   
2589        @Description(
2590                shortDefinition="",
2591                formalDefinition="The reason that can be presented to the user as to why this time is not available"
2592        )
2593        private StringDt myDescription;
2594        
2595        @Child(name="during", type=PeriodDt.class, order=1, min=0, max=1, summary=false, modifier=false)        
2596        @Description(
2597                shortDefinition="",
2598                formalDefinition="Service is not available (seasonally or for a public holiday) from this date"
2599        )
2600        private PeriodDt myDuring;
2601        
2602
2603        @Override
2604        public boolean isEmpty() {
2605                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myDescription,  myDuring);
2606        }
2607        
2608        @Override
2609        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2610                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myDescription, myDuring);
2611        }
2612
2613        /**
2614         * Gets the value(s) for <b>description</b> ().
2615         * creating it if it does
2616         * not exist. Will not return <code>null</code>.
2617         *
2618     * <p>
2619     * <b>Definition:</b>
2620     * The reason that can be presented to the user as to why this time is not available
2621     * </p> 
2622         */
2623        public StringDt getDescriptionElement() {  
2624                if (myDescription == null) {
2625                        myDescription = new StringDt();
2626                }
2627                return myDescription;
2628        }
2629
2630        
2631        /**
2632         * Gets the value(s) for <b>description</b> ().
2633         * creating it if it does
2634         * not exist. Will not return <code>null</code>.
2635         *
2636     * <p>
2637     * <b>Definition:</b>
2638     * The reason that can be presented to the user as to why this time is not available
2639     * </p> 
2640         */
2641        public String getDescription() {  
2642                return getDescriptionElement().getValue();
2643        }
2644
2645        /**
2646         * Sets the value(s) for <b>description</b> ()
2647         *
2648     * <p>
2649     * <b>Definition:</b>
2650     * The reason that can be presented to the user as to why this time is not available
2651     * </p> 
2652         */
2653        public NotAvailable setDescription(StringDt theValue) {
2654                myDescription = theValue;
2655                return this;
2656        }
2657        
2658        
2659
2660        /**
2661         * Sets the value for <b>description</b> ()
2662         *
2663     * <p>
2664     * <b>Definition:</b>
2665     * The reason that can be presented to the user as to why this time is not available
2666     * </p> 
2667         */
2668        public NotAvailable setDescription( String theString) {
2669                myDescription = new StringDt(theString); 
2670                return this; 
2671        }
2672
2673 
2674        /**
2675         * Gets the value(s) for <b>during</b> ().
2676         * creating it if it does
2677         * not exist. Will not return <code>null</code>.
2678         *
2679     * <p>
2680     * <b>Definition:</b>
2681     * Service is not available (seasonally or for a public holiday) from this date
2682     * </p> 
2683         */
2684        public PeriodDt getDuring() {  
2685                if (myDuring == null) {
2686                        myDuring = new PeriodDt();
2687                }
2688                return myDuring;
2689        }
2690
2691        /**
2692         * Sets the value(s) for <b>during</b> ()
2693         *
2694     * <p>
2695     * <b>Definition:</b>
2696     * Service is not available (seasonally or for a public holiday) from this date
2697     * </p> 
2698         */
2699        public NotAvailable setDuring(PeriodDt theValue) {
2700                myDuring = theValue;
2701                return this;
2702        }
2703        
2704        
2705
2706  
2707
2708
2709        }
2710
2711
2712
2713
2714    @Override
2715    public String getResourceName() {
2716        return "HealthcareService";
2717    }
2718    
2719    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
2720        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
2721    }
2722
2723
2724}