001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017package ca.uhn.fhir.model.dstu2.resource;
018
019import java.math.BigDecimal;
020import java.net.URI;
021import java.util.*;
022import ca.uhn.fhir.model.api.*;
023import ca.uhn.fhir.model.api.annotation.*;
024import ca.uhn.fhir.rest.gclient.*;
025
026import ca.uhn.fhir.model.dstu2.valueset.AccountStatusEnum;
027import ca.uhn.fhir.model.dstu2.valueset.ActionListEnum;
028import ca.uhn.fhir.model.dstu2.composite.AddressDt;
029import ca.uhn.fhir.model.dstu2.valueset.AdjudicationCodesEnum;
030import ca.uhn.fhir.model.dstu2.valueset.AdjudicationErrorCodesEnum;
031import ca.uhn.fhir.model.dstu2.valueset.AdjustmentReasonCodesEnum;
032import ca.uhn.fhir.model.dstu2.valueset.AdministrativeGenderEnum;
033import ca.uhn.fhir.model.dstu2.valueset.AdmitSourceEnum;
034import ca.uhn.fhir.model.dstu2.resource.AllergyIntolerance;
035import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCategoryEnum;
036import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCertaintyEnum;
037import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCriticalityEnum;
038import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceSeverityEnum;
039import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceStatusEnum;
040import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceTypeEnum;
041import ca.uhn.fhir.model.dstu2.composite.AnnotationDt;
042import ca.uhn.fhir.model.dstu2.valueset.AnswerFormatEnum;
043import ca.uhn.fhir.model.dstu2.resource.Appointment;
044import ca.uhn.fhir.model.dstu2.valueset.AppointmentStatusEnum;
045import ca.uhn.fhir.model.dstu2.valueset.AssertionDirectionTypeEnum;
046import ca.uhn.fhir.model.dstu2.valueset.AssertionOperatorTypeEnum;
047import ca.uhn.fhir.model.dstu2.valueset.AssertionResponseTypesEnum;
048import ca.uhn.fhir.model.dstu2.composite.AttachmentDt;
049import ca.uhn.fhir.model.dstu2.valueset.AuditEventActionEnum;
050import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectLifecycleEnum;
051import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectRoleEnum;
052import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectTypeEnum;
053import ca.uhn.fhir.model.dstu2.valueset.AuditEventOutcomeEnum;
054import ca.uhn.fhir.model.dstu2.valueset.AuditEventParticipantNetworkTypeEnum;
055import ca.uhn.fhir.model.dstu2.valueset.AuditEventSourceTypeEnum;
056import ca.uhn.fhir.model.dstu2.valueset.BindingStrengthEnum;
057import ca.uhn.fhir.model.dstu2.resource.BodySite;
058import ca.uhn.fhir.model.dstu2.valueset.BundleTypeEnum;
059import ca.uhn.fhir.model.dstu2.resource.CarePlan;
060import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityStatusEnum;
061import ca.uhn.fhir.model.dstu2.valueset.CarePlanRelationshipEnum;
062import ca.uhn.fhir.model.dstu2.valueset.CarePlanStatusEnum;
063import ca.uhn.fhir.model.dstu2.resource.Claim;
064import ca.uhn.fhir.model.dstu2.resource.ClaimResponse;
065import ca.uhn.fhir.model.dstu2.valueset.ClaimTypeEnum;
066import ca.uhn.fhir.model.dstu2.resource.ClinicalImpression;
067import ca.uhn.fhir.model.dstu2.valueset.ClinicalImpressionStatusEnum;
068import ca.uhn.fhir.model.dstu2.composite.CodeableConceptDt;
069import ca.uhn.fhir.model.dstu2.composite.CodingDt;
070import ca.uhn.fhir.model.dstu2.resource.CommunicationRequest;
071import ca.uhn.fhir.model.dstu2.valueset.CommunicationRequestStatusEnum;
072import ca.uhn.fhir.model.dstu2.valueset.CommunicationStatusEnum;
073import ca.uhn.fhir.model.dstu2.resource.Composition;
074import ca.uhn.fhir.model.dstu2.valueset.CompositionAttestationModeEnum;
075import ca.uhn.fhir.model.dstu2.valueset.CompositionStatusEnum;
076import ca.uhn.fhir.model.dstu2.valueset.ConceptMapEquivalenceEnum;
077import ca.uhn.fhir.model.dstu2.resource.Condition;
078import ca.uhn.fhir.model.dstu2.valueset.ConditionCategoryCodesEnum;
079import ca.uhn.fhir.model.dstu2.valueset.ConditionClinicalStatusCodesEnum;
080import ca.uhn.fhir.model.dstu2.valueset.ConditionVerificationStatusEnum;
081import ca.uhn.fhir.model.dstu2.valueset.ConditionalDeleteStatusEnum;
082import ca.uhn.fhir.model.dstu2.resource.Conformance;
083import ca.uhn.fhir.model.dstu2.valueset.ConformanceEventModeEnum;
084import ca.uhn.fhir.model.dstu2.valueset.ConformanceResourceStatusEnum;
085import ca.uhn.fhir.model.dstu2.valueset.ConformanceStatementKindEnum;
086import ca.uhn.fhir.model.dstu2.composite.ContactPointDt;
087import ca.uhn.fhir.model.dstu2.valueset.ContentTypeEnum;
088import ca.uhn.fhir.model.dstu2.resource.Contract;
089import ca.uhn.fhir.model.dstu2.resource.Coverage;
090import ca.uhn.fhir.model.dstu2.valueset.DataElementStringencyEnum;
091import ca.uhn.fhir.model.dstu2.valueset.DaysOfWeekEnum;
092import ca.uhn.fhir.model.dstu2.valueset.DetectedIssueSeverityEnum;
093import ca.uhn.fhir.model.dstu2.resource.Device;
094import ca.uhn.fhir.model.dstu2.resource.DeviceComponent;
095import ca.uhn.fhir.model.dstu2.resource.DeviceMetric;
096import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationStateEnum;
097import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationTypeEnum;
098import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCategoryEnum;
099import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricColorEnum;
100import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricOperationalStatusEnum;
101import ca.uhn.fhir.model.dstu2.valueset.DeviceStatusEnum;
102import ca.uhn.fhir.model.dstu2.resource.DeviceUseRequest;
103import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestPriorityEnum;
104import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestStatusEnum;
105import ca.uhn.fhir.model.dstu2.resource.DiagnosticOrder;
106import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderPriorityEnum;
107import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderStatusEnum;
108import ca.uhn.fhir.model.dstu2.resource.DiagnosticReport;
109import ca.uhn.fhir.model.dstu2.valueset.DiagnosticReportStatusEnum;
110import ca.uhn.fhir.model.dstu2.valueset.DigitalMediaTypeEnum;
111import ca.uhn.fhir.model.dstu2.valueset.DocumentModeEnum;
112import ca.uhn.fhir.model.dstu2.resource.DocumentReference;
113import ca.uhn.fhir.model.dstu2.valueset.DocumentReferenceStatusEnum;
114import ca.uhn.fhir.model.dstu2.valueset.DocumentRelationshipTypeEnum;
115import ca.uhn.fhir.model.dstu2.composite.ElementDefinitionDt;
116import ca.uhn.fhir.model.dstu2.resource.EligibilityRequest;
117import ca.uhn.fhir.model.dstu2.resource.Encounter;
118import ca.uhn.fhir.model.dstu2.valueset.EncounterClassEnum;
119import ca.uhn.fhir.model.dstu2.valueset.EncounterLocationStatusEnum;
120import ca.uhn.fhir.model.dstu2.valueset.EncounterStateEnum;
121import ca.uhn.fhir.model.dstu2.resource.EnrollmentRequest;
122import ca.uhn.fhir.model.dstu2.resource.EpisodeOfCare;
123import ca.uhn.fhir.model.dstu2.valueset.EpisodeOfCareStatusEnum;
124import ca.uhn.fhir.model.dstu2.valueset.ExtensionContextEnum;
125import ca.uhn.fhir.model.dstu2.valueset.FamilyHistoryStatusEnum;
126import ca.uhn.fhir.model.dstu2.resource.FamilyMemberHistory;
127import ca.uhn.fhir.model.dstu2.valueset.FilterOperatorEnum;
128import ca.uhn.fhir.model.dstu2.valueset.FlagStatusEnum;
129import ca.uhn.fhir.model.dstu2.resource.Goal;
130import ca.uhn.fhir.model.dstu2.valueset.GoalPriorityEnum;
131import ca.uhn.fhir.model.dstu2.valueset.GoalStatusEnum;
132import ca.uhn.fhir.model.dstu2.resource.Group;
133import ca.uhn.fhir.model.dstu2.valueset.GroupTypeEnum;
134import ca.uhn.fhir.model.dstu2.valueset.GuideDependencyTypeEnum;
135import ca.uhn.fhir.model.dstu2.valueset.GuidePageKindEnum;
136import ca.uhn.fhir.model.dstu2.valueset.GuideResourcePurposeEnum;
137import ca.uhn.fhir.model.dstu2.valueset.HTTPVerbEnum;
138import ca.uhn.fhir.model.dstu2.resource.HealthcareService;
139import ca.uhn.fhir.model.dstu2.composite.HumanNameDt;
140import ca.uhn.fhir.model.dstu2.composite.IdentifierDt;
141import ca.uhn.fhir.model.dstu2.valueset.IdentifierTypeCodesEnum;
142import ca.uhn.fhir.model.dstu2.valueset.IdentityAssuranceLevelEnum;
143import ca.uhn.fhir.model.dstu2.resource.ImagingObjectSelection;
144import ca.uhn.fhir.model.dstu2.resource.ImagingStudy;
145import ca.uhn.fhir.model.dstu2.resource.Immunization;
146import ca.uhn.fhir.model.dstu2.valueset.InstanceAvailabilityEnum;
147import ca.uhn.fhir.model.dstu2.valueset.IssueSeverityEnum;
148import ca.uhn.fhir.model.dstu2.valueset.IssueTypeEnum;
149import ca.uhn.fhir.model.dstu2.valueset.KOStitleEnum;
150import ca.uhn.fhir.model.dstu2.valueset.LinkTypeEnum;
151import ca.uhn.fhir.model.dstu2.valueset.ListModeEnum;
152import ca.uhn.fhir.model.dstu2.valueset.ListOrderCodesEnum;
153import ca.uhn.fhir.model.dstu2.valueset.ListStatusEnum;
154import ca.uhn.fhir.model.dstu2.resource.Location;
155import ca.uhn.fhir.model.dstu2.valueset.LocationModeEnum;
156import ca.uhn.fhir.model.dstu2.valueset.LocationStatusEnum;
157import ca.uhn.fhir.model.dstu2.valueset.LocationTypeEnum;
158import ca.uhn.fhir.model.dstu2.valueset.MaritalStatusCodesEnum;
159import ca.uhn.fhir.model.dstu2.valueset.MeasmntPrincipleEnum;
160import ca.uhn.fhir.model.dstu2.resource.Media;
161import ca.uhn.fhir.model.dstu2.resource.Medication;
162import ca.uhn.fhir.model.dstu2.valueset.MedicationAdministrationStatusEnum;
163import ca.uhn.fhir.model.dstu2.valueset.MedicationDispenseStatusEnum;
164import ca.uhn.fhir.model.dstu2.resource.MedicationOrder;
165import ca.uhn.fhir.model.dstu2.valueset.MedicationOrderStatusEnum;
166import ca.uhn.fhir.model.dstu2.resource.MedicationStatement;
167import ca.uhn.fhir.model.dstu2.valueset.MedicationStatementStatusEnum;
168import ca.uhn.fhir.model.dstu2.valueset.MessageEventEnum;
169import ca.uhn.fhir.model.dstu2.valueset.MessageSignificanceCategoryEnum;
170import ca.uhn.fhir.model.dstu2.valueset.MessageTransportEnum;
171import ca.uhn.fhir.model.dstu2.resource.NamingSystem;
172import ca.uhn.fhir.model.dstu2.valueset.NamingSystemIdentifierTypeEnum;
173import ca.uhn.fhir.model.dstu2.valueset.NamingSystemTypeEnum;
174import ca.uhn.fhir.model.dstu2.valueset.NoteTypeEnum;
175import ca.uhn.fhir.model.dstu2.resource.NutritionOrder;
176import ca.uhn.fhir.model.dstu2.valueset.NutritionOrderStatusEnum;
177import ca.uhn.fhir.model.dstu2.resource.Observation;
178import ca.uhn.fhir.model.dstu2.valueset.ObservationRelationshipTypeEnum;
179import ca.uhn.fhir.model.dstu2.valueset.ObservationStatusEnum;
180import ca.uhn.fhir.model.dstu2.resource.OperationDefinition;
181import ca.uhn.fhir.model.dstu2.valueset.OperationKindEnum;
182import ca.uhn.fhir.model.dstu2.resource.OperationOutcome;
183import ca.uhn.fhir.model.dstu2.valueset.OperationParameterUseEnum;
184import ca.uhn.fhir.model.dstu2.resource.Order;
185import ca.uhn.fhir.model.dstu2.valueset.OrderStatusEnum;
186import ca.uhn.fhir.model.dstu2.resource.Organization;
187import ca.uhn.fhir.model.dstu2.valueset.ParticipantRequiredEnum;
188import ca.uhn.fhir.model.dstu2.valueset.ParticipantStatusEnum;
189import ca.uhn.fhir.model.dstu2.valueset.ParticipantTypeEnum;
190import ca.uhn.fhir.model.dstu2.valueset.ParticipationStatusEnum;
191import ca.uhn.fhir.model.dstu2.resource.Patient;
192import ca.uhn.fhir.model.dstu2.valueset.PayeeTypeCodesEnum;
193import ca.uhn.fhir.model.dstu2.composite.PeriodDt;
194import ca.uhn.fhir.model.dstu2.resource.Person;
195import ca.uhn.fhir.model.dstu2.resource.Practitioner;
196import ca.uhn.fhir.model.dstu2.resource.Procedure;
197import ca.uhn.fhir.model.dstu2.resource.ProcedureRequest;
198import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestPriorityEnum;
199import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestStatusEnum;
200import ca.uhn.fhir.model.dstu2.valueset.ProcedureStatusEnum;
201import ca.uhn.fhir.model.dstu2.resource.ProcessRequest;
202import ca.uhn.fhir.model.dstu2.valueset.ProvenanceEntityRoleEnum;
203import ca.uhn.fhir.model.dstu2.composite.QuantityDt;
204import ca.uhn.fhir.model.dstu2.resource.Questionnaire;
205import ca.uhn.fhir.model.dstu2.resource.QuestionnaireResponse;
206import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireResponseStatusEnum;
207import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireStatusEnum;
208import ca.uhn.fhir.model.dstu2.composite.RangeDt;
209import ca.uhn.fhir.model.dstu2.composite.RatioDt;
210import ca.uhn.fhir.model.dstu2.valueset.ReferralMethodEnum;
211import ca.uhn.fhir.model.dstu2.resource.ReferralRequest;
212import ca.uhn.fhir.model.dstu2.valueset.ReferralStatusEnum;
213import ca.uhn.fhir.model.dstu2.resource.RelatedPerson;
214import ca.uhn.fhir.model.dstu2.valueset.RemittanceOutcomeEnum;
215import ca.uhn.fhir.model.dstu2.valueset.ResourceTypeEnum;
216import ca.uhn.fhir.model.dstu2.valueset.ResourceVersionPolicyEnum;
217import ca.uhn.fhir.model.dstu2.valueset.ResponseTypeEnum;
218import ca.uhn.fhir.model.dstu2.valueset.RestfulConformanceModeEnum;
219import ca.uhn.fhir.model.dstu2.valueset.RestfulSecurityServiceEnum;
220import ca.uhn.fhir.model.dstu2.resource.RiskAssessment;
221import ca.uhn.fhir.model.dstu2.valueset.RulesetCodesEnum;
222import ca.uhn.fhir.model.dstu2.composite.SampledDataDt;
223import ca.uhn.fhir.model.dstu2.resource.Schedule;
224import ca.uhn.fhir.model.dstu2.valueset.SearchEntryModeEnum;
225import ca.uhn.fhir.model.dstu2.valueset.SearchModifierCodeEnum;
226import ca.uhn.fhir.model.dstu2.valueset.SearchParamTypeEnum;
227import ca.uhn.fhir.model.dstu2.valueset.ServiceProvisionConditionsEnum;
228import ca.uhn.fhir.model.dstu2.composite.SignatureDt;
229import ca.uhn.fhir.model.dstu2.resource.Slot;
230import ca.uhn.fhir.model.dstu2.valueset.SlotStatusEnum;
231import ca.uhn.fhir.model.dstu2.resource.Specimen;
232import ca.uhn.fhir.model.dstu2.valueset.SpecimenStatusEnum;
233import ca.uhn.fhir.model.dstu2.resource.StructureDefinition;
234import ca.uhn.fhir.model.dstu2.valueset.StructureDefinitionKindEnum;
235import ca.uhn.fhir.model.dstu2.valueset.SubscriptionChannelTypeEnum;
236import ca.uhn.fhir.model.dstu2.valueset.SubscriptionStatusEnum;
237import ca.uhn.fhir.model.dstu2.resource.Substance;
238import ca.uhn.fhir.model.dstu2.valueset.SubstanceCategoryCodesEnum;
239import ca.uhn.fhir.model.dstu2.valueset.SupplyDeliveryStatusEnum;
240import ca.uhn.fhir.model.dstu2.resource.SupplyRequest;
241import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestStatusEnum;
242import ca.uhn.fhir.model.dstu2.valueset.SystemRestfulInteractionEnum;
243import ca.uhn.fhir.model.api.TemporalPrecisionEnum;
244import ca.uhn.fhir.model.dstu2.composite.TimingDt;
245import ca.uhn.fhir.model.dstu2.valueset.TransactionModeEnum;
246import ca.uhn.fhir.model.dstu2.valueset.TypeRestfulInteractionEnum;
247import ca.uhn.fhir.model.dstu2.valueset.UnknownContentCodeEnum;
248import ca.uhn.fhir.model.dstu2.valueset.UseEnum;
249import ca.uhn.fhir.model.dstu2.resource.ValueSet;
250import ca.uhn.fhir.model.dstu2.valueset.VisionBaseEnum;
251import ca.uhn.fhir.model.dstu2.valueset.VisionEyesEnum;
252import ca.uhn.fhir.model.dstu2.resource.VisionPrescription;
253import ca.uhn.fhir.model.dstu2.valueset.XPathUsageTypeEnum;
254import ca.uhn.fhir.model.api.IResource;
255import ca.uhn.fhir.model.dstu2.composite.AgeDt;
256import ca.uhn.fhir.model.dstu2.composite.BoundCodeableConceptDt;
257import ca.uhn.fhir.model.dstu2.composite.DurationDt;
258import ca.uhn.fhir.model.dstu2.composite.MoneyDt;
259import ca.uhn.fhir.model.dstu2.composite.NarrativeDt;
260import ca.uhn.fhir.model.dstu2.composite.ResourceReferenceDt;
261import ca.uhn.fhir.model.dstu2.composite.SimpleQuantityDt;
262import ca.uhn.fhir.model.primitive.Base64BinaryDt;
263import ca.uhn.fhir.model.primitive.BooleanDt;
264import ca.uhn.fhir.model.primitive.BoundCodeDt;
265import ca.uhn.fhir.model.primitive.CodeDt;
266import ca.uhn.fhir.model.primitive.DateDt;
267import ca.uhn.fhir.model.primitive.DateTimeDt;
268import ca.uhn.fhir.model.primitive.DecimalDt;
269import ca.uhn.fhir.model.primitive.IdDt;
270import ca.uhn.fhir.model.primitive.InstantDt;
271import ca.uhn.fhir.model.primitive.IntegerDt;
272import ca.uhn.fhir.model.primitive.OidDt;
273import ca.uhn.fhir.model.primitive.PositiveIntDt;
274import ca.uhn.fhir.model.primitive.StringDt;
275import ca.uhn.fhir.model.primitive.TimeDt;
276import ca.uhn.fhir.model.primitive.UnsignedIntDt;
277import ca.uhn.fhir.model.primitive.UriDt;
278
279
280/**
281 * HAPI/FHIR <b>Questionnaire</b> Resource
282 * (infrastructure.information)
283 *
284 * <p>
285 * <b>Definition:</b>
286 * A structured set of questions intended to guide the collection of answers. The questions are ordered and grouped into coherent subsets, corresponding to the structure of the grouping of the underlying questions
287 * </p> 
288 *
289 * <p>
290 * <b>Requirements:</b>
291 * To support structured, hierarchical registration of data gathered using digital forms and other questionnaires.
292 * </p> 
293 *
294 * <p>
295 * <b>Profile Definition:</b>
296 * <a href="http://hl7.org/fhir/profiles/Questionnaire">http://hl7.org/fhir/profiles/Questionnaire</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="Questionnaire", profile="http://hl7.org/fhir/profiles/Questionnaire", id="questionnaire")
301public class Questionnaire extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource 
303    {
304
305        /**
306         * Search parameter constant for <b>status</b>
307         * <p>
308         * Description: <b>The status of the questionnaire</b><br>
309         * Type: <b>token</b><br>
310         * Path: <b>Questionnaire.status</b><br>
311         * </p>
312         */
313        @SearchParamDefinition(name="status", path="Questionnaire.status", description="The status of the questionnaire", type="token" 
314 )
315        public static final String SP_STATUS = "status";
316
317        /**
318         * <b>Fluent Client</b> search parameter constant for <b>status</b>
319         * <p>
320         * Description: <b>The status of the questionnaire</b><br>
321         * Type: <b>token</b><br>
322         * Path: <b>Questionnaire.status</b><br>
323         * </p>
324         */
325        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
326
327        /**
328         * Search parameter constant for <b>date</b>
329         * <p>
330         * Description: <b>When the questionnaire was last changed</b><br>
331         * Type: <b>date</b><br>
332         * Path: <b>Questionnaire.date</b><br>
333         * </p>
334         */
335        @SearchParamDefinition(name="date", path="Questionnaire.date", description="When the questionnaire was last changed", type="date" 
336 )
337        public static final String SP_DATE = "date";
338
339        /**
340         * <b>Fluent Client</b> search parameter constant for <b>date</b>
341         * <p>
342         * Description: <b>When the questionnaire was last changed</b><br>
343         * Type: <b>date</b><br>
344         * Path: <b>Questionnaire.date</b><br>
345         * </p>
346         */
347        public static final DateClientParam DATE = new DateClientParam(SP_DATE);
348
349        /**
350         * Search parameter constant for <b>publisher</b>
351         * <p>
352         * Description: <b>The author of the questionnaire</b><br>
353         * Type: <b>string</b><br>
354         * Path: <b>Questionnaire.publisher</b><br>
355         * </p>
356         */
357        @SearchParamDefinition(name="publisher", path="Questionnaire.publisher", description="The author of the questionnaire", type="string" 
358 )
359        public static final String SP_PUBLISHER = "publisher";
360
361        /**
362         * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
363         * <p>
364         * Description: <b>The author of the questionnaire</b><br>
365         * Type: <b>string</b><br>
366         * Path: <b>Questionnaire.publisher</b><br>
367         * </p>
368         */
369        public static final StringClientParam PUBLISHER = new StringClientParam(SP_PUBLISHER);
370
371        /**
372         * Search parameter constant for <b>identifier</b>
373         * <p>
374         * Description: <b>An identifier for the questionnaire</b><br>
375         * Type: <b>token</b><br>
376         * Path: <b>Questionnaire.identifier</b><br>
377         * </p>
378         */
379        @SearchParamDefinition(name="identifier", path="Questionnaire.identifier", description="An identifier for the questionnaire", type="token" 
380 )
381        public static final String SP_IDENTIFIER = "identifier";
382
383        /**
384         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
385         * <p>
386         * Description: <b>An identifier for the questionnaire</b><br>
387         * Type: <b>token</b><br>
388         * Path: <b>Questionnaire.identifier</b><br>
389         * </p>
390         */
391        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
392
393        /**
394         * Search parameter constant for <b>version</b>
395         * <p>
396         * Description: <b>The business version of the questionnaire</b><br>
397         * Type: <b>string</b><br>
398         * Path: <b>Questionnaire.version</b><br>
399         * </p>
400         */
401        @SearchParamDefinition(name="version", path="Questionnaire.version", description="The business version of the questionnaire", type="string" 
402 )
403        public static final String SP_VERSION = "version";
404
405        /**
406         * <b>Fluent Client</b> search parameter constant for <b>version</b>
407         * <p>
408         * Description: <b>The business version of the questionnaire</b><br>
409         * Type: <b>string</b><br>
410         * Path: <b>Questionnaire.version</b><br>
411         * </p>
412         */
413        public static final StringClientParam VERSION = new StringClientParam(SP_VERSION);
414
415        /**
416         * Search parameter constant for <b>code</b>
417         * <p>
418         * Description: <b>A code that corresponds to the questionnaire or one of its groups</b><br>
419         * Type: <b>token</b><br>
420         * Path: <b>Questionnaire.group.concept</b><br>
421         * </p>
422         */
423        @SearchParamDefinition(name="code", path="Questionnaire.group.concept", description="A code that corresponds to the questionnaire or one of its groups", type="token" 
424 )
425        public static final String SP_CODE = "code";
426
427        /**
428         * <b>Fluent Client</b> search parameter constant for <b>code</b>
429         * <p>
430         * Description: <b>A code that corresponds to the questionnaire or one of its groups</b><br>
431         * Type: <b>token</b><br>
432         * Path: <b>Questionnaire.group.concept</b><br>
433         * </p>
434         */
435        public static final TokenClientParam CODE = new TokenClientParam(SP_CODE);
436
437        /**
438         * Search parameter constant for <b>title</b>
439         * <p>
440         * Description: <b>All or part of the name of the questionnaire (title for the root group of the questionnaire)</b><br>
441         * Type: <b>string</b><br>
442         * Path: <b>Questionnaire.group.title</b><br>
443         * </p>
444         */
445        @SearchParamDefinition(name="title", path="Questionnaire.group.title", description="All or part of the name of the questionnaire (title for the root group of the questionnaire)", type="string" 
446 )
447        public static final String SP_TITLE = "title";
448
449        /**
450         * <b>Fluent Client</b> search parameter constant for <b>title</b>
451         * <p>
452         * Description: <b>All or part of the name of the questionnaire (title for the root group of the questionnaire)</b><br>
453         * Type: <b>string</b><br>
454         * Path: <b>Questionnaire.group.title</b><br>
455         * </p>
456         */
457        public static final StringClientParam TITLE = new StringClientParam(SP_TITLE);
458
459
460
461        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)       
462        @Description(
463                shortDefinition="id",
464                formalDefinition="This records identifiers associated with this question set that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)"
465        )
466        private java.util.List<IdentifierDt> myIdentifier;
467        
468        @Child(name="version", type=StringDt.class, order=1, min=0, max=1, summary=true, modifier=false)        
469        @Description(
470                shortDefinition="id.version",
471                formalDefinition="The version number assigned by the publisher for business reasons.  It may remain the same when the resource is updated"
472        )
473        private StringDt myVersion;
474        
475        @Child(name="status", type=CodeDt.class, order=2, min=1, max=1, summary=true, modifier=true)    
476        @Description(
477                shortDefinition="status",
478                formalDefinition="The lifecycle status of the questionnaire as a whole."
479        )
480        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/questionnaire-status")
481        private BoundCodeDt<QuestionnaireStatusEnum> myStatus;
482        
483        @Child(name="date", type=DateTimeDt.class, order=3, min=0, max=1, summary=true, modifier=false) 
484        @Description(
485                shortDefinition="when.recorded",
486                formalDefinition="The date that this questionnaire was last changed"
487        )
488        private DateTimeDt myDate;
489        
490        @Child(name="publisher", type=StringDt.class, order=4, min=0, max=1, summary=true, modifier=false)      
491        @Description(
492                shortDefinition="who.witness",
493                formalDefinition="Organization or person responsible for developing and maintaining the questionnaire"
494        )
495        private StringDt myPublisher;
496        
497        @Child(name="telecom", type=ContactPointDt.class, order=5, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
498        @Description(
499                shortDefinition="",
500                formalDefinition="Contact details to assist a user in finding and communicating with the publisher"
501        )
502        private java.util.List<ContactPointDt> myTelecom;
503        
504        @Child(name="subjectType", type=CodeDt.class, order=6, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)    
505        @Description(
506                shortDefinition="",
507                formalDefinition="Identifies the types of subjects that can be the subject of the questionnaire."
508        )
509        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/resource-types")
510        private java.util.List<BoundCodeDt<ResourceTypeEnum>> mySubjectType;
511        
512        @Child(name="group", order=7, min=1, max=1, summary=true, modifier=false)       
513        @Description(
514                shortDefinition="",
515                formalDefinition="A collection of related questions (or further groupings of questions)"
516        )
517        private Group myGroup;
518        
519
520        @Override
521        public boolean isEmpty() {
522                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myVersion,  myStatus,  myDate,  myPublisher,  myTelecom,  mySubjectType,  myGroup);
523        }
524        
525        @Override
526        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
527                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myVersion, myStatus, myDate, myPublisher, myTelecom, mySubjectType, myGroup);
528        }
529
530        /**
531         * Gets the value(s) for <b>identifier</b> (id).
532         * creating it if it does
533         * not exist. Will not return <code>null</code>.
534         *
535     * <p>
536     * <b>Definition:</b>
537     * This records identifiers associated with this question set that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)
538     * </p> 
539         */
540        public java.util.List<IdentifierDt> getIdentifier() {  
541                if (myIdentifier == null) {
542                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
543                }
544                return myIdentifier;
545        }
546
547        /**
548         * Sets the value(s) for <b>identifier</b> (id)
549         *
550     * <p>
551     * <b>Definition:</b>
552     * This records identifiers associated with this question set that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)
553     * </p> 
554         */
555        public Questionnaire setIdentifier(java.util.List<IdentifierDt> theValue) {
556                myIdentifier = theValue;
557                return this;
558        }
559        
560        
561
562        /**
563         * Adds and returns a new value for <b>identifier</b> (id)
564         *
565     * <p>
566     * <b>Definition:</b>
567     * This records identifiers associated with this question set that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)
568     * </p> 
569         */
570        public IdentifierDt addIdentifier() {
571                IdentifierDt newType = new IdentifierDt();
572                getIdentifier().add(newType);
573                return newType; 
574        }
575
576        /**
577         * Adds a given new value for <b>identifier</b> (id)
578         *
579         * <p>
580         * <b>Definition:</b>
581         * This records identifiers associated with this question set that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)
582         * </p>
583         * @param theValue The identifier to add (must not be <code>null</code>)
584         */
585        public Questionnaire addIdentifier(IdentifierDt theValue) {
586                if (theValue == null) {
587                        throw new NullPointerException("theValue must not be null");
588                }
589                getIdentifier().add(theValue);
590                return this;
591        }
592
593        /**
594         * Gets the first repetition for <b>identifier</b> (id),
595         * creating it if it does not already exist.
596         *
597     * <p>
598     * <b>Definition:</b>
599     * This records identifiers associated with this question set that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)
600     * </p> 
601         */
602        public IdentifierDt getIdentifierFirstRep() {
603                if (getIdentifier().isEmpty()) {
604                        return addIdentifier();
605                }
606                return getIdentifier().get(0); 
607        }
608  
609        /**
610         * Gets the value(s) for <b>version</b> (id.version).
611         * creating it if it does
612         * not exist. Will not return <code>null</code>.
613         *
614     * <p>
615     * <b>Definition:</b>
616     * The version number assigned by the publisher for business reasons.  It may remain the same when the resource is updated
617     * </p> 
618         */
619        public StringDt getVersionElement() {  
620                if (myVersion == null) {
621                        myVersion = new StringDt();
622                }
623                return myVersion;
624        }
625
626        
627        /**
628         * Gets the value(s) for <b>version</b> (id.version).
629         * creating it if it does
630         * not exist. This method may return <code>null</code>.
631         *
632     * <p>
633     * <b>Definition:</b>
634     * The version number assigned by the publisher for business reasons.  It may remain the same when the resource is updated
635     * </p> 
636         */
637        public String getVersion() {  
638                return getVersionElement().getValue();
639        }
640
641        /**
642         * Sets the value(s) for <b>version</b> (id.version)
643         *
644     * <p>
645     * <b>Definition:</b>
646     * The version number assigned by the publisher for business reasons.  It may remain the same when the resource is updated
647     * </p> 
648         */
649        public Questionnaire setVersion(StringDt theValue) {
650                myVersion = theValue;
651                return this;
652        }
653        
654        
655
656        /**
657         * Sets the value for <b>version</b> (id.version)
658         *
659     * <p>
660     * <b>Definition:</b>
661     * The version number assigned by the publisher for business reasons.  It may remain the same when the resource is updated
662     * </p> 
663         */
664        public Questionnaire setVersion( String theString) {
665                myVersion = new StringDt(theString); 
666                return this; 
667        }
668
669 
670        /**
671         * Gets the value(s) for <b>status</b> (status).
672         * creating it if it does
673         * not exist. Will not return <code>null</code>.
674         *
675     * <p>
676     * <b>Definition:</b>
677     * The lifecycle status of the questionnaire as a whole.
678     * </p> 
679         */
680        public BoundCodeDt<QuestionnaireStatusEnum> getStatusElement() {  
681                if (myStatus == null) {
682                        myStatus = new BoundCodeDt<QuestionnaireStatusEnum>(QuestionnaireStatusEnum.VALUESET_BINDER);
683                }
684                return myStatus;
685        }
686
687        
688        /**
689         * Gets the value(s) for <b>status</b> (status).
690         * creating it if it does
691         * not exist. This method may return <code>null</code>.
692         *
693     * <p>
694     * <b>Definition:</b>
695     * The lifecycle status of the questionnaire as a whole.
696     * </p> 
697         */
698        public String getStatus() {  
699                return getStatusElement().getValue();
700        }
701
702        /**
703         * Sets the value(s) for <b>status</b> (status)
704         *
705     * <p>
706     * <b>Definition:</b>
707     * The lifecycle status of the questionnaire as a whole.
708     * </p> 
709         */
710        public Questionnaire setStatus(BoundCodeDt<QuestionnaireStatusEnum> theValue) {
711                myStatus = theValue;
712                return this;
713        }
714        
715        
716
717        /**
718         * Sets the value(s) for <b>status</b> (status)
719         *
720     * <p>
721     * <b>Definition:</b>
722     * The lifecycle status of the questionnaire as a whole.
723     * </p> 
724         */
725        public Questionnaire setStatus(QuestionnaireStatusEnum theValue) {
726                setStatus(new BoundCodeDt<QuestionnaireStatusEnum>(QuestionnaireStatusEnum.VALUESET_BINDER, theValue));
727                
728/*
729                getStatusElement().setValueAsEnum(theValue);
730*/
731                return this;
732        }
733
734  
735        /**
736         * Gets the value(s) for <b>date</b> (when.recorded).
737         * creating it if it does
738         * not exist. Will not return <code>null</code>.
739         *
740     * <p>
741     * <b>Definition:</b>
742     * The date that this questionnaire was last changed
743     * </p> 
744         */
745        public DateTimeDt getDateElement() {  
746                if (myDate == null) {
747                        myDate = new DateTimeDt();
748                }
749                return myDate;
750        }
751
752        
753        /**
754         * Gets the value(s) for <b>date</b> (when.recorded).
755         * creating it if it does
756         * not exist. This method may return <code>null</code>.
757         *
758     * <p>
759     * <b>Definition:</b>
760     * The date that this questionnaire was last changed
761     * </p> 
762         */
763        public Date getDate() {  
764                return getDateElement().getValue();
765        }
766
767        /**
768         * Sets the value(s) for <b>date</b> (when.recorded)
769         *
770     * <p>
771     * <b>Definition:</b>
772     * The date that this questionnaire was last changed
773     * </p> 
774         */
775        public Questionnaire setDate(DateTimeDt theValue) {
776                myDate = theValue;
777                return this;
778        }
779        
780        
781
782        /**
783         * Sets the value for <b>date</b> (when.recorded)
784         *
785     * <p>
786     * <b>Definition:</b>
787     * The date that this questionnaire was last changed
788     * </p> 
789         */
790        public Questionnaire setDateWithSecondsPrecision( Date theDate) {
791                myDate = new DateTimeDt(theDate); 
792                return this; 
793        }
794
795        /**
796         * Sets the value for <b>date</b> (when.recorded)
797         *
798     * <p>
799     * <b>Definition:</b>
800     * The date that this questionnaire was last changed
801     * </p> 
802         */
803        public Questionnaire setDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
804                myDate = new DateTimeDt(theDate, thePrecision); 
805                return this; 
806        }
807
808 
809        /**
810         * Gets the value(s) for <b>publisher</b> (who.witness).
811         * creating it if it does
812         * not exist. Will not return <code>null</code>.
813         *
814     * <p>
815     * <b>Definition:</b>
816     * Organization or person responsible for developing and maintaining the questionnaire
817     * </p> 
818         */
819        public StringDt getPublisherElement() {  
820                if (myPublisher == null) {
821                        myPublisher = new StringDt();
822                }
823                return myPublisher;
824        }
825
826        
827        /**
828         * Gets the value(s) for <b>publisher</b> (who.witness).
829         * creating it if it does
830         * not exist. This method may return <code>null</code>.
831         *
832     * <p>
833     * <b>Definition:</b>
834     * Organization or person responsible for developing and maintaining the questionnaire
835     * </p> 
836         */
837        public String getPublisher() {  
838                return getPublisherElement().getValue();
839        }
840
841        /**
842         * Sets the value(s) for <b>publisher</b> (who.witness)
843         *
844     * <p>
845     * <b>Definition:</b>
846     * Organization or person responsible for developing and maintaining the questionnaire
847     * </p> 
848         */
849        public Questionnaire setPublisher(StringDt theValue) {
850                myPublisher = theValue;
851                return this;
852        }
853        
854        
855
856        /**
857         * Sets the value for <b>publisher</b> (who.witness)
858         *
859     * <p>
860     * <b>Definition:</b>
861     * Organization or person responsible for developing and maintaining the questionnaire
862     * </p> 
863         */
864        public Questionnaire setPublisher( String theString) {
865                myPublisher = new StringDt(theString); 
866                return this; 
867        }
868
869 
870        /**
871         * Gets the value(s) for <b>telecom</b> ().
872         * creating it if it does
873         * not exist. Will not return <code>null</code>.
874         *
875     * <p>
876     * <b>Definition:</b>
877     * Contact details to assist a user in finding and communicating with the publisher
878     * </p> 
879         */
880        public java.util.List<ContactPointDt> getTelecom() {  
881                if (myTelecom == null) {
882                        myTelecom = new java.util.ArrayList<ContactPointDt>();
883                }
884                return myTelecom;
885        }
886
887        /**
888         * Sets the value(s) for <b>telecom</b> ()
889         *
890     * <p>
891     * <b>Definition:</b>
892     * Contact details to assist a user in finding and communicating with the publisher
893     * </p> 
894         */
895        public Questionnaire setTelecom(java.util.List<ContactPointDt> theValue) {
896                myTelecom = theValue;
897                return this;
898        }
899        
900        
901
902        /**
903         * Adds and returns a new value for <b>telecom</b> ()
904         *
905     * <p>
906     * <b>Definition:</b>
907     * Contact details to assist a user in finding and communicating with the publisher
908     * </p> 
909         */
910        public ContactPointDt addTelecom() {
911                ContactPointDt newType = new ContactPointDt();
912                getTelecom().add(newType);
913                return newType; 
914        }
915
916        /**
917         * Adds a given new value for <b>telecom</b> ()
918         *
919         * <p>
920         * <b>Definition:</b>
921         * Contact details to assist a user in finding and communicating with the publisher
922         * </p>
923         * @param theValue The telecom to add (must not be <code>null</code>)
924         */
925        public Questionnaire addTelecom(ContactPointDt theValue) {
926                if (theValue == null) {
927                        throw new NullPointerException("theValue must not be null");
928                }
929                getTelecom().add(theValue);
930                return this;
931        }
932
933        /**
934         * Gets the first repetition for <b>telecom</b> (),
935         * creating it if it does not already exist.
936         *
937     * <p>
938     * <b>Definition:</b>
939     * Contact details to assist a user in finding and communicating with the publisher
940     * </p> 
941         */
942        public ContactPointDt getTelecomFirstRep() {
943                if (getTelecom().isEmpty()) {
944                        return addTelecom();
945                }
946                return getTelecom().get(0); 
947        }
948  
949        /**
950         * Gets the value(s) for <b>subjectType</b> ().
951         * creating it if it does
952         * not exist. Will not return <code>null</code>.
953         *
954     * <p>
955     * <b>Definition:</b>
956     * Identifies the types of subjects that can be the subject of the questionnaire.
957     * </p> 
958         */
959        public java.util.List<BoundCodeDt<ResourceTypeEnum>> getSubjectType() {  
960                if (mySubjectType == null) {
961                        mySubjectType = new java.util.ArrayList<BoundCodeDt<ResourceTypeEnum>>();
962                }
963                return mySubjectType;
964        }
965
966        /**
967         * Sets the value(s) for <b>subjectType</b> ()
968         *
969     * <p>
970     * <b>Definition:</b>
971     * Identifies the types of subjects that can be the subject of the questionnaire.
972     * </p> 
973         */
974        public Questionnaire setSubjectType(java.util.List<BoundCodeDt<ResourceTypeEnum>> theValue) {
975                mySubjectType = theValue;
976                return this;
977        }
978        
979        
980
981        /**
982         * Add a value for <b>subjectType</b> () using an enumerated type. This
983         * is intended as a convenience method for situations where the FHIR defined ValueSets are mandatory
984         * or contain the desirable codes. If you wish to use codes other than those which are built-in, 
985         * you may also use the {@link #addSubjectType()} method.
986         *
987     * <p>
988     * <b>Definition:</b>
989     * Identifies the types of subjects that can be the subject of the questionnaire.
990     * </p> 
991         */
992        public BoundCodeDt<ResourceTypeEnum> addSubjectType(ResourceTypeEnum theValue) {
993                BoundCodeDt<ResourceTypeEnum> retVal = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER, theValue);
994                getSubjectType().add(retVal);
995                return retVal;
996        }
997
998        /**
999         * Gets the first repetition for <b>subjectType</b> (),
1000         * creating it if it does not already exist.
1001         *
1002     * <p>
1003     * <b>Definition:</b>
1004     * Identifies the types of subjects that can be the subject of the questionnaire.
1005     * </p> 
1006         */
1007        public BoundCodeDt<ResourceTypeEnum> getSubjectTypeFirstRep() {
1008                if (getSubjectType().size() == 0) {
1009                        addSubjectType();
1010                }
1011                return getSubjectType().get(0);
1012        }
1013
1014        /**
1015         * Add a value for <b>subjectType</b> ()
1016         *
1017     * <p>
1018     * <b>Definition:</b>
1019     * Identifies the types of subjects that can be the subject of the questionnaire.
1020     * </p> 
1021         */
1022        public BoundCodeDt<ResourceTypeEnum> addSubjectType() {
1023                BoundCodeDt<ResourceTypeEnum> retVal = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER);
1024                getSubjectType().add(retVal);
1025                return retVal;
1026        }
1027
1028        /**
1029         * Sets the value(s), and clears any existing value(s) for <b>subjectType</b> ()
1030         *
1031     * <p>
1032     * <b>Definition:</b>
1033     * Identifies the types of subjects that can be the subject of the questionnaire.
1034     * </p> 
1035         */
1036        public Questionnaire setSubjectType(ResourceTypeEnum theValue) {
1037                getSubjectType().clear();
1038                addSubjectType(theValue);
1039                return this;
1040        }
1041
1042  
1043        /**
1044         * Gets the value(s) for <b>group</b> ().
1045         * creating it if it does
1046         * not exist. Will not return <code>null</code>.
1047         *
1048     * <p>
1049     * <b>Definition:</b>
1050     * A collection of related questions (or further groupings of questions)
1051     * </p> 
1052         */
1053        public Group getGroup() {  
1054                if (myGroup == null) {
1055                        myGroup = new Group();
1056                }
1057                return myGroup;
1058        }
1059
1060        /**
1061         * Sets the value(s) for <b>group</b> ()
1062         *
1063     * <p>
1064     * <b>Definition:</b>
1065     * A collection of related questions (or further groupings of questions)
1066     * </p> 
1067         */
1068        public Questionnaire setGroup(Group theValue) {
1069                myGroup = theValue;
1070                return this;
1071        }
1072        
1073        
1074
1075  
1076        /**
1077         * Block class for child element: <b>Questionnaire.group</b> ()
1078         *
1079     * <p>
1080     * <b>Definition:</b>
1081     * A collection of related questions (or further groupings of questions)
1082     * </p> 
1083         */
1084        @Block()        
1085        public static class Group 
1086            extends  BaseIdentifiableElement  
1087            implements IResourceBlock {
1088        
1089        @Child(name="linkId", type=StringDt.class, order=0, min=0, max=1, summary=false, modifier=false)        
1090        @Description(
1091                shortDefinition="",
1092                formalDefinition="An identifier that is unique within the Questionnaire allowing linkage to the equivalent group in a QuestionnaireResponse resource."
1093        )
1094        private StringDt myLinkId;
1095        
1096        @Child(name="title", type=StringDt.class, order=1, min=0, max=1, summary=true, modifier=false)  
1097        @Description(
1098                shortDefinition="",
1099                formalDefinition="The human-readable name for this section of the questionnaire"
1100        )
1101        private StringDt myTitle;
1102        
1103        @Child(name="concept", type=CodingDt.class, order=2, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)      
1104        @Description(
1105                shortDefinition="",
1106                formalDefinition="Identifies a how this group of questions is known in a particular terminology such as LOINC."
1107        )
1108        private java.util.List<CodingDt> myConcept;
1109        
1110        @Child(name="text", type=StringDt.class, order=3, min=0, max=1, summary=false, modifier=false)  
1111        @Description(
1112                shortDefinition="",
1113                formalDefinition="Additional text for the group, used for display purposes"
1114        )
1115        private StringDt myText;
1116        
1117        @Child(name="required", type=BooleanDt.class, order=4, min=0, max=1, summary=false, modifier=false)     
1118        @Description(
1119                shortDefinition="",
1120                formalDefinition="If true, indicates that the group must be present and have required questions within it answered.  If false, the group may be skipped when answering the questionnaire."
1121        )
1122        private BooleanDt myRequired;
1123        
1124        @Child(name="repeats", type=BooleanDt.class, order=5, min=0, max=1, summary=false, modifier=false)      
1125        @Description(
1126                shortDefinition="",
1127                formalDefinition="Whether the group may occur multiple times in the instance, containing multiple sets of answers"
1128        )
1129        private BooleanDt myRepeats;
1130        
1131        @Child(name="group", type=Group.class, order=6, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
1132        @Description(
1133                shortDefinition="",
1134                formalDefinition="A sub-group within a group. The ordering of groups within this group is relevant"
1135        )
1136        private java.util.List<Group> myGroup;
1137        
1138        @Child(name="question", order=7, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
1139        @Description(
1140                shortDefinition="",
1141                formalDefinition="Set of questions within this group. The order of questions within the group is relevant"
1142        )
1143        private java.util.List<GroupQuestion> myQuestion;
1144        
1145
1146        @Override
1147        public boolean isEmpty() {
1148                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myLinkId,  myTitle,  myConcept,  myText,  myRequired,  myRepeats,  myGroup,  myQuestion);
1149        }
1150        
1151        @Override
1152        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1153                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myLinkId, myTitle, myConcept, myText, myRequired, myRepeats, myGroup, myQuestion);
1154        }
1155
1156        /**
1157         * Gets the value(s) for <b>linkId</b> ().
1158         * creating it if it does
1159         * not exist. Will not return <code>null</code>.
1160         *
1161     * <p>
1162     * <b>Definition:</b>
1163     * An identifier that is unique within the Questionnaire allowing linkage to the equivalent group in a QuestionnaireResponse resource.
1164     * </p> 
1165         */
1166        public StringDt getLinkIdElement() {  
1167                if (myLinkId == null) {
1168                        myLinkId = new StringDt();
1169                }
1170                return myLinkId;
1171        }
1172
1173        
1174        /**
1175         * Gets the value(s) for <b>linkId</b> ().
1176         * creating it if it does
1177         * not exist. This method may return <code>null</code>.
1178         *
1179     * <p>
1180     * <b>Definition:</b>
1181     * An identifier that is unique within the Questionnaire allowing linkage to the equivalent group in a QuestionnaireResponse resource.
1182     * </p> 
1183         */
1184        public String getLinkId() {  
1185                return getLinkIdElement().getValue();
1186        }
1187
1188        /**
1189         * Sets the value(s) for <b>linkId</b> ()
1190         *
1191     * <p>
1192     * <b>Definition:</b>
1193     * An identifier that is unique within the Questionnaire allowing linkage to the equivalent group in a QuestionnaireResponse resource.
1194     * </p> 
1195         */
1196        public Group setLinkId(StringDt theValue) {
1197                myLinkId = theValue;
1198                return this;
1199        }
1200        
1201        
1202
1203        /**
1204         * Sets the value for <b>linkId</b> ()
1205         *
1206     * <p>
1207     * <b>Definition:</b>
1208     * An identifier that is unique within the Questionnaire allowing linkage to the equivalent group in a QuestionnaireResponse resource.
1209     * </p> 
1210         */
1211        public Group setLinkId( String theString) {
1212                myLinkId = new StringDt(theString); 
1213                return this; 
1214        }
1215
1216 
1217        /**
1218         * Gets the value(s) for <b>title</b> ().
1219         * creating it if it does
1220         * not exist. Will not return <code>null</code>.
1221         *
1222     * <p>
1223     * <b>Definition:</b>
1224     * The human-readable name for this section of the questionnaire
1225     * </p> 
1226         */
1227        public StringDt getTitleElement() {  
1228                if (myTitle == null) {
1229                        myTitle = new StringDt();
1230                }
1231                return myTitle;
1232        }
1233
1234        
1235        /**
1236         * Gets the value(s) for <b>title</b> ().
1237         * creating it if it does
1238         * not exist. This method may return <code>null</code>.
1239         *
1240     * <p>
1241     * <b>Definition:</b>
1242     * The human-readable name for this section of the questionnaire
1243     * </p> 
1244         */
1245        public String getTitle() {  
1246                return getTitleElement().getValue();
1247        }
1248
1249        /**
1250         * Sets the value(s) for <b>title</b> ()
1251         *
1252     * <p>
1253     * <b>Definition:</b>
1254     * The human-readable name for this section of the questionnaire
1255     * </p> 
1256         */
1257        public Group setTitle(StringDt theValue) {
1258                myTitle = theValue;
1259                return this;
1260        }
1261        
1262        
1263
1264        /**
1265         * Sets the value for <b>title</b> ()
1266         *
1267     * <p>
1268     * <b>Definition:</b>
1269     * The human-readable name for this section of the questionnaire
1270     * </p> 
1271         */
1272        public Group setTitle( String theString) {
1273                myTitle = new StringDt(theString); 
1274                return this; 
1275        }
1276
1277 
1278        /**
1279         * Gets the value(s) for <b>concept</b> ().
1280         * creating it if it does
1281         * not exist. Will not return <code>null</code>.
1282         *
1283     * <p>
1284     * <b>Definition:</b>
1285     * Identifies a how this group of questions is known in a particular terminology such as LOINC.
1286     * </p> 
1287         */
1288        public java.util.List<CodingDt> getConcept() {  
1289                if (myConcept == null) {
1290                        myConcept = new java.util.ArrayList<CodingDt>();
1291                }
1292                return myConcept;
1293        }
1294
1295        /**
1296         * Sets the value(s) for <b>concept</b> ()
1297         *
1298     * <p>
1299     * <b>Definition:</b>
1300     * Identifies a how this group of questions is known in a particular terminology such as LOINC.
1301     * </p> 
1302         */
1303        public Group setConcept(java.util.List<CodingDt> theValue) {
1304                myConcept = theValue;
1305                return this;
1306        }
1307        
1308        
1309
1310        /**
1311         * Adds and returns a new value for <b>concept</b> ()
1312         *
1313     * <p>
1314     * <b>Definition:</b>
1315     * Identifies a how this group of questions is known in a particular terminology such as LOINC.
1316     * </p> 
1317         */
1318        public CodingDt addConcept() {
1319                CodingDt newType = new CodingDt();
1320                getConcept().add(newType);
1321                return newType; 
1322        }
1323
1324        /**
1325         * Adds a given new value for <b>concept</b> ()
1326         *
1327         * <p>
1328         * <b>Definition:</b>
1329         * Identifies a how this group of questions is known in a particular terminology such as LOINC.
1330         * </p>
1331         * @param theValue The concept to add (must not be <code>null</code>)
1332         */
1333        public Group addConcept(CodingDt theValue) {
1334                if (theValue == null) {
1335                        throw new NullPointerException("theValue must not be null");
1336                }
1337                getConcept().add(theValue);
1338                return this;
1339        }
1340
1341        /**
1342         * Gets the first repetition for <b>concept</b> (),
1343         * creating it if it does not already exist.
1344         *
1345     * <p>
1346     * <b>Definition:</b>
1347     * Identifies a how this group of questions is known in a particular terminology such as LOINC.
1348     * </p> 
1349         */
1350        public CodingDt getConceptFirstRep() {
1351                if (getConcept().isEmpty()) {
1352                        return addConcept();
1353                }
1354                return getConcept().get(0); 
1355        }
1356  
1357        /**
1358         * Gets the value(s) for <b>text</b> ().
1359         * creating it if it does
1360         * not exist. Will not return <code>null</code>.
1361         *
1362     * <p>
1363     * <b>Definition:</b>
1364     * Additional text for the group, used for display purposes
1365     * </p> 
1366         */
1367        public StringDt getTextElement() {  
1368                if (myText == null) {
1369                        myText = new StringDt();
1370                }
1371                return myText;
1372        }
1373
1374        
1375        /**
1376         * Gets the value(s) for <b>text</b> ().
1377         * creating it if it does
1378         * not exist. This method may return <code>null</code>.
1379         *
1380     * <p>
1381     * <b>Definition:</b>
1382     * Additional text for the group, used for display purposes
1383     * </p> 
1384         */
1385        public String getText() {  
1386                return getTextElement().getValue();
1387        }
1388
1389        /**
1390         * Sets the value(s) for <b>text</b> ()
1391         *
1392     * <p>
1393     * <b>Definition:</b>
1394     * Additional text for the group, used for display purposes
1395     * </p> 
1396         */
1397        public Group setText(StringDt theValue) {
1398                myText = theValue;
1399                return this;
1400        }
1401        
1402        
1403
1404        /**
1405         * Sets the value for <b>text</b> ()
1406         *
1407     * <p>
1408     * <b>Definition:</b>
1409     * Additional text for the group, used for display purposes
1410     * </p> 
1411         */
1412        public Group setText( String theString) {
1413                myText = new StringDt(theString); 
1414                return this; 
1415        }
1416
1417 
1418        /**
1419         * Gets the value(s) for <b>required</b> ().
1420         * creating it if it does
1421         * not exist. Will not return <code>null</code>.
1422         *
1423     * <p>
1424     * <b>Definition:</b>
1425     * If true, indicates that the group must be present and have required questions within it answered.  If false, the group may be skipped when answering the questionnaire.
1426     * </p> 
1427         */
1428        public BooleanDt getRequiredElement() {  
1429                if (myRequired == null) {
1430                        myRequired = new BooleanDt();
1431                }
1432                return myRequired;
1433        }
1434
1435        
1436        /**
1437         * Gets the value(s) for <b>required</b> ().
1438         * creating it if it does
1439         * not exist. This method may return <code>null</code>.
1440         *
1441     * <p>
1442     * <b>Definition:</b>
1443     * If true, indicates that the group must be present and have required questions within it answered.  If false, the group may be skipped when answering the questionnaire.
1444     * </p> 
1445         */
1446        public Boolean getRequired() {  
1447                return getRequiredElement().getValue();
1448        }
1449
1450        /**
1451         * Sets the value(s) for <b>required</b> ()
1452         *
1453     * <p>
1454     * <b>Definition:</b>
1455     * If true, indicates that the group must be present and have required questions within it answered.  If false, the group may be skipped when answering the questionnaire.
1456     * </p> 
1457         */
1458        public Group setRequired(BooleanDt theValue) {
1459                myRequired = theValue;
1460                return this;
1461        }
1462        
1463        
1464
1465        /**
1466         * Sets the value for <b>required</b> ()
1467         *
1468     * <p>
1469     * <b>Definition:</b>
1470     * If true, indicates that the group must be present and have required questions within it answered.  If false, the group may be skipped when answering the questionnaire.
1471     * </p> 
1472         */
1473        public Group setRequired( boolean theBoolean) {
1474                myRequired = new BooleanDt(theBoolean); 
1475                return this; 
1476        }
1477
1478 
1479        /**
1480         * Gets the value(s) for <b>repeats</b> ().
1481         * creating it if it does
1482         * not exist. Will not return <code>null</code>.
1483         *
1484     * <p>
1485     * <b>Definition:</b>
1486     * Whether the group may occur multiple times in the instance, containing multiple sets of answers
1487     * </p> 
1488         */
1489        public BooleanDt getRepeatsElement() {  
1490                if (myRepeats == null) {
1491                        myRepeats = new BooleanDt();
1492                }
1493                return myRepeats;
1494        }
1495
1496        
1497        /**
1498         * Gets the value(s) for <b>repeats</b> ().
1499         * creating it if it does
1500         * not exist. This method may return <code>null</code>.
1501         *
1502     * <p>
1503     * <b>Definition:</b>
1504     * Whether the group may occur multiple times in the instance, containing multiple sets of answers
1505     * </p> 
1506         */
1507        public Boolean getRepeats() {  
1508                return getRepeatsElement().getValue();
1509        }
1510
1511        /**
1512         * Sets the value(s) for <b>repeats</b> ()
1513         *
1514     * <p>
1515     * <b>Definition:</b>
1516     * Whether the group may occur multiple times in the instance, containing multiple sets of answers
1517     * </p> 
1518         */
1519        public Group setRepeats(BooleanDt theValue) {
1520                myRepeats = theValue;
1521                return this;
1522        }
1523        
1524        
1525
1526        /**
1527         * Sets the value for <b>repeats</b> ()
1528         *
1529     * <p>
1530     * <b>Definition:</b>
1531     * Whether the group may occur multiple times in the instance, containing multiple sets of answers
1532     * </p> 
1533         */
1534        public Group setRepeats( boolean theBoolean) {
1535                myRepeats = new BooleanDt(theBoolean); 
1536                return this; 
1537        }
1538
1539 
1540        /**
1541         * Gets the value(s) for <b>group</b> ().
1542         * creating it if it does
1543         * not exist. Will not return <code>null</code>.
1544         *
1545     * <p>
1546     * <b>Definition:</b>
1547     * A sub-group within a group. The ordering of groups within this group is relevant
1548     * </p> 
1549         */
1550        public java.util.List<Group> getGroup() {  
1551                if (myGroup == null) {
1552                        myGroup = new java.util.ArrayList<Group>();
1553                }
1554                return myGroup;
1555        }
1556
1557        /**
1558         * Sets the value(s) for <b>group</b> ()
1559         *
1560     * <p>
1561     * <b>Definition:</b>
1562     * A sub-group within a group. The ordering of groups within this group is relevant
1563     * </p> 
1564         */
1565        public Group setGroup(java.util.List<Group> theValue) {
1566                myGroup = theValue;
1567                return this;
1568        }
1569        
1570        
1571
1572        /**
1573         * Adds and returns a new value for <b>group</b> ()
1574         *
1575     * <p>
1576     * <b>Definition:</b>
1577     * A sub-group within a group. The ordering of groups within this group is relevant
1578     * </p> 
1579         */
1580        public Group addGroup() {
1581                Group newType = new Group();
1582                getGroup().add(newType);
1583                return newType; 
1584        }
1585
1586        /**
1587         * Adds a given new value for <b>group</b> ()
1588         *
1589         * <p>
1590         * <b>Definition:</b>
1591         * A sub-group within a group. The ordering of groups within this group is relevant
1592         * </p>
1593         * @param theValue The group to add (must not be <code>null</code>)
1594         */
1595        public Group addGroup(Group theValue) {
1596                if (theValue == null) {
1597                        throw new NullPointerException("theValue must not be null");
1598                }
1599                getGroup().add(theValue);
1600                return this;
1601        }
1602
1603        /**
1604         * Gets the first repetition for <b>group</b> (),
1605         * creating it if it does not already exist.
1606         *
1607     * <p>
1608     * <b>Definition:</b>
1609     * A sub-group within a group. The ordering of groups within this group is relevant
1610     * </p> 
1611         */
1612        public Group getGroupFirstRep() {
1613                if (getGroup().isEmpty()) {
1614                        return addGroup();
1615                }
1616                return getGroup().get(0); 
1617        }
1618  
1619        /**
1620         * Gets the value(s) for <b>question</b> ().
1621         * creating it if it does
1622         * not exist. Will not return <code>null</code>.
1623         *
1624     * <p>
1625     * <b>Definition:</b>
1626     * Set of questions within this group. The order of questions within the group is relevant
1627     * </p> 
1628         */
1629        public java.util.List<GroupQuestion> getQuestion() {  
1630                if (myQuestion == null) {
1631                        myQuestion = new java.util.ArrayList<GroupQuestion>();
1632                }
1633                return myQuestion;
1634        }
1635
1636        /**
1637         * Sets the value(s) for <b>question</b> ()
1638         *
1639     * <p>
1640     * <b>Definition:</b>
1641     * Set of questions within this group. The order of questions within the group is relevant
1642     * </p> 
1643         */
1644        public Group setQuestion(java.util.List<GroupQuestion> theValue) {
1645                myQuestion = theValue;
1646                return this;
1647        }
1648        
1649        
1650
1651        /**
1652         * Adds and returns a new value for <b>question</b> ()
1653         *
1654     * <p>
1655     * <b>Definition:</b>
1656     * Set of questions within this group. The order of questions within the group is relevant
1657     * </p> 
1658         */
1659        public GroupQuestion addQuestion() {
1660                GroupQuestion newType = new GroupQuestion();
1661                getQuestion().add(newType);
1662                return newType; 
1663        }
1664
1665        /**
1666         * Adds a given new value for <b>question</b> ()
1667         *
1668         * <p>
1669         * <b>Definition:</b>
1670         * Set of questions within this group. The order of questions within the group is relevant
1671         * </p>
1672         * @param theValue The question to add (must not be <code>null</code>)
1673         */
1674        public Group addQuestion(GroupQuestion theValue) {
1675                if (theValue == null) {
1676                        throw new NullPointerException("theValue must not be null");
1677                }
1678                getQuestion().add(theValue);
1679                return this;
1680        }
1681
1682        /**
1683         * Gets the first repetition for <b>question</b> (),
1684         * creating it if it does not already exist.
1685         *
1686     * <p>
1687     * <b>Definition:</b>
1688     * Set of questions within this group. The order of questions within the group is relevant
1689     * </p> 
1690         */
1691        public GroupQuestion getQuestionFirstRep() {
1692                if (getQuestion().isEmpty()) {
1693                        return addQuestion();
1694                }
1695                return getQuestion().get(0); 
1696        }
1697  
1698
1699
1700        }
1701
1702        /**
1703         * Block class for child element: <b>Questionnaire.group.question</b> ()
1704         *
1705     * <p>
1706     * <b>Definition:</b>
1707     * Set of questions within this group. The order of questions within the group is relevant
1708     * </p> 
1709         */
1710        @Block()        
1711        public static class GroupQuestion 
1712            extends  BaseIdentifiableElement  
1713            implements IResourceBlock {
1714        
1715        @Child(name="linkId", type=StringDt.class, order=0, min=0, max=1, summary=false, modifier=false)        
1716        @Description(
1717                shortDefinition="",
1718                formalDefinition="An identifier that is unique within the questionnaire allowing linkage to the equivalent group in a [[[QuestionnaireResponse]]] resource."
1719        )
1720        private StringDt myLinkId;
1721        
1722        @Child(name="concept", type=CodingDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
1723        @Description(
1724                shortDefinition="",
1725                formalDefinition="Identifies a how this question is known in a particular terminology such as LOINC."
1726        )
1727        private java.util.List<CodingDt> myConcept;
1728        
1729        @Child(name="text", type=StringDt.class, order=2, min=0, max=1, summary=false, modifier=false)  
1730        @Description(
1731                shortDefinition="",
1732                formalDefinition="The actual question as shown to the user to prompt them for an answer."
1733        )
1734        private StringDt myText;
1735        
1736        @Child(name="type", type=CodeDt.class, order=3, min=0, max=1, summary=false, modifier=false)    
1737        @Description(
1738                shortDefinition="",
1739                formalDefinition="The expected format of the answer, e.g. the type of input (string, integer) or whether a (multiple) choice is expected"
1740        )
1741        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/answer-format")
1742        private BoundCodeDt<AnswerFormatEnum> myType;
1743        
1744        @Child(name="required", type=BooleanDt.class, order=4, min=0, max=1, summary=false, modifier=false)     
1745        @Description(
1746                shortDefinition="",
1747                formalDefinition="If true, indicates that the question must be answered and have required groups within it also present.  If false, the question and any contained groups may be skipped when answering the questionnaire."
1748        )
1749        private BooleanDt myRequired;
1750        
1751        @Child(name="repeats", type=BooleanDt.class, order=5, min=0, max=1, summary=false, modifier=false)      
1752        @Description(
1753                shortDefinition="",
1754                formalDefinition="If true, the question may have more than one answer."
1755        )
1756        private BooleanDt myRepeats;
1757        
1758        @Child(name="options", order=6, min=0, max=1, summary=false, modifier=false, type={
1759                ca.uhn.fhir.model.dstu2.resource.ValueSet.class
1760        })
1761        @Description(
1762                shortDefinition="",
1763                formalDefinition="Reference to a value set containing a list of codes representing permitted answers for the question"
1764        )
1765        private ResourceReferenceDt myOptions;
1766        
1767        @Child(name="option", type=CodingDt.class, order=7, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
1768        @Description(
1769                shortDefinition="",
1770                formalDefinition="For a \"choice\" question, identifies one of the permitted answers for the question."
1771        )
1772        private java.util.List<CodingDt> myOption;
1773        
1774        @Child(name="group", type=Group.class, order=8, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
1775        @Description(
1776                shortDefinition="",
1777                formalDefinition="Nested group, containing nested question for this question. The order of groups within the question is relevant"
1778        )
1779        private java.util.List<Group> myGroup;
1780        
1781
1782        @Override
1783        public boolean isEmpty() {
1784                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myLinkId,  myConcept,  myText,  myType,  myRequired,  myRepeats,  myOptions,  myOption,  myGroup);
1785        }
1786        
1787        @Override
1788        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1789                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myLinkId, myConcept, myText, myType, myRequired, myRepeats, myOptions, myOption, myGroup);
1790        }
1791
1792        /**
1793         * Gets the value(s) for <b>linkId</b> ().
1794         * creating it if it does
1795         * not exist. Will not return <code>null</code>.
1796         *
1797     * <p>
1798     * <b>Definition:</b>
1799     * An identifier that is unique within the questionnaire allowing linkage to the equivalent group in a [[[QuestionnaireResponse]]] resource.
1800     * </p> 
1801         */
1802        public StringDt getLinkIdElement() {  
1803                if (myLinkId == null) {
1804                        myLinkId = new StringDt();
1805                }
1806                return myLinkId;
1807        }
1808
1809        
1810        /**
1811         * Gets the value(s) for <b>linkId</b> ().
1812         * creating it if it does
1813         * not exist. This method may return <code>null</code>.
1814         *
1815     * <p>
1816     * <b>Definition:</b>
1817     * An identifier that is unique within the questionnaire allowing linkage to the equivalent group in a [[[QuestionnaireResponse]]] resource.
1818     * </p> 
1819         */
1820        public String getLinkId() {  
1821                return getLinkIdElement().getValue();
1822        }
1823
1824        /**
1825         * Sets the value(s) for <b>linkId</b> ()
1826         *
1827     * <p>
1828     * <b>Definition:</b>
1829     * An identifier that is unique within the questionnaire allowing linkage to the equivalent group in a [[[QuestionnaireResponse]]] resource.
1830     * </p> 
1831         */
1832        public GroupQuestion setLinkId(StringDt theValue) {
1833                myLinkId = theValue;
1834                return this;
1835        }
1836        
1837        
1838
1839        /**
1840         * Sets the value for <b>linkId</b> ()
1841         *
1842     * <p>
1843     * <b>Definition:</b>
1844     * An identifier that is unique within the questionnaire allowing linkage to the equivalent group in a [[[QuestionnaireResponse]]] resource.
1845     * </p> 
1846         */
1847        public GroupQuestion setLinkId( String theString) {
1848                myLinkId = new StringDt(theString); 
1849                return this; 
1850        }
1851
1852 
1853        /**
1854         * Gets the value(s) for <b>concept</b> ().
1855         * creating it if it does
1856         * not exist. Will not return <code>null</code>.
1857         *
1858     * <p>
1859     * <b>Definition:</b>
1860     * Identifies a how this question is known in a particular terminology such as LOINC.
1861     * </p> 
1862         */
1863        public java.util.List<CodingDt> getConcept() {  
1864                if (myConcept == null) {
1865                        myConcept = new java.util.ArrayList<CodingDt>();
1866                }
1867                return myConcept;
1868        }
1869
1870        /**
1871         * Sets the value(s) for <b>concept</b> ()
1872         *
1873     * <p>
1874     * <b>Definition:</b>
1875     * Identifies a how this question is known in a particular terminology such as LOINC.
1876     * </p> 
1877         */
1878        public GroupQuestion setConcept(java.util.List<CodingDt> theValue) {
1879                myConcept = theValue;
1880                return this;
1881        }
1882        
1883        
1884
1885        /**
1886         * Adds and returns a new value for <b>concept</b> ()
1887         *
1888     * <p>
1889     * <b>Definition:</b>
1890     * Identifies a how this question is known in a particular terminology such as LOINC.
1891     * </p> 
1892         */
1893        public CodingDt addConcept() {
1894                CodingDt newType = new CodingDt();
1895                getConcept().add(newType);
1896                return newType; 
1897        }
1898
1899        /**
1900         * Adds a given new value for <b>concept</b> ()
1901         *
1902         * <p>
1903         * <b>Definition:</b>
1904         * Identifies a how this question is known in a particular terminology such as LOINC.
1905         * </p>
1906         * @param theValue The concept to add (must not be <code>null</code>)
1907         */
1908        public GroupQuestion addConcept(CodingDt theValue) {
1909                if (theValue == null) {
1910                        throw new NullPointerException("theValue must not be null");
1911                }
1912                getConcept().add(theValue);
1913                return this;
1914        }
1915
1916        /**
1917         * Gets the first repetition for <b>concept</b> (),
1918         * creating it if it does not already exist.
1919         *
1920     * <p>
1921     * <b>Definition:</b>
1922     * Identifies a how this question is known in a particular terminology such as LOINC.
1923     * </p> 
1924         */
1925        public CodingDt getConceptFirstRep() {
1926                if (getConcept().isEmpty()) {
1927                        return addConcept();
1928                }
1929                return getConcept().get(0); 
1930        }
1931  
1932        /**
1933         * Gets the value(s) for <b>text</b> ().
1934         * creating it if it does
1935         * not exist. Will not return <code>null</code>.
1936         *
1937     * <p>
1938     * <b>Definition:</b>
1939     * The actual question as shown to the user to prompt them for an answer.
1940     * </p> 
1941         */
1942        public StringDt getTextElement() {  
1943                if (myText == null) {
1944                        myText = new StringDt();
1945                }
1946                return myText;
1947        }
1948
1949        
1950        /**
1951         * Gets the value(s) for <b>text</b> ().
1952         * creating it if it does
1953         * not exist. This method may return <code>null</code>.
1954         *
1955     * <p>
1956     * <b>Definition:</b>
1957     * The actual question as shown to the user to prompt them for an answer.
1958     * </p> 
1959         */
1960        public String getText() {  
1961                return getTextElement().getValue();
1962        }
1963
1964        /**
1965         * Sets the value(s) for <b>text</b> ()
1966         *
1967     * <p>
1968     * <b>Definition:</b>
1969     * The actual question as shown to the user to prompt them for an answer.
1970     * </p> 
1971         */
1972        public GroupQuestion setText(StringDt theValue) {
1973                myText = theValue;
1974                return this;
1975        }
1976        
1977        
1978
1979        /**
1980         * Sets the value for <b>text</b> ()
1981         *
1982     * <p>
1983     * <b>Definition:</b>
1984     * The actual question as shown to the user to prompt them for an answer.
1985     * </p> 
1986         */
1987        public GroupQuestion setText( String theString) {
1988                myText = new StringDt(theString); 
1989                return this; 
1990        }
1991
1992 
1993        /**
1994         * Gets the value(s) for <b>type</b> ().
1995         * creating it if it does
1996         * not exist. Will not return <code>null</code>.
1997         *
1998     * <p>
1999     * <b>Definition:</b>
2000     * The expected format of the answer, e.g. the type of input (string, integer) or whether a (multiple) choice is expected
2001     * </p> 
2002         */
2003        public BoundCodeDt<AnswerFormatEnum> getTypeElement() {  
2004                if (myType == null) {
2005                        myType = new BoundCodeDt<AnswerFormatEnum>(AnswerFormatEnum.VALUESET_BINDER);
2006                }
2007                return myType;
2008        }
2009
2010        
2011        /**
2012         * Gets the value(s) for <b>type</b> ().
2013         * creating it if it does
2014         * not exist. This method may return <code>null</code>.
2015         *
2016     * <p>
2017     * <b>Definition:</b>
2018     * The expected format of the answer, e.g. the type of input (string, integer) or whether a (multiple) choice is expected
2019     * </p> 
2020         */
2021        public String getType() {  
2022                return getTypeElement().getValue();
2023        }
2024
2025        /**
2026         * Sets the value(s) for <b>type</b> ()
2027         *
2028     * <p>
2029     * <b>Definition:</b>
2030     * The expected format of the answer, e.g. the type of input (string, integer) or whether a (multiple) choice is expected
2031     * </p> 
2032         */
2033        public GroupQuestion setType(BoundCodeDt<AnswerFormatEnum> theValue) {
2034                myType = theValue;
2035                return this;
2036        }
2037        
2038        
2039
2040        /**
2041         * Sets the value(s) for <b>type</b> ()
2042         *
2043     * <p>
2044     * <b>Definition:</b>
2045     * The expected format of the answer, e.g. the type of input (string, integer) or whether a (multiple) choice is expected
2046     * </p> 
2047         */
2048        public GroupQuestion setType(AnswerFormatEnum theValue) {
2049                setType(new BoundCodeDt<AnswerFormatEnum>(AnswerFormatEnum.VALUESET_BINDER, theValue));
2050                
2051/*
2052                getTypeElement().setValueAsEnum(theValue);
2053*/
2054                return this;
2055        }
2056
2057  
2058        /**
2059         * Gets the value(s) for <b>required</b> ().
2060         * creating it if it does
2061         * not exist. Will not return <code>null</code>.
2062         *
2063     * <p>
2064     * <b>Definition:</b>
2065     * If true, indicates that the question must be answered and have required groups within it also present.  If false, the question and any contained groups may be skipped when answering the questionnaire.
2066     * </p> 
2067         */
2068        public BooleanDt getRequiredElement() {  
2069                if (myRequired == null) {
2070                        myRequired = new BooleanDt();
2071                }
2072                return myRequired;
2073        }
2074
2075        
2076        /**
2077         * Gets the value(s) for <b>required</b> ().
2078         * creating it if it does
2079         * not exist. This method may return <code>null</code>.
2080         *
2081     * <p>
2082     * <b>Definition:</b>
2083     * If true, indicates that the question must be answered and have required groups within it also present.  If false, the question and any contained groups may be skipped when answering the questionnaire.
2084     * </p> 
2085         */
2086        public Boolean getRequired() {  
2087                return getRequiredElement().getValue();
2088        }
2089
2090        /**
2091         * Sets the value(s) for <b>required</b> ()
2092         *
2093     * <p>
2094     * <b>Definition:</b>
2095     * If true, indicates that the question must be answered and have required groups within it also present.  If false, the question and any contained groups may be skipped when answering the questionnaire.
2096     * </p> 
2097         */
2098        public GroupQuestion setRequired(BooleanDt theValue) {
2099                myRequired = theValue;
2100                return this;
2101        }
2102        
2103        
2104
2105        /**
2106         * Sets the value for <b>required</b> ()
2107         *
2108     * <p>
2109     * <b>Definition:</b>
2110     * If true, indicates that the question must be answered and have required groups within it also present.  If false, the question and any contained groups may be skipped when answering the questionnaire.
2111     * </p> 
2112         */
2113        public GroupQuestion setRequired( boolean theBoolean) {
2114                myRequired = new BooleanDt(theBoolean); 
2115                return this; 
2116        }
2117
2118 
2119        /**
2120         * Gets the value(s) for <b>repeats</b> ().
2121         * creating it if it does
2122         * not exist. Will not return <code>null</code>.
2123         *
2124     * <p>
2125     * <b>Definition:</b>
2126     * If true, the question may have more than one answer.
2127     * </p> 
2128         */
2129        public BooleanDt getRepeatsElement() {  
2130                if (myRepeats == null) {
2131                        myRepeats = new BooleanDt();
2132                }
2133                return myRepeats;
2134        }
2135
2136        
2137        /**
2138         * Gets the value(s) for <b>repeats</b> ().
2139         * creating it if it does
2140         * not exist. This method may return <code>null</code>.
2141         *
2142     * <p>
2143     * <b>Definition:</b>
2144     * If true, the question may have more than one answer.
2145     * </p> 
2146         */
2147        public Boolean getRepeats() {  
2148                return getRepeatsElement().getValue();
2149        }
2150
2151        /**
2152         * Sets the value(s) for <b>repeats</b> ()
2153         *
2154     * <p>
2155     * <b>Definition:</b>
2156     * If true, the question may have more than one answer.
2157     * </p> 
2158         */
2159        public GroupQuestion setRepeats(BooleanDt theValue) {
2160                myRepeats = theValue;
2161                return this;
2162        }
2163        
2164        
2165
2166        /**
2167         * Sets the value for <b>repeats</b> ()
2168         *
2169     * <p>
2170     * <b>Definition:</b>
2171     * If true, the question may have more than one answer.
2172     * </p> 
2173         */
2174        public GroupQuestion setRepeats( boolean theBoolean) {
2175                myRepeats = new BooleanDt(theBoolean); 
2176                return this; 
2177        }
2178
2179 
2180        /**
2181         * Gets the value(s) for <b>options</b> ().
2182         * creating it if it does
2183         * not exist. Will not return <code>null</code>.
2184         *
2185     * <p>
2186     * <b>Definition:</b>
2187     * Reference to a value set containing a list of codes representing permitted answers for the question
2188     * </p> 
2189         */
2190        public ResourceReferenceDt getOptions() {  
2191                if (myOptions == null) {
2192                        myOptions = new ResourceReferenceDt();
2193                }
2194                return myOptions;
2195        }
2196
2197        /**
2198         * Sets the value(s) for <b>options</b> ()
2199         *
2200     * <p>
2201     * <b>Definition:</b>
2202     * Reference to a value set containing a list of codes representing permitted answers for the question
2203     * </p> 
2204         */
2205        public GroupQuestion setOptions(ResourceReferenceDt theValue) {
2206                myOptions = theValue;
2207                return this;
2208        }
2209        
2210        
2211
2212  
2213        /**
2214         * Gets the value(s) for <b>option</b> ().
2215         * creating it if it does
2216         * not exist. Will not return <code>null</code>.
2217         *
2218     * <p>
2219     * <b>Definition:</b>
2220     * For a \&quot;choice\&quot; question, identifies one of the permitted answers for the question.
2221     * </p> 
2222         */
2223        public java.util.List<CodingDt> getOption() {  
2224                if (myOption == null) {
2225                        myOption = new java.util.ArrayList<CodingDt>();
2226                }
2227                return myOption;
2228        }
2229
2230        /**
2231         * Sets the value(s) for <b>option</b> ()
2232         *
2233     * <p>
2234     * <b>Definition:</b>
2235     * For a \&quot;choice\&quot; question, identifies one of the permitted answers for the question.
2236     * </p> 
2237         */
2238        public GroupQuestion setOption(java.util.List<CodingDt> theValue) {
2239                myOption = theValue;
2240                return this;
2241        }
2242        
2243        
2244
2245        /**
2246         * Adds and returns a new value for <b>option</b> ()
2247         *
2248     * <p>
2249     * <b>Definition:</b>
2250     * For a \&quot;choice\&quot; question, identifies one of the permitted answers for the question.
2251     * </p> 
2252         */
2253        public CodingDt addOption() {
2254                CodingDt newType = new CodingDt();
2255                getOption().add(newType);
2256                return newType; 
2257        }
2258
2259        /**
2260         * Adds a given new value for <b>option</b> ()
2261         *
2262         * <p>
2263         * <b>Definition:</b>
2264         * For a \&quot;choice\&quot; question, identifies one of the permitted answers for the question.
2265         * </p>
2266         * @param theValue The option to add (must not be <code>null</code>)
2267         */
2268        public GroupQuestion addOption(CodingDt theValue) {
2269                if (theValue == null) {
2270                        throw new NullPointerException("theValue must not be null");
2271                }
2272                getOption().add(theValue);
2273                return this;
2274        }
2275
2276        /**
2277         * Gets the first repetition for <b>option</b> (),
2278         * creating it if it does not already exist.
2279         *
2280     * <p>
2281     * <b>Definition:</b>
2282     * For a \&quot;choice\&quot; question, identifies one of the permitted answers for the question.
2283     * </p> 
2284         */
2285        public CodingDt getOptionFirstRep() {
2286                if (getOption().isEmpty()) {
2287                        return addOption();
2288                }
2289                return getOption().get(0); 
2290        }
2291  
2292        /**
2293         * Gets the value(s) for <b>group</b> ().
2294         * creating it if it does
2295         * not exist. Will not return <code>null</code>.
2296         *
2297     * <p>
2298     * <b>Definition:</b>
2299     * Nested group, containing nested question for this question. The order of groups within the question is relevant
2300     * </p> 
2301         */
2302        public java.util.List<Group> getGroup() {  
2303                if (myGroup == null) {
2304                        myGroup = new java.util.ArrayList<Group>();
2305                }
2306                return myGroup;
2307        }
2308
2309        /**
2310         * Sets the value(s) for <b>group</b> ()
2311         *
2312     * <p>
2313     * <b>Definition:</b>
2314     * Nested group, containing nested question for this question. The order of groups within the question is relevant
2315     * </p> 
2316         */
2317        public GroupQuestion setGroup(java.util.List<Group> theValue) {
2318                myGroup = theValue;
2319                return this;
2320        }
2321        
2322        
2323
2324        /**
2325         * Adds and returns a new value for <b>group</b> ()
2326         *
2327     * <p>
2328     * <b>Definition:</b>
2329     * Nested group, containing nested question for this question. The order of groups within the question is relevant
2330     * </p> 
2331         */
2332        public Group addGroup() {
2333                Group newType = new Group();
2334                getGroup().add(newType);
2335                return newType; 
2336        }
2337
2338        /**
2339         * Adds a given new value for <b>group</b> ()
2340         *
2341         * <p>
2342         * <b>Definition:</b>
2343         * Nested group, containing nested question for this question. The order of groups within the question is relevant
2344         * </p>
2345         * @param theValue The group to add (must not be <code>null</code>)
2346         */
2347        public GroupQuestion addGroup(Group theValue) {
2348                if (theValue == null) {
2349                        throw new NullPointerException("theValue must not be null");
2350                }
2351                getGroup().add(theValue);
2352                return this;
2353        }
2354
2355        /**
2356         * Gets the first repetition for <b>group</b> (),
2357         * creating it if it does not already exist.
2358         *
2359     * <p>
2360     * <b>Definition:</b>
2361     * Nested group, containing nested question for this question. The order of groups within the question is relevant
2362     * </p> 
2363         */
2364        public Group getGroupFirstRep() {
2365                if (getGroup().isEmpty()) {
2366                        return addGroup();
2367                }
2368                return getGroup().get(0); 
2369        }
2370  
2371
2372
2373        }
2374
2375
2376
2377
2378
2379    @Override
2380    public String getResourceName() {
2381        return "Questionnaire";
2382    }
2383    
2384    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
2385        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
2386    }
2387
2388
2389}