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