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>TestScript</b> Resource
282 * ()
283 *
284 * <p>
285 * <b>Definition:</b>
286 * TestScript is a resource that specifies a suite of tests against a FHIR server implementation to determine compliance against the FHIR specification.
287 * </p> 
288 *
289 * <p>
290 * <b>Requirements:</b>
291 * 
292 * </p> 
293 *
294 * <p>
295 * <b>Profile Definition:</b>
296 * <a href="http://hl7.org/fhir/profiles/TestScript">http://hl7.org/fhir/profiles/TestScript</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="TestScript", profile="http://hl7.org/fhir/profiles/TestScript", id="testscript")
301public class TestScript extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource     {
303
304        /**
305         * Search parameter constant for <b>url</b>
306         * <p>
307         * Description: <b></b><br>
308         * Type: <b>uri</b><br>
309         * Path: <b>TestScript.url</b><br>
310         * </p>
311         */
312        @SearchParamDefinition(name="url", path="TestScript.url", description="", type="uri"  )
313        public static final String SP_URL = "url";
314
315        /**
316         * <b>Fluent Client</b> search parameter constant for <b>url</b>
317         * <p>
318         * Description: <b></b><br>
319         * Type: <b>uri</b><br>
320         * Path: <b>TestScript.url</b><br>
321         * </p>
322         */
323        public static final UriClientParam URL = new UriClientParam(SP_URL);
324
325        /**
326         * Search parameter constant for <b>identifier</b>
327         * <p>
328         * Description: <b></b><br>
329         * Type: <b>token</b><br>
330         * Path: <b>TestScript.identifier</b><br>
331         * </p>
332         */
333        @SearchParamDefinition(name="identifier", path="TestScript.identifier", description="", type="token"  )
334        public static final String SP_IDENTIFIER = "identifier";
335
336        /**
337         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
338         * <p>
339         * Description: <b></b><br>
340         * Type: <b>token</b><br>
341         * Path: <b>TestScript.identifier</b><br>
342         * </p>
343         */
344        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
345
346        /**
347         * Search parameter constant for <b>name</b>
348         * <p>
349         * Description: <b></b><br>
350         * Type: <b>string</b><br>
351         * Path: <b>TestScript.name</b><br>
352         * </p>
353         */
354        @SearchParamDefinition(name="name", path="TestScript.name", description="", type="string"  )
355        public static final String SP_NAME = "name";
356
357        /**
358         * <b>Fluent Client</b> search parameter constant for <b>name</b>
359         * <p>
360         * Description: <b></b><br>
361         * Type: <b>string</b><br>
362         * Path: <b>TestScript.name</b><br>
363         * </p>
364         */
365        public static final StringClientParam NAME = new StringClientParam(SP_NAME);
366
367        /**
368         * Search parameter constant for <b>description</b>
369         * <p>
370         * Description: <b></b><br>
371         * Type: <b>string</b><br>
372         * Path: <b>TestScript.description</b><br>
373         * </p>
374         */
375        @SearchParamDefinition(name="description", path="TestScript.description", description="", type="string"  )
376        public static final String SP_DESCRIPTION = "description";
377
378        /**
379         * <b>Fluent Client</b> search parameter constant for <b>description</b>
380         * <p>
381         * Description: <b></b><br>
382         * Type: <b>string</b><br>
383         * Path: <b>TestScript.description</b><br>
384         * </p>
385         */
386        public static final StringClientParam DESCRIPTION = new StringClientParam(SP_DESCRIPTION);
387
388        /**
389         * Search parameter constant for <b>testscript-capability</b>
390         * <p>
391         * Description: <b>TestScript required and validated capability</b><br>
392         * Type: <b>string</b><br>
393         * Path: <b>TestScript.metadata.capability.description</b><br>
394         * </p>
395         */
396        @SearchParamDefinition(name="testscript-capability", path="TestScript.metadata.capability.description", description="TestScript required and validated capability", type="string"  )
397        public static final String SP_TESTSCRIPT_CAPABILITY = "testscript-capability";
398
399        /**
400         * <b>Fluent Client</b> search parameter constant for <b>testscript-capability</b>
401         * <p>
402         * Description: <b>TestScript required and validated capability</b><br>
403         * Type: <b>string</b><br>
404         * Path: <b>TestScript.metadata.capability.description</b><br>
405         * </p>
406         */
407        public static final StringClientParam TESTSCRIPT_CAPABILITY = new StringClientParam(SP_TESTSCRIPT_CAPABILITY);
408
409        /**
410         * Search parameter constant for <b>testscript-setup-capability</b>
411         * <p>
412         * Description: <b>TestScript setup required and validated capability</b><br>
413         * Type: <b>string</b><br>
414         * Path: <b>TestScript.setup.metadata.capability.description</b><br>
415         * </p>
416         */
417        @SearchParamDefinition(name="testscript-setup-capability", path="TestScript.setup.metadata.capability.description", description="TestScript setup required and validated capability", type="string"  )
418        public static final String SP_TESTSCRIPT_SETUP_CAPABILITY = "testscript-setup-capability";
419
420        /**
421         * <b>Fluent Client</b> search parameter constant for <b>testscript-setup-capability</b>
422         * <p>
423         * Description: <b>TestScript setup required and validated capability</b><br>
424         * Type: <b>string</b><br>
425         * Path: <b>TestScript.setup.metadata.capability.description</b><br>
426         * </p>
427         */
428        public static final StringClientParam TESTSCRIPT_SETUP_CAPABILITY = new StringClientParam(SP_TESTSCRIPT_SETUP_CAPABILITY);
429
430        /**
431         * Search parameter constant for <b>testscript-test-capability</b>
432         * <p>
433         * Description: <b>TestScript test required and validated capability</b><br>
434         * Type: <b>string</b><br>
435         * Path: <b>TestScript.test.metadata.capability.description</b><br>
436         * </p>
437         */
438        @SearchParamDefinition(name="testscript-test-capability", path="TestScript.test.metadata.capability.description", description="TestScript test required and validated capability", type="string"  )
439        public static final String SP_TESTSCRIPT_TEST_CAPABILITY = "testscript-test-capability";
440
441        /**
442         * <b>Fluent Client</b> search parameter constant for <b>testscript-test-capability</b>
443         * <p>
444         * Description: <b>TestScript test required and validated capability</b><br>
445         * Type: <b>string</b><br>
446         * Path: <b>TestScript.test.metadata.capability.description</b><br>
447         * </p>
448         */
449        public static final StringClientParam TESTSCRIPT_TEST_CAPABILITY = new StringClientParam(SP_TESTSCRIPT_TEST_CAPABILITY);
450
451
452
453        @Child(name="url", type=UriDt.class, order=0, min=1, max=1, summary=true, modifier=false)       
454        @Description(
455                shortDefinition="",
456                formalDefinition="An absolute URL that is used to identify this Test Script. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this Test Script is (or will be) published"
457        )
458        private UriDt myUrl;
459        
460        @Child(name="version", type=StringDt.class, order=1, min=0, max=1, summary=true, modifier=false)        
461        @Description(
462                shortDefinition="",
463                formalDefinition="The identifier that is used to identify this version of the TestScript. This is an arbitrary value managed by the TestScript author manually"
464        )
465        private StringDt myVersion;
466        
467        @Child(name="name", type=StringDt.class, order=2, min=1, max=1, summary=true, modifier=false)   
468        @Description(
469                shortDefinition="",
470                formalDefinition="A free text natural language name identifying the TestScript"
471        )
472        private StringDt myName;
473        
474        @Child(name="status", type=CodeDt.class, order=3, min=1, max=1, summary=true, modifier=false)   
475        @Description(
476                shortDefinition="",
477                formalDefinition="The status of the TestScript"
478        )
479        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/conformance-resource-status")
480        private BoundCodeDt<ConformanceResourceStatusEnum> myStatus;
481        
482        @Child(name="identifier", type=IdentifierDt.class, order=4, min=0, max=1, summary=true, modifier=false) 
483        @Description(
484                shortDefinition="",
485                formalDefinition="Identifier for the TestScript assigned for external purposes outside the context of FHIR."
486        )
487        private IdentifierDt myIdentifier;
488        
489        @Child(name="experimental", type=BooleanDt.class, order=5, min=0, max=1, summary=true, modifier=false)  
490        @Description(
491                shortDefinition="",
492                formalDefinition="This TestScript was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage"
493        )
494        private BooleanDt myExperimental;
495        
496        @Child(name="publisher", type=StringDt.class, order=6, min=0, max=1, summary=true, modifier=false)      
497        @Description(
498                shortDefinition="",
499                formalDefinition="The name of the individual or organization that published the Test Script"
500        )
501        private StringDt myPublisher;
502        
503        @Child(name="contact", order=7, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
504        @Description(
505                shortDefinition="",
506                formalDefinition="Contacts to assist a user in finding and communicating with the publisher"
507        )
508        private java.util.List<Contact> myContact;
509        
510        @Child(name="date", type=DateTimeDt.class, order=8, min=0, max=1, summary=true, modifier=false) 
511        @Description(
512                shortDefinition="",
513                formalDefinition="The date this version of the test tcript was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the test cases change"
514        )
515        private DateTimeDt myDate;
516        
517        @Child(name="description", type=StringDt.class, order=9, min=0, max=1, summary=true, modifier=false)    
518        @Description(
519                shortDefinition="",
520                formalDefinition="A free text natural language description of the TestScript and its use"
521        )
522        private StringDt myDescription;
523        
524        @Child(name="useContext", type=CodeableConceptDt.class, order=10, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false) 
525        @Description(
526                shortDefinition="",
527                formalDefinition="The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of Test Scripts."
528        )
529        private java.util.List<CodeableConceptDt> myUseContext;
530        
531        @Child(name="requirements", type=StringDt.class, order=11, min=0, max=1, summary=false, modifier=false) 
532        @Description(
533                shortDefinition="",
534                formalDefinition="Explains why this Test Script is needed and why it's been constrained as it has"
535        )
536        private StringDt myRequirements;
537        
538        @Child(name="copyright", type=StringDt.class, order=12, min=0, max=1, summary=false, modifier=false)    
539        @Description(
540                shortDefinition="",
541                formalDefinition="A copyright statement relating to the Test Script and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings"
542        )
543        private StringDt myCopyright;
544        
545        @Child(name="metadata", order=13, min=0, max=1, summary=false, modifier=false)  
546        @Description(
547                shortDefinition="",
548                formalDefinition="The required capability must exist and are assumed to function correctly on the FHIR server being tested."
549        )
550        private Metadata myMetadata;
551        
552        @Child(name="multiserver", type=BooleanDt.class, order=14, min=0, max=1, summary=false, modifier=false) 
553        @Description(
554                shortDefinition="",
555                formalDefinition="If the tests apply to more than one FHIR server (e.g. cross-server interoperability tests) then multiserver=true. Defaults to false if value is unspecified."
556        )
557        private BooleanDt myMultiserver;
558        
559        @Child(name="fixture", order=15, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
560        @Description(
561                shortDefinition="",
562                formalDefinition="Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute."
563        )
564        private java.util.List<Fixture> myFixture;
565        
566        @Child(name="profile", order=16, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
567                IResource.class })
568        @Description(
569                shortDefinition="",
570                formalDefinition="Reference to the profile to be used for validation."
571        )
572        private java.util.List<ResourceReferenceDt> myProfile;
573        
574        @Child(name="variable", order=17, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
575        @Description(
576                shortDefinition="",
577                formalDefinition="Variable is set based either on element value in response body or on header field value in the response headers."
578        )
579        private java.util.List<Variable> myVariable;
580        
581        @Child(name="setup", order=18, min=0, max=1, summary=false, modifier=false)     
582        @Description(
583                shortDefinition="",
584                formalDefinition="A series of required setup operations before tests are executed."
585        )
586        private Setup mySetup;
587        
588        @Child(name="test", order=19, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
589        @Description(
590                shortDefinition="",
591                formalDefinition="A test in this script."
592        )
593        private java.util.List<Test> myTest;
594        
595        @Child(name="teardown", order=20, min=0, max=1, summary=false, modifier=false)  
596        @Description(
597                shortDefinition="",
598                formalDefinition="A series of operations required to clean up after the all the tests are executed (successfully or otherwise)."
599        )
600        private Teardown myTeardown;
601        
602
603        @Override
604        public boolean isEmpty() {
605                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myUrl,  myVersion,  myName,  myStatus,  myIdentifier,  myExperimental,  myPublisher,  myContact,  myDate,  myDescription,  myUseContext,  myRequirements,  myCopyright,  myMetadata,  myMultiserver,  myFixture,  myProfile,  myVariable,  mySetup,  myTest,  myTeardown);
606        }
607        
608        @Override
609        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
610                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myUrl, myVersion, myName, myStatus, myIdentifier, myExperimental, myPublisher, myContact, myDate, myDescription, myUseContext, myRequirements, myCopyright, myMetadata, myMultiserver, myFixture, myProfile, myVariable, mySetup, myTest, myTeardown);
611        }
612
613        /**
614         * Gets the value(s) for <b>url</b> ().
615         * creating it if it does
616         * not exist. Will not return <code>null</code>.
617         *
618     * <p>
619     * <b>Definition:</b>
620     * An absolute URL that is used to identify this Test Script. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this Test Script is (or will be) published
621     * </p> 
622         */
623        public UriDt getUrlElement() {  
624                if (myUrl == null) {
625                        myUrl = new UriDt();
626                }
627                return myUrl;
628        }
629
630        
631        /**
632         * Gets the value(s) for <b>url</b> ().
633         * creating it if it does
634         * not exist. This method may return <code>null</code>.
635         *
636     * <p>
637     * <b>Definition:</b>
638     * An absolute URL that is used to identify this Test Script. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this Test Script is (or will be) published
639     * </p> 
640         */
641        public String getUrl() {  
642                return getUrlElement().getValue();
643        }
644
645        /**
646         * Sets the value(s) for <b>url</b> ()
647         *
648     * <p>
649     * <b>Definition:</b>
650     * An absolute URL that is used to identify this Test Script. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this Test Script is (or will be) published
651     * </p> 
652         */
653        public TestScript setUrl(UriDt theValue) {
654                myUrl = theValue;
655                return this;
656        }
657        
658        
659
660        /**
661         * Sets the value for <b>url</b> ()
662         *
663     * <p>
664     * <b>Definition:</b>
665     * An absolute URL that is used to identify this Test Script. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this Test Script is (or will be) published
666     * </p> 
667         */
668        public TestScript setUrl( String theUri) {
669                myUrl = new UriDt(theUri); 
670                return this; 
671        }
672
673 
674        /**
675         * Gets the value(s) for <b>version</b> ().
676         * creating it if it does
677         * not exist. Will not return <code>null</code>.
678         *
679     * <p>
680     * <b>Definition:</b>
681     * The identifier that is used to identify this version of the TestScript. This is an arbitrary value managed by the TestScript author manually
682     * </p> 
683         */
684        public StringDt getVersionElement() {  
685                if (myVersion == null) {
686                        myVersion = new StringDt();
687                }
688                return myVersion;
689        }
690
691        
692        /**
693         * Gets the value(s) for <b>version</b> ().
694         * creating it if it does
695         * not exist. This method may return <code>null</code>.
696         *
697     * <p>
698     * <b>Definition:</b>
699     * The identifier that is used to identify this version of the TestScript. This is an arbitrary value managed by the TestScript author manually
700     * </p> 
701         */
702        public String getVersion() {  
703                return getVersionElement().getValue();
704        }
705
706        /**
707         * Sets the value(s) for <b>version</b> ()
708         *
709     * <p>
710     * <b>Definition:</b>
711     * The identifier that is used to identify this version of the TestScript. This is an arbitrary value managed by the TestScript author manually
712     * </p> 
713         */
714        public TestScript setVersion(StringDt theValue) {
715                myVersion = theValue;
716                return this;
717        }
718        
719        
720
721        /**
722         * Sets the value for <b>version</b> ()
723         *
724     * <p>
725     * <b>Definition:</b>
726     * The identifier that is used to identify this version of the TestScript. This is an arbitrary value managed by the TestScript author manually
727     * </p> 
728         */
729        public TestScript setVersion( String theString) {
730                myVersion = new StringDt(theString); 
731                return this; 
732        }
733
734 
735        /**
736         * Gets the value(s) for <b>name</b> ().
737         * creating it if it does
738         * not exist. Will not return <code>null</code>.
739         *
740     * <p>
741     * <b>Definition:</b>
742     * A free text natural language name identifying the TestScript
743     * </p> 
744         */
745        public StringDt getNameElement() {  
746                if (myName == null) {
747                        myName = new StringDt();
748                }
749                return myName;
750        }
751
752        
753        /**
754         * Gets the value(s) for <b>name</b> ().
755         * creating it if it does
756         * not exist. This method may return <code>null</code>.
757         *
758     * <p>
759     * <b>Definition:</b>
760     * A free text natural language name identifying the TestScript
761     * </p> 
762         */
763        public String getName() {  
764                return getNameElement().getValue();
765        }
766
767        /**
768         * Sets the value(s) for <b>name</b> ()
769         *
770     * <p>
771     * <b>Definition:</b>
772     * A free text natural language name identifying the TestScript
773     * </p> 
774         */
775        public TestScript setName(StringDt theValue) {
776                myName = theValue;
777                return this;
778        }
779        
780        
781
782        /**
783         * Sets the value for <b>name</b> ()
784         *
785     * <p>
786     * <b>Definition:</b>
787     * A free text natural language name identifying the TestScript
788     * </p> 
789         */
790        public TestScript setName( String theString) {
791                myName = new StringDt(theString); 
792                return this; 
793        }
794
795 
796        /**
797         * Gets the value(s) for <b>status</b> ().
798         * creating it if it does
799         * not exist. Will not return <code>null</code>.
800         *
801     * <p>
802     * <b>Definition:</b>
803     * The status of the TestScript
804     * </p> 
805         */
806        public BoundCodeDt<ConformanceResourceStatusEnum> getStatusElement() {  
807                if (myStatus == null) {
808                        myStatus = new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER);
809                }
810                return myStatus;
811        }
812
813        
814        /**
815         * Gets the value(s) for <b>status</b> ().
816         * creating it if it does
817         * not exist. This method may return <code>null</code>.
818         *
819     * <p>
820     * <b>Definition:</b>
821     * The status of the TestScript
822     * </p> 
823         */
824        public String getStatus() {  
825                return getStatusElement().getValue();
826        }
827
828        /**
829         * Sets the value(s) for <b>status</b> ()
830         *
831     * <p>
832     * <b>Definition:</b>
833     * The status of the TestScript
834     * </p> 
835         */
836        public TestScript setStatus(BoundCodeDt<ConformanceResourceStatusEnum> theValue) {
837                myStatus = theValue;
838                return this;
839        }
840        
841        
842
843        /**
844         * Sets the value(s) for <b>status</b> ()
845         *
846     * <p>
847     * <b>Definition:</b>
848     * The status of the TestScript
849     * </p> 
850         */
851        public TestScript setStatus(ConformanceResourceStatusEnum theValue) {
852                setStatus(new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER, theValue));
853                
854/*
855                getStatusElement().setValueAsEnum(theValue);
856*/
857                return this;
858        }
859
860  
861        /**
862         * Gets the value(s) for <b>identifier</b> ().
863         * creating it if it does
864         * not exist. Will not return <code>null</code>.
865         *
866     * <p>
867     * <b>Definition:</b>
868     * Identifier for the TestScript assigned for external purposes outside the context of FHIR.
869     * </p> 
870         */
871        public IdentifierDt getIdentifier() {  
872                if (myIdentifier == null) {
873                        myIdentifier = new IdentifierDt();
874                }
875                return myIdentifier;
876        }
877
878        /**
879         * Sets the value(s) for <b>identifier</b> ()
880         *
881     * <p>
882     * <b>Definition:</b>
883     * Identifier for the TestScript assigned for external purposes outside the context of FHIR.
884     * </p> 
885         */
886        public TestScript setIdentifier(IdentifierDt theValue) {
887                myIdentifier = theValue;
888                return this;
889        }
890        
891        
892
893  
894        /**
895         * Gets the value(s) for <b>experimental</b> ().
896         * creating it if it does
897         * not exist. Will not return <code>null</code>.
898         *
899     * <p>
900     * <b>Definition:</b>
901     * This TestScript was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
902     * </p> 
903         */
904        public BooleanDt getExperimentalElement() {  
905                if (myExperimental == null) {
906                        myExperimental = new BooleanDt();
907                }
908                return myExperimental;
909        }
910
911        
912        /**
913         * Gets the value(s) for <b>experimental</b> ().
914         * creating it if it does
915         * not exist. This method may return <code>null</code>.
916         *
917     * <p>
918     * <b>Definition:</b>
919     * This TestScript was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
920     * </p> 
921         */
922        public Boolean getExperimental() {  
923                return getExperimentalElement().getValue();
924        }
925
926        /**
927         * Sets the value(s) for <b>experimental</b> ()
928         *
929     * <p>
930     * <b>Definition:</b>
931     * This TestScript was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
932     * </p> 
933         */
934        public TestScript setExperimental(BooleanDt theValue) {
935                myExperimental = theValue;
936                return this;
937        }
938        
939        
940
941        /**
942         * Sets the value for <b>experimental</b> ()
943         *
944     * <p>
945     * <b>Definition:</b>
946     * This TestScript was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
947     * </p> 
948         */
949        public TestScript setExperimental( boolean theBoolean) {
950                myExperimental = new BooleanDt(theBoolean); 
951                return this; 
952        }
953
954 
955        /**
956         * Gets the value(s) for <b>publisher</b> ().
957         * creating it if it does
958         * not exist. Will not return <code>null</code>.
959         *
960     * <p>
961     * <b>Definition:</b>
962     * The name of the individual or organization that published the Test Script
963     * </p> 
964         */
965        public StringDt getPublisherElement() {  
966                if (myPublisher == null) {
967                        myPublisher = new StringDt();
968                }
969                return myPublisher;
970        }
971
972        
973        /**
974         * Gets the value(s) for <b>publisher</b> ().
975         * creating it if it does
976         * not exist. This method may return <code>null</code>.
977         *
978     * <p>
979     * <b>Definition:</b>
980     * The name of the individual or organization that published the Test Script
981     * </p> 
982         */
983        public String getPublisher() {  
984                return getPublisherElement().getValue();
985        }
986
987        /**
988         * Sets the value(s) for <b>publisher</b> ()
989         *
990     * <p>
991     * <b>Definition:</b>
992     * The name of the individual or organization that published the Test Script
993     * </p> 
994         */
995        public TestScript setPublisher(StringDt theValue) {
996                myPublisher = theValue;
997                return this;
998        }
999        
1000        
1001
1002        /**
1003         * Sets the value for <b>publisher</b> ()
1004         *
1005     * <p>
1006     * <b>Definition:</b>
1007     * The name of the individual or organization that published the Test Script
1008     * </p> 
1009         */
1010        public TestScript setPublisher( String theString) {
1011                myPublisher = new StringDt(theString); 
1012                return this; 
1013        }
1014
1015 
1016        /**
1017         * Gets the value(s) for <b>contact</b> ().
1018         * creating it if it does
1019         * not exist. Will not return <code>null</code>.
1020         *
1021     * <p>
1022     * <b>Definition:</b>
1023     * Contacts to assist a user in finding and communicating with the publisher
1024     * </p> 
1025         */
1026        public java.util.List<Contact> getContact() {  
1027                if (myContact == null) {
1028                        myContact = new java.util.ArrayList<Contact>();
1029                }
1030                return myContact;
1031        }
1032
1033        /**
1034         * Sets the value(s) for <b>contact</b> ()
1035         *
1036     * <p>
1037     * <b>Definition:</b>
1038     * Contacts to assist a user in finding and communicating with the publisher
1039     * </p> 
1040         */
1041        public TestScript setContact(java.util.List<Contact> theValue) {
1042                myContact = theValue;
1043                return this;
1044        }
1045        
1046        
1047
1048        /**
1049         * Adds and returns a new value for <b>contact</b> ()
1050         *
1051     * <p>
1052     * <b>Definition:</b>
1053     * Contacts to assist a user in finding and communicating with the publisher
1054     * </p> 
1055         */
1056        public Contact addContact() {
1057                Contact newType = new Contact();
1058                getContact().add(newType);
1059                return newType; 
1060        }
1061
1062        /**
1063         * Adds a given new value for <b>contact</b> ()
1064         *
1065         * <p>
1066         * <b>Definition:</b>
1067         * Contacts to assist a user in finding and communicating with the publisher
1068         * </p>
1069         * @param theValue The contact to add (must not be <code>null</code>)
1070         */
1071        public TestScript addContact(Contact theValue) {
1072                if (theValue == null) {
1073                        throw new NullPointerException("theValue must not be null");
1074                }
1075                getContact().add(theValue);
1076                return this;
1077        }
1078
1079        /**
1080         * Gets the first repetition for <b>contact</b> (),
1081         * creating it if it does not already exist.
1082         *
1083     * <p>
1084     * <b>Definition:</b>
1085     * Contacts to assist a user in finding and communicating with the publisher
1086     * </p> 
1087         */
1088        public Contact getContactFirstRep() {
1089                if (getContact().isEmpty()) {
1090                        return addContact();
1091                }
1092                return getContact().get(0); 
1093        }
1094  
1095        /**
1096         * Gets the value(s) for <b>date</b> ().
1097         * creating it if it does
1098         * not exist. Will not return <code>null</code>.
1099         *
1100     * <p>
1101     * <b>Definition:</b>
1102     * The date this version of the test tcript was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the test cases change
1103     * </p> 
1104         */
1105        public DateTimeDt getDateElement() {  
1106                if (myDate == null) {
1107                        myDate = new DateTimeDt();
1108                }
1109                return myDate;
1110        }
1111
1112        
1113        /**
1114         * Gets the value(s) for <b>date</b> ().
1115         * creating it if it does
1116         * not exist. This method may return <code>null</code>.
1117         *
1118     * <p>
1119     * <b>Definition:</b>
1120     * The date this version of the test tcript was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the test cases change
1121     * </p> 
1122         */
1123        public Date getDate() {  
1124                return getDateElement().getValue();
1125        }
1126
1127        /**
1128         * Sets the value(s) for <b>date</b> ()
1129         *
1130     * <p>
1131     * <b>Definition:</b>
1132     * The date this version of the test tcript was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the test cases change
1133     * </p> 
1134         */
1135        public TestScript setDate(DateTimeDt theValue) {
1136                myDate = theValue;
1137                return this;
1138        }
1139        
1140        
1141
1142        /**
1143         * Sets the value for <b>date</b> ()
1144         *
1145     * <p>
1146     * <b>Definition:</b>
1147     * The date this version of the test tcript was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the test cases change
1148     * </p> 
1149         */
1150        public TestScript setDateWithSecondsPrecision( Date theDate) {
1151                myDate = new DateTimeDt(theDate); 
1152                return this; 
1153        }
1154
1155        /**
1156         * Sets the value for <b>date</b> ()
1157         *
1158     * <p>
1159     * <b>Definition:</b>
1160     * The date this version of the test tcript was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the test cases change
1161     * </p> 
1162         */
1163        public TestScript setDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
1164                myDate = new DateTimeDt(theDate, thePrecision); 
1165                return this; 
1166        }
1167
1168 
1169        /**
1170         * Gets the value(s) for <b>description</b> ().
1171         * creating it if it does
1172         * not exist. Will not return <code>null</code>.
1173         *
1174     * <p>
1175     * <b>Definition:</b>
1176     * A free text natural language description of the TestScript and its use
1177     * </p> 
1178         */
1179        public StringDt getDescriptionElement() {  
1180                if (myDescription == null) {
1181                        myDescription = new StringDt();
1182                }
1183                return myDescription;
1184        }
1185
1186        
1187        /**
1188         * Gets the value(s) for <b>description</b> ().
1189         * creating it if it does
1190         * not exist. This method may return <code>null</code>.
1191         *
1192     * <p>
1193     * <b>Definition:</b>
1194     * A free text natural language description of the TestScript and its use
1195     * </p> 
1196         */
1197        public String getDescription() {  
1198                return getDescriptionElement().getValue();
1199        }
1200
1201        /**
1202         * Sets the value(s) for <b>description</b> ()
1203         *
1204     * <p>
1205     * <b>Definition:</b>
1206     * A free text natural language description of the TestScript and its use
1207     * </p> 
1208         */
1209        public TestScript setDescription(StringDt theValue) {
1210                myDescription = theValue;
1211                return this;
1212        }
1213        
1214        
1215
1216        /**
1217         * Sets the value for <b>description</b> ()
1218         *
1219     * <p>
1220     * <b>Definition:</b>
1221     * A free text natural language description of the TestScript and its use
1222     * </p> 
1223         */
1224        public TestScript setDescription( String theString) {
1225                myDescription = new StringDt(theString); 
1226                return this; 
1227        }
1228
1229 
1230        /**
1231         * Gets the value(s) for <b>useContext</b> ().
1232         * creating it if it does
1233         * not exist. Will not return <code>null</code>.
1234         *
1235     * <p>
1236     * <b>Definition:</b>
1237     * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of Test Scripts.
1238     * </p> 
1239         */
1240        public java.util.List<CodeableConceptDt> getUseContext() {  
1241                if (myUseContext == null) {
1242                        myUseContext = new java.util.ArrayList<CodeableConceptDt>();
1243                }
1244                return myUseContext;
1245        }
1246
1247        /**
1248         * Sets the value(s) for <b>useContext</b> ()
1249         *
1250     * <p>
1251     * <b>Definition:</b>
1252     * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of Test Scripts.
1253     * </p> 
1254         */
1255        public TestScript setUseContext(java.util.List<CodeableConceptDt> theValue) {
1256                myUseContext = theValue;
1257                return this;
1258        }
1259        
1260        
1261
1262        /**
1263         * Adds and returns a new value for <b>useContext</b> ()
1264         *
1265     * <p>
1266     * <b>Definition:</b>
1267     * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of Test Scripts.
1268     * </p> 
1269         */
1270        public CodeableConceptDt addUseContext() {
1271                CodeableConceptDt newType = new CodeableConceptDt();
1272                getUseContext().add(newType);
1273                return newType; 
1274        }
1275
1276        /**
1277         * Adds a given new value for <b>useContext</b> ()
1278         *
1279         * <p>
1280         * <b>Definition:</b>
1281         * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of Test Scripts.
1282         * </p>
1283         * @param theValue The useContext to add (must not be <code>null</code>)
1284         */
1285        public TestScript addUseContext(CodeableConceptDt theValue) {
1286                if (theValue == null) {
1287                        throw new NullPointerException("theValue must not be null");
1288                }
1289                getUseContext().add(theValue);
1290                return this;
1291        }
1292
1293        /**
1294         * Gets the first repetition for <b>useContext</b> (),
1295         * creating it if it does not already exist.
1296         *
1297     * <p>
1298     * <b>Definition:</b>
1299     * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of Test Scripts.
1300     * </p> 
1301         */
1302        public CodeableConceptDt getUseContextFirstRep() {
1303                if (getUseContext().isEmpty()) {
1304                        return addUseContext();
1305                }
1306                return getUseContext().get(0); 
1307        }
1308  
1309        /**
1310         * Gets the value(s) for <b>requirements</b> ().
1311         * creating it if it does
1312         * not exist. Will not return <code>null</code>.
1313         *
1314     * <p>
1315     * <b>Definition:</b>
1316     * Explains why this Test Script is needed and why it's been constrained as it has
1317     * </p> 
1318         */
1319        public StringDt getRequirementsElement() {  
1320                if (myRequirements == null) {
1321                        myRequirements = new StringDt();
1322                }
1323                return myRequirements;
1324        }
1325
1326        
1327        /**
1328         * Gets the value(s) for <b>requirements</b> ().
1329         * creating it if it does
1330         * not exist. This method may return <code>null</code>.
1331         *
1332     * <p>
1333     * <b>Definition:</b>
1334     * Explains why this Test Script is needed and why it's been constrained as it has
1335     * </p> 
1336         */
1337        public String getRequirements() {  
1338                return getRequirementsElement().getValue();
1339        }
1340
1341        /**
1342         * Sets the value(s) for <b>requirements</b> ()
1343         *
1344     * <p>
1345     * <b>Definition:</b>
1346     * Explains why this Test Script is needed and why it's been constrained as it has
1347     * </p> 
1348         */
1349        public TestScript setRequirements(StringDt theValue) {
1350                myRequirements = theValue;
1351                return this;
1352        }
1353        
1354        
1355
1356        /**
1357         * Sets the value for <b>requirements</b> ()
1358         *
1359     * <p>
1360     * <b>Definition:</b>
1361     * Explains why this Test Script is needed and why it's been constrained as it has
1362     * </p> 
1363         */
1364        public TestScript setRequirements( String theString) {
1365                myRequirements = new StringDt(theString); 
1366                return this; 
1367        }
1368
1369 
1370        /**
1371         * Gets the value(s) for <b>copyright</b> ().
1372         * creating it if it does
1373         * not exist. Will not return <code>null</code>.
1374         *
1375     * <p>
1376     * <b>Definition:</b>
1377     * A copyright statement relating to the Test Script and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings
1378     * </p> 
1379         */
1380        public StringDt getCopyrightElement() {  
1381                if (myCopyright == null) {
1382                        myCopyright = new StringDt();
1383                }
1384                return myCopyright;
1385        }
1386
1387        
1388        /**
1389         * Gets the value(s) for <b>copyright</b> ().
1390         * creating it if it does
1391         * not exist. This method may return <code>null</code>.
1392         *
1393     * <p>
1394     * <b>Definition:</b>
1395     * A copyright statement relating to the Test Script and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings
1396     * </p> 
1397         */
1398        public String getCopyright() {  
1399                return getCopyrightElement().getValue();
1400        }
1401
1402        /**
1403         * Sets the value(s) for <b>copyright</b> ()
1404         *
1405     * <p>
1406     * <b>Definition:</b>
1407     * A copyright statement relating to the Test Script and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings
1408     * </p> 
1409         */
1410        public TestScript setCopyright(StringDt theValue) {
1411                myCopyright = theValue;
1412                return this;
1413        }
1414        
1415        
1416
1417        /**
1418         * Sets the value for <b>copyright</b> ()
1419         *
1420     * <p>
1421     * <b>Definition:</b>
1422     * A copyright statement relating to the Test Script and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings
1423     * </p> 
1424         */
1425        public TestScript setCopyright( String theString) {
1426                myCopyright = new StringDt(theString); 
1427                return this; 
1428        }
1429
1430 
1431        /**
1432         * Gets the value(s) for <b>metadata</b> ().
1433         * creating it if it does
1434         * not exist. Will not return <code>null</code>.
1435         *
1436     * <p>
1437     * <b>Definition:</b>
1438     * The required capability must exist and are assumed to function correctly on the FHIR server being tested.
1439     * </p> 
1440         */
1441        public Metadata getMetadata() {  
1442                if (myMetadata == null) {
1443                        myMetadata = new Metadata();
1444                }
1445                return myMetadata;
1446        }
1447
1448        /**
1449         * Sets the value(s) for <b>metadata</b> ()
1450         *
1451     * <p>
1452     * <b>Definition:</b>
1453     * The required capability must exist and are assumed to function correctly on the FHIR server being tested.
1454     * </p> 
1455         */
1456        public TestScript setMetadata(Metadata theValue) {
1457                myMetadata = theValue;
1458                return this;
1459        }
1460        
1461        
1462
1463  
1464        /**
1465         * Gets the value(s) for <b>multiserver</b> ().
1466         * creating it if it does
1467         * not exist. Will not return <code>null</code>.
1468         *
1469     * <p>
1470     * <b>Definition:</b>
1471     * If the tests apply to more than one FHIR server (e.g. cross-server interoperability tests) then multiserver=true. Defaults to false if value is unspecified.
1472     * </p> 
1473         */
1474        public BooleanDt getMultiserverElement() {  
1475                if (myMultiserver == null) {
1476                        myMultiserver = new BooleanDt();
1477                }
1478                return myMultiserver;
1479        }
1480
1481        
1482        /**
1483         * Gets the value(s) for <b>multiserver</b> ().
1484         * creating it if it does
1485         * not exist. This method may return <code>null</code>.
1486         *
1487     * <p>
1488     * <b>Definition:</b>
1489     * If the tests apply to more than one FHIR server (e.g. cross-server interoperability tests) then multiserver=true. Defaults to false if value is unspecified.
1490     * </p> 
1491         */
1492        public Boolean getMultiserver() {  
1493                return getMultiserverElement().getValue();
1494        }
1495
1496        /**
1497         * Sets the value(s) for <b>multiserver</b> ()
1498         *
1499     * <p>
1500     * <b>Definition:</b>
1501     * If the tests apply to more than one FHIR server (e.g. cross-server interoperability tests) then multiserver=true. Defaults to false if value is unspecified.
1502     * </p> 
1503         */
1504        public TestScript setMultiserver(BooleanDt theValue) {
1505                myMultiserver = theValue;
1506                return this;
1507        }
1508        
1509        
1510
1511        /**
1512         * Sets the value for <b>multiserver</b> ()
1513         *
1514     * <p>
1515     * <b>Definition:</b>
1516     * If the tests apply to more than one FHIR server (e.g. cross-server interoperability tests) then multiserver=true. Defaults to false if value is unspecified.
1517     * </p> 
1518         */
1519        public TestScript setMultiserver( boolean theBoolean) {
1520                myMultiserver = new BooleanDt(theBoolean); 
1521                return this; 
1522        }
1523
1524 
1525        /**
1526         * Gets the value(s) for <b>fixture</b> ().
1527         * creating it if it does
1528         * not exist. Will not return <code>null</code>.
1529         *
1530     * <p>
1531     * <b>Definition:</b>
1532     * Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute.
1533     * </p> 
1534         */
1535        public java.util.List<Fixture> getFixture() {  
1536                if (myFixture == null) {
1537                        myFixture = new java.util.ArrayList<Fixture>();
1538                }
1539                return myFixture;
1540        }
1541
1542        /**
1543         * Sets the value(s) for <b>fixture</b> ()
1544         *
1545     * <p>
1546     * <b>Definition:</b>
1547     * Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute.
1548     * </p> 
1549         */
1550        public TestScript setFixture(java.util.List<Fixture> theValue) {
1551                myFixture = theValue;
1552                return this;
1553        }
1554        
1555        
1556
1557        /**
1558         * Adds and returns a new value for <b>fixture</b> ()
1559         *
1560     * <p>
1561     * <b>Definition:</b>
1562     * Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute.
1563     * </p> 
1564         */
1565        public Fixture addFixture() {
1566                Fixture newType = new Fixture();
1567                getFixture().add(newType);
1568                return newType; 
1569        }
1570
1571        /**
1572         * Adds a given new value for <b>fixture</b> ()
1573         *
1574         * <p>
1575         * <b>Definition:</b>
1576         * Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute.
1577         * </p>
1578         * @param theValue The fixture to add (must not be <code>null</code>)
1579         */
1580        public TestScript addFixture(Fixture theValue) {
1581                if (theValue == null) {
1582                        throw new NullPointerException("theValue must not be null");
1583                }
1584                getFixture().add(theValue);
1585                return this;
1586        }
1587
1588        /**
1589         * Gets the first repetition for <b>fixture</b> (),
1590         * creating it if it does not already exist.
1591         *
1592     * <p>
1593     * <b>Definition:</b>
1594     * Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute.
1595     * </p> 
1596         */
1597        public Fixture getFixtureFirstRep() {
1598                if (getFixture().isEmpty()) {
1599                        return addFixture();
1600                }
1601                return getFixture().get(0); 
1602        }
1603  
1604        /**
1605         * Gets the value(s) for <b>profile</b> ().
1606         * creating it if it does
1607         * not exist. Will not return <code>null</code>.
1608         *
1609     * <p>
1610     * <b>Definition:</b>
1611     * Reference to the profile to be used for validation.
1612     * </p> 
1613         */
1614        public java.util.List<ResourceReferenceDt> getProfile() {  
1615                if (myProfile == null) {
1616                        myProfile = new java.util.ArrayList<ResourceReferenceDt>();
1617                }
1618                return myProfile;
1619        }
1620
1621        /**
1622         * Sets the value(s) for <b>profile</b> ()
1623         *
1624     * <p>
1625     * <b>Definition:</b>
1626     * Reference to the profile to be used for validation.
1627     * </p> 
1628         */
1629        public TestScript setProfile(java.util.List<ResourceReferenceDt> theValue) {
1630                myProfile = theValue;
1631                return this;
1632        }
1633        
1634        
1635
1636        /**
1637         * Adds and returns a new value for <b>profile</b> ()
1638         *
1639     * <p>
1640     * <b>Definition:</b>
1641     * Reference to the profile to be used for validation.
1642     * </p> 
1643         */
1644        public ResourceReferenceDt addProfile() {
1645                ResourceReferenceDt newType = new ResourceReferenceDt();
1646                getProfile().add(newType);
1647                return newType; 
1648        }
1649  
1650        /**
1651         * Gets the value(s) for <b>variable</b> ().
1652         * creating it if it does
1653         * not exist. Will not return <code>null</code>.
1654         *
1655     * <p>
1656     * <b>Definition:</b>
1657     * Variable is set based either on element value in response body or on header field value in the response headers.
1658     * </p> 
1659         */
1660        public java.util.List<Variable> getVariable() {  
1661                if (myVariable == null) {
1662                        myVariable = new java.util.ArrayList<Variable>();
1663                }
1664                return myVariable;
1665        }
1666
1667        /**
1668         * Sets the value(s) for <b>variable</b> ()
1669         *
1670     * <p>
1671     * <b>Definition:</b>
1672     * Variable is set based either on element value in response body or on header field value in the response headers.
1673     * </p> 
1674         */
1675        public TestScript setVariable(java.util.List<Variable> theValue) {
1676                myVariable = theValue;
1677                return this;
1678        }
1679        
1680        
1681
1682        /**
1683         * Adds and returns a new value for <b>variable</b> ()
1684         *
1685     * <p>
1686     * <b>Definition:</b>
1687     * Variable is set based either on element value in response body or on header field value in the response headers.
1688     * </p> 
1689         */
1690        public Variable addVariable() {
1691                Variable newType = new Variable();
1692                getVariable().add(newType);
1693                return newType; 
1694        }
1695
1696        /**
1697         * Adds a given new value for <b>variable</b> ()
1698         *
1699         * <p>
1700         * <b>Definition:</b>
1701         * Variable is set based either on element value in response body or on header field value in the response headers.
1702         * </p>
1703         * @param theValue The variable to add (must not be <code>null</code>)
1704         */
1705        public TestScript addVariable(Variable theValue) {
1706                if (theValue == null) {
1707                        throw new NullPointerException("theValue must not be null");
1708                }
1709                getVariable().add(theValue);
1710                return this;
1711        }
1712
1713        /**
1714         * Gets the first repetition for <b>variable</b> (),
1715         * creating it if it does not already exist.
1716         *
1717     * <p>
1718     * <b>Definition:</b>
1719     * Variable is set based either on element value in response body or on header field value in the response headers.
1720     * </p> 
1721         */
1722        public Variable getVariableFirstRep() {
1723                if (getVariable().isEmpty()) {
1724                        return addVariable();
1725                }
1726                return getVariable().get(0); 
1727        }
1728  
1729        /**
1730         * Gets the value(s) for <b>setup</b> ().
1731         * creating it if it does
1732         * not exist. Will not return <code>null</code>.
1733         *
1734     * <p>
1735     * <b>Definition:</b>
1736     * A series of required setup operations before tests are executed.
1737     * </p> 
1738         */
1739        public Setup getSetup() {  
1740                if (mySetup == null) {
1741                        mySetup = new Setup();
1742                }
1743                return mySetup;
1744        }
1745
1746        /**
1747         * Sets the value(s) for <b>setup</b> ()
1748         *
1749     * <p>
1750     * <b>Definition:</b>
1751     * A series of required setup operations before tests are executed.
1752     * </p> 
1753         */
1754        public TestScript setSetup(Setup theValue) {
1755                mySetup = theValue;
1756                return this;
1757        }
1758        
1759        
1760
1761  
1762        /**
1763         * Gets the value(s) for <b>test</b> ().
1764         * creating it if it does
1765         * not exist. Will not return <code>null</code>.
1766         *
1767     * <p>
1768     * <b>Definition:</b>
1769     * A test in this script.
1770     * </p> 
1771         */
1772        public java.util.List<Test> getTest() {  
1773                if (myTest == null) {
1774                        myTest = new java.util.ArrayList<Test>();
1775                }
1776                return myTest;
1777        }
1778
1779        /**
1780         * Sets the value(s) for <b>test</b> ()
1781         *
1782     * <p>
1783     * <b>Definition:</b>
1784     * A test in this script.
1785     * </p> 
1786         */
1787        public TestScript setTest(java.util.List<Test> theValue) {
1788                myTest = theValue;
1789                return this;
1790        }
1791        
1792        
1793
1794        /**
1795         * Adds and returns a new value for <b>test</b> ()
1796         *
1797     * <p>
1798     * <b>Definition:</b>
1799     * A test in this script.
1800     * </p> 
1801         */
1802        public Test addTest() {
1803                Test newType = new Test();
1804                getTest().add(newType);
1805                return newType; 
1806        }
1807
1808        /**
1809         * Adds a given new value for <b>test</b> ()
1810         *
1811         * <p>
1812         * <b>Definition:</b>
1813         * A test in this script.
1814         * </p>
1815         * @param theValue The test to add (must not be <code>null</code>)
1816         */
1817        public TestScript addTest(Test theValue) {
1818                if (theValue == null) {
1819                        throw new NullPointerException("theValue must not be null");
1820                }
1821                getTest().add(theValue);
1822                return this;
1823        }
1824
1825        /**
1826         * Gets the first repetition for <b>test</b> (),
1827         * creating it if it does not already exist.
1828         *
1829     * <p>
1830     * <b>Definition:</b>
1831     * A test in this script.
1832     * </p> 
1833         */
1834        public Test getTestFirstRep() {
1835                if (getTest().isEmpty()) {
1836                        return addTest();
1837                }
1838                return getTest().get(0); 
1839        }
1840  
1841        /**
1842         * Gets the value(s) for <b>teardown</b> ().
1843         * creating it if it does
1844         * not exist. Will not return <code>null</code>.
1845         *
1846     * <p>
1847     * <b>Definition:</b>
1848     * A series of operations required to clean up after the all the tests are executed (successfully or otherwise).
1849     * </p> 
1850         */
1851        public Teardown getTeardown() {  
1852                if (myTeardown == null) {
1853                        myTeardown = new Teardown();
1854                }
1855                return myTeardown;
1856        }
1857
1858        /**
1859         * Sets the value(s) for <b>teardown</b> ()
1860         *
1861     * <p>
1862     * <b>Definition:</b>
1863     * A series of operations required to clean up after the all the tests are executed (successfully or otherwise).
1864     * </p> 
1865         */
1866        public TestScript setTeardown(Teardown theValue) {
1867                myTeardown = theValue;
1868                return this;
1869        }
1870        
1871        
1872
1873  
1874        /**
1875         * Block class for child element: <b>TestScript.contact</b> ()
1876         *
1877     * <p>
1878     * <b>Definition:</b>
1879     * Contacts to assist a user in finding and communicating with the publisher
1880     * </p> 
1881         */
1882        @Block()        
1883        public static class Contact 
1884            extends  BaseIdentifiableElement        implements IResourceBlock {
1885        
1886        @Child(name="name", type=StringDt.class, order=0, min=0, max=1, summary=true, modifier=false)   
1887        @Description(
1888                shortDefinition="",
1889                formalDefinition="The name of an individual to contact regarding the Test Script"
1890        )
1891        private StringDt myName;
1892        
1893        @Child(name="telecom", type=ContactPointDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
1894        @Description(
1895                shortDefinition="",
1896                formalDefinition="Contact details for individual (if a name was provided) or the publisher"
1897        )
1898        private java.util.List<ContactPointDt> myTelecom;
1899        
1900
1901        @Override
1902        public boolean isEmpty() {
1903                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myTelecom);
1904        }
1905        
1906        @Override
1907        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1908                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myTelecom);
1909        }
1910
1911        /**
1912         * Gets the value(s) for <b>name</b> ().
1913         * creating it if it does
1914         * not exist. Will not return <code>null</code>.
1915         *
1916     * <p>
1917     * <b>Definition:</b>
1918     * The name of an individual to contact regarding the Test Script
1919     * </p> 
1920         */
1921        public StringDt getNameElement() {  
1922                if (myName == null) {
1923                        myName = new StringDt();
1924                }
1925                return myName;
1926        }
1927
1928        
1929        /**
1930         * Gets the value(s) for <b>name</b> ().
1931         * creating it if it does
1932         * not exist. This method may return <code>null</code>.
1933         *
1934     * <p>
1935     * <b>Definition:</b>
1936     * The name of an individual to contact regarding the Test Script
1937     * </p> 
1938         */
1939        public String getName() {  
1940                return getNameElement().getValue();
1941        }
1942
1943        /**
1944         * Sets the value(s) for <b>name</b> ()
1945         *
1946     * <p>
1947     * <b>Definition:</b>
1948     * The name of an individual to contact regarding the Test Script
1949     * </p> 
1950         */
1951        public Contact setName(StringDt theValue) {
1952                myName = theValue;
1953                return this;
1954        }
1955        
1956        
1957
1958        /**
1959         * Sets the value for <b>name</b> ()
1960         *
1961     * <p>
1962     * <b>Definition:</b>
1963     * The name of an individual to contact regarding the Test Script
1964     * </p> 
1965         */
1966        public Contact setName( String theString) {
1967                myName = new StringDt(theString); 
1968                return this; 
1969        }
1970
1971 
1972        /**
1973         * Gets the value(s) for <b>telecom</b> ().
1974         * creating it if it does
1975         * not exist. Will not return <code>null</code>.
1976         *
1977     * <p>
1978     * <b>Definition:</b>
1979     * Contact details for individual (if a name was provided) or the publisher
1980     * </p> 
1981         */
1982        public java.util.List<ContactPointDt> getTelecom() {  
1983                if (myTelecom == null) {
1984                        myTelecom = new java.util.ArrayList<ContactPointDt>();
1985                }
1986                return myTelecom;
1987        }
1988
1989        /**
1990         * Sets the value(s) for <b>telecom</b> ()
1991         *
1992     * <p>
1993     * <b>Definition:</b>
1994     * Contact details for individual (if a name was provided) or the publisher
1995     * </p> 
1996         */
1997        public Contact setTelecom(java.util.List<ContactPointDt> theValue) {
1998                myTelecom = theValue;
1999                return this;
2000        }
2001        
2002        
2003
2004        /**
2005         * Adds and returns a new value for <b>telecom</b> ()
2006         *
2007     * <p>
2008     * <b>Definition:</b>
2009     * Contact details for individual (if a name was provided) or the publisher
2010     * </p> 
2011         */
2012        public ContactPointDt addTelecom() {
2013                ContactPointDt newType = new ContactPointDt();
2014                getTelecom().add(newType);
2015                return newType; 
2016        }
2017
2018        /**
2019         * Adds a given new value for <b>telecom</b> ()
2020         *
2021         * <p>
2022         * <b>Definition:</b>
2023         * Contact details for individual (if a name was provided) or the publisher
2024         * </p>
2025         * @param theValue The telecom to add (must not be <code>null</code>)
2026         */
2027        public Contact addTelecom(ContactPointDt theValue) {
2028                if (theValue == null) {
2029                        throw new NullPointerException("theValue must not be null");
2030                }
2031                getTelecom().add(theValue);
2032                return this;
2033        }
2034
2035        /**
2036         * Gets the first repetition for <b>telecom</b> (),
2037         * creating it if it does not already exist.
2038         *
2039     * <p>
2040     * <b>Definition:</b>
2041     * Contact details for individual (if a name was provided) or the publisher
2042     * </p> 
2043         */
2044        public ContactPointDt getTelecomFirstRep() {
2045                if (getTelecom().isEmpty()) {
2046                        return addTelecom();
2047                }
2048                return getTelecom().get(0); 
2049        }
2050  
2051
2052
2053        }
2054
2055
2056        /**
2057         * Block class for child element: <b>TestScript.metadata</b> ()
2058         *
2059     * <p>
2060     * <b>Definition:</b>
2061     * The required capability must exist and are assumed to function correctly on the FHIR server being tested.
2062     * </p> 
2063         */
2064        @Block()        
2065        public static class Metadata 
2066            extends  BaseIdentifiableElement        implements IResourceBlock {
2067        
2068        @Child(name="link", order=0, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
2069        @Description(
2070                shortDefinition="",
2071                formalDefinition="A link to the FHIR specification that this test is covering."
2072        )
2073        private java.util.List<MetadataLink> myLink;
2074        
2075        @Child(name="capability", order=1, min=1, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
2076        @Description(
2077                shortDefinition="",
2078                formalDefinition="Capabilities that must exist and are assumed to function correctly on the FHIR server being tested."
2079        )
2080        private java.util.List<MetadataCapability> myCapability;
2081        
2082
2083        @Override
2084        public boolean isEmpty() {
2085                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myLink,  myCapability);
2086        }
2087        
2088        @Override
2089        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2090                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myLink, myCapability);
2091        }
2092
2093        /**
2094         * Gets the value(s) for <b>link</b> ().
2095         * creating it if it does
2096         * not exist. Will not return <code>null</code>.
2097         *
2098     * <p>
2099     * <b>Definition:</b>
2100     * A link to the FHIR specification that this test is covering.
2101     * </p> 
2102         */
2103        public java.util.List<MetadataLink> getLink() {  
2104                if (myLink == null) {
2105                        myLink = new java.util.ArrayList<MetadataLink>();
2106                }
2107                return myLink;
2108        }
2109
2110        /**
2111         * Sets the value(s) for <b>link</b> ()
2112         *
2113     * <p>
2114     * <b>Definition:</b>
2115     * A link to the FHIR specification that this test is covering.
2116     * </p> 
2117         */
2118        public Metadata setLink(java.util.List<MetadataLink> theValue) {
2119                myLink = theValue;
2120                return this;
2121        }
2122        
2123        
2124
2125        /**
2126         * Adds and returns a new value for <b>link</b> ()
2127         *
2128     * <p>
2129     * <b>Definition:</b>
2130     * A link to the FHIR specification that this test is covering.
2131     * </p> 
2132         */
2133        public MetadataLink addLink() {
2134                MetadataLink newType = new MetadataLink();
2135                getLink().add(newType);
2136                return newType; 
2137        }
2138
2139        /**
2140         * Adds a given new value for <b>link</b> ()
2141         *
2142         * <p>
2143         * <b>Definition:</b>
2144         * A link to the FHIR specification that this test is covering.
2145         * </p>
2146         * @param theValue The link to add (must not be <code>null</code>)
2147         */
2148        public Metadata addLink(MetadataLink theValue) {
2149                if (theValue == null) {
2150                        throw new NullPointerException("theValue must not be null");
2151                }
2152                getLink().add(theValue);
2153                return this;
2154        }
2155
2156        /**
2157         * Gets the first repetition for <b>link</b> (),
2158         * creating it if it does not already exist.
2159         *
2160     * <p>
2161     * <b>Definition:</b>
2162     * A link to the FHIR specification that this test is covering.
2163     * </p> 
2164         */
2165        public MetadataLink getLinkFirstRep() {
2166                if (getLink().isEmpty()) {
2167                        return addLink();
2168                }
2169                return getLink().get(0); 
2170        }
2171  
2172        /**
2173         * Gets the value(s) for <b>capability</b> ().
2174         * creating it if it does
2175         * not exist. Will not return <code>null</code>.
2176         *
2177     * <p>
2178     * <b>Definition:</b>
2179     * Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.
2180     * </p> 
2181         */
2182        public java.util.List<MetadataCapability> getCapability() {  
2183                if (myCapability == null) {
2184                        myCapability = new java.util.ArrayList<MetadataCapability>();
2185                }
2186                return myCapability;
2187        }
2188
2189        /**
2190         * Sets the value(s) for <b>capability</b> ()
2191         *
2192     * <p>
2193     * <b>Definition:</b>
2194     * Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.
2195     * </p> 
2196         */
2197        public Metadata setCapability(java.util.List<MetadataCapability> theValue) {
2198                myCapability = theValue;
2199                return this;
2200        }
2201        
2202        
2203
2204        /**
2205         * Adds and returns a new value for <b>capability</b> ()
2206         *
2207     * <p>
2208     * <b>Definition:</b>
2209     * Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.
2210     * </p> 
2211         */
2212        public MetadataCapability addCapability() {
2213                MetadataCapability newType = new MetadataCapability();
2214                getCapability().add(newType);
2215                return newType; 
2216        }
2217
2218        /**
2219         * Adds a given new value for <b>capability</b> ()
2220         *
2221         * <p>
2222         * <b>Definition:</b>
2223         * Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.
2224         * </p>
2225         * @param theValue The capability to add (must not be <code>null</code>)
2226         */
2227        public Metadata addCapability(MetadataCapability theValue) {
2228                if (theValue == null) {
2229                        throw new NullPointerException("theValue must not be null");
2230                }
2231                getCapability().add(theValue);
2232                return this;
2233        }
2234
2235        /**
2236         * Gets the first repetition for <b>capability</b> (),
2237         * creating it if it does not already exist.
2238         *
2239     * <p>
2240     * <b>Definition:</b>
2241     * Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.
2242     * </p> 
2243         */
2244        public MetadataCapability getCapabilityFirstRep() {
2245                if (getCapability().isEmpty()) {
2246                        return addCapability();
2247                }
2248                return getCapability().get(0); 
2249        }
2250  
2251
2252
2253        }
2254
2255        /**
2256         * Block class for child element: <b>TestScript.metadata.link</b> ()
2257         *
2258     * <p>
2259     * <b>Definition:</b>
2260     * A link to the FHIR specification that this test is covering.
2261     * </p> 
2262         */
2263        @Block()        
2264        public static class MetadataLink 
2265            extends  BaseIdentifiableElement        implements IResourceBlock {
2266        
2267        @Child(name="url", type=UriDt.class, order=0, min=1, max=1, summary=false, modifier=false)      
2268        @Description(
2269                shortDefinition="",
2270                formalDefinition="URL to a particular requirement or feature within the FHIR specification."
2271        )
2272        private UriDt myUrl;
2273        
2274        @Child(name="description", type=StringDt.class, order=1, min=0, max=1, summary=false, modifier=false)   
2275        @Description(
2276                shortDefinition="",
2277                formalDefinition="Short description of the link."
2278        )
2279        private StringDt myDescription;
2280        
2281
2282        @Override
2283        public boolean isEmpty() {
2284                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myUrl,  myDescription);
2285        }
2286        
2287        @Override
2288        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2289                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myUrl, myDescription);
2290        }
2291
2292        /**
2293         * Gets the value(s) for <b>url</b> ().
2294         * creating it if it does
2295         * not exist. Will not return <code>null</code>.
2296         *
2297     * <p>
2298     * <b>Definition:</b>
2299     * URL to a particular requirement or feature within the FHIR specification.
2300     * </p> 
2301         */
2302        public UriDt getUrlElement() {  
2303                if (myUrl == null) {
2304                        myUrl = new UriDt();
2305                }
2306                return myUrl;
2307        }
2308
2309        
2310        /**
2311         * Gets the value(s) for <b>url</b> ().
2312         * creating it if it does
2313         * not exist. This method may return <code>null</code>.
2314         *
2315     * <p>
2316     * <b>Definition:</b>
2317     * URL to a particular requirement or feature within the FHIR specification.
2318     * </p> 
2319         */
2320        public String getUrl() {  
2321                return getUrlElement().getValue();
2322        }
2323
2324        /**
2325         * Sets the value(s) for <b>url</b> ()
2326         *
2327     * <p>
2328     * <b>Definition:</b>
2329     * URL to a particular requirement or feature within the FHIR specification.
2330     * </p> 
2331         */
2332        public MetadataLink setUrl(UriDt theValue) {
2333                myUrl = theValue;
2334                return this;
2335        }
2336        
2337        
2338
2339        /**
2340         * Sets the value for <b>url</b> ()
2341         *
2342     * <p>
2343     * <b>Definition:</b>
2344     * URL to a particular requirement or feature within the FHIR specification.
2345     * </p> 
2346         */
2347        public MetadataLink setUrl( String theUri) {
2348                myUrl = new UriDt(theUri); 
2349                return this; 
2350        }
2351
2352 
2353        /**
2354         * Gets the value(s) for <b>description</b> ().
2355         * creating it if it does
2356         * not exist. Will not return <code>null</code>.
2357         *
2358     * <p>
2359     * <b>Definition:</b>
2360     * Short description of the link.
2361     * </p> 
2362         */
2363        public StringDt getDescriptionElement() {  
2364                if (myDescription == null) {
2365                        myDescription = new StringDt();
2366                }
2367                return myDescription;
2368        }
2369
2370        
2371        /**
2372         * Gets the value(s) for <b>description</b> ().
2373         * creating it if it does
2374         * not exist. This method may return <code>null</code>.
2375         *
2376     * <p>
2377     * <b>Definition:</b>
2378     * Short description of the link.
2379     * </p> 
2380         */
2381        public String getDescription() {  
2382                return getDescriptionElement().getValue();
2383        }
2384
2385        /**
2386         * Sets the value(s) for <b>description</b> ()
2387         *
2388     * <p>
2389     * <b>Definition:</b>
2390     * Short description of the link.
2391     * </p> 
2392         */
2393        public MetadataLink setDescription(StringDt theValue) {
2394                myDescription = theValue;
2395                return this;
2396        }
2397        
2398        
2399
2400        /**
2401         * Sets the value for <b>description</b> ()
2402         *
2403     * <p>
2404     * <b>Definition:</b>
2405     * Short description of the link.
2406     * </p> 
2407         */
2408        public MetadataLink setDescription( String theString) {
2409                myDescription = new StringDt(theString); 
2410                return this; 
2411        }
2412
2413 
2414
2415
2416        }
2417
2418
2419        /**
2420         * Block class for child element: <b>TestScript.metadata.capability</b> ()
2421         *
2422     * <p>
2423     * <b>Definition:</b>
2424     * Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.
2425     * </p> 
2426         */
2427        @Block()        
2428        public static class MetadataCapability 
2429            extends  BaseIdentifiableElement        implements IResourceBlock {
2430        
2431        @Child(name="required", type=BooleanDt.class, order=0, min=0, max=1, summary=false, modifier=false)     
2432        @Description(
2433                shortDefinition="",
2434                formalDefinition="Whether or not the test execution will require the given capabilities of the server in order for this test script to execute."
2435        )
2436        private BooleanDt myRequired;
2437        
2438        @Child(name="validated", type=BooleanDt.class, order=1, min=0, max=1, summary=false, modifier=false)    
2439        @Description(
2440                shortDefinition="",
2441                formalDefinition="Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute."
2442        )
2443        private BooleanDt myValidated;
2444        
2445        @Child(name="description", type=StringDt.class, order=2, min=0, max=1, summary=false, modifier=false)   
2446        @Description(
2447                shortDefinition="",
2448                formalDefinition="Description of the capabilities that this test script is requiring the server to support."
2449        )
2450        private StringDt myDescription;
2451        
2452        @Child(name="destination", type=IntegerDt.class, order=3, min=0, max=1, summary=false, modifier=false)  
2453        @Description(
2454                shortDefinition="",
2455                formalDefinition="Which server these requirements apply to."
2456        )
2457        private IntegerDt myDestination;
2458        
2459        @Child(name="link", type=UriDt.class, order=4, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
2460        @Description(
2461                shortDefinition="",
2462                formalDefinition="Links to the FHIR specification that describes this interaction and the resources involved in more detail."
2463        )
2464        private java.util.List<UriDt> myLink;
2465        
2466        @Child(name="conformance", order=5, min=1, max=1, summary=false, modifier=false, type={
2467                ca.uhn.fhir.model.dstu2.resource.Conformance.class      })
2468        @Description(
2469                shortDefinition="",
2470                formalDefinition="Minimum conformance required of server for test script to execute successfully.   If server does not meet at a minimum the reference conformance definition, then all tests in this script are skipped."
2471        )
2472        private ResourceReferenceDt myConformance;
2473        
2474
2475        @Override
2476        public boolean isEmpty() {
2477                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myRequired,  myValidated,  myDescription,  myDestination,  myLink,  myConformance);
2478        }
2479        
2480        @Override
2481        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2482                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myRequired, myValidated, myDescription, myDestination, myLink, myConformance);
2483        }
2484
2485        /**
2486         * Gets the value(s) for <b>required</b> ().
2487         * creating it if it does
2488         * not exist. Will not return <code>null</code>.
2489         *
2490     * <p>
2491     * <b>Definition:</b>
2492     * Whether or not the test execution will require the given capabilities of the server in order for this test script to execute.
2493     * </p> 
2494         */
2495        public BooleanDt getRequiredElement() {  
2496                if (myRequired == null) {
2497                        myRequired = new BooleanDt();
2498                }
2499                return myRequired;
2500        }
2501
2502        
2503        /**
2504         * Gets the value(s) for <b>required</b> ().
2505         * creating it if it does
2506         * not exist. This method may return <code>null</code>.
2507         *
2508     * <p>
2509     * <b>Definition:</b>
2510     * Whether or not the test execution will require the given capabilities of the server in order for this test script to execute.
2511     * </p> 
2512         */
2513        public Boolean getRequired() {  
2514                return getRequiredElement().getValue();
2515        }
2516
2517        /**
2518         * Sets the value(s) for <b>required</b> ()
2519         *
2520     * <p>
2521     * <b>Definition:</b>
2522     * Whether or not the test execution will require the given capabilities of the server in order for this test script to execute.
2523     * </p> 
2524         */
2525        public MetadataCapability setRequired(BooleanDt theValue) {
2526                myRequired = theValue;
2527                return this;
2528        }
2529        
2530        
2531
2532        /**
2533         * Sets the value for <b>required</b> ()
2534         *
2535     * <p>
2536     * <b>Definition:</b>
2537     * Whether or not the test execution will require the given capabilities of the server in order for this test script to execute.
2538     * </p> 
2539         */
2540        public MetadataCapability setRequired( boolean theBoolean) {
2541                myRequired = new BooleanDt(theBoolean); 
2542                return this; 
2543        }
2544
2545 
2546        /**
2547         * Gets the value(s) for <b>validated</b> ().
2548         * creating it if it does
2549         * not exist. Will not return <code>null</code>.
2550         *
2551     * <p>
2552     * <b>Definition:</b>
2553     * Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute.
2554     * </p> 
2555         */
2556        public BooleanDt getValidatedElement() {  
2557                if (myValidated == null) {
2558                        myValidated = new BooleanDt();
2559                }
2560                return myValidated;
2561        }
2562
2563        
2564        /**
2565         * Gets the value(s) for <b>validated</b> ().
2566         * creating it if it does
2567         * not exist. This method may return <code>null</code>.
2568         *
2569     * <p>
2570     * <b>Definition:</b>
2571     * Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute.
2572     * </p> 
2573         */
2574        public Boolean getValidated() {  
2575                return getValidatedElement().getValue();
2576        }
2577
2578        /**
2579         * Sets the value(s) for <b>validated</b> ()
2580         *
2581     * <p>
2582     * <b>Definition:</b>
2583     * Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute.
2584     * </p> 
2585         */
2586        public MetadataCapability setValidated(BooleanDt theValue) {
2587                myValidated = theValue;
2588                return this;
2589        }
2590        
2591        
2592
2593        /**
2594         * Sets the value for <b>validated</b> ()
2595         *
2596     * <p>
2597     * <b>Definition:</b>
2598     * Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute.
2599     * </p> 
2600         */
2601        public MetadataCapability setValidated( boolean theBoolean) {
2602                myValidated = new BooleanDt(theBoolean); 
2603                return this; 
2604        }
2605
2606 
2607        /**
2608         * Gets the value(s) for <b>description</b> ().
2609         * creating it if it does
2610         * not exist. Will not return <code>null</code>.
2611         *
2612     * <p>
2613     * <b>Definition:</b>
2614     * Description of the capabilities that this test script is requiring the server to support.
2615     * </p> 
2616         */
2617        public StringDt getDescriptionElement() {  
2618                if (myDescription == null) {
2619                        myDescription = new StringDt();
2620                }
2621                return myDescription;
2622        }
2623
2624        
2625        /**
2626         * Gets the value(s) for <b>description</b> ().
2627         * creating it if it does
2628         * not exist. This method may return <code>null</code>.
2629         *
2630     * <p>
2631     * <b>Definition:</b>
2632     * Description of the capabilities that this test script is requiring the server to support.
2633     * </p> 
2634         */
2635        public String getDescription() {  
2636                return getDescriptionElement().getValue();
2637        }
2638
2639        /**
2640         * Sets the value(s) for <b>description</b> ()
2641         *
2642     * <p>
2643     * <b>Definition:</b>
2644     * Description of the capabilities that this test script is requiring the server to support.
2645     * </p> 
2646         */
2647        public MetadataCapability setDescription(StringDt theValue) {
2648                myDescription = theValue;
2649                return this;
2650        }
2651        
2652        
2653
2654        /**
2655         * Sets the value for <b>description</b> ()
2656         *
2657     * <p>
2658     * <b>Definition:</b>
2659     * Description of the capabilities that this test script is requiring the server to support.
2660     * </p> 
2661         */
2662        public MetadataCapability setDescription( String theString) {
2663                myDescription = new StringDt(theString); 
2664                return this; 
2665        }
2666
2667 
2668        /**
2669         * Gets the value(s) for <b>destination</b> ().
2670         * creating it if it does
2671         * not exist. Will not return <code>null</code>.
2672         *
2673     * <p>
2674     * <b>Definition:</b>
2675     * Which server these requirements apply to.
2676     * </p> 
2677         */
2678        public IntegerDt getDestinationElement() {  
2679                if (myDestination == null) {
2680                        myDestination = new IntegerDt();
2681                }
2682                return myDestination;
2683        }
2684
2685        
2686        /**
2687         * Gets the value(s) for <b>destination</b> ().
2688         * creating it if it does
2689         * not exist. This method may return <code>null</code>.
2690         *
2691     * <p>
2692     * <b>Definition:</b>
2693     * Which server these requirements apply to.
2694     * </p> 
2695         */
2696        public Integer getDestination() {  
2697                return getDestinationElement().getValue();
2698        }
2699
2700        /**
2701         * Sets the value(s) for <b>destination</b> ()
2702         *
2703     * <p>
2704     * <b>Definition:</b>
2705     * Which server these requirements apply to.
2706     * </p> 
2707         */
2708        public MetadataCapability setDestination(IntegerDt theValue) {
2709                myDestination = theValue;
2710                return this;
2711        }
2712        
2713        
2714
2715        /**
2716         * Sets the value for <b>destination</b> ()
2717         *
2718     * <p>
2719     * <b>Definition:</b>
2720     * Which server these requirements apply to.
2721     * </p> 
2722         */
2723        public MetadataCapability setDestination( int theInteger) {
2724                myDestination = new IntegerDt(theInteger); 
2725                return this; 
2726        }
2727
2728 
2729        /**
2730         * Gets the value(s) for <b>link</b> ().
2731         * creating it if it does
2732         * not exist. Will not return <code>null</code>.
2733         *
2734     * <p>
2735     * <b>Definition:</b>
2736     * Links to the FHIR specification that describes this interaction and the resources involved in more detail.
2737     * </p> 
2738         */
2739        public java.util.List<UriDt> getLink() {  
2740                if (myLink == null) {
2741                        myLink = new java.util.ArrayList<UriDt>();
2742                }
2743                return myLink;
2744        }
2745
2746        /**
2747         * Sets the value(s) for <b>link</b> ()
2748         *
2749     * <p>
2750     * <b>Definition:</b>
2751     * Links to the FHIR specification that describes this interaction and the resources involved in more detail.
2752     * </p> 
2753         */
2754        public MetadataCapability setLink(java.util.List<UriDt> theValue) {
2755                myLink = theValue;
2756                return this;
2757        }
2758        
2759        
2760
2761        /**
2762         * Adds and returns a new value for <b>link</b> ()
2763         *
2764     * <p>
2765     * <b>Definition:</b>
2766     * Links to the FHIR specification that describes this interaction and the resources involved in more detail.
2767     * </p> 
2768         */
2769        public UriDt addLink() {
2770                UriDt newType = new UriDt();
2771                getLink().add(newType);
2772                return newType; 
2773        }
2774
2775        /**
2776         * Adds a given new value for <b>link</b> ()
2777         *
2778         * <p>
2779         * <b>Definition:</b>
2780         * Links to the FHIR specification that describes this interaction and the resources involved in more detail.
2781         * </p>
2782         * @param theValue The link to add (must not be <code>null</code>)
2783         */
2784        public MetadataCapability addLink(UriDt theValue) {
2785                if (theValue == null) {
2786                        throw new NullPointerException("theValue must not be null");
2787                }
2788                getLink().add(theValue);
2789                return this;
2790        }
2791
2792        /**
2793         * Gets the first repetition for <b>link</b> (),
2794         * creating it if it does not already exist.
2795         *
2796     * <p>
2797     * <b>Definition:</b>
2798     * Links to the FHIR specification that describes this interaction and the resources involved in more detail.
2799     * </p> 
2800         */
2801        public UriDt getLinkFirstRep() {
2802                if (getLink().isEmpty()) {
2803                        return addLink();
2804                }
2805                return getLink().get(0); 
2806        }
2807        /**
2808         * Adds a new value for <b>link</b> ()
2809         *
2810     * <p>
2811     * <b>Definition:</b>
2812     * Links to the FHIR specification that describes this interaction and the resources involved in more detail.
2813     * </p> 
2814     *
2815     * @return Returns a reference to this object, to allow for simple chaining.
2816         */
2817        public MetadataCapability addLink( String theUri) {
2818                if (myLink == null) {
2819                        myLink = new java.util.ArrayList<UriDt>();
2820                }
2821                myLink.add(new UriDt(theUri));
2822                return this; 
2823        }
2824
2825 
2826        /**
2827         * Gets the value(s) for <b>conformance</b> ().
2828         * creating it if it does
2829         * not exist. Will not return <code>null</code>.
2830         *
2831     * <p>
2832     * <b>Definition:</b>
2833     * Minimum conformance required of server for test script to execute successfully.   If server does not meet at a minimum the reference conformance definition, then all tests in this script are skipped.
2834     * </p> 
2835         */
2836        public ResourceReferenceDt getConformance() {  
2837                if (myConformance == null) {
2838                        myConformance = new ResourceReferenceDt();
2839                }
2840                return myConformance;
2841        }
2842
2843        /**
2844         * Sets the value(s) for <b>conformance</b> ()
2845         *
2846     * <p>
2847     * <b>Definition:</b>
2848     * Minimum conformance required of server for test script to execute successfully.   If server does not meet at a minimum the reference conformance definition, then all tests in this script are skipped.
2849     * </p> 
2850         */
2851        public MetadataCapability setConformance(ResourceReferenceDt theValue) {
2852                myConformance = theValue;
2853                return this;
2854        }
2855        
2856        
2857
2858  
2859
2860
2861        }
2862
2863
2864
2865        /**
2866         * Block class for child element: <b>TestScript.fixture</b> ()
2867         *
2868     * <p>
2869     * <b>Definition:</b>
2870     * Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute.
2871     * </p> 
2872         */
2873        @Block()        
2874        public static class Fixture 
2875            extends  BaseIdentifiableElement        implements IResourceBlock {
2876        
2877        @Child(name="autocreate", type=BooleanDt.class, order=0, min=0, max=1, summary=false, modifier=false)   
2878        @Description(
2879                shortDefinition="",
2880                formalDefinition="Whether or not to implicitly create the fixture during setup. If true, the fixture is automatically created on each server being tested during setup, therefore no create operation is required for this fixture in the TestScript.setup section."
2881        )
2882        private BooleanDt myAutocreate;
2883        
2884        @Child(name="autodelete", type=BooleanDt.class, order=1, min=0, max=1, summary=false, modifier=false)   
2885        @Description(
2886                shortDefinition="",
2887                formalDefinition="Whether or not to implicitly delete the fixture during teardown If true, the fixture is automatically deleted on each server being tested during teardown, therefore no delete operation is required for this fixture in the TestScript.teardown section."
2888        )
2889        private BooleanDt myAutodelete;
2890        
2891        @Child(name="resource", order=2, min=0, max=1, summary=false, modifier=false, type={
2892                IResource.class })
2893        @Description(
2894                shortDefinition="",
2895                formalDefinition="Reference to the resource (containing the contents of the resource needed for operations)"
2896        )
2897        private ResourceReferenceDt myResource;
2898        
2899
2900        @Override
2901        public boolean isEmpty() {
2902                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myAutocreate,  myAutodelete,  myResource);
2903        }
2904        
2905        @Override
2906        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2907                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myAutocreate, myAutodelete, myResource);
2908        }
2909
2910        /**
2911         * Gets the value(s) for <b>autocreate</b> ().
2912         * creating it if it does
2913         * not exist. Will not return <code>null</code>.
2914         *
2915     * <p>
2916     * <b>Definition:</b>
2917     * Whether or not to implicitly create the fixture during setup. If true, the fixture is automatically created on each server being tested during setup, therefore no create operation is required for this fixture in the TestScript.setup section.
2918     * </p> 
2919         */
2920        public BooleanDt getAutocreateElement() {  
2921                if (myAutocreate == null) {
2922                        myAutocreate = new BooleanDt();
2923                }
2924                return myAutocreate;
2925        }
2926
2927        
2928        /**
2929         * Gets the value(s) for <b>autocreate</b> ().
2930         * creating it if it does
2931         * not exist. This method may return <code>null</code>.
2932         *
2933     * <p>
2934     * <b>Definition:</b>
2935     * Whether or not to implicitly create the fixture during setup. If true, the fixture is automatically created on each server being tested during setup, therefore no create operation is required for this fixture in the TestScript.setup section.
2936     * </p> 
2937         */
2938        public Boolean getAutocreate() {  
2939                return getAutocreateElement().getValue();
2940        }
2941
2942        /**
2943         * Sets the value(s) for <b>autocreate</b> ()
2944         *
2945     * <p>
2946     * <b>Definition:</b>
2947     * Whether or not to implicitly create the fixture during setup. If true, the fixture is automatically created on each server being tested during setup, therefore no create operation is required for this fixture in the TestScript.setup section.
2948     * </p> 
2949         */
2950        public Fixture setAutocreate(BooleanDt theValue) {
2951                myAutocreate = theValue;
2952                return this;
2953        }
2954        
2955        
2956
2957        /**
2958         * Sets the value for <b>autocreate</b> ()
2959         *
2960     * <p>
2961     * <b>Definition:</b>
2962     * Whether or not to implicitly create the fixture during setup. If true, the fixture is automatically created on each server being tested during setup, therefore no create operation is required for this fixture in the TestScript.setup section.
2963     * </p> 
2964         */
2965        public Fixture setAutocreate( boolean theBoolean) {
2966                myAutocreate = new BooleanDt(theBoolean); 
2967                return this; 
2968        }
2969
2970 
2971        /**
2972         * Gets the value(s) for <b>autodelete</b> ().
2973         * creating it if it does
2974         * not exist. Will not return <code>null</code>.
2975         *
2976     * <p>
2977     * <b>Definition:</b>
2978     * Whether or not to implicitly delete the fixture during teardown If true, the fixture is automatically deleted on each server being tested during teardown, therefore no delete operation is required for this fixture in the TestScript.teardown section.
2979     * </p> 
2980         */
2981        public BooleanDt getAutodeleteElement() {  
2982                if (myAutodelete == null) {
2983                        myAutodelete = new BooleanDt();
2984                }
2985                return myAutodelete;
2986        }
2987
2988        
2989        /**
2990         * Gets the value(s) for <b>autodelete</b> ().
2991         * creating it if it does
2992         * not exist. This method may return <code>null</code>.
2993         *
2994     * <p>
2995     * <b>Definition:</b>
2996     * Whether or not to implicitly delete the fixture during teardown If true, the fixture is automatically deleted on each server being tested during teardown, therefore no delete operation is required for this fixture in the TestScript.teardown section.
2997     * </p> 
2998         */
2999        public Boolean getAutodelete() {  
3000                return getAutodeleteElement().getValue();
3001        }
3002
3003        /**
3004         * Sets the value(s) for <b>autodelete</b> ()
3005         *
3006     * <p>
3007     * <b>Definition:</b>
3008     * Whether or not to implicitly delete the fixture during teardown If true, the fixture is automatically deleted on each server being tested during teardown, therefore no delete operation is required for this fixture in the TestScript.teardown section.
3009     * </p> 
3010         */
3011        public Fixture setAutodelete(BooleanDt theValue) {
3012                myAutodelete = theValue;
3013                return this;
3014        }
3015        
3016        
3017
3018        /**
3019         * Sets the value for <b>autodelete</b> ()
3020         *
3021     * <p>
3022     * <b>Definition:</b>
3023     * Whether or not to implicitly delete the fixture during teardown If true, the fixture is automatically deleted on each server being tested during teardown, therefore no delete operation is required for this fixture in the TestScript.teardown section.
3024     * </p> 
3025         */
3026        public Fixture setAutodelete( boolean theBoolean) {
3027                myAutodelete = new BooleanDt(theBoolean); 
3028                return this; 
3029        }
3030
3031 
3032        /**
3033         * Gets the value(s) for <b>resource</b> ().
3034         * creating it if it does
3035         * not exist. Will not return <code>null</code>.
3036         *
3037     * <p>
3038     * <b>Definition:</b>
3039     * Reference to the resource (containing the contents of the resource needed for operations)
3040     * </p> 
3041         */
3042        public ResourceReferenceDt getResource() {  
3043                if (myResource == null) {
3044                        myResource = new ResourceReferenceDt();
3045                }
3046                return myResource;
3047        }
3048
3049        /**
3050         * Sets the value(s) for <b>resource</b> ()
3051         *
3052     * <p>
3053     * <b>Definition:</b>
3054     * Reference to the resource (containing the contents of the resource needed for operations)
3055     * </p> 
3056         */
3057        public Fixture setResource(ResourceReferenceDt theValue) {
3058                myResource = theValue;
3059                return this;
3060        }
3061        
3062        
3063
3064  
3065
3066
3067        }
3068
3069
3070        /**
3071         * Block class for child element: <b>TestScript.variable</b> ()
3072         *
3073     * <p>
3074     * <b>Definition:</b>
3075     * Variable is set based either on element value in response body or on header field value in the response headers.
3076     * </p> 
3077         */
3078        @Block()        
3079        public static class Variable 
3080            extends  BaseIdentifiableElement        implements IResourceBlock {
3081        
3082        @Child(name="name", type=StringDt.class, order=0, min=1, max=1, summary=false, modifier=false)  
3083        @Description(
3084                shortDefinition="",
3085                formalDefinition="Descriptive name for this variable"
3086        )
3087        private StringDt myName;
3088        
3089        @Child(name="headerField", type=StringDt.class, order=1, min=0, max=1, summary=false, modifier=false)   
3090        @Description(
3091                shortDefinition="",
3092                formalDefinition="Will be used to grab the HTTP header field value from the headers that sourceId is pointing to."
3093        )
3094        private StringDt myHeaderField;
3095        
3096        @Child(name="path", type=StringDt.class, order=2, min=0, max=1, summary=false, modifier=false)  
3097        @Description(
3098                shortDefinition="",
3099                formalDefinition="XPath or JSONPath against the fixture body.  When variables are defined, either headerField must be specified or path, but not both."
3100        )
3101        private StringDt myPath;
3102        
3103        @Child(name="sourceId", type=IdDt.class, order=3, min=0, max=1, summary=false, modifier=false)  
3104        @Description(
3105                shortDefinition="",
3106                formalDefinition="Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable."
3107        )
3108        private IdDt mySourceId;
3109        
3110
3111        @Override
3112        public boolean isEmpty() {
3113                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myHeaderField,  myPath,  mySourceId);
3114        }
3115        
3116        @Override
3117        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
3118                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myHeaderField, myPath, mySourceId);
3119        }
3120
3121        /**
3122         * Gets the value(s) for <b>name</b> ().
3123         * creating it if it does
3124         * not exist. Will not return <code>null</code>.
3125         *
3126     * <p>
3127     * <b>Definition:</b>
3128     * Descriptive name for this variable
3129     * </p> 
3130         */
3131        public StringDt getNameElement() {  
3132                if (myName == null) {
3133                        myName = new StringDt();
3134                }
3135                return myName;
3136        }
3137
3138        
3139        /**
3140         * Gets the value(s) for <b>name</b> ().
3141         * creating it if it does
3142         * not exist. This method may return <code>null</code>.
3143         *
3144     * <p>
3145     * <b>Definition:</b>
3146     * Descriptive name for this variable
3147     * </p> 
3148         */
3149        public String getName() {  
3150                return getNameElement().getValue();
3151        }
3152
3153        /**
3154         * Sets the value(s) for <b>name</b> ()
3155         *
3156     * <p>
3157     * <b>Definition:</b>
3158     * Descriptive name for this variable
3159     * </p> 
3160         */
3161        public Variable setName(StringDt theValue) {
3162                myName = theValue;
3163                return this;
3164        }
3165        
3166        
3167
3168        /**
3169         * Sets the value for <b>name</b> ()
3170         *
3171     * <p>
3172     * <b>Definition:</b>
3173     * Descriptive name for this variable
3174     * </p> 
3175         */
3176        public Variable setName( String theString) {
3177                myName = new StringDt(theString); 
3178                return this; 
3179        }
3180
3181 
3182        /**
3183         * Gets the value(s) for <b>headerField</b> ().
3184         * creating it if it does
3185         * not exist. Will not return <code>null</code>.
3186         *
3187     * <p>
3188     * <b>Definition:</b>
3189     * Will be used to grab the HTTP header field value from the headers that sourceId is pointing to.
3190     * </p> 
3191         */
3192        public StringDt getHeaderFieldElement() {  
3193                if (myHeaderField == null) {
3194                        myHeaderField = new StringDt();
3195                }
3196                return myHeaderField;
3197        }
3198
3199        
3200        /**
3201         * Gets the value(s) for <b>headerField</b> ().
3202         * creating it if it does
3203         * not exist. This method may return <code>null</code>.
3204         *
3205     * <p>
3206     * <b>Definition:</b>
3207     * Will be used to grab the HTTP header field value from the headers that sourceId is pointing to.
3208     * </p> 
3209         */
3210        public String getHeaderField() {  
3211                return getHeaderFieldElement().getValue();
3212        }
3213
3214        /**
3215         * Sets the value(s) for <b>headerField</b> ()
3216         *
3217     * <p>
3218     * <b>Definition:</b>
3219     * Will be used to grab the HTTP header field value from the headers that sourceId is pointing to.
3220     * </p> 
3221         */
3222        public Variable setHeaderField(StringDt theValue) {
3223                myHeaderField = theValue;
3224                return this;
3225        }
3226        
3227        
3228
3229        /**
3230         * Sets the value for <b>headerField</b> ()
3231         *
3232     * <p>
3233     * <b>Definition:</b>
3234     * Will be used to grab the HTTP header field value from the headers that sourceId is pointing to.
3235     * </p> 
3236         */
3237        public Variable setHeaderField( String theString) {
3238                myHeaderField = new StringDt(theString); 
3239                return this; 
3240        }
3241
3242 
3243        /**
3244         * Gets the value(s) for <b>path</b> ().
3245         * creating it if it does
3246         * not exist. Will not return <code>null</code>.
3247         *
3248     * <p>
3249     * <b>Definition:</b>
3250     * XPath or JSONPath against the fixture body.  When variables are defined, either headerField must be specified or path, but not both.
3251     * </p> 
3252         */
3253        public StringDt getPathElement() {  
3254                if (myPath == null) {
3255                        myPath = new StringDt();
3256                }
3257                return myPath;
3258        }
3259
3260        
3261        /**
3262         * Gets the value(s) for <b>path</b> ().
3263         * creating it if it does
3264         * not exist. This method may return <code>null</code>.
3265         *
3266     * <p>
3267     * <b>Definition:</b>
3268     * XPath or JSONPath against the fixture body.  When variables are defined, either headerField must be specified or path, but not both.
3269     * </p> 
3270         */
3271        public String getPath() {  
3272                return getPathElement().getValue();
3273        }
3274
3275        /**
3276         * Sets the value(s) for <b>path</b> ()
3277         *
3278     * <p>
3279     * <b>Definition:</b>
3280     * XPath or JSONPath against the fixture body.  When variables are defined, either headerField must be specified or path, but not both.
3281     * </p> 
3282         */
3283        public Variable setPath(StringDt theValue) {
3284                myPath = theValue;
3285                return this;
3286        }
3287        
3288        
3289
3290        /**
3291         * Sets the value for <b>path</b> ()
3292         *
3293     * <p>
3294     * <b>Definition:</b>
3295     * XPath or JSONPath against the fixture body.  When variables are defined, either headerField must be specified or path, but not both.
3296     * </p> 
3297         */
3298        public Variable setPath( String theString) {
3299                myPath = new StringDt(theString); 
3300                return this; 
3301        }
3302
3303 
3304        /**
3305         * Gets the value(s) for <b>sourceId</b> ().
3306         * creating it if it does
3307         * not exist. Will not return <code>null</code>.
3308         *
3309     * <p>
3310     * <b>Definition:</b>
3311     * Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.
3312     * </p> 
3313         */
3314        public IdDt getSourceIdElement() {  
3315                if (mySourceId == null) {
3316                        mySourceId = new IdDt();
3317                }
3318                return mySourceId;
3319        }
3320
3321        
3322        /**
3323         * Gets the value(s) for <b>sourceId</b> ().
3324         * creating it if it does
3325         * not exist. This method may return <code>null</code>.
3326         *
3327     * <p>
3328     * <b>Definition:</b>
3329     * Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.
3330     * </p> 
3331         */
3332        public String getSourceId() {  
3333                return getSourceIdElement().getValue();
3334        }
3335
3336        /**
3337         * Sets the value(s) for <b>sourceId</b> ()
3338         *
3339     * <p>
3340     * <b>Definition:</b>
3341     * Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.
3342     * </p> 
3343         */
3344        public Variable setSourceId(IdDt theValue) {
3345                mySourceId = theValue;
3346                return this;
3347        }
3348        
3349        
3350
3351        /**
3352         * Sets the value for <b>sourceId</b> ()
3353         *
3354     * <p>
3355     * <b>Definition:</b>
3356     * Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.
3357     * </p> 
3358         */
3359        public Variable setSourceId( String theId) {
3360                mySourceId = new IdDt(theId); 
3361                return this; 
3362        }
3363
3364 
3365
3366
3367        }
3368
3369
3370        /**
3371         * Block class for child element: <b>TestScript.setup</b> ()
3372         *
3373     * <p>
3374     * <b>Definition:</b>
3375     * A series of required setup operations before tests are executed.
3376     * </p> 
3377         */
3378        @Block()        
3379        public static class Setup 
3380            extends  BaseIdentifiableElement        implements IResourceBlock {
3381        
3382        @Child(name="metadata", type=Metadata.class, order=0, min=0, max=1, summary=false, modifier=false)      
3383        @Description(
3384                shortDefinition="",
3385                formalDefinition="Capabilities that must exist and are assumed to function correctly on the FHIR server being tested."
3386        )
3387        private Metadata myMetadata;
3388        
3389        @Child(name="action", order=1, min=1, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
3390        @Description(
3391                shortDefinition="",
3392                formalDefinition="Action would contain either an operation or an assertion."
3393        )
3394        private java.util.List<SetupAction> myAction;
3395        
3396
3397        @Override
3398        public boolean isEmpty() {
3399                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myMetadata,  myAction);
3400        }
3401        
3402        @Override
3403        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
3404                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myMetadata, myAction);
3405        }
3406
3407        /**
3408         * Gets the value(s) for <b>metadata</b> ().
3409         * creating it if it does
3410         * not exist. Will not return <code>null</code>.
3411         *
3412     * <p>
3413     * <b>Definition:</b>
3414     * Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.
3415     * </p> 
3416         */
3417        public Metadata getMetadata() {  
3418                if (myMetadata == null) {
3419                        myMetadata = new Metadata();
3420                }
3421                return myMetadata;
3422        }
3423
3424        /**
3425         * Sets the value(s) for <b>metadata</b> ()
3426         *
3427     * <p>
3428     * <b>Definition:</b>
3429     * Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.
3430     * </p> 
3431         */
3432        public Setup setMetadata(Metadata theValue) {
3433                myMetadata = theValue;
3434                return this;
3435        }
3436        
3437        
3438
3439  
3440        /**
3441         * Gets the value(s) for <b>action</b> ().
3442         * creating it if it does
3443         * not exist. Will not return <code>null</code>.
3444         *
3445     * <p>
3446     * <b>Definition:</b>
3447     * Action would contain either an operation or an assertion.
3448     * </p> 
3449         */
3450        public java.util.List<SetupAction> getAction() {  
3451                if (myAction == null) {
3452                        myAction = new java.util.ArrayList<SetupAction>();
3453                }
3454                return myAction;
3455        }
3456
3457        /**
3458         * Sets the value(s) for <b>action</b> ()
3459         *
3460     * <p>
3461     * <b>Definition:</b>
3462     * Action would contain either an operation or an assertion.
3463     * </p> 
3464         */
3465        public Setup setAction(java.util.List<SetupAction> theValue) {
3466                myAction = theValue;
3467                return this;
3468        }
3469        
3470        
3471
3472        /**
3473         * Adds and returns a new value for <b>action</b> ()
3474         *
3475     * <p>
3476     * <b>Definition:</b>
3477     * Action would contain either an operation or an assertion.
3478     * </p> 
3479         */
3480        public SetupAction addAction() {
3481                SetupAction newType = new SetupAction();
3482                getAction().add(newType);
3483                return newType; 
3484        }
3485
3486        /**
3487         * Adds a given new value for <b>action</b> ()
3488         *
3489         * <p>
3490         * <b>Definition:</b>
3491         * Action would contain either an operation or an assertion.
3492         * </p>
3493         * @param theValue The action to add (must not be <code>null</code>)
3494         */
3495        public Setup addAction(SetupAction theValue) {
3496                if (theValue == null) {
3497                        throw new NullPointerException("theValue must not be null");
3498                }
3499                getAction().add(theValue);
3500                return this;
3501        }
3502
3503        /**
3504         * Gets the first repetition for <b>action</b> (),
3505         * creating it if it does not already exist.
3506         *
3507     * <p>
3508     * <b>Definition:</b>
3509     * Action would contain either an operation or an assertion.
3510     * </p> 
3511         */
3512        public SetupAction getActionFirstRep() {
3513                if (getAction().isEmpty()) {
3514                        return addAction();
3515                }
3516                return getAction().get(0); 
3517        }
3518  
3519
3520
3521        }
3522
3523        /**
3524         * Block class for child element: <b>TestScript.setup.action</b> ()
3525         *
3526     * <p>
3527     * <b>Definition:</b>
3528     * Action would contain either an operation or an assertion.
3529     * </p> 
3530         */
3531        @Block()        
3532        public static class SetupAction 
3533            extends  BaseIdentifiableElement        implements IResourceBlock {
3534        
3535        @Child(name="operation", order=0, min=0, max=1, summary=false, modifier=false)  
3536        @Description(
3537                shortDefinition="",
3538                formalDefinition="The operation to perform"
3539        )
3540        private SetupActionOperation myOperation;
3541        
3542        @Child(name="assert", order=1, min=0, max=1, summary=false, modifier=false)     
3543        @Description(
3544                shortDefinition="",
3545                formalDefinition="Evaluates the results of previous operations to determine if the server under test behaves appropriately."
3546        )
3547        private SetupActionAssert myAssert;
3548        
3549
3550        @Override
3551        public boolean isEmpty() {
3552                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myOperation,  myAssert);
3553        }
3554        
3555        @Override
3556        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
3557                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myOperation, myAssert);
3558        }
3559
3560        /**
3561         * Gets the value(s) for <b>operation</b> ().
3562         * creating it if it does
3563         * not exist. Will not return <code>null</code>.
3564         *
3565     * <p>
3566     * <b>Definition:</b>
3567     * The operation to perform
3568     * </p> 
3569         */
3570        public SetupActionOperation getOperation() {  
3571                if (myOperation == null) {
3572                        myOperation = new SetupActionOperation();
3573                }
3574                return myOperation;
3575        }
3576
3577        /**
3578         * Sets the value(s) for <b>operation</b> ()
3579         *
3580     * <p>
3581     * <b>Definition:</b>
3582     * The operation to perform
3583     * </p> 
3584         */
3585        public SetupAction setOperation(SetupActionOperation theValue) {
3586                myOperation = theValue;
3587                return this;
3588        }
3589        
3590        
3591
3592  
3593        /**
3594         * Gets the value(s) for <b>assert</b> ().
3595         * creating it if it does
3596         * not exist. Will not return <code>null</code>.
3597         *
3598     * <p>
3599     * <b>Definition:</b>
3600     * Evaluates the results of previous operations to determine if the server under test behaves appropriately.
3601     * </p> 
3602         */
3603        public SetupActionAssert getAssert() {  
3604                if (myAssert == null) {
3605                        myAssert = new SetupActionAssert();
3606                }
3607                return myAssert;
3608        }
3609
3610        /**
3611         * Sets the value(s) for <b>assert</b> ()
3612         *
3613     * <p>
3614     * <b>Definition:</b>
3615     * Evaluates the results of previous operations to determine if the server under test behaves appropriately.
3616     * </p> 
3617         */
3618        public SetupAction setAssert(SetupActionAssert theValue) {
3619                myAssert = theValue;
3620                return this;
3621        }
3622        
3623        
3624
3625  
3626
3627
3628        }
3629
3630        /**
3631         * Block class for child element: <b>TestScript.setup.action.operation</b> ()
3632         *
3633     * <p>
3634     * <b>Definition:</b>
3635     * The operation to perform
3636     * </p> 
3637         */
3638        @Block()        
3639        public static class SetupActionOperation 
3640            extends  BaseIdentifiableElement        implements IResourceBlock {
3641        
3642        @Child(name="type", type=CodingDt.class, order=0, min=0, max=1, summary=false, modifier=false)  
3643        @Description(
3644                shortDefinition="",
3645                formalDefinition="Server interaction or operation type"
3646        )
3647        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/valueset-testscript-operation-codes")
3648        private CodingDt myType;
3649        
3650        @Child(name="resource", type=CodeDt.class, order=1, min=0, max=1, summary=false, modifier=false)        
3651        @Description(
3652                shortDefinition="",
3653                formalDefinition="The type of the resource.  See http://hl7-fhir.github.io/resourcelist.html."
3654        )
3655        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/defined-types")
3656        private CodeDt myResource;
3657        
3658        @Child(name="label", type=StringDt.class, order=2, min=0, max=1, summary=false, modifier=false) 
3659        @Description(
3660                shortDefinition="",
3661                formalDefinition="The label would be used for tracking/logging purposes by test engines."
3662        )
3663        private StringDt myLabel;
3664        
3665        @Child(name="description", type=StringDt.class, order=3, min=0, max=1, summary=false, modifier=false)   
3666        @Description(
3667                shortDefinition="",
3668                formalDefinition="The description would be used by test engines for tracking and reporting purposes."
3669        )
3670        private StringDt myDescription;
3671        
3672        @Child(name="accept", type=CodeDt.class, order=4, min=0, max=1, summary=false, modifier=false)  
3673        @Description(
3674                shortDefinition="",
3675                formalDefinition="The content-type or mime-type to use for RESTful operation in the 'Accept' header."
3676        )
3677        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/content-type")
3678        private BoundCodeDt<ContentTypeEnum> myAccept;
3679        
3680        @Child(name="contentType", type=CodeDt.class, order=5, min=0, max=1, summary=false, modifier=false)     
3681        @Description(
3682                shortDefinition="",
3683                formalDefinition="The content-type or mime-type to use for RESTful operation in the 'Content-Type' header."
3684        )
3685        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/content-type")
3686        private BoundCodeDt<ContentTypeEnum> myContentType;
3687        
3688        @Child(name="destination", type=IntegerDt.class, order=6, min=0, max=1, summary=false, modifier=false)  
3689        @Description(
3690                shortDefinition="",
3691                formalDefinition="Which server to perform the operation on."
3692        )
3693        private IntegerDt myDestination;
3694        
3695        @Child(name="encodeRequestUrl", type=BooleanDt.class, order=7, min=0, max=1, summary=false, modifier=false)     
3696        @Description(
3697                shortDefinition="",
3698                formalDefinition="Whether or not to implicitly send the request url in encoded format. The default is true to match the standard RESTful client behavior. Set to false when communicating with a server that does not support encoded url paths."
3699        )
3700        private BooleanDt myEncodeRequestUrl;
3701        
3702        @Child(name="params", type=StringDt.class, order=8, min=0, max=1, summary=false, modifier=false)        
3703        @Description(
3704                shortDefinition="",
3705                formalDefinition="Path plus parameters after [type].  Used to set parts of the request URL explicitly."
3706        )
3707        private StringDt myParams;
3708        
3709        @Child(name="requestHeader", order=9, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
3710        @Description(
3711                shortDefinition="",
3712                formalDefinition="Header elements would be used to set HTTP headers."
3713        )
3714        private java.util.List<SetupActionOperationRequestHeader> myRequestHeader;
3715        
3716        @Child(name="responseId", type=IdDt.class, order=10, min=0, max=1, summary=false, modifier=false)       
3717        @Description(
3718                shortDefinition="",
3719                formalDefinition="The fixture id (maybe new) to map to the response."
3720        )
3721        private IdDt myResponseId;
3722        
3723        @Child(name="sourceId", type=IdDt.class, order=11, min=0, max=1, summary=false, modifier=false) 
3724        @Description(
3725                shortDefinition="",
3726                formalDefinition="The id of the fixture used as the body of a PUT or POST request."
3727        )
3728        private IdDt mySourceId;
3729        
3730        @Child(name="targetId", type=IdDt.class, order=12, min=0, max=1, summary=false, modifier=false) 
3731        @Description(
3732                shortDefinition="",
3733                formalDefinition="Id of fixture used for extracting the [id],  [type], and [vid] for GET requests"
3734        )
3735        private IdDt myTargetId;
3736        
3737        @Child(name="url", type=StringDt.class, order=13, min=0, max=1, summary=false, modifier=false)  
3738        @Description(
3739                shortDefinition="",
3740                formalDefinition="Complete request URL."
3741        )
3742        private StringDt myUrl;
3743        
3744
3745        @Override
3746        public boolean isEmpty() {
3747                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myType,  myResource,  myLabel,  myDescription,  myAccept,  myContentType,  myDestination,  myEncodeRequestUrl,  myParams,  myRequestHeader,  myResponseId,  mySourceId,  myTargetId,  myUrl);
3748        }
3749        
3750        @Override
3751        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
3752                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myType, myResource, myLabel, myDescription, myAccept, myContentType, myDestination, myEncodeRequestUrl, myParams, myRequestHeader, myResponseId, mySourceId, myTargetId, myUrl);
3753        }
3754
3755        /**
3756         * Gets the value(s) for <b>type</b> ().
3757         * creating it if it does
3758         * not exist. Will not return <code>null</code>.
3759         *
3760     * <p>
3761     * <b>Definition:</b>
3762     * Server interaction or operation type
3763     * </p> 
3764         */
3765        public CodingDt getType() {  
3766                if (myType == null) {
3767                        myType = new CodingDt();
3768                }
3769                return myType;
3770        }
3771
3772        /**
3773         * Sets the value(s) for <b>type</b> ()
3774         *
3775     * <p>
3776     * <b>Definition:</b>
3777     * Server interaction or operation type
3778     * </p> 
3779         */
3780        public SetupActionOperation setType(CodingDt theValue) {
3781                myType = theValue;
3782                return this;
3783        }
3784        
3785        
3786
3787  
3788        /**
3789         * Gets the value(s) for <b>resource</b> ().
3790         * creating it if it does
3791         * not exist. Will not return <code>null</code>.
3792         *
3793     * <p>
3794     * <b>Definition:</b>
3795     * The type of the resource.  See http://hl7-fhir.github.io/resourcelist.html.
3796     * </p> 
3797         */
3798        public CodeDt getResourceElement() {  
3799                if (myResource == null) {
3800                        myResource = new CodeDt();
3801                }
3802                return myResource;
3803        }
3804
3805        
3806        /**
3807         * Gets the value(s) for <b>resource</b> ().
3808         * creating it if it does
3809         * not exist. This method may return <code>null</code>.
3810         *
3811     * <p>
3812     * <b>Definition:</b>
3813     * The type of the resource.  See http://hl7-fhir.github.io/resourcelist.html.
3814     * </p> 
3815         */
3816        public String getResource() {  
3817                return getResourceElement().getValue();
3818        }
3819
3820        /**
3821         * Sets the value(s) for <b>resource</b> ()
3822         *
3823     * <p>
3824     * <b>Definition:</b>
3825     * The type of the resource.  See http://hl7-fhir.github.io/resourcelist.html.
3826     * </p> 
3827         */
3828        public SetupActionOperation setResource(CodeDt theValue) {
3829                myResource = theValue;
3830                return this;
3831        }
3832        
3833        
3834
3835        /**
3836         * Sets the value for <b>resource</b> ()
3837         *
3838     * <p>
3839     * <b>Definition:</b>
3840     * The type of the resource.  See http://hl7-fhir.github.io/resourcelist.html.
3841     * </p> 
3842         */
3843        public SetupActionOperation setResource( String theCode) {
3844                myResource = new CodeDt(theCode); 
3845                return this; 
3846        }
3847
3848 
3849        /**
3850         * Gets the value(s) for <b>label</b> ().
3851         * creating it if it does
3852         * not exist. Will not return <code>null</code>.
3853         *
3854     * <p>
3855     * <b>Definition:</b>
3856     * The label would be used for tracking/logging purposes by test engines.
3857     * </p> 
3858         */
3859        public StringDt getLabelElement() {  
3860                if (myLabel == null) {
3861                        myLabel = new StringDt();
3862                }
3863                return myLabel;
3864        }
3865
3866        
3867        /**
3868         * Gets the value(s) for <b>label</b> ().
3869         * creating it if it does
3870         * not exist. This method may return <code>null</code>.
3871         *
3872     * <p>
3873     * <b>Definition:</b>
3874     * The label would be used for tracking/logging purposes by test engines.
3875     * </p> 
3876         */
3877        public String getLabel() {  
3878                return getLabelElement().getValue();
3879        }
3880
3881        /**
3882         * Sets the value(s) for <b>label</b> ()
3883         *
3884     * <p>
3885     * <b>Definition:</b>
3886     * The label would be used for tracking/logging purposes by test engines.
3887     * </p> 
3888         */
3889        public SetupActionOperation setLabel(StringDt theValue) {
3890                myLabel = theValue;
3891                return this;
3892        }
3893        
3894        
3895
3896        /**
3897         * Sets the value for <b>label</b> ()
3898         *
3899     * <p>
3900     * <b>Definition:</b>
3901     * The label would be used for tracking/logging purposes by test engines.
3902     * </p> 
3903         */
3904        public SetupActionOperation setLabel( String theString) {
3905                myLabel = new StringDt(theString); 
3906                return this; 
3907        }
3908
3909 
3910        /**
3911         * Gets the value(s) for <b>description</b> ().
3912         * creating it if it does
3913         * not exist. Will not return <code>null</code>.
3914         *
3915     * <p>
3916     * <b>Definition:</b>
3917     * The description would be used by test engines for tracking and reporting purposes.
3918     * </p> 
3919         */
3920        public StringDt getDescriptionElement() {  
3921                if (myDescription == null) {
3922                        myDescription = new StringDt();
3923                }
3924                return myDescription;
3925        }
3926
3927        
3928        /**
3929         * Gets the value(s) for <b>description</b> ().
3930         * creating it if it does
3931         * not exist. This method may return <code>null</code>.
3932         *
3933     * <p>
3934     * <b>Definition:</b>
3935     * The description would be used by test engines for tracking and reporting purposes.
3936     * </p> 
3937         */
3938        public String getDescription() {  
3939                return getDescriptionElement().getValue();
3940        }
3941
3942        /**
3943         * Sets the value(s) for <b>description</b> ()
3944         *
3945     * <p>
3946     * <b>Definition:</b>
3947     * The description would be used by test engines for tracking and reporting purposes.
3948     * </p> 
3949         */
3950        public SetupActionOperation setDescription(StringDt theValue) {
3951                myDescription = theValue;
3952                return this;
3953        }
3954        
3955        
3956
3957        /**
3958         * Sets the value for <b>description</b> ()
3959         *
3960     * <p>
3961     * <b>Definition:</b>
3962     * The description would be used by test engines for tracking and reporting purposes.
3963     * </p> 
3964         */
3965        public SetupActionOperation setDescription( String theString) {
3966                myDescription = new StringDt(theString); 
3967                return this; 
3968        }
3969
3970 
3971        /**
3972         * Gets the value(s) for <b>accept</b> ().
3973         * creating it if it does
3974         * not exist. Will not return <code>null</code>.
3975         *
3976     * <p>
3977     * <b>Definition:</b>
3978     * The content-type or mime-type to use for RESTful operation in the 'Accept' header.
3979     * </p> 
3980         */
3981        public BoundCodeDt<ContentTypeEnum> getAcceptElement() {  
3982                if (myAccept == null) {
3983                        myAccept = new BoundCodeDt<ContentTypeEnum>(ContentTypeEnum.VALUESET_BINDER);
3984                }
3985                return myAccept;
3986        }
3987
3988        
3989        /**
3990         * Gets the value(s) for <b>accept</b> ().
3991         * creating it if it does
3992         * not exist. This method may return <code>null</code>.
3993         *
3994     * <p>
3995     * <b>Definition:</b>
3996     * The content-type or mime-type to use for RESTful operation in the 'Accept' header.
3997     * </p> 
3998         */
3999        public String getAccept() {  
4000                return getAcceptElement().getValue();
4001        }
4002
4003        /**
4004         * Sets the value(s) for <b>accept</b> ()
4005         *
4006     * <p>
4007     * <b>Definition:</b>
4008     * The content-type or mime-type to use for RESTful operation in the 'Accept' header.
4009     * </p> 
4010         */
4011        public SetupActionOperation setAccept(BoundCodeDt<ContentTypeEnum> theValue) {
4012                myAccept = theValue;
4013                return this;
4014        }
4015        
4016        
4017
4018        /**
4019         * Sets the value(s) for <b>accept</b> ()
4020         *
4021     * <p>
4022     * <b>Definition:</b>
4023     * The content-type or mime-type to use for RESTful operation in the 'Accept' header.
4024     * </p> 
4025         */
4026        public SetupActionOperation setAccept(ContentTypeEnum theValue) {
4027                setAccept(new BoundCodeDt<ContentTypeEnum>(ContentTypeEnum.VALUESET_BINDER, theValue));
4028                
4029/*
4030                getAcceptElement().setValueAsEnum(theValue);
4031*/
4032                return this;
4033        }
4034
4035  
4036        /**
4037         * Gets the value(s) for <b>contentType</b> ().
4038         * creating it if it does
4039         * not exist. Will not return <code>null</code>.
4040         *
4041     * <p>
4042     * <b>Definition:</b>
4043     * The content-type or mime-type to use for RESTful operation in the 'Content-Type' header.
4044     * </p> 
4045         */
4046        public BoundCodeDt<ContentTypeEnum> getContentTypeElement() {  
4047                if (myContentType == null) {
4048                        myContentType = new BoundCodeDt<ContentTypeEnum>(ContentTypeEnum.VALUESET_BINDER);
4049                }
4050                return myContentType;
4051        }
4052
4053        
4054        /**
4055         * Gets the value(s) for <b>contentType</b> ().
4056         * creating it if it does
4057         * not exist. This method may return <code>null</code>.
4058         *
4059     * <p>
4060     * <b>Definition:</b>
4061     * The content-type or mime-type to use for RESTful operation in the 'Content-Type' header.
4062     * </p> 
4063         */
4064        public String getContentType() {  
4065                return getContentTypeElement().getValue();
4066        }
4067
4068        /**
4069         * Sets the value(s) for <b>contentType</b> ()
4070         *
4071     * <p>
4072     * <b>Definition:</b>
4073     * The content-type or mime-type to use for RESTful operation in the 'Content-Type' header.
4074     * </p> 
4075         */
4076        public SetupActionOperation setContentType(BoundCodeDt<ContentTypeEnum> theValue) {
4077                myContentType = theValue;
4078                return this;
4079        }
4080        
4081        
4082
4083        /**
4084         * Sets the value(s) for <b>contentType</b> ()
4085         *
4086     * <p>
4087     * <b>Definition:</b>
4088     * The content-type or mime-type to use for RESTful operation in the 'Content-Type' header.
4089     * </p> 
4090         */
4091        public SetupActionOperation setContentType(ContentTypeEnum theValue) {
4092                setContentType(new BoundCodeDt<ContentTypeEnum>(ContentTypeEnum.VALUESET_BINDER, theValue));
4093                
4094/*
4095                getContentTypeElement().setValueAsEnum(theValue);
4096*/
4097                return this;
4098        }
4099
4100  
4101        /**
4102         * Gets the value(s) for <b>destination</b> ().
4103         * creating it if it does
4104         * not exist. Will not return <code>null</code>.
4105         *
4106     * <p>
4107     * <b>Definition:</b>
4108     * Which server to perform the operation on.
4109     * </p> 
4110         */
4111        public IntegerDt getDestinationElement() {  
4112                if (myDestination == null) {
4113                        myDestination = new IntegerDt();
4114                }
4115                return myDestination;
4116        }
4117
4118        
4119        /**
4120         * Gets the value(s) for <b>destination</b> ().
4121         * creating it if it does
4122         * not exist. This method may return <code>null</code>.
4123         *
4124     * <p>
4125     * <b>Definition:</b>
4126     * Which server to perform the operation on.
4127     * </p> 
4128         */
4129        public Integer getDestination() {  
4130                return getDestinationElement().getValue();
4131        }
4132
4133        /**
4134         * Sets the value(s) for <b>destination</b> ()
4135         *
4136     * <p>
4137     * <b>Definition:</b>
4138     * Which server to perform the operation on.
4139     * </p> 
4140         */
4141        public SetupActionOperation setDestination(IntegerDt theValue) {
4142                myDestination = theValue;
4143                return this;
4144        }
4145        
4146        
4147
4148        /**
4149         * Sets the value for <b>destination</b> ()
4150         *
4151     * <p>
4152     * <b>Definition:</b>
4153     * Which server to perform the operation on.
4154     * </p> 
4155         */
4156        public SetupActionOperation setDestination( int theInteger) {
4157                myDestination = new IntegerDt(theInteger); 
4158                return this; 
4159        }
4160
4161 
4162        /**
4163         * Gets the value(s) for <b>encodeRequestUrl</b> ().
4164         * creating it if it does
4165         * not exist. Will not return <code>null</code>.
4166         *
4167     * <p>
4168     * <b>Definition:</b>
4169     * Whether or not to implicitly send the request url in encoded format. The default is true to match the standard RESTful client behavior. Set to false when communicating with a server that does not support encoded url paths.
4170     * </p> 
4171         */
4172        public BooleanDt getEncodeRequestUrlElement() {  
4173                if (myEncodeRequestUrl == null) {
4174                        myEncodeRequestUrl = new BooleanDt();
4175                }
4176                return myEncodeRequestUrl;
4177        }
4178
4179        
4180        /**
4181         * Gets the value(s) for <b>encodeRequestUrl</b> ().
4182         * creating it if it does
4183         * not exist. This method may return <code>null</code>.
4184         *
4185     * <p>
4186     * <b>Definition:</b>
4187     * Whether or not to implicitly send the request url in encoded format. The default is true to match the standard RESTful client behavior. Set to false when communicating with a server that does not support encoded url paths.
4188     * </p> 
4189         */
4190        public Boolean getEncodeRequestUrl() {  
4191                return getEncodeRequestUrlElement().getValue();
4192        }
4193
4194        /**
4195         * Sets the value(s) for <b>encodeRequestUrl</b> ()
4196         *
4197     * <p>
4198     * <b>Definition:</b>
4199     * Whether or not to implicitly send the request url in encoded format. The default is true to match the standard RESTful client behavior. Set to false when communicating with a server that does not support encoded url paths.
4200     * </p> 
4201         */
4202        public SetupActionOperation setEncodeRequestUrl(BooleanDt theValue) {
4203                myEncodeRequestUrl = theValue;
4204                return this;
4205        }
4206        
4207        
4208
4209        /**
4210         * Sets the value for <b>encodeRequestUrl</b> ()
4211         *
4212     * <p>
4213     * <b>Definition:</b>
4214     * Whether or not to implicitly send the request url in encoded format. The default is true to match the standard RESTful client behavior. Set to false when communicating with a server that does not support encoded url paths.
4215     * </p> 
4216         */
4217        public SetupActionOperation setEncodeRequestUrl( boolean theBoolean) {
4218                myEncodeRequestUrl = new BooleanDt(theBoolean); 
4219                return this; 
4220        }
4221
4222 
4223        /**
4224         * Gets the value(s) for <b>params</b> ().
4225         * creating it if it does
4226         * not exist. Will not return <code>null</code>.
4227         *
4228     * <p>
4229     * <b>Definition:</b>
4230     * Path plus parameters after [type].  Used to set parts of the request URL explicitly.
4231     * </p> 
4232         */
4233        public StringDt getParamsElement() {  
4234                if (myParams == null) {
4235                        myParams = new StringDt();
4236                }
4237                return myParams;
4238        }
4239
4240        
4241        /**
4242         * Gets the value(s) for <b>params</b> ().
4243         * creating it if it does
4244         * not exist. This method may return <code>null</code>.
4245         *
4246     * <p>
4247     * <b>Definition:</b>
4248     * Path plus parameters after [type].  Used to set parts of the request URL explicitly.
4249     * </p> 
4250         */
4251        public String getParams() {  
4252                return getParamsElement().getValue();
4253        }
4254
4255        /**
4256         * Sets the value(s) for <b>params</b> ()
4257         *
4258     * <p>
4259     * <b>Definition:</b>
4260     * Path plus parameters after [type].  Used to set parts of the request URL explicitly.
4261     * </p> 
4262         */
4263        public SetupActionOperation setParams(StringDt theValue) {
4264                myParams = theValue;
4265                return this;
4266        }
4267        
4268        
4269
4270        /**
4271         * Sets the value for <b>params</b> ()
4272         *
4273     * <p>
4274     * <b>Definition:</b>
4275     * Path plus parameters after [type].  Used to set parts of the request URL explicitly.
4276     * </p> 
4277         */
4278        public SetupActionOperation setParams( String theString) {
4279                myParams = new StringDt(theString); 
4280                return this; 
4281        }
4282
4283 
4284        /**
4285         * Gets the value(s) for <b>requestHeader</b> ().
4286         * creating it if it does
4287         * not exist. Will not return <code>null</code>.
4288         *
4289     * <p>
4290     * <b>Definition:</b>
4291     * Header elements would be used to set HTTP headers.
4292     * </p> 
4293         */
4294        public java.util.List<SetupActionOperationRequestHeader> getRequestHeader() {  
4295                if (myRequestHeader == null) {
4296                        myRequestHeader = new java.util.ArrayList<SetupActionOperationRequestHeader>();
4297                }
4298                return myRequestHeader;
4299        }
4300
4301        /**
4302         * Sets the value(s) for <b>requestHeader</b> ()
4303         *
4304     * <p>
4305     * <b>Definition:</b>
4306     * Header elements would be used to set HTTP headers.
4307     * </p> 
4308         */
4309        public SetupActionOperation setRequestHeader(java.util.List<SetupActionOperationRequestHeader> theValue) {
4310                myRequestHeader = theValue;
4311                return this;
4312        }
4313        
4314        
4315
4316        /**
4317         * Adds and returns a new value for <b>requestHeader</b> ()
4318         *
4319     * <p>
4320     * <b>Definition:</b>
4321     * Header elements would be used to set HTTP headers.
4322     * </p> 
4323         */
4324        public SetupActionOperationRequestHeader addRequestHeader() {
4325                SetupActionOperationRequestHeader newType = new SetupActionOperationRequestHeader();
4326                getRequestHeader().add(newType);
4327                return newType; 
4328        }
4329
4330        /**
4331         * Adds a given new value for <b>requestHeader</b> ()
4332         *
4333         * <p>
4334         * <b>Definition:</b>
4335         * Header elements would be used to set HTTP headers.
4336         * </p>
4337         * @param theValue The requestHeader to add (must not be <code>null</code>)
4338         */
4339        public SetupActionOperation addRequestHeader(SetupActionOperationRequestHeader theValue) {
4340                if (theValue == null) {
4341                        throw new NullPointerException("theValue must not be null");
4342                }
4343                getRequestHeader().add(theValue);
4344                return this;
4345        }
4346
4347        /**
4348         * Gets the first repetition for <b>requestHeader</b> (),
4349         * creating it if it does not already exist.
4350         *
4351     * <p>
4352     * <b>Definition:</b>
4353     * Header elements would be used to set HTTP headers.
4354     * </p> 
4355         */
4356        public SetupActionOperationRequestHeader getRequestHeaderFirstRep() {
4357                if (getRequestHeader().isEmpty()) {
4358                        return addRequestHeader();
4359                }
4360                return getRequestHeader().get(0); 
4361        }
4362  
4363        /**
4364         * Gets the value(s) for <b>responseId</b> ().
4365         * creating it if it does
4366         * not exist. Will not return <code>null</code>.
4367         *
4368     * <p>
4369     * <b>Definition:</b>
4370     * The fixture id (maybe new) to map to the response.
4371     * </p> 
4372         */
4373        public IdDt getResponseIdElement() {  
4374                if (myResponseId == null) {
4375                        myResponseId = new IdDt();
4376                }
4377                return myResponseId;
4378        }
4379
4380        
4381        /**
4382         * Gets the value(s) for <b>responseId</b> ().
4383         * creating it if it does
4384         * not exist. This method may return <code>null</code>.
4385         *
4386     * <p>
4387     * <b>Definition:</b>
4388     * The fixture id (maybe new) to map to the response.
4389     * </p> 
4390         */
4391        public String getResponseId() {  
4392                return getResponseIdElement().getValue();
4393        }
4394
4395        /**
4396         * Sets the value(s) for <b>responseId</b> ()
4397         *
4398     * <p>
4399     * <b>Definition:</b>
4400     * The fixture id (maybe new) to map to the response.
4401     * </p> 
4402         */
4403        public SetupActionOperation setResponseId(IdDt theValue) {
4404                myResponseId = theValue;
4405                return this;
4406        }
4407        
4408        
4409
4410        /**
4411         * Sets the value for <b>responseId</b> ()
4412         *
4413     * <p>
4414     * <b>Definition:</b>
4415     * The fixture id (maybe new) to map to the response.
4416     * </p> 
4417         */
4418        public SetupActionOperation setResponseId( String theId) {
4419                myResponseId = new IdDt(theId); 
4420                return this; 
4421        }
4422
4423 
4424        /**
4425         * Gets the value(s) for <b>sourceId</b> ().
4426         * creating it if it does
4427         * not exist. Will not return <code>null</code>.
4428         *
4429     * <p>
4430     * <b>Definition:</b>
4431     * The id of the fixture used as the body of a PUT or POST request.
4432     * </p> 
4433         */
4434        public IdDt getSourceIdElement() {  
4435                if (mySourceId == null) {
4436                        mySourceId = new IdDt();
4437                }
4438                return mySourceId;
4439        }
4440
4441        
4442        /**
4443         * Gets the value(s) for <b>sourceId</b> ().
4444         * creating it if it does
4445         * not exist. This method may return <code>null</code>.
4446         *
4447     * <p>
4448     * <b>Definition:</b>
4449     * The id of the fixture used as the body of a PUT or POST request.
4450     * </p> 
4451         */
4452        public String getSourceId() {  
4453                return getSourceIdElement().getValue();
4454        }
4455
4456        /**
4457         * Sets the value(s) for <b>sourceId</b> ()
4458         *
4459     * <p>
4460     * <b>Definition:</b>
4461     * The id of the fixture used as the body of a PUT or POST request.
4462     * </p> 
4463         */
4464        public SetupActionOperation setSourceId(IdDt theValue) {
4465                mySourceId = theValue;
4466                return this;
4467        }
4468        
4469        
4470
4471        /**
4472         * Sets the value for <b>sourceId</b> ()
4473         *
4474     * <p>
4475     * <b>Definition:</b>
4476     * The id of the fixture used as the body of a PUT or POST request.
4477     * </p> 
4478         */
4479        public SetupActionOperation setSourceId( String theId) {
4480                mySourceId = new IdDt(theId); 
4481                return this; 
4482        }
4483
4484 
4485        /**
4486         * Gets the value(s) for <b>targetId</b> ().
4487         * creating it if it does
4488         * not exist. Will not return <code>null</code>.
4489         *
4490     * <p>
4491     * <b>Definition:</b>
4492     * Id of fixture used for extracting the [id],  [type], and [vid] for GET requests
4493     * </p> 
4494         */
4495        public IdDt getTargetIdElement() {  
4496                if (myTargetId == null) {
4497                        myTargetId = new IdDt();
4498                }
4499                return myTargetId;
4500        }
4501
4502        
4503        /**
4504         * Gets the value(s) for <b>targetId</b> ().
4505         * creating it if it does
4506         * not exist. This method may return <code>null</code>.
4507         *
4508     * <p>
4509     * <b>Definition:</b>
4510     * Id of fixture used for extracting the [id],  [type], and [vid] for GET requests
4511     * </p> 
4512         */
4513        public String getTargetId() {  
4514                return getTargetIdElement().getValue();
4515        }
4516
4517        /**
4518         * Sets the value(s) for <b>targetId</b> ()
4519         *
4520     * <p>
4521     * <b>Definition:</b>
4522     * Id of fixture used for extracting the [id],  [type], and [vid] for GET requests
4523     * </p> 
4524         */
4525        public SetupActionOperation setTargetId(IdDt theValue) {
4526                myTargetId = theValue;
4527                return this;
4528        }
4529        
4530        
4531
4532        /**
4533         * Sets the value for <b>targetId</b> ()
4534         *
4535     * <p>
4536     * <b>Definition:</b>
4537     * Id of fixture used for extracting the [id],  [type], and [vid] for GET requests
4538     * </p> 
4539         */
4540        public SetupActionOperation setTargetId( String theId) {
4541                myTargetId = new IdDt(theId); 
4542                return this; 
4543        }
4544
4545 
4546        /**
4547         * Gets the value(s) for <b>url</b> ().
4548         * creating it if it does
4549         * not exist. Will not return <code>null</code>.
4550         *
4551     * <p>
4552     * <b>Definition:</b>
4553     * Complete request URL.
4554     * </p> 
4555         */
4556        public StringDt getUrlElement() {  
4557                if (myUrl == null) {
4558                        myUrl = new StringDt();
4559                }
4560                return myUrl;
4561        }
4562
4563        
4564        /**
4565         * Gets the value(s) for <b>url</b> ().
4566         * creating it if it does
4567         * not exist. This method may return <code>null</code>.
4568         *
4569     * <p>
4570     * <b>Definition:</b>
4571     * Complete request URL.
4572     * </p> 
4573         */
4574        public String getUrl() {  
4575                return getUrlElement().getValue();
4576        }
4577
4578        /**
4579         * Sets the value(s) for <b>url</b> ()
4580         *
4581     * <p>
4582     * <b>Definition:</b>
4583     * Complete request URL.
4584     * </p> 
4585         */
4586        public SetupActionOperation setUrl(StringDt theValue) {
4587                myUrl = theValue;
4588                return this;
4589        }
4590        
4591        
4592
4593        /**
4594         * Sets the value for <b>url</b> ()
4595         *
4596     * <p>
4597     * <b>Definition:</b>
4598     * Complete request URL.
4599     * </p> 
4600         */
4601        public SetupActionOperation setUrl( String theString) {
4602                myUrl = new StringDt(theString); 
4603                return this; 
4604        }
4605
4606 
4607
4608
4609        }
4610
4611        /**
4612         * Block class for child element: <b>TestScript.setup.action.operation.requestHeader</b> ()
4613         *
4614     * <p>
4615     * <b>Definition:</b>
4616     * Header elements would be used to set HTTP headers.
4617     * </p> 
4618         */
4619        @Block()        
4620        public static class SetupActionOperationRequestHeader 
4621            extends  BaseIdentifiableElement        implements IResourceBlock {
4622        
4623        @Child(name="field", type=StringDt.class, order=0, min=1, max=1, summary=false, modifier=false) 
4624        @Description(
4625                shortDefinition="",
4626                formalDefinition="The HTTP header field e.g. \"Accept\""
4627        )
4628        private StringDt myField;
4629        
4630        @Child(name="value", type=StringDt.class, order=1, min=1, max=1, summary=false, modifier=false) 
4631        @Description(
4632                shortDefinition="",
4633                formalDefinition="The value of the header e.g. \"application/xml\""
4634        )
4635        private StringDt myValue;
4636        
4637
4638        @Override
4639        public boolean isEmpty() {
4640                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myField,  myValue);
4641        }
4642        
4643        @Override
4644        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
4645                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myField, myValue);
4646        }
4647
4648        /**
4649         * Gets the value(s) for <b>field</b> ().
4650         * creating it if it does
4651         * not exist. Will not return <code>null</code>.
4652         *
4653     * <p>
4654     * <b>Definition:</b>
4655     * The HTTP header field e.g. \&quot;Accept\&quot;
4656     * </p> 
4657         */
4658        public StringDt getFieldElement() {  
4659                if (myField == null) {
4660                        myField = new StringDt();
4661                }
4662                return myField;
4663        }
4664
4665        
4666        /**
4667         * Gets the value(s) for <b>field</b> ().
4668         * creating it if it does
4669         * not exist. This method may return <code>null</code>.
4670         *
4671     * <p>
4672     * <b>Definition:</b>
4673     * The HTTP header field e.g. \&quot;Accept\&quot;
4674     * </p> 
4675         */
4676        public String getField() {  
4677                return getFieldElement().getValue();
4678        }
4679
4680        /**
4681         * Sets the value(s) for <b>field</b> ()
4682         *
4683     * <p>
4684     * <b>Definition:</b>
4685     * The HTTP header field e.g. \&quot;Accept\&quot;
4686     * </p> 
4687         */
4688        public SetupActionOperationRequestHeader setField(StringDt theValue) {
4689                myField = theValue;
4690                return this;
4691        }
4692        
4693        
4694
4695        /**
4696         * Sets the value for <b>field</b> ()
4697         *
4698     * <p>
4699     * <b>Definition:</b>
4700     * The HTTP header field e.g. \&quot;Accept\&quot;
4701     * </p> 
4702         */
4703        public SetupActionOperationRequestHeader setField( String theString) {
4704                myField = new StringDt(theString); 
4705                return this; 
4706        }
4707
4708 
4709        /**
4710         * Gets the value(s) for <b>value</b> ().
4711         * creating it if it does
4712         * not exist. Will not return <code>null</code>.
4713         *
4714     * <p>
4715     * <b>Definition:</b>
4716     * The value of the header e.g. \&quot;application/xml\&quot;
4717     * </p> 
4718         */
4719        public StringDt getValueElement() {  
4720                if (myValue == null) {
4721                        myValue = new StringDt();
4722                }
4723                return myValue;
4724        }
4725
4726        
4727        /**
4728         * Gets the value(s) for <b>value</b> ().
4729         * creating it if it does
4730         * not exist. This method may return <code>null</code>.
4731         *
4732     * <p>
4733     * <b>Definition:</b>
4734     * The value of the header e.g. \&quot;application/xml\&quot;
4735     * </p> 
4736         */
4737        public String getValue() {  
4738                return getValueElement().getValue();
4739        }
4740
4741        /**
4742         * Sets the value(s) for <b>value</b> ()
4743         *
4744     * <p>
4745     * <b>Definition:</b>
4746     * The value of the header e.g. \&quot;application/xml\&quot;
4747     * </p> 
4748         */
4749        public SetupActionOperationRequestHeader setValue(StringDt theValue) {
4750                myValue = theValue;
4751                return this;
4752        }
4753        
4754        
4755
4756        /**
4757         * Sets the value for <b>value</b> ()
4758         *
4759     * <p>
4760     * <b>Definition:</b>
4761     * The value of the header e.g. \&quot;application/xml\&quot;
4762     * </p> 
4763         */
4764        public SetupActionOperationRequestHeader setValue( String theString) {
4765                myValue = new StringDt(theString); 
4766                return this; 
4767        }
4768
4769 
4770
4771
4772        }
4773
4774
4775
4776        /**
4777         * Block class for child element: <b>TestScript.setup.action.assert</b> ()
4778         *
4779     * <p>
4780     * <b>Definition:</b>
4781     * Evaluates the results of previous operations to determine if the server under test behaves appropriately.
4782     * </p> 
4783         */
4784        @Block()        
4785        public static class SetupActionAssert 
4786            extends  BaseIdentifiableElement        implements IResourceBlock {
4787        
4788        @Child(name="label", type=StringDt.class, order=0, min=0, max=1, summary=false, modifier=false) 
4789        @Description(
4790                shortDefinition="",
4791                formalDefinition="The label would be used for tracking/logging purposes by test engines."
4792        )
4793        private StringDt myLabel;
4794        
4795        @Child(name="description", type=StringDt.class, order=1, min=0, max=1, summary=false, modifier=false)   
4796        @Description(
4797                shortDefinition="",
4798                formalDefinition="The description would be used by test engines for tracking and reporting purposes."
4799        )
4800        private StringDt myDescription;
4801        
4802        @Child(name="direction", type=CodeDt.class, order=2, min=0, max=1, summary=false, modifier=false)       
4803        @Description(
4804                shortDefinition="",
4805                formalDefinition="The direction to use for the assertion."
4806        )
4807        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/assert-direction-codes")
4808        private BoundCodeDt<AssertionDirectionTypeEnum> myDirection;
4809        
4810        @Child(name="compareToSourceId", type=StringDt.class, order=3, min=0, max=1, summary=false, modifier=false)     
4811        @Description(
4812                shortDefinition="",
4813                formalDefinition="Id of fixture used to compare the \"sourceId/path\" evaluations to."
4814        )
4815        private StringDt myCompareToSourceId;
4816        
4817        @Child(name="compareToSourcePath", type=StringDt.class, order=4, min=0, max=1, summary=false, modifier=false)   
4818        @Description(
4819                shortDefinition="",
4820                formalDefinition="XPath or JSONPath expression against fixture used to compare the \"sourceId/path\" evaluations to."
4821        )
4822        private StringDt myCompareToSourcePath;
4823        
4824        @Child(name="contentType", type=CodeDt.class, order=5, min=0, max=1, summary=false, modifier=false)     
4825        @Description(
4826                shortDefinition="",
4827                formalDefinition="The content-type or mime-type to use for RESTful operation in the 'Content-Type' header."
4828        )
4829        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/content-type")
4830        private BoundCodeDt<ContentTypeEnum> myContentType;
4831        
4832        @Child(name="headerField", type=StringDt.class, order=6, min=0, max=1, summary=false, modifier=false)   
4833        @Description(
4834                shortDefinition="",
4835                formalDefinition="The HTTP header field name e.g. 'Location'"
4836        )
4837        private StringDt myHeaderField;
4838        
4839        @Child(name="minimumId", type=StringDt.class, order=7, min=0, max=1, summary=false, modifier=false)     
4840        @Description(
4841                shortDefinition="",
4842                formalDefinition="The ID of a fixture.  Asserts that the response contains at a minimumId the fixture specified by minimumId."
4843        )
4844        private StringDt myMinimumId;
4845        
4846        @Child(name="navigationLinks", type=BooleanDt.class, order=8, min=0, max=1, summary=false, modifier=false)      
4847        @Description(
4848                shortDefinition="",
4849                formalDefinition="Whether or not the test execution performs validation on the bundle navigation links"
4850        )
4851        private BooleanDt myNavigationLinks;
4852        
4853        @Child(name="operator", type=CodeDt.class, order=9, min=0, max=1, summary=false, modifier=false)        
4854        @Description(
4855                shortDefinition="",
4856                formalDefinition="The operator type"
4857        )
4858        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/assert-operator-codes")
4859        private BoundCodeDt<AssertionOperatorTypeEnum> myOperator;
4860        
4861        @Child(name="path", type=StringDt.class, order=10, min=0, max=1, summary=false, modifier=false) 
4862        @Description(
4863                shortDefinition="",
4864                formalDefinition="The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server."
4865        )
4866        private StringDt myPath;
4867        
4868        @Child(name="resource", type=CodeDt.class, order=11, min=0, max=1, summary=false, modifier=false)       
4869        @Description(
4870                shortDefinition="",
4871                formalDefinition="The type of the resource.  See http://hl7-fhir.github.io/resourcelist.html."
4872        )
4873        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/defined-types")
4874        private CodeDt myResource;
4875        
4876        @Child(name="response", type=CodeDt.class, order=12, min=0, max=1, summary=false, modifier=false)       
4877        @Description(
4878                shortDefinition="",
4879                formalDefinition="okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable"
4880        )
4881        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/assert-response-code-types")
4882        private BoundCodeDt<AssertionResponseTypesEnum> myResponse;
4883        
4884        @Child(name="responseCode", type=StringDt.class, order=13, min=0, max=1, summary=false, modifier=false) 
4885        @Description(
4886                shortDefinition="",
4887                formalDefinition="The value of the HTTP response code to be tested"
4888        )
4889        private StringDt myResponseCode;
4890        
4891        @Child(name="sourceId", type=IdDt.class, order=14, min=0, max=1, summary=false, modifier=false) 
4892        @Description(
4893                shortDefinition="",
4894                formalDefinition="Fixture to evaluate the XPath/JSONPath expression or the headerField  against."
4895        )
4896        private IdDt mySourceId;
4897        
4898        @Child(name="validateProfileId", type=IdDt.class, order=15, min=0, max=1, summary=false, modifier=false)        
4899        @Description(
4900                shortDefinition="",
4901                formalDefinition="The ID of the Profile to validate against."
4902        )
4903        private IdDt myValidateProfileId;
4904        
4905        @Child(name="value", type=StringDt.class, order=16, min=0, max=1, summary=false, modifier=false)        
4906        @Description(
4907                shortDefinition="",
4908                formalDefinition="The value to compare to"
4909        )
4910        private StringDt myValue;
4911        
4912        @Child(name="warningOnly", type=BooleanDt.class, order=17, min=0, max=1, summary=false, modifier=false) 
4913        @Description(
4914                shortDefinition="",
4915                formalDefinition="Whether or not the test execution will produce a warning only on error for this assert"
4916        )
4917        private BooleanDt myWarningOnly;
4918        
4919
4920        @Override
4921        public boolean isEmpty() {
4922                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myLabel,  myDescription,  myDirection,  myCompareToSourceId,  myCompareToSourcePath,  myContentType,  myHeaderField,  myMinimumId,  myNavigationLinks,  myOperator,  myPath,  myResource,  myResponse,  myResponseCode,  mySourceId,  myValidateProfileId,  myValue,  myWarningOnly);
4923        }
4924        
4925        @Override
4926        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
4927                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myLabel, myDescription, myDirection, myCompareToSourceId, myCompareToSourcePath, myContentType, myHeaderField, myMinimumId, myNavigationLinks, myOperator, myPath, myResource, myResponse, myResponseCode, mySourceId, myValidateProfileId, myValue, myWarningOnly);
4928        }
4929
4930        /**
4931         * Gets the value(s) for <b>label</b> ().
4932         * creating it if it does
4933         * not exist. Will not return <code>null</code>.
4934         *
4935     * <p>
4936     * <b>Definition:</b>
4937     * The label would be used for tracking/logging purposes by test engines.
4938     * </p> 
4939         */
4940        public StringDt getLabelElement() {  
4941                if (myLabel == null) {
4942                        myLabel = new StringDt();
4943                }
4944                return myLabel;
4945        }
4946
4947        
4948        /**
4949         * Gets the value(s) for <b>label</b> ().
4950         * creating it if it does
4951         * not exist. This method may return <code>null</code>.
4952         *
4953     * <p>
4954     * <b>Definition:</b>
4955     * The label would be used for tracking/logging purposes by test engines.
4956     * </p> 
4957         */
4958        public String getLabel() {  
4959                return getLabelElement().getValue();
4960        }
4961
4962        /**
4963         * Sets the value(s) for <b>label</b> ()
4964         *
4965     * <p>
4966     * <b>Definition:</b>
4967     * The label would be used for tracking/logging purposes by test engines.
4968     * </p> 
4969         */
4970        public SetupActionAssert setLabel(StringDt theValue) {
4971                myLabel = theValue;
4972                return this;
4973        }
4974        
4975        
4976
4977        /**
4978         * Sets the value for <b>label</b> ()
4979         *
4980     * <p>
4981     * <b>Definition:</b>
4982     * The label would be used for tracking/logging purposes by test engines.
4983     * </p> 
4984         */
4985        public SetupActionAssert setLabel( String theString) {
4986                myLabel = new StringDt(theString); 
4987                return this; 
4988        }
4989
4990 
4991        /**
4992         * Gets the value(s) for <b>description</b> ().
4993         * creating it if it does
4994         * not exist. Will not return <code>null</code>.
4995         *
4996     * <p>
4997     * <b>Definition:</b>
4998     * The description would be used by test engines for tracking and reporting purposes.
4999     * </p> 
5000         */
5001        public StringDt getDescriptionElement() {  
5002                if (myDescription == null) {
5003                        myDescription = new StringDt();
5004                }
5005                return myDescription;
5006        }
5007
5008        
5009        /**
5010         * Gets the value(s) for <b>description</b> ().
5011         * creating it if it does
5012         * not exist. This method may return <code>null</code>.
5013         *
5014     * <p>
5015     * <b>Definition:</b>
5016     * The description would be used by test engines for tracking and reporting purposes.
5017     * </p> 
5018         */
5019        public String getDescription() {  
5020                return getDescriptionElement().getValue();
5021        }
5022
5023        /**
5024         * Sets the value(s) for <b>description</b> ()
5025         *
5026     * <p>
5027     * <b>Definition:</b>
5028     * The description would be used by test engines for tracking and reporting purposes.
5029     * </p> 
5030         */
5031        public SetupActionAssert setDescription(StringDt theValue) {
5032                myDescription = theValue;
5033                return this;
5034        }
5035        
5036        
5037
5038        /**
5039         * Sets the value for <b>description</b> ()
5040         *
5041     * <p>
5042     * <b>Definition:</b>
5043     * The description would be used by test engines for tracking and reporting purposes.
5044     * </p> 
5045         */
5046        public SetupActionAssert setDescription( String theString) {
5047                myDescription = new StringDt(theString); 
5048                return this; 
5049        }
5050
5051 
5052        /**
5053         * Gets the value(s) for <b>direction</b> ().
5054         * creating it if it does
5055         * not exist. Will not return <code>null</code>.
5056         *
5057     * <p>
5058     * <b>Definition:</b>
5059     * The direction to use for the assertion.
5060     * </p> 
5061         */
5062        public BoundCodeDt<AssertionDirectionTypeEnum> getDirectionElement() {  
5063                if (myDirection == null) {
5064                        myDirection = new BoundCodeDt<AssertionDirectionTypeEnum>(AssertionDirectionTypeEnum.VALUESET_BINDER);
5065                }
5066                return myDirection;
5067        }
5068
5069        
5070        /**
5071         * Gets the value(s) for <b>direction</b> ().
5072         * creating it if it does
5073         * not exist. This method may return <code>null</code>.
5074         *
5075     * <p>
5076     * <b>Definition:</b>
5077     * The direction to use for the assertion.
5078     * </p> 
5079         */
5080        public String getDirection() {  
5081                return getDirectionElement().getValue();
5082        }
5083
5084        /**
5085         * Sets the value(s) for <b>direction</b> ()
5086         *
5087     * <p>
5088     * <b>Definition:</b>
5089     * The direction to use for the assertion.
5090     * </p> 
5091         */
5092        public SetupActionAssert setDirection(BoundCodeDt<AssertionDirectionTypeEnum> theValue) {
5093                myDirection = theValue;
5094                return this;
5095        }
5096        
5097        
5098
5099        /**
5100         * Sets the value(s) for <b>direction</b> ()
5101         *
5102     * <p>
5103     * <b>Definition:</b>
5104     * The direction to use for the assertion.
5105     * </p> 
5106         */
5107        public SetupActionAssert setDirection(AssertionDirectionTypeEnum theValue) {
5108                setDirection(new BoundCodeDt<AssertionDirectionTypeEnum>(AssertionDirectionTypeEnum.VALUESET_BINDER, theValue));
5109                
5110/*
5111                getDirectionElement().setValueAsEnum(theValue);
5112*/
5113                return this;
5114        }
5115
5116  
5117        /**
5118         * Gets the value(s) for <b>compareToSourceId</b> ().
5119         * creating it if it does
5120         * not exist. Will not return <code>null</code>.
5121         *
5122     * <p>
5123     * <b>Definition:</b>
5124     * Id of fixture used to compare the \&quot;sourceId/path\&quot; evaluations to.
5125     * </p> 
5126         */
5127        public StringDt getCompareToSourceIdElement() {  
5128                if (myCompareToSourceId == null) {
5129                        myCompareToSourceId = new StringDt();
5130                }
5131                return myCompareToSourceId;
5132        }
5133
5134        
5135        /**
5136         * Gets the value(s) for <b>compareToSourceId</b> ().
5137         * creating it if it does
5138         * not exist. This method may return <code>null</code>.
5139         *
5140     * <p>
5141     * <b>Definition:</b>
5142     * Id of fixture used to compare the \&quot;sourceId/path\&quot; evaluations to.
5143     * </p> 
5144         */
5145        public String getCompareToSourceId() {  
5146                return getCompareToSourceIdElement().getValue();
5147        }
5148
5149        /**
5150         * Sets the value(s) for <b>compareToSourceId</b> ()
5151         *
5152     * <p>
5153     * <b>Definition:</b>
5154     * Id of fixture used to compare the \&quot;sourceId/path\&quot; evaluations to.
5155     * </p> 
5156         */
5157        public SetupActionAssert setCompareToSourceId(StringDt theValue) {
5158                myCompareToSourceId = theValue;
5159                return this;
5160        }
5161        
5162        
5163
5164        /**
5165         * Sets the value for <b>compareToSourceId</b> ()
5166         *
5167     * <p>
5168     * <b>Definition:</b>
5169     * Id of fixture used to compare the \&quot;sourceId/path\&quot; evaluations to.
5170     * </p> 
5171         */
5172        public SetupActionAssert setCompareToSourceId( String theString) {
5173                myCompareToSourceId = new StringDt(theString); 
5174                return this; 
5175        }
5176
5177 
5178        /**
5179         * Gets the value(s) for <b>compareToSourcePath</b> ().
5180         * creating it if it does
5181         * not exist. Will not return <code>null</code>.
5182         *
5183     * <p>
5184     * <b>Definition:</b>
5185     * XPath or JSONPath expression against fixture used to compare the \&quot;sourceId/path\&quot; evaluations to.
5186     * </p> 
5187         */
5188        public StringDt getCompareToSourcePathElement() {  
5189                if (myCompareToSourcePath == null) {
5190                        myCompareToSourcePath = new StringDt();
5191                }
5192                return myCompareToSourcePath;
5193        }
5194
5195        
5196        /**
5197         * Gets the value(s) for <b>compareToSourcePath</b> ().
5198         * creating it if it does
5199         * not exist. This method may return <code>null</code>.
5200         *
5201     * <p>
5202     * <b>Definition:</b>
5203     * XPath or JSONPath expression against fixture used to compare the \&quot;sourceId/path\&quot; evaluations to.
5204     * </p> 
5205         */
5206        public String getCompareToSourcePath() {  
5207                return getCompareToSourcePathElement().getValue();
5208        }
5209
5210        /**
5211         * Sets the value(s) for <b>compareToSourcePath</b> ()
5212         *
5213     * <p>
5214     * <b>Definition:</b>
5215     * XPath or JSONPath expression against fixture used to compare the \&quot;sourceId/path\&quot; evaluations to.
5216     * </p> 
5217         */
5218        public SetupActionAssert setCompareToSourcePath(StringDt theValue) {
5219                myCompareToSourcePath = theValue;
5220                return this;
5221        }
5222        
5223        
5224
5225        /**
5226         * Sets the value for <b>compareToSourcePath</b> ()
5227         *
5228     * <p>
5229     * <b>Definition:</b>
5230     * XPath or JSONPath expression against fixture used to compare the \&quot;sourceId/path\&quot; evaluations to.
5231     * </p> 
5232         */
5233        public SetupActionAssert setCompareToSourcePath( String theString) {
5234                myCompareToSourcePath = new StringDt(theString); 
5235                return this; 
5236        }
5237
5238 
5239        /**
5240         * Gets the value(s) for <b>contentType</b> ().
5241         * creating it if it does
5242         * not exist. Will not return <code>null</code>.
5243         *
5244     * <p>
5245     * <b>Definition:</b>
5246     * The content-type or mime-type to use for RESTful operation in the 'Content-Type' header.
5247     * </p> 
5248         */
5249        public BoundCodeDt<ContentTypeEnum> getContentTypeElement() {  
5250                if (myContentType == null) {
5251                        myContentType = new BoundCodeDt<ContentTypeEnum>(ContentTypeEnum.VALUESET_BINDER);
5252                }
5253                return myContentType;
5254        }
5255
5256        
5257        /**
5258         * Gets the value(s) for <b>contentType</b> ().
5259         * creating it if it does
5260         * not exist. This method may return <code>null</code>.
5261         *
5262     * <p>
5263     * <b>Definition:</b>
5264     * The content-type or mime-type to use for RESTful operation in the 'Content-Type' header.
5265     * </p> 
5266         */
5267        public String getContentType() {  
5268                return getContentTypeElement().getValue();
5269        }
5270
5271        /**
5272         * Sets the value(s) for <b>contentType</b> ()
5273         *
5274     * <p>
5275     * <b>Definition:</b>
5276     * The content-type or mime-type to use for RESTful operation in the 'Content-Type' header.
5277     * </p> 
5278         */
5279        public SetupActionAssert setContentType(BoundCodeDt<ContentTypeEnum> theValue) {
5280                myContentType = theValue;
5281                return this;
5282        }
5283        
5284        
5285
5286        /**
5287         * Sets the value(s) for <b>contentType</b> ()
5288         *
5289     * <p>
5290     * <b>Definition:</b>
5291     * The content-type or mime-type to use for RESTful operation in the 'Content-Type' header.
5292     * </p> 
5293         */
5294        public SetupActionAssert setContentType(ContentTypeEnum theValue) {
5295                setContentType(new BoundCodeDt<ContentTypeEnum>(ContentTypeEnum.VALUESET_BINDER, theValue));
5296                
5297/*
5298                getContentTypeElement().setValueAsEnum(theValue);
5299*/
5300                return this;
5301        }
5302
5303  
5304        /**
5305         * Gets the value(s) for <b>headerField</b> ().
5306         * creating it if it does
5307         * not exist. Will not return <code>null</code>.
5308         *
5309     * <p>
5310     * <b>Definition:</b>
5311     * The HTTP header field name e.g. 'Location'
5312     * </p> 
5313         */
5314        public StringDt getHeaderFieldElement() {  
5315                if (myHeaderField == null) {
5316                        myHeaderField = new StringDt();
5317                }
5318                return myHeaderField;
5319        }
5320
5321        
5322        /**
5323         * Gets the value(s) for <b>headerField</b> ().
5324         * creating it if it does
5325         * not exist. This method may return <code>null</code>.
5326         *
5327     * <p>
5328     * <b>Definition:</b>
5329     * The HTTP header field name e.g. 'Location'
5330     * </p> 
5331         */
5332        public String getHeaderField() {  
5333                return getHeaderFieldElement().getValue();
5334        }
5335
5336        /**
5337         * Sets the value(s) for <b>headerField</b> ()
5338         *
5339     * <p>
5340     * <b>Definition:</b>
5341     * The HTTP header field name e.g. 'Location'
5342     * </p> 
5343         */
5344        public SetupActionAssert setHeaderField(StringDt theValue) {
5345                myHeaderField = theValue;
5346                return this;
5347        }
5348        
5349        
5350
5351        /**
5352         * Sets the value for <b>headerField</b> ()
5353         *
5354     * <p>
5355     * <b>Definition:</b>
5356     * The HTTP header field name e.g. 'Location'
5357     * </p> 
5358         */
5359        public SetupActionAssert setHeaderField( String theString) {
5360                myHeaderField = new StringDt(theString); 
5361                return this; 
5362        }
5363
5364 
5365        /**
5366         * Gets the value(s) for <b>minimumId</b> ().
5367         * creating it if it does
5368         * not exist. Will not return <code>null</code>.
5369         *
5370     * <p>
5371     * <b>Definition:</b>
5372     * The ID of a fixture.  Asserts that the response contains at a minimumId the fixture specified by minimumId.
5373     * </p> 
5374         */
5375        public StringDt getMinimumIdElement() {  
5376                if (myMinimumId == null) {
5377                        myMinimumId = new StringDt();
5378                }
5379                return myMinimumId;
5380        }
5381
5382        
5383        /**
5384         * Gets the value(s) for <b>minimumId</b> ().
5385         * creating it if it does
5386         * not exist. This method may return <code>null</code>.
5387         *
5388     * <p>
5389     * <b>Definition:</b>
5390     * The ID of a fixture.  Asserts that the response contains at a minimumId the fixture specified by minimumId.
5391     * </p> 
5392         */
5393        public String getMinimumId() {  
5394                return getMinimumIdElement().getValue();
5395        }
5396
5397        /**
5398         * Sets the value(s) for <b>minimumId</b> ()
5399         *
5400     * <p>
5401     * <b>Definition:</b>
5402     * The ID of a fixture.  Asserts that the response contains at a minimumId the fixture specified by minimumId.
5403     * </p> 
5404         */
5405        public SetupActionAssert setMinimumId(StringDt theValue) {
5406                myMinimumId = theValue;
5407                return this;
5408        }
5409        
5410        
5411
5412        /**
5413         * Sets the value for <b>minimumId</b> ()
5414         *
5415     * <p>
5416     * <b>Definition:</b>
5417     * The ID of a fixture.  Asserts that the response contains at a minimumId the fixture specified by minimumId.
5418     * </p> 
5419         */
5420        public SetupActionAssert setMinimumId( String theString) {
5421                myMinimumId = new StringDt(theString); 
5422                return this; 
5423        }
5424
5425 
5426        /**
5427         * Gets the value(s) for <b>navigationLinks</b> ().
5428         * creating it if it does
5429         * not exist. Will not return <code>null</code>.
5430         *
5431     * <p>
5432     * <b>Definition:</b>
5433     * Whether or not the test execution performs validation on the bundle navigation links
5434     * </p> 
5435         */
5436        public BooleanDt getNavigationLinksElement() {  
5437                if (myNavigationLinks == null) {
5438                        myNavigationLinks = new BooleanDt();
5439                }
5440                return myNavigationLinks;
5441        }
5442
5443        
5444        /**
5445         * Gets the value(s) for <b>navigationLinks</b> ().
5446         * creating it if it does
5447         * not exist. This method may return <code>null</code>.
5448         *
5449     * <p>
5450     * <b>Definition:</b>
5451     * Whether or not the test execution performs validation on the bundle navigation links
5452     * </p> 
5453         */
5454        public Boolean getNavigationLinks() {  
5455                return getNavigationLinksElement().getValue();
5456        }
5457
5458        /**
5459         * Sets the value(s) for <b>navigationLinks</b> ()
5460         *
5461     * <p>
5462     * <b>Definition:</b>
5463     * Whether or not the test execution performs validation on the bundle navigation links
5464     * </p> 
5465         */
5466        public SetupActionAssert setNavigationLinks(BooleanDt theValue) {
5467                myNavigationLinks = theValue;
5468                return this;
5469        }
5470        
5471        
5472
5473        /**
5474         * Sets the value for <b>navigationLinks</b> ()
5475         *
5476     * <p>
5477     * <b>Definition:</b>
5478     * Whether or not the test execution performs validation on the bundle navigation links
5479     * </p> 
5480         */
5481        public SetupActionAssert setNavigationLinks( boolean theBoolean) {
5482                myNavigationLinks = new BooleanDt(theBoolean); 
5483                return this; 
5484        }
5485
5486 
5487        /**
5488         * Gets the value(s) for <b>operator</b> ().
5489         * creating it if it does
5490         * not exist. Will not return <code>null</code>.
5491         *
5492     * <p>
5493     * <b>Definition:</b>
5494     * The operator type
5495     * </p> 
5496         */
5497        public BoundCodeDt<AssertionOperatorTypeEnum> getOperatorElement() {  
5498                if (myOperator == null) {
5499                        myOperator = new BoundCodeDt<AssertionOperatorTypeEnum>(AssertionOperatorTypeEnum.VALUESET_BINDER);
5500                }
5501                return myOperator;
5502        }
5503
5504        
5505        /**
5506         * Gets the value(s) for <b>operator</b> ().
5507         * creating it if it does
5508         * not exist. This method may return <code>null</code>.
5509         *
5510     * <p>
5511     * <b>Definition:</b>
5512     * The operator type
5513     * </p> 
5514         */
5515        public String getOperator() {  
5516                return getOperatorElement().getValue();
5517        }
5518
5519        /**
5520         * Sets the value(s) for <b>operator</b> ()
5521         *
5522     * <p>
5523     * <b>Definition:</b>
5524     * The operator type
5525     * </p> 
5526         */
5527        public SetupActionAssert setOperator(BoundCodeDt<AssertionOperatorTypeEnum> theValue) {
5528                myOperator = theValue;
5529                return this;
5530        }
5531        
5532        
5533
5534        /**
5535         * Sets the value(s) for <b>operator</b> ()
5536         *
5537     * <p>
5538     * <b>Definition:</b>
5539     * The operator type
5540     * </p> 
5541         */
5542        public SetupActionAssert setOperator(AssertionOperatorTypeEnum theValue) {
5543                setOperator(new BoundCodeDt<AssertionOperatorTypeEnum>(AssertionOperatorTypeEnum.VALUESET_BINDER, theValue));
5544                
5545/*
5546                getOperatorElement().setValueAsEnum(theValue);
5547*/
5548                return this;
5549        }
5550
5551  
5552        /**
5553         * Gets the value(s) for <b>path</b> ().
5554         * creating it if it does
5555         * not exist. Will not return <code>null</code>.
5556         *
5557     * <p>
5558     * <b>Definition:</b>
5559     * The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server.
5560     * </p> 
5561         */
5562        public StringDt getPathElement() {  
5563                if (myPath == null) {
5564                        myPath = new StringDt();
5565                }
5566                return myPath;
5567        }
5568
5569        
5570        /**
5571         * Gets the value(s) for <b>path</b> ().
5572         * creating it if it does
5573         * not exist. This method may return <code>null</code>.
5574         *
5575     * <p>
5576     * <b>Definition:</b>
5577     * The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server.
5578     * </p> 
5579         */
5580        public String getPath() {  
5581                return getPathElement().getValue();
5582        }
5583
5584        /**
5585         * Sets the value(s) for <b>path</b> ()
5586         *
5587     * <p>
5588     * <b>Definition:</b>
5589     * The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server.
5590     * </p> 
5591         */
5592        public SetupActionAssert setPath(StringDt theValue) {
5593                myPath = theValue;
5594                return this;
5595        }
5596        
5597        
5598
5599        /**
5600         * Sets the value for <b>path</b> ()
5601         *
5602     * <p>
5603     * <b>Definition:</b>
5604     * The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server.
5605     * </p> 
5606         */
5607        public SetupActionAssert setPath( String theString) {
5608                myPath = new StringDt(theString); 
5609                return this; 
5610        }
5611
5612 
5613        /**
5614         * Gets the value(s) for <b>resource</b> ().
5615         * creating it if it does
5616         * not exist. Will not return <code>null</code>.
5617         *
5618     * <p>
5619     * <b>Definition:</b>
5620     * The type of the resource.  See http://hl7-fhir.github.io/resourcelist.html.
5621     * </p> 
5622         */
5623        public CodeDt getResourceElement() {  
5624                if (myResource == null) {
5625                        myResource = new CodeDt();
5626                }
5627                return myResource;
5628        }
5629
5630        
5631        /**
5632         * Gets the value(s) for <b>resource</b> ().
5633         * creating it if it does
5634         * not exist. This method may return <code>null</code>.
5635         *
5636     * <p>
5637     * <b>Definition:</b>
5638     * The type of the resource.  See http://hl7-fhir.github.io/resourcelist.html.
5639     * </p> 
5640         */
5641        public String getResource() {  
5642                return getResourceElement().getValue();
5643        }
5644
5645        /**
5646         * Sets the value(s) for <b>resource</b> ()
5647         *
5648     * <p>
5649     * <b>Definition:</b>
5650     * The type of the resource.  See http://hl7-fhir.github.io/resourcelist.html.
5651     * </p> 
5652         */
5653        public SetupActionAssert setResource(CodeDt theValue) {
5654                myResource = theValue;
5655                return this;
5656        }
5657        
5658        
5659
5660        /**
5661         * Sets the value for <b>resource</b> ()
5662         *
5663     * <p>
5664     * <b>Definition:</b>
5665     * The type of the resource.  See http://hl7-fhir.github.io/resourcelist.html.
5666     * </p> 
5667         */
5668        public SetupActionAssert setResource( String theCode) {
5669                myResource = new CodeDt(theCode); 
5670                return this; 
5671        }
5672
5673 
5674        /**
5675         * Gets the value(s) for <b>response</b> ().
5676         * creating it if it does
5677         * not exist. Will not return <code>null</code>.
5678         *
5679     * <p>
5680     * <b>Definition:</b>
5681     * okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable
5682     * </p> 
5683         */
5684        public BoundCodeDt<AssertionResponseTypesEnum> getResponseElement() {  
5685                if (myResponse == null) {
5686                        myResponse = new BoundCodeDt<AssertionResponseTypesEnum>(AssertionResponseTypesEnum.VALUESET_BINDER);
5687                }
5688                return myResponse;
5689        }
5690
5691        
5692        /**
5693         * Gets the value(s) for <b>response</b> ().
5694         * creating it if it does
5695         * not exist. This method may return <code>null</code>.
5696         *
5697     * <p>
5698     * <b>Definition:</b>
5699     * okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable
5700     * </p> 
5701         */
5702        public String getResponse() {  
5703                return getResponseElement().getValue();
5704        }
5705
5706        /**
5707         * Sets the value(s) for <b>response</b> ()
5708         *
5709     * <p>
5710     * <b>Definition:</b>
5711     * okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable
5712     * </p> 
5713         */
5714        public SetupActionAssert setResponse(BoundCodeDt<AssertionResponseTypesEnum> theValue) {
5715                myResponse = theValue;
5716                return this;
5717        }
5718        
5719        
5720
5721        /**
5722         * Sets the value(s) for <b>response</b> ()
5723         *
5724     * <p>
5725     * <b>Definition:</b>
5726     * okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable
5727     * </p> 
5728         */
5729        public SetupActionAssert setResponse(AssertionResponseTypesEnum theValue) {
5730                setResponse(new BoundCodeDt<AssertionResponseTypesEnum>(AssertionResponseTypesEnum.VALUESET_BINDER, theValue));
5731                
5732/*
5733                getResponseElement().setValueAsEnum(theValue);
5734*/
5735                return this;
5736        }
5737
5738  
5739        /**
5740         * Gets the value(s) for <b>responseCode</b> ().
5741         * creating it if it does
5742         * not exist. Will not return <code>null</code>.
5743         *
5744     * <p>
5745     * <b>Definition:</b>
5746     * The value of the HTTP response code to be tested
5747     * </p> 
5748         */
5749        public StringDt getResponseCodeElement() {  
5750                if (myResponseCode == null) {
5751                        myResponseCode = new StringDt();
5752                }
5753                return myResponseCode;
5754        }
5755
5756        
5757        /**
5758         * Gets the value(s) for <b>responseCode</b> ().
5759         * creating it if it does
5760         * not exist. This method may return <code>null</code>.
5761         *
5762     * <p>
5763     * <b>Definition:</b>
5764     * The value of the HTTP response code to be tested
5765     * </p> 
5766         */
5767        public String getResponseCode() {  
5768                return getResponseCodeElement().getValue();
5769        }
5770
5771        /**
5772         * Sets the value(s) for <b>responseCode</b> ()
5773         *
5774     * <p>
5775     * <b>Definition:</b>
5776     * The value of the HTTP response code to be tested
5777     * </p> 
5778         */
5779        public SetupActionAssert setResponseCode(StringDt theValue) {
5780                myResponseCode = theValue;
5781                return this;
5782        }
5783        
5784        
5785
5786        /**
5787         * Sets the value for <b>responseCode</b> ()
5788         *
5789     * <p>
5790     * <b>Definition:</b>
5791     * The value of the HTTP response code to be tested
5792     * </p> 
5793         */
5794        public SetupActionAssert setResponseCode( String theString) {
5795                myResponseCode = new StringDt(theString); 
5796                return this; 
5797        }
5798
5799 
5800        /**
5801         * Gets the value(s) for <b>sourceId</b> ().
5802         * creating it if it does
5803         * not exist. Will not return <code>null</code>.
5804         *
5805     * <p>
5806     * <b>Definition:</b>
5807     * Fixture to evaluate the XPath/JSONPath expression or the headerField  against.
5808     * </p> 
5809         */
5810        public IdDt getSourceIdElement() {  
5811                if (mySourceId == null) {
5812                        mySourceId = new IdDt();
5813                }
5814                return mySourceId;
5815        }
5816
5817        
5818        /**
5819         * Gets the value(s) for <b>sourceId</b> ().
5820         * creating it if it does
5821         * not exist. This method may return <code>null</code>.
5822         *
5823     * <p>
5824     * <b>Definition:</b>
5825     * Fixture to evaluate the XPath/JSONPath expression or the headerField  against.
5826     * </p> 
5827         */
5828        public String getSourceId() {  
5829                return getSourceIdElement().getValue();
5830        }
5831
5832        /**
5833         * Sets the value(s) for <b>sourceId</b> ()
5834         *
5835     * <p>
5836     * <b>Definition:</b>
5837     * Fixture to evaluate the XPath/JSONPath expression or the headerField  against.
5838     * </p> 
5839         */
5840        public SetupActionAssert setSourceId(IdDt theValue) {
5841                mySourceId = theValue;
5842                return this;
5843        }
5844        
5845        
5846
5847        /**
5848         * Sets the value for <b>sourceId</b> ()
5849         *
5850     * <p>
5851     * <b>Definition:</b>
5852     * Fixture to evaluate the XPath/JSONPath expression or the headerField  against.
5853     * </p> 
5854         */
5855        public SetupActionAssert setSourceId( String theId) {
5856                mySourceId = new IdDt(theId); 
5857                return this; 
5858        }
5859
5860 
5861        /**
5862         * Gets the value(s) for <b>validateProfileId</b> ().
5863         * creating it if it does
5864         * not exist. Will not return <code>null</code>.
5865         *
5866     * <p>
5867     * <b>Definition:</b>
5868     * The ID of the Profile to validate against.
5869     * </p> 
5870         */
5871        public IdDt getValidateProfileIdElement() {  
5872                if (myValidateProfileId == null) {
5873                        myValidateProfileId = new IdDt();
5874                }
5875                return myValidateProfileId;
5876        }
5877
5878        
5879        /**
5880         * Gets the value(s) for <b>validateProfileId</b> ().
5881         * creating it if it does
5882         * not exist. This method may return <code>null</code>.
5883         *
5884     * <p>
5885     * <b>Definition:</b>
5886     * The ID of the Profile to validate against.
5887     * </p> 
5888         */
5889        public String getValidateProfileId() {  
5890                return getValidateProfileIdElement().getValue();
5891        }
5892
5893        /**
5894         * Sets the value(s) for <b>validateProfileId</b> ()
5895         *
5896     * <p>
5897     * <b>Definition:</b>
5898     * The ID of the Profile to validate against.
5899     * </p> 
5900         */
5901        public SetupActionAssert setValidateProfileId(IdDt theValue) {
5902                myValidateProfileId = theValue;
5903                return this;
5904        }
5905        
5906        
5907
5908        /**
5909         * Sets the value for <b>validateProfileId</b> ()
5910         *
5911     * <p>
5912     * <b>Definition:</b>
5913     * The ID of the Profile to validate against.
5914     * </p> 
5915         */
5916        public SetupActionAssert setValidateProfileId( String theId) {
5917                myValidateProfileId = new IdDt(theId); 
5918                return this; 
5919        }
5920
5921 
5922        /**
5923         * Gets the value(s) for <b>value</b> ().
5924         * creating it if it does
5925         * not exist. Will not return <code>null</code>.
5926         *
5927     * <p>
5928     * <b>Definition:</b>
5929     * The value to compare to
5930     * </p> 
5931         */
5932        public StringDt getValueElement() {  
5933                if (myValue == null) {
5934                        myValue = new StringDt();
5935                }
5936                return myValue;
5937        }
5938
5939        
5940        /**
5941         * Gets the value(s) for <b>value</b> ().
5942         * creating it if it does
5943         * not exist. This method may return <code>null</code>.
5944         *
5945     * <p>
5946     * <b>Definition:</b>
5947     * The value to compare to
5948     * </p> 
5949         */
5950        public String getValue() {  
5951                return getValueElement().getValue();
5952        }
5953
5954        /**
5955         * Sets the value(s) for <b>value</b> ()
5956         *
5957     * <p>
5958     * <b>Definition:</b>
5959     * The value to compare to
5960     * </p> 
5961         */
5962        public SetupActionAssert setValue(StringDt theValue) {
5963                myValue = theValue;
5964                return this;
5965        }
5966        
5967        
5968
5969        /**
5970         * Sets the value for <b>value</b> ()
5971         *
5972     * <p>
5973     * <b>Definition:</b>
5974     * The value to compare to
5975     * </p> 
5976         */
5977        public SetupActionAssert setValue( String theString) {
5978                myValue = new StringDt(theString); 
5979                return this; 
5980        }
5981
5982 
5983        /**
5984         * Gets the value(s) for <b>warningOnly</b> ().
5985         * creating it if it does
5986         * not exist. Will not return <code>null</code>.
5987         *
5988     * <p>
5989     * <b>Definition:</b>
5990     * Whether or not the test execution will produce a warning only on error for this assert
5991     * </p> 
5992         */
5993        public BooleanDt getWarningOnlyElement() {  
5994                if (myWarningOnly == null) {
5995                        myWarningOnly = new BooleanDt();
5996                }
5997                return myWarningOnly;
5998        }
5999
6000        
6001        /**
6002         * Gets the value(s) for <b>warningOnly</b> ().
6003         * creating it if it does
6004         * not exist. This method may return <code>null</code>.
6005         *
6006     * <p>
6007     * <b>Definition:</b>
6008     * Whether or not the test execution will produce a warning only on error for this assert
6009     * </p> 
6010         */
6011        public Boolean getWarningOnly() {  
6012                return getWarningOnlyElement().getValue();
6013        }
6014
6015        /**
6016         * Sets the value(s) for <b>warningOnly</b> ()
6017         *
6018     * <p>
6019     * <b>Definition:</b>
6020     * Whether or not the test execution will produce a warning only on error for this assert
6021     * </p> 
6022         */
6023        public SetupActionAssert setWarningOnly(BooleanDt theValue) {
6024                myWarningOnly = theValue;
6025                return this;
6026        }
6027        
6028        
6029
6030        /**
6031         * Sets the value for <b>warningOnly</b> ()
6032         *
6033     * <p>
6034     * <b>Definition:</b>
6035     * Whether or not the test execution will produce a warning only on error for this assert
6036     * </p> 
6037         */
6038        public SetupActionAssert setWarningOnly( boolean theBoolean) {
6039                myWarningOnly = new BooleanDt(theBoolean); 
6040                return this; 
6041        }
6042
6043 
6044
6045
6046        }
6047
6048
6049
6050
6051        /**
6052         * Block class for child element: <b>TestScript.test</b> ()
6053         *
6054     * <p>
6055     * <b>Definition:</b>
6056     * A test in this script.
6057     * </p> 
6058         */
6059        @Block()        
6060        public static class Test 
6061            extends  BaseIdentifiableElement        implements IResourceBlock {
6062        
6063        @Child(name="name", type=StringDt.class, order=0, min=0, max=1, summary=false, modifier=false)  
6064        @Description(
6065                shortDefinition="",
6066                formalDefinition="The name of this test used for tracking/logging purposes by test engines."
6067        )
6068        private StringDt myName;
6069        
6070        @Child(name="description", type=StringDt.class, order=1, min=0, max=1, summary=false, modifier=false)   
6071        @Description(
6072                shortDefinition="",
6073                formalDefinition="A short description of the test used by test engines for tracking and reporting purposes."
6074        )
6075        private StringDt myDescription;
6076        
6077        @Child(name="metadata", type=Metadata.class, order=2, min=0, max=1, summary=false, modifier=false)      
6078        @Description(
6079                shortDefinition="",
6080                formalDefinition="Capabilities that must exist and are assumed to function correctly on the FHIR server being tested."
6081        )
6082        private Metadata myMetadata;
6083        
6084        @Child(name="action", order=3, min=1, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
6085        @Description(
6086                shortDefinition="",
6087                formalDefinition="Action would contain either an operation or an assertion."
6088        )
6089        private java.util.List<TestAction> myAction;
6090        
6091
6092        @Override
6093        public boolean isEmpty() {
6094                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myDescription,  myMetadata,  myAction);
6095        }
6096        
6097        @Override
6098        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
6099                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myDescription, myMetadata, myAction);
6100        }
6101
6102        /**
6103         * Gets the value(s) for <b>name</b> ().
6104         * creating it if it does
6105         * not exist. Will not return <code>null</code>.
6106         *
6107     * <p>
6108     * <b>Definition:</b>
6109     * The name of this test used for tracking/logging purposes by test engines.
6110     * </p> 
6111         */
6112        public StringDt getNameElement() {  
6113                if (myName == null) {
6114                        myName = new StringDt();
6115                }
6116                return myName;
6117        }
6118
6119        
6120        /**
6121         * Gets the value(s) for <b>name</b> ().
6122         * creating it if it does
6123         * not exist. This method may return <code>null</code>.
6124         *
6125     * <p>
6126     * <b>Definition:</b>
6127     * The name of this test used for tracking/logging purposes by test engines.
6128     * </p> 
6129         */
6130        public String getName() {  
6131                return getNameElement().getValue();
6132        }
6133
6134        /**
6135         * Sets the value(s) for <b>name</b> ()
6136         *
6137     * <p>
6138     * <b>Definition:</b>
6139     * The name of this test used for tracking/logging purposes by test engines.
6140     * </p> 
6141         */
6142        public Test setName(StringDt theValue) {
6143                myName = theValue;
6144                return this;
6145        }
6146        
6147        
6148
6149        /**
6150         * Sets the value for <b>name</b> ()
6151         *
6152     * <p>
6153     * <b>Definition:</b>
6154     * The name of this test used for tracking/logging purposes by test engines.
6155     * </p> 
6156         */
6157        public Test setName( String theString) {
6158                myName = new StringDt(theString); 
6159                return this; 
6160        }
6161
6162 
6163        /**
6164         * Gets the value(s) for <b>description</b> ().
6165         * creating it if it does
6166         * not exist. Will not return <code>null</code>.
6167         *
6168     * <p>
6169     * <b>Definition:</b>
6170     * A short description of the test used by test engines for tracking and reporting purposes.
6171     * </p> 
6172         */
6173        public StringDt getDescriptionElement() {  
6174                if (myDescription == null) {
6175                        myDescription = new StringDt();
6176                }
6177                return myDescription;
6178        }
6179
6180        
6181        /**
6182         * Gets the value(s) for <b>description</b> ().
6183         * creating it if it does
6184         * not exist. This method may return <code>null</code>.
6185         *
6186     * <p>
6187     * <b>Definition:</b>
6188     * A short description of the test used by test engines for tracking and reporting purposes.
6189     * </p> 
6190         */
6191        public String getDescription() {  
6192                return getDescriptionElement().getValue();
6193        }
6194
6195        /**
6196         * Sets the value(s) for <b>description</b> ()
6197         *
6198     * <p>
6199     * <b>Definition:</b>
6200     * A short description of the test used by test engines for tracking and reporting purposes.
6201     * </p> 
6202         */
6203        public Test setDescription(StringDt theValue) {
6204                myDescription = theValue;
6205                return this;
6206        }
6207        
6208        
6209
6210        /**
6211         * Sets the value for <b>description</b> ()
6212         *
6213     * <p>
6214     * <b>Definition:</b>
6215     * A short description of the test used by test engines for tracking and reporting purposes.
6216     * </p> 
6217         */
6218        public Test setDescription( String theString) {
6219                myDescription = new StringDt(theString); 
6220                return this; 
6221        }
6222
6223 
6224        /**
6225         * Gets the value(s) for <b>metadata</b> ().
6226         * creating it if it does
6227         * not exist. Will not return <code>null</code>.
6228         *
6229     * <p>
6230     * <b>Definition:</b>
6231     * Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.
6232     * </p> 
6233         */
6234        public Metadata getMetadata() {  
6235                if (myMetadata == null) {
6236                        myMetadata = new Metadata();
6237                }
6238                return myMetadata;
6239        }
6240
6241        /**
6242         * Sets the value(s) for <b>metadata</b> ()
6243         *
6244     * <p>
6245     * <b>Definition:</b>
6246     * Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.
6247     * </p> 
6248         */
6249        public Test setMetadata(Metadata theValue) {
6250                myMetadata = theValue;
6251                return this;
6252        }
6253        
6254        
6255
6256  
6257        /**
6258         * Gets the value(s) for <b>action</b> ().
6259         * creating it if it does
6260         * not exist. Will not return <code>null</code>.
6261         *
6262     * <p>
6263     * <b>Definition:</b>
6264     * Action would contain either an operation or an assertion.
6265     * </p> 
6266         */
6267        public java.util.List<TestAction> getAction() {  
6268                if (myAction == null) {
6269                        myAction = new java.util.ArrayList<TestAction>();
6270                }
6271                return myAction;
6272        }
6273
6274        /**
6275         * Sets the value(s) for <b>action</b> ()
6276         *
6277     * <p>
6278     * <b>Definition:</b>
6279     * Action would contain either an operation or an assertion.
6280     * </p> 
6281         */
6282        public Test setAction(java.util.List<TestAction> theValue) {
6283                myAction = theValue;
6284                return this;
6285        }
6286        
6287        
6288
6289        /**
6290         * Adds and returns a new value for <b>action</b> ()
6291         *
6292     * <p>
6293     * <b>Definition:</b>
6294     * Action would contain either an operation or an assertion.
6295     * </p> 
6296         */
6297        public TestAction addAction() {
6298                TestAction newType = new TestAction();
6299                getAction().add(newType);
6300                return newType; 
6301        }
6302
6303        /**
6304         * Adds a given new value for <b>action</b> ()
6305         *
6306         * <p>
6307         * <b>Definition:</b>
6308         * Action would contain either an operation or an assertion.
6309         * </p>
6310         * @param theValue The action to add (must not be <code>null</code>)
6311         */
6312        public Test addAction(TestAction theValue) {
6313                if (theValue == null) {
6314                        throw new NullPointerException("theValue must not be null");
6315                }
6316                getAction().add(theValue);
6317                return this;
6318        }
6319
6320        /**
6321         * Gets the first repetition for <b>action</b> (),
6322         * creating it if it does not already exist.
6323         *
6324     * <p>
6325     * <b>Definition:</b>
6326     * Action would contain either an operation or an assertion.
6327     * </p> 
6328         */
6329        public TestAction getActionFirstRep() {
6330                if (getAction().isEmpty()) {
6331                        return addAction();
6332                }
6333                return getAction().get(0); 
6334        }
6335  
6336
6337
6338        }
6339
6340        /**
6341         * Block class for child element: <b>TestScript.test.action</b> ()
6342         *
6343     * <p>
6344     * <b>Definition:</b>
6345     * Action would contain either an operation or an assertion.
6346     * </p> 
6347         */
6348        @Block()        
6349        public static class TestAction 
6350            extends  BaseIdentifiableElement        implements IResourceBlock {
6351        
6352        @Child(name="operation", type=SetupActionOperation.class, order=0, min=0, max=1, summary=false, modifier=false) 
6353        @Description(
6354                shortDefinition="",
6355                formalDefinition="An operation would involve a REST request to a server."
6356        )
6357        private SetupActionOperation myOperation;
6358        
6359        @Child(name="assert", type=SetupActionAssert.class, order=1, min=0, max=1, summary=false, modifier=false)       
6360        @Description(
6361                shortDefinition="",
6362                formalDefinition="Evaluates the results of previous operations to determine if the server under test behaves appropriately."
6363        )
6364        private SetupActionAssert myAssert;
6365        
6366
6367        @Override
6368        public boolean isEmpty() {
6369                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myOperation,  myAssert);
6370        }
6371        
6372        @Override
6373        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
6374                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myOperation, myAssert);
6375        }
6376
6377        /**
6378         * Gets the value(s) for <b>operation</b> ().
6379         * creating it if it does
6380         * not exist. Will not return <code>null</code>.
6381         *
6382     * <p>
6383     * <b>Definition:</b>
6384     * An operation would involve a REST request to a server.
6385     * </p> 
6386         */
6387        public SetupActionOperation getOperation() {  
6388                if (myOperation == null) {
6389                        myOperation = new SetupActionOperation();
6390                }
6391                return myOperation;
6392        }
6393
6394        /**
6395         * Sets the value(s) for <b>operation</b> ()
6396         *
6397     * <p>
6398     * <b>Definition:</b>
6399     * An operation would involve a REST request to a server.
6400     * </p> 
6401         */
6402        public TestAction setOperation(SetupActionOperation theValue) {
6403                myOperation = theValue;
6404                return this;
6405        }
6406        
6407        
6408
6409  
6410        /**
6411         * Gets the value(s) for <b>assert</b> ().
6412         * creating it if it does
6413         * not exist. Will not return <code>null</code>.
6414         *
6415     * <p>
6416     * <b>Definition:</b>
6417     * Evaluates the results of previous operations to determine if the server under test behaves appropriately.
6418     * </p> 
6419         */
6420        public SetupActionAssert getAssert() {  
6421                if (myAssert == null) {
6422                        myAssert = new SetupActionAssert();
6423                }
6424                return myAssert;
6425        }
6426
6427        /**
6428         * Sets the value(s) for <b>assert</b> ()
6429         *
6430     * <p>
6431     * <b>Definition:</b>
6432     * Evaluates the results of previous operations to determine if the server under test behaves appropriately.
6433     * </p> 
6434         */
6435        public TestAction setAssert(SetupActionAssert theValue) {
6436                myAssert = theValue;
6437                return this;
6438        }
6439        
6440        
6441
6442  
6443
6444
6445        }
6446
6447
6448
6449        /**
6450         * Block class for child element: <b>TestScript.teardown</b> ()
6451         *
6452     * <p>
6453     * <b>Definition:</b>
6454     * A series of operations required to clean up after the all the tests are executed (successfully or otherwise).
6455     * </p> 
6456         */
6457        @Block()        
6458        public static class Teardown 
6459            extends  BaseIdentifiableElement        implements IResourceBlock {
6460        
6461        @Child(name="action", order=0, min=1, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
6462        @Description(
6463                shortDefinition="",
6464                formalDefinition="The teardown action will only contain an operation."
6465        )
6466        private java.util.List<TeardownAction> myAction;
6467        
6468
6469        @Override
6470        public boolean isEmpty() {
6471                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myAction);
6472        }
6473        
6474        @Override
6475        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
6476                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myAction);
6477        }
6478
6479        /**
6480         * Gets the value(s) for <b>action</b> ().
6481         * creating it if it does
6482         * not exist. Will not return <code>null</code>.
6483         *
6484     * <p>
6485     * <b>Definition:</b>
6486     * The teardown action will only contain an operation.
6487     * </p> 
6488         */
6489        public java.util.List<TeardownAction> getAction() {  
6490                if (myAction == null) {
6491                        myAction = new java.util.ArrayList<TeardownAction>();
6492                }
6493                return myAction;
6494        }
6495
6496        /**
6497         * Sets the value(s) for <b>action</b> ()
6498         *
6499     * <p>
6500     * <b>Definition:</b>
6501     * The teardown action will only contain an operation.
6502     * </p> 
6503         */
6504        public Teardown setAction(java.util.List<TeardownAction> theValue) {
6505                myAction = theValue;
6506                return this;
6507        }
6508        
6509        
6510
6511        /**
6512         * Adds and returns a new value for <b>action</b> ()
6513         *
6514     * <p>
6515     * <b>Definition:</b>
6516     * The teardown action will only contain an operation.
6517     * </p> 
6518         */
6519        public TeardownAction addAction() {
6520                TeardownAction newType = new TeardownAction();
6521                getAction().add(newType);
6522                return newType; 
6523        }
6524
6525        /**
6526         * Adds a given new value for <b>action</b> ()
6527         *
6528         * <p>
6529         * <b>Definition:</b>
6530         * The teardown action will only contain an operation.
6531         * </p>
6532         * @param theValue The action to add (must not be <code>null</code>)
6533         */
6534        public Teardown addAction(TeardownAction theValue) {
6535                if (theValue == null) {
6536                        throw new NullPointerException("theValue must not be null");
6537                }
6538                getAction().add(theValue);
6539                return this;
6540        }
6541
6542        /**
6543         * Gets the first repetition for <b>action</b> (),
6544         * creating it if it does not already exist.
6545         *
6546     * <p>
6547     * <b>Definition:</b>
6548     * The teardown action will only contain an operation.
6549     * </p> 
6550         */
6551        public TeardownAction getActionFirstRep() {
6552                if (getAction().isEmpty()) {
6553                        return addAction();
6554                }
6555                return getAction().get(0); 
6556        }
6557  
6558
6559
6560        }
6561
6562        /**
6563         * Block class for child element: <b>TestScript.teardown.action</b> ()
6564         *
6565     * <p>
6566     * <b>Definition:</b>
6567     * The teardown action will only contain an operation.
6568     * </p> 
6569         */
6570        @Block()        
6571        public static class TeardownAction 
6572            extends  BaseIdentifiableElement        implements IResourceBlock {
6573        
6574        @Child(name="operation", type=SetupActionOperation.class, order=0, min=0, max=1, summary=false, modifier=false) 
6575        @Description(
6576                shortDefinition="",
6577                formalDefinition="An operation would involve a REST request to a server."
6578        )
6579        private SetupActionOperation myOperation;
6580        
6581
6582        @Override
6583        public boolean isEmpty() {
6584                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myOperation);
6585        }
6586        
6587        @Override
6588        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
6589                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myOperation);
6590        }
6591
6592        /**
6593         * Gets the value(s) for <b>operation</b> ().
6594         * creating it if it does
6595         * not exist. Will not return <code>null</code>.
6596         *
6597     * <p>
6598     * <b>Definition:</b>
6599     * An operation would involve a REST request to a server.
6600     * </p> 
6601         */
6602        public SetupActionOperation getOperation() {  
6603                if (myOperation == null) {
6604                        myOperation = new SetupActionOperation();
6605                }
6606                return myOperation;
6607        }
6608
6609        /**
6610         * Sets the value(s) for <b>operation</b> ()
6611         *
6612     * <p>
6613     * <b>Definition:</b>
6614     * An operation would involve a REST request to a server.
6615     * </p> 
6616         */
6617        public TeardownAction setOperation(SetupActionOperation theValue) {
6618                myOperation = theValue;
6619                return this;
6620        }
6621        
6622        
6623
6624  
6625
6626
6627        }
6628
6629
6630
6631
6632
6633    @Override
6634    public String getResourceName() {
6635        return "TestScript";
6636    }
6637    
6638    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
6639        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
6640    }
6641
6642
6643}