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>Provenance</b> Resource
282 * (infrastructure.information)
283 *
284 * <p>
285 * <b>Definition:</b>
286 * Provenance of a resource is a record that describes entities and processes involved in producing and delivering or otherwise influencing that resource. Provenance provides a critical foundation for assessing authenticity, enabling trust, and allowing reproducibility. Provenance assertions are a form of contextual metadata and can themselves become important records with their own provenance. Provenance statement indicates clinical significance in terms of confidence in authenticity, reliability, and trustworthiness, integrity, and stage in lifecycle (e.g. Document Completion - has the artifact been legally authenticated), all of which may impact security, privacy, and trust policies.
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/Provenance">http://hl7.org/fhir/profiles/Provenance</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="Provenance", profile="http://hl7.org/fhir/profiles/Provenance", id="provenance")
301public class Provenance extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource     {
303
304        /**
305         * Search parameter constant for <b>target</b>
306         * <p>
307         * Description: <b></b><br>
308         * Type: <b>reference</b><br>
309         * Path: <b>Provenance.target</b><br>
310         * </p>
311         */
312        @SearchParamDefinition(name="target", path="Provenance.target", description="", type="reference" , providesMembershipIn={
313 @Compartment(name="Patient") ,  @Compartment(name="Patient")   }
314 )
315        public static final String SP_TARGET = "target";
316
317        /**
318         * <b>Fluent Client</b> search parameter constant for <b>target</b>
319         * <p>
320         * Description: <b></b><br>
321         * Type: <b>reference</b><br>
322         * Path: <b>Provenance.target</b><br>
323         * </p>
324         */
325        public static final ReferenceClientParam TARGET = new ReferenceClientParam(SP_TARGET);
326
327        /**
328         * Search parameter constant for <b>start</b>
329         * <p>
330         * Description: <b></b><br>
331         * Type: <b>date</b><br>
332         * Path: <b>Provenance.period.start</b><br>
333         * </p>
334         */
335        @SearchParamDefinition(name="start", path="Provenance.period.start", description="", type="date"  )
336        public static final String SP_START = "start";
337
338        /**
339         * <b>Fluent Client</b> search parameter constant for <b>start</b>
340         * <p>
341         * Description: <b></b><br>
342         * Type: <b>date</b><br>
343         * Path: <b>Provenance.period.start</b><br>
344         * </p>
345         */
346        public static final DateClientParam START = new DateClientParam(SP_START);
347
348        /**
349         * Search parameter constant for <b>end</b>
350         * <p>
351         * Description: <b></b><br>
352         * Type: <b>date</b><br>
353         * Path: <b>Provenance.period.end</b><br>
354         * </p>
355         */
356        @SearchParamDefinition(name="end", path="Provenance.period.end", description="", type="date"  )
357        public static final String SP_END = "end";
358
359        /**
360         * <b>Fluent Client</b> search parameter constant for <b>end</b>
361         * <p>
362         * Description: <b></b><br>
363         * Type: <b>date</b><br>
364         * Path: <b>Provenance.period.end</b><br>
365         * </p>
366         */
367        public static final DateClientParam END = new DateClientParam(SP_END);
368
369        /**
370         * Search parameter constant for <b>location</b>
371         * <p>
372         * Description: <b></b><br>
373         * Type: <b>reference</b><br>
374         * Path: <b>Provenance.location</b><br>
375         * </p>
376         */
377        @SearchParamDefinition(name="location", path="Provenance.location", description="", type="reference"  )
378        public static final String SP_LOCATION = "location";
379
380        /**
381         * <b>Fluent Client</b> search parameter constant for <b>location</b>
382         * <p>
383         * Description: <b></b><br>
384         * Type: <b>reference</b><br>
385         * Path: <b>Provenance.location</b><br>
386         * </p>
387         */
388        public static final ReferenceClientParam LOCATION = new ReferenceClientParam(SP_LOCATION);
389
390        /**
391         * Search parameter constant for <b>agent</b>
392         * <p>
393         * Description: <b></b><br>
394         * Type: <b>reference</b><br>
395         * Path: <b>Provenance.agent.actor</b><br>
396         * </p>
397         */
398        @SearchParamDefinition(name="agent", path="Provenance.agent.actor", description="", type="reference" , providesMembershipIn={
399 @Compartment(name="Encounter") ,  @Compartment(name="RelatedPerson") ,  @Compartment(name="Practitioner")      }
400 )
401        public static final String SP_AGENT = "agent";
402
403        /**
404         * <b>Fluent Client</b> search parameter constant for <b>agent</b>
405         * <p>
406         * Description: <b></b><br>
407         * Type: <b>reference</b><br>
408         * Path: <b>Provenance.agent.actor</b><br>
409         * </p>
410         */
411        public static final ReferenceClientParam AGENT = new ReferenceClientParam(SP_AGENT);
412
413        /**
414         * Search parameter constant for <b>userid</b>
415         * <p>
416         * Description: <b></b><br>
417         * Type: <b>token</b><br>
418         * Path: <b>Provenance.agent.userId</b><br>
419         * </p>
420         */
421        @SearchParamDefinition(name="userid", path="Provenance.agent.userId", description="", type="token"  )
422        public static final String SP_USERID = "userid";
423
424        /**
425         * <b>Fluent Client</b> search parameter constant for <b>userid</b>
426         * <p>
427         * Description: <b></b><br>
428         * Type: <b>token</b><br>
429         * Path: <b>Provenance.agent.userId</b><br>
430         * </p>
431         */
432        public static final TokenClientParam USERID = new TokenClientParam(SP_USERID);
433
434        /**
435         * Search parameter constant for <b>patient</b>
436         * <p>
437         * Description: <b></b><br>
438         * Type: <b>reference</b><br>
439         * Path: <b>Provenance.target</b><br>
440         * </p>
441         */
442        @SearchParamDefinition(name="patient", path="Provenance.target", description="", type="reference" , providesMembershipIn={
443 @Compartment(name="Patient")   }
444, target={
445 ca.uhn.fhir.model.dstu2.resource.Patient.class         }
446 )
447        public static final String SP_PATIENT = "patient";
448
449        /**
450         * <b>Fluent Client</b> search parameter constant for <b>patient</b>
451         * <p>
452         * Description: <b></b><br>
453         * Type: <b>reference</b><br>
454         * Path: <b>Provenance.target</b><br>
455         * </p>
456         */
457        public static final ReferenceClientParam PATIENT = new ReferenceClientParam(SP_PATIENT);
458
459        /**
460         * Search parameter constant for <b>sigtype</b>
461         * <p>
462         * Description: <b></b><br>
463         * Type: <b>token</b><br>
464         * Path: <b>Provenance.signature.type</b><br>
465         * </p>
466         */
467        @SearchParamDefinition(name="sigtype", path="Provenance.signature.type", description="", type="token"  )
468        public static final String SP_SIGTYPE = "sigtype";
469
470        /**
471         * <b>Fluent Client</b> search parameter constant for <b>sigtype</b>
472         * <p>
473         * Description: <b></b><br>
474         * Type: <b>token</b><br>
475         * Path: <b>Provenance.signature.type</b><br>
476         * </p>
477         */
478        public static final TokenClientParam SIGTYPE = new TokenClientParam(SP_SIGTYPE);
479
480        /**
481         * Search parameter constant for <b>entitytype</b>
482         * <p>
483         * Description: <b></b><br>
484         * Type: <b>token</b><br>
485         * Path: <b>Provenance.entity.type</b><br>
486         * </p>
487         */
488        @SearchParamDefinition(name="entitytype", path="Provenance.entity.type", description="", type="token"  )
489        public static final String SP_ENTITYTYPE = "entitytype";
490
491        /**
492         * <b>Fluent Client</b> search parameter constant for <b>entitytype</b>
493         * <p>
494         * Description: <b></b><br>
495         * Type: <b>token</b><br>
496         * Path: <b>Provenance.entity.type</b><br>
497         * </p>
498         */
499        public static final TokenClientParam ENTITYTYPE = new TokenClientParam(SP_ENTITYTYPE);
500
501        /**
502         * Search parameter constant for <b>entity</b>
503         * <p>
504         * Description: <b></b><br>
505         * Type: <b>uri</b><br>
506         * Path: <b>Provenance.entity.reference</b><br>
507         * </p>
508         */
509        @SearchParamDefinition(name="entity", path="Provenance.entity.reference", description="", type="uri"  )
510        public static final String SP_ENTITY = "entity";
511
512        /**
513         * <b>Fluent Client</b> search parameter constant for <b>entity</b>
514         * <p>
515         * Description: <b></b><br>
516         * Type: <b>uri</b><br>
517         * Path: <b>Provenance.entity.reference</b><br>
518         * </p>
519         */
520        public static final UriClientParam ENTITY = new UriClientParam(SP_ENTITY);
521
522
523        /**
524         * Constant for fluent queries to be used to add include statements. Specifies
525         * the path value of "<b>Provenance:agent</b>".
526         */
527        public static final Include INCLUDE_AGENT = new Include("Provenance:agent");
528
529        /**
530         * Constant for fluent queries to be used to add include statements. Specifies
531         * the path value of "<b>Provenance:location</b>".
532         */
533        public static final Include INCLUDE_LOCATION = new Include("Provenance:location");
534
535        /**
536         * Constant for fluent queries to be used to add include statements. Specifies
537         * the path value of "<b>Provenance:patient</b>".
538         */
539        public static final Include INCLUDE_PATIENT = new Include("Provenance:patient");
540
541        /**
542         * Constant for fluent queries to be used to add include statements. Specifies
543         * the path value of "<b>Provenance:target</b>".
544         */
545        public static final Include INCLUDE_TARGET = new Include("Provenance:target");
546
547
548        @Child(name="target", order=0, min=1, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
549                IResource.class })
550        @Description(
551                shortDefinition="what",
552                formalDefinition="The Reference(s) that were generated or updated by  the activity described in this resource. A provenance can point to more than one target if multiple resources were created/updated by the same activity"
553        )
554        private java.util.List<ResourceReferenceDt> myTarget;
555        
556        @Child(name="period", type=PeriodDt.class, order=1, min=0, max=1, summary=false, modifier=false)        
557        @Description(
558                shortDefinition="when.done",
559                formalDefinition="The period during which the activity occurred"
560        )
561        private PeriodDt myPeriod;
562        
563        @Child(name="recorded", type=InstantDt.class, order=2, min=1, max=1, summary=false, modifier=false)     
564        @Description(
565                shortDefinition="when.recorded",
566                formalDefinition="The instant of time at which the activity was recorded"
567        )
568        private InstantDt myRecorded;
569        
570        @Child(name="reason", type=CodeableConceptDt.class, order=3, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
571        @Description(
572                shortDefinition="why",
573                formalDefinition="The reason that the activity was taking place"
574        )
575        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/v3-PurposeOfUse")
576        private java.util.List<CodeableConceptDt> myReason;
577        
578        @Child(name="activity", type=CodeableConceptDt.class, order=4, min=0, max=1, summary=false, modifier=false)     
579        @Description(
580                shortDefinition="why",
581                formalDefinition="An activity is something that occurs over a period of time and acts upon or with entities; it may include consuming, processing, transforming, modifying, relocating, using, or generating entities"
582        )
583        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/v3-ProvenanceEventCurrentState")
584        private CodeableConceptDt myActivity;
585        
586        @Child(name="location", order=5, min=0, max=1, summary=false, modifier=false, type={
587                ca.uhn.fhir.model.dstu2.resource.Location.class })
588        @Description(
589                shortDefinition="where",
590                formalDefinition="Where the activity occurred, if relevant"
591        )
592        private ResourceReferenceDt myLocation;
593        
594        @Child(name="policy", type=UriDt.class, order=6, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
595        @Description(
596                shortDefinition="",
597                formalDefinition="Policy or plan the activity was defined by. Typically, a single activity may have multiple applicable policy documents, such as patient consent, guarantor funding, etc."
598        )
599        private java.util.List<UriDt> myPolicy;
600        
601        @Child(name="agent", order=7, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
602        @Description(
603                shortDefinition="who",
604                formalDefinition="An agent takes a role in an activity such that the agent can be assigned some degree of responsibility for the activity taking place. An agent can be a person, an organization, software, or other entities that may be ascribed responsibility"
605        )
606        private java.util.List<Agent> myAgent;
607        
608        @Child(name="entity", order=8, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
609        @Description(
610                shortDefinition="",
611                formalDefinition="An entity used in this activity"
612        )
613        private java.util.List<Entity> myEntity;
614        
615        @Child(name="signature", type=SignatureDt.class, order=9, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
616        @Description(
617                shortDefinition="",
618                formalDefinition="A digital signature on the target Reference(s). The signer should match a Provenance.agent. The purpose of the signature is indicated."
619        )
620        private java.util.List<SignatureDt> mySignature;
621        
622
623        @Override
624        public boolean isEmpty() {
625                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myTarget,  myPeriod,  myRecorded,  myReason,  myActivity,  myLocation,  myPolicy,  myAgent,  myEntity,  mySignature);
626        }
627        
628        @Override
629        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
630                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myTarget, myPeriod, myRecorded, myReason, myActivity, myLocation, myPolicy, myAgent, myEntity, mySignature);
631        }
632
633        /**
634         * Gets the value(s) for <b>target</b> (what).
635         * creating it if it does
636         * not exist. Will not return <code>null</code>.
637         *
638     * <p>
639     * <b>Definition:</b>
640     * The Reference(s) that were generated or updated by  the activity described in this resource. A provenance can point to more than one target if multiple resources were created/updated by the same activity
641     * </p> 
642         */
643        public java.util.List<ResourceReferenceDt> getTarget() {  
644                if (myTarget == null) {
645                        myTarget = new java.util.ArrayList<ResourceReferenceDt>();
646                }
647                return myTarget;
648        }
649
650        /**
651         * Sets the value(s) for <b>target</b> (what)
652         *
653     * <p>
654     * <b>Definition:</b>
655     * The Reference(s) that were generated or updated by  the activity described in this resource. A provenance can point to more than one target if multiple resources were created/updated by the same activity
656     * </p> 
657         */
658        public Provenance setTarget(java.util.List<ResourceReferenceDt> theValue) {
659                myTarget = theValue;
660                return this;
661        }
662        
663        
664
665        /**
666         * Adds and returns a new value for <b>target</b> (what)
667         *
668     * <p>
669     * <b>Definition:</b>
670     * The Reference(s) that were generated or updated by  the activity described in this resource. A provenance can point to more than one target if multiple resources were created/updated by the same activity
671     * </p> 
672         */
673        public ResourceReferenceDt addTarget() {
674                ResourceReferenceDt newType = new ResourceReferenceDt();
675                getTarget().add(newType);
676                return newType; 
677        }
678  
679        /**
680         * Gets the value(s) for <b>period</b> (when.done).
681         * creating it if it does
682         * not exist. Will not return <code>null</code>.
683         *
684     * <p>
685     * <b>Definition:</b>
686     * The period during which the activity occurred
687     * </p> 
688         */
689        public PeriodDt getPeriod() {  
690                if (myPeriod == null) {
691                        myPeriod = new PeriodDt();
692                }
693                return myPeriod;
694        }
695
696        /**
697         * Sets the value(s) for <b>period</b> (when.done)
698         *
699     * <p>
700     * <b>Definition:</b>
701     * The period during which the activity occurred
702     * </p> 
703         */
704        public Provenance setPeriod(PeriodDt theValue) {
705                myPeriod = theValue;
706                return this;
707        }
708        
709        
710
711  
712        /**
713         * Gets the value(s) for <b>recorded</b> (when.recorded).
714         * creating it if it does
715         * not exist. Will not return <code>null</code>.
716         *
717     * <p>
718     * <b>Definition:</b>
719     * The instant of time at which the activity was recorded
720     * </p> 
721         */
722        public InstantDt getRecordedElement() {  
723                if (myRecorded == null) {
724                        myRecorded = new InstantDt();
725                }
726                return myRecorded;
727        }
728
729        
730        /**
731         * Gets the value(s) for <b>recorded</b> (when.recorded).
732         * creating it if it does
733         * not exist. This method may return <code>null</code>.
734         *
735     * <p>
736     * <b>Definition:</b>
737     * The instant of time at which the activity was recorded
738     * </p> 
739         */
740        public Date getRecorded() {  
741                return getRecordedElement().getValue();
742        }
743
744        /**
745         * Sets the value(s) for <b>recorded</b> (when.recorded)
746         *
747     * <p>
748     * <b>Definition:</b>
749     * The instant of time at which the activity was recorded
750     * </p> 
751         */
752        public Provenance setRecorded(InstantDt theValue) {
753                myRecorded = theValue;
754                return this;
755        }
756        
757        
758
759        /**
760         * Sets the value for <b>recorded</b> (when.recorded)
761         *
762     * <p>
763     * <b>Definition:</b>
764     * The instant of time at which the activity was recorded
765     * </p> 
766         */
767        public Provenance setRecorded( Date theDate,  TemporalPrecisionEnum thePrecision) {
768                myRecorded = new InstantDt(theDate, thePrecision); 
769                return this; 
770        }
771
772        /**
773         * Sets the value for <b>recorded</b> (when.recorded)
774         *
775     * <p>
776     * <b>Definition:</b>
777     * The instant of time at which the activity was recorded
778     * </p> 
779         */
780        public Provenance setRecordedWithMillisPrecision( Date theDate) {
781                myRecorded = new InstantDt(theDate); 
782                return this; 
783        }
784
785 
786        /**
787         * Gets the value(s) for <b>reason</b> (why).
788         * creating it if it does
789         * not exist. Will not return <code>null</code>.
790         *
791     * <p>
792     * <b>Definition:</b>
793     * The reason that the activity was taking place
794     * </p> 
795         */
796        public java.util.List<CodeableConceptDt> getReason() {  
797                if (myReason == null) {
798                        myReason = new java.util.ArrayList<CodeableConceptDt>();
799                }
800                return myReason;
801        }
802
803        /**
804         * Sets the value(s) for <b>reason</b> (why)
805         *
806     * <p>
807     * <b>Definition:</b>
808     * The reason that the activity was taking place
809     * </p> 
810         */
811        public Provenance setReason(java.util.List<CodeableConceptDt> theValue) {
812                myReason = theValue;
813                return this;
814        }
815        
816        
817
818        /**
819         * Adds and returns a new value for <b>reason</b> (why)
820         *
821     * <p>
822     * <b>Definition:</b>
823     * The reason that the activity was taking place
824     * </p> 
825         */
826        public CodeableConceptDt addReason() {
827                CodeableConceptDt newType = new CodeableConceptDt();
828                getReason().add(newType);
829                return newType; 
830        }
831
832        /**
833         * Adds a given new value for <b>reason</b> (why)
834         *
835         * <p>
836         * <b>Definition:</b>
837         * The reason that the activity was taking place
838         * </p>
839         * @param theValue The reason to add (must not be <code>null</code>)
840         */
841        public Provenance addReason(CodeableConceptDt theValue) {
842                if (theValue == null) {
843                        throw new NullPointerException("theValue must not be null");
844                }
845                getReason().add(theValue);
846                return this;
847        }
848
849        /**
850         * Gets the first repetition for <b>reason</b> (why),
851         * creating it if it does not already exist.
852         *
853     * <p>
854     * <b>Definition:</b>
855     * The reason that the activity was taking place
856     * </p> 
857         */
858        public CodeableConceptDt getReasonFirstRep() {
859                if (getReason().isEmpty()) {
860                        return addReason();
861                }
862                return getReason().get(0); 
863        }
864  
865        /**
866         * Gets the value(s) for <b>activity</b> (why).
867         * creating it if it does
868         * not exist. Will not return <code>null</code>.
869         *
870     * <p>
871     * <b>Definition:</b>
872     * An activity is something that occurs over a period of time and acts upon or with entities; it may include consuming, processing, transforming, modifying, relocating, using, or generating entities
873     * </p> 
874         */
875        public CodeableConceptDt getActivity() {  
876                if (myActivity == null) {
877                        myActivity = new CodeableConceptDt();
878                }
879                return myActivity;
880        }
881
882        /**
883         * Sets the value(s) for <b>activity</b> (why)
884         *
885     * <p>
886     * <b>Definition:</b>
887     * An activity is something that occurs over a period of time and acts upon or with entities; it may include consuming, processing, transforming, modifying, relocating, using, or generating entities
888     * </p> 
889         */
890        public Provenance setActivity(CodeableConceptDt theValue) {
891                myActivity = theValue;
892                return this;
893        }
894        
895        
896
897  
898        /**
899         * Gets the value(s) for <b>location</b> (where).
900         * creating it if it does
901         * not exist. Will not return <code>null</code>.
902         *
903     * <p>
904     * <b>Definition:</b>
905     * Where the activity occurred, if relevant
906     * </p> 
907         */
908        public ResourceReferenceDt getLocation() {  
909                if (myLocation == null) {
910                        myLocation = new ResourceReferenceDt();
911                }
912                return myLocation;
913        }
914
915        /**
916         * Sets the value(s) for <b>location</b> (where)
917         *
918     * <p>
919     * <b>Definition:</b>
920     * Where the activity occurred, if relevant
921     * </p> 
922         */
923        public Provenance setLocation(ResourceReferenceDt theValue) {
924                myLocation = theValue;
925                return this;
926        }
927        
928        
929
930  
931        /**
932         * Gets the value(s) for <b>policy</b> ().
933         * creating it if it does
934         * not exist. Will not return <code>null</code>.
935         *
936     * <p>
937     * <b>Definition:</b>
938     * Policy or plan the activity was defined by. Typically, a single activity may have multiple applicable policy documents, such as patient consent, guarantor funding, etc.
939     * </p> 
940         */
941        public java.util.List<UriDt> getPolicy() {  
942                if (myPolicy == null) {
943                        myPolicy = new java.util.ArrayList<UriDt>();
944                }
945                return myPolicy;
946        }
947
948        /**
949         * Sets the value(s) for <b>policy</b> ()
950         *
951     * <p>
952     * <b>Definition:</b>
953     * Policy or plan the activity was defined by. Typically, a single activity may have multiple applicable policy documents, such as patient consent, guarantor funding, etc.
954     * </p> 
955         */
956        public Provenance setPolicy(java.util.List<UriDt> theValue) {
957                myPolicy = theValue;
958                return this;
959        }
960        
961        
962
963        /**
964         * Adds and returns a new value for <b>policy</b> ()
965         *
966     * <p>
967     * <b>Definition:</b>
968     * Policy or plan the activity was defined by. Typically, a single activity may have multiple applicable policy documents, such as patient consent, guarantor funding, etc.
969     * </p> 
970         */
971        public UriDt addPolicy() {
972                UriDt newType = new UriDt();
973                getPolicy().add(newType);
974                return newType; 
975        }
976
977        /**
978         * Adds a given new value for <b>policy</b> ()
979         *
980         * <p>
981         * <b>Definition:</b>
982         * Policy or plan the activity was defined by. Typically, a single activity may have multiple applicable policy documents, such as patient consent, guarantor funding, etc.
983         * </p>
984         * @param theValue The policy to add (must not be <code>null</code>)
985         */
986        public Provenance addPolicy(UriDt theValue) {
987                if (theValue == null) {
988                        throw new NullPointerException("theValue must not be null");
989                }
990                getPolicy().add(theValue);
991                return this;
992        }
993
994        /**
995         * Gets the first repetition for <b>policy</b> (),
996         * creating it if it does not already exist.
997         *
998     * <p>
999     * <b>Definition:</b>
1000     * Policy or plan the activity was defined by. Typically, a single activity may have multiple applicable policy documents, such as patient consent, guarantor funding, etc.
1001     * </p> 
1002         */
1003        public UriDt getPolicyFirstRep() {
1004                if (getPolicy().isEmpty()) {
1005                        return addPolicy();
1006                }
1007                return getPolicy().get(0); 
1008        }
1009        /**
1010         * Adds a new value for <b>policy</b> ()
1011         *
1012     * <p>
1013     * <b>Definition:</b>
1014     * Policy or plan the activity was defined by. Typically, a single activity may have multiple applicable policy documents, such as patient consent, guarantor funding, etc.
1015     * </p> 
1016     *
1017     * @return Returns a reference to this object, to allow for simple chaining.
1018         */
1019        public Provenance addPolicy( String theUri) {
1020                if (myPolicy == null) {
1021                        myPolicy = new java.util.ArrayList<UriDt>();
1022                }
1023                myPolicy.add(new UriDt(theUri));
1024                return this; 
1025        }
1026
1027 
1028        /**
1029         * Gets the value(s) for <b>agent</b> (who).
1030         * creating it if it does
1031         * not exist. Will not return <code>null</code>.
1032         *
1033     * <p>
1034     * <b>Definition:</b>
1035     * An agent takes a role in an activity such that the agent can be assigned some degree of responsibility for the activity taking place. An agent can be a person, an organization, software, or other entities that may be ascribed responsibility
1036     * </p> 
1037         */
1038        public java.util.List<Agent> getAgent() {  
1039                if (myAgent == null) {
1040                        myAgent = new java.util.ArrayList<Agent>();
1041                }
1042                return myAgent;
1043        }
1044
1045        /**
1046         * Sets the value(s) for <b>agent</b> (who)
1047         *
1048     * <p>
1049     * <b>Definition:</b>
1050     * An agent takes a role in an activity such that the agent can be assigned some degree of responsibility for the activity taking place. An agent can be a person, an organization, software, or other entities that may be ascribed responsibility
1051     * </p> 
1052         */
1053        public Provenance setAgent(java.util.List<Agent> theValue) {
1054                myAgent = theValue;
1055                return this;
1056        }
1057        
1058        
1059
1060        /**
1061         * Adds and returns a new value for <b>agent</b> (who)
1062         *
1063     * <p>
1064     * <b>Definition:</b>
1065     * An agent takes a role in an activity such that the agent can be assigned some degree of responsibility for the activity taking place. An agent can be a person, an organization, software, or other entities that may be ascribed responsibility
1066     * </p> 
1067         */
1068        public Agent addAgent() {
1069                Agent newType = new Agent();
1070                getAgent().add(newType);
1071                return newType; 
1072        }
1073
1074        /**
1075         * Adds a given new value for <b>agent</b> (who)
1076         *
1077         * <p>
1078         * <b>Definition:</b>
1079         * An agent takes a role in an activity such that the agent can be assigned some degree of responsibility for the activity taking place. An agent can be a person, an organization, software, or other entities that may be ascribed responsibility
1080         * </p>
1081         * @param theValue The agent to add (must not be <code>null</code>)
1082         */
1083        public Provenance addAgent(Agent theValue) {
1084                if (theValue == null) {
1085                        throw new NullPointerException("theValue must not be null");
1086                }
1087                getAgent().add(theValue);
1088                return this;
1089        }
1090
1091        /**
1092         * Gets the first repetition for <b>agent</b> (who),
1093         * creating it if it does not already exist.
1094         *
1095     * <p>
1096     * <b>Definition:</b>
1097     * An agent takes a role in an activity such that the agent can be assigned some degree of responsibility for the activity taking place. An agent can be a person, an organization, software, or other entities that may be ascribed responsibility
1098     * </p> 
1099         */
1100        public Agent getAgentFirstRep() {
1101                if (getAgent().isEmpty()) {
1102                        return addAgent();
1103                }
1104                return getAgent().get(0); 
1105        }
1106  
1107        /**
1108         * Gets the value(s) for <b>entity</b> ().
1109         * creating it if it does
1110         * not exist. Will not return <code>null</code>.
1111         *
1112     * <p>
1113     * <b>Definition:</b>
1114     * An entity used in this activity
1115     * </p> 
1116         */
1117        public java.util.List<Entity> getEntity() {  
1118                if (myEntity == null) {
1119                        myEntity = new java.util.ArrayList<Entity>();
1120                }
1121                return myEntity;
1122        }
1123
1124        /**
1125         * Sets the value(s) for <b>entity</b> ()
1126         *
1127     * <p>
1128     * <b>Definition:</b>
1129     * An entity used in this activity
1130     * </p> 
1131         */
1132        public Provenance setEntity(java.util.List<Entity> theValue) {
1133                myEntity = theValue;
1134                return this;
1135        }
1136        
1137        
1138
1139        /**
1140         * Adds and returns a new value for <b>entity</b> ()
1141         *
1142     * <p>
1143     * <b>Definition:</b>
1144     * An entity used in this activity
1145     * </p> 
1146         */
1147        public Entity addEntity() {
1148                Entity newType = new Entity();
1149                getEntity().add(newType);
1150                return newType; 
1151        }
1152
1153        /**
1154         * Adds a given new value for <b>entity</b> ()
1155         *
1156         * <p>
1157         * <b>Definition:</b>
1158         * An entity used in this activity
1159         * </p>
1160         * @param theValue The entity to add (must not be <code>null</code>)
1161         */
1162        public Provenance addEntity(Entity theValue) {
1163                if (theValue == null) {
1164                        throw new NullPointerException("theValue must not be null");
1165                }
1166                getEntity().add(theValue);
1167                return this;
1168        }
1169
1170        /**
1171         * Gets the first repetition for <b>entity</b> (),
1172         * creating it if it does not already exist.
1173         *
1174     * <p>
1175     * <b>Definition:</b>
1176     * An entity used in this activity
1177     * </p> 
1178         */
1179        public Entity getEntityFirstRep() {
1180                if (getEntity().isEmpty()) {
1181                        return addEntity();
1182                }
1183                return getEntity().get(0); 
1184        }
1185  
1186        /**
1187         * Gets the value(s) for <b>signature</b> ().
1188         * creating it if it does
1189         * not exist. Will not return <code>null</code>.
1190         *
1191     * <p>
1192     * <b>Definition:</b>
1193     * A digital signature on the target Reference(s). The signer should match a Provenance.agent. The purpose of the signature is indicated.
1194     * </p> 
1195         */
1196        public java.util.List<SignatureDt> getSignature() {  
1197                if (mySignature == null) {
1198                        mySignature = new java.util.ArrayList<SignatureDt>();
1199                }
1200                return mySignature;
1201        }
1202
1203        /**
1204         * Sets the value(s) for <b>signature</b> ()
1205         *
1206     * <p>
1207     * <b>Definition:</b>
1208     * A digital signature on the target Reference(s). The signer should match a Provenance.agent. The purpose of the signature is indicated.
1209     * </p> 
1210         */
1211        public Provenance setSignature(java.util.List<SignatureDt> theValue) {
1212                mySignature = theValue;
1213                return this;
1214        }
1215        
1216        
1217
1218        /**
1219         * Adds and returns a new value for <b>signature</b> ()
1220         *
1221     * <p>
1222     * <b>Definition:</b>
1223     * A digital signature on the target Reference(s). The signer should match a Provenance.agent. The purpose of the signature is indicated.
1224     * </p> 
1225         */
1226        public SignatureDt addSignature() {
1227                SignatureDt newType = new SignatureDt();
1228                getSignature().add(newType);
1229                return newType; 
1230        }
1231
1232        /**
1233         * Adds a given new value for <b>signature</b> ()
1234         *
1235         * <p>
1236         * <b>Definition:</b>
1237         * A digital signature on the target Reference(s). The signer should match a Provenance.agent. The purpose of the signature is indicated.
1238         * </p>
1239         * @param theValue The signature to add (must not be <code>null</code>)
1240         */
1241        public Provenance addSignature(SignatureDt theValue) {
1242                if (theValue == null) {
1243                        throw new NullPointerException("theValue must not be null");
1244                }
1245                getSignature().add(theValue);
1246                return this;
1247        }
1248
1249        /**
1250         * Gets the first repetition for <b>signature</b> (),
1251         * creating it if it does not already exist.
1252         *
1253     * <p>
1254     * <b>Definition:</b>
1255     * A digital signature on the target Reference(s). The signer should match a Provenance.agent. The purpose of the signature is indicated.
1256     * </p> 
1257         */
1258        public SignatureDt getSignatureFirstRep() {
1259                if (getSignature().isEmpty()) {
1260                        return addSignature();
1261                }
1262                return getSignature().get(0); 
1263        }
1264  
1265        /**
1266         * Block class for child element: <b>Provenance.agent</b> (who)
1267         *
1268     * <p>
1269     * <b>Definition:</b>
1270     * An agent takes a role in an activity such that the agent can be assigned some degree of responsibility for the activity taking place. An agent can be a person, an organization, software, or other entities that may be ascribed responsibility
1271     * </p> 
1272         */
1273        @Block()        
1274        public static class Agent 
1275            extends  BaseIdentifiableElement        implements IResourceBlock {
1276        
1277        @Child(name="role", type=CodingDt.class, order=0, min=1, max=1, summary=false, modifier=false)  
1278        @Description(
1279                shortDefinition="",
1280                formalDefinition="The function of the agent with respect to the activity."
1281        )
1282        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/valueset-provenance-agent-role")
1283        private CodingDt myRole;
1284        
1285        @Child(name="actor", order=1, min=0, max=1, summary=false, modifier=false, type={
1286                ca.uhn.fhir.model.dstu2.resource.Practitioner.class,            ca.uhn.fhir.model.dstu2.resource.RelatedPerson.class,           ca.uhn.fhir.model.dstu2.resource.Patient.class,                 ca.uhn.fhir.model.dstu2.resource.Device.class,          ca.uhn.fhir.model.dstu2.resource.Organization.class     })
1287        @Description(
1288                shortDefinition="who.actor",
1289                formalDefinition="The individual, device or organization that participated in the event"
1290        )
1291        private ResourceReferenceDt myActor;
1292        
1293        @Child(name="userId", type=IdentifierDt.class, order=2, min=0, max=1, summary=false, modifier=false)    
1294        @Description(
1295                shortDefinition="who.actor",
1296                formalDefinition="The identity of the agent as known by the authorization system"
1297        )
1298        private IdentifierDt myUserId;
1299        
1300        @Child(name="relatedAgent", order=3, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
1301        @Description(
1302                shortDefinition="",
1303                formalDefinition="A relationship between two the agents referenced in this resource. This is defined to allow for explicit description of the delegation between agents.  For example, this human author used this device, or one person acted on another's behest"
1304        )
1305        private java.util.List<AgentRelatedAgent> myRelatedAgent;
1306        
1307
1308        @Override
1309        public boolean isEmpty() {
1310                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myRole,  myActor,  myUserId,  myRelatedAgent);
1311        }
1312        
1313        @Override
1314        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1315                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myRole, myActor, myUserId, myRelatedAgent);
1316        }
1317
1318        /**
1319         * Gets the value(s) for <b>role</b> ().
1320         * creating it if it does
1321         * not exist. Will not return <code>null</code>.
1322         *
1323     * <p>
1324     * <b>Definition:</b>
1325     * The function of the agent with respect to the activity.
1326     * </p> 
1327         */
1328        public CodingDt getRole() {  
1329                if (myRole == null) {
1330                        myRole = new CodingDt();
1331                }
1332                return myRole;
1333        }
1334
1335        /**
1336         * Sets the value(s) for <b>role</b> ()
1337         *
1338     * <p>
1339     * <b>Definition:</b>
1340     * The function of the agent with respect to the activity.
1341     * </p> 
1342         */
1343        public Agent setRole(CodingDt theValue) {
1344                myRole = theValue;
1345                return this;
1346        }
1347        
1348        
1349
1350  
1351        /**
1352         * Gets the value(s) for <b>actor</b> (who.actor).
1353         * creating it if it does
1354         * not exist. Will not return <code>null</code>.
1355         *
1356     * <p>
1357     * <b>Definition:</b>
1358     * The individual, device or organization that participated in the event
1359     * </p> 
1360         */
1361        public ResourceReferenceDt getActor() {  
1362                if (myActor == null) {
1363                        myActor = new ResourceReferenceDt();
1364                }
1365                return myActor;
1366        }
1367
1368        /**
1369         * Sets the value(s) for <b>actor</b> (who.actor)
1370         *
1371     * <p>
1372     * <b>Definition:</b>
1373     * The individual, device or organization that participated in the event
1374     * </p> 
1375         */
1376        public Agent setActor(ResourceReferenceDt theValue) {
1377                myActor = theValue;
1378                return this;
1379        }
1380        
1381        
1382
1383  
1384        /**
1385         * Gets the value(s) for <b>userId</b> (who.actor).
1386         * creating it if it does
1387         * not exist. Will not return <code>null</code>.
1388         *
1389     * <p>
1390     * <b>Definition:</b>
1391     * The identity of the agent as known by the authorization system
1392     * </p> 
1393         */
1394        public IdentifierDt getUserId() {  
1395                if (myUserId == null) {
1396                        myUserId = new IdentifierDt();
1397                }
1398                return myUserId;
1399        }
1400
1401        /**
1402         * Sets the value(s) for <b>userId</b> (who.actor)
1403         *
1404     * <p>
1405     * <b>Definition:</b>
1406     * The identity of the agent as known by the authorization system
1407     * </p> 
1408         */
1409        public Agent setUserId(IdentifierDt theValue) {
1410                myUserId = theValue;
1411                return this;
1412        }
1413        
1414        
1415
1416  
1417        /**
1418         * Gets the value(s) for <b>relatedAgent</b> ().
1419         * creating it if it does
1420         * not exist. Will not return <code>null</code>.
1421         *
1422     * <p>
1423     * <b>Definition:</b>
1424     * A relationship between two the agents referenced in this resource. This is defined to allow for explicit description of the delegation between agents.  For example, this human author used this device, or one person acted on another's behest
1425     * </p> 
1426         */
1427        public java.util.List<AgentRelatedAgent> getRelatedAgent() {  
1428                if (myRelatedAgent == null) {
1429                        myRelatedAgent = new java.util.ArrayList<AgentRelatedAgent>();
1430                }
1431                return myRelatedAgent;
1432        }
1433
1434        /**
1435         * Sets the value(s) for <b>relatedAgent</b> ()
1436         *
1437     * <p>
1438     * <b>Definition:</b>
1439     * A relationship between two the agents referenced in this resource. This is defined to allow for explicit description of the delegation between agents.  For example, this human author used this device, or one person acted on another's behest
1440     * </p> 
1441         */
1442        public Agent setRelatedAgent(java.util.List<AgentRelatedAgent> theValue) {
1443                myRelatedAgent = theValue;
1444                return this;
1445        }
1446        
1447        
1448
1449        /**
1450         * Adds and returns a new value for <b>relatedAgent</b> ()
1451         *
1452     * <p>
1453     * <b>Definition:</b>
1454     * A relationship between two the agents referenced in this resource. This is defined to allow for explicit description of the delegation between agents.  For example, this human author used this device, or one person acted on another's behest
1455     * </p> 
1456         */
1457        public AgentRelatedAgent addRelatedAgent() {
1458                AgentRelatedAgent newType = new AgentRelatedAgent();
1459                getRelatedAgent().add(newType);
1460                return newType; 
1461        }
1462
1463        /**
1464         * Adds a given new value for <b>relatedAgent</b> ()
1465         *
1466         * <p>
1467         * <b>Definition:</b>
1468         * A relationship between two the agents referenced in this resource. This is defined to allow for explicit description of the delegation between agents.  For example, this human author used this device, or one person acted on another's behest
1469         * </p>
1470         * @param theValue The relatedAgent to add (must not be <code>null</code>)
1471         */
1472        public Agent addRelatedAgent(AgentRelatedAgent theValue) {
1473                if (theValue == null) {
1474                        throw new NullPointerException("theValue must not be null");
1475                }
1476                getRelatedAgent().add(theValue);
1477                return this;
1478        }
1479
1480        /**
1481         * Gets the first repetition for <b>relatedAgent</b> (),
1482         * creating it if it does not already exist.
1483         *
1484     * <p>
1485     * <b>Definition:</b>
1486     * A relationship between two the agents referenced in this resource. This is defined to allow for explicit description of the delegation between agents.  For example, this human author used this device, or one person acted on another's behest
1487     * </p> 
1488         */
1489        public AgentRelatedAgent getRelatedAgentFirstRep() {
1490                if (getRelatedAgent().isEmpty()) {
1491                        return addRelatedAgent();
1492                }
1493                return getRelatedAgent().get(0); 
1494        }
1495  
1496
1497
1498        }
1499
1500        /**
1501         * Block class for child element: <b>Provenance.agent.relatedAgent</b> ()
1502         *
1503     * <p>
1504     * <b>Definition:</b>
1505     * A relationship between two the agents referenced in this resource. This is defined to allow for explicit description of the delegation between agents.  For example, this human author used this device, or one person acted on another's behest
1506     * </p> 
1507         */
1508        @Block()        
1509        public static class AgentRelatedAgent 
1510            extends  BaseIdentifiableElement        implements IResourceBlock {
1511        
1512        @Child(name="type", type=CodeableConceptDt.class, order=0, min=1, max=1, summary=false, modifier=false) 
1513        @Description(
1514                shortDefinition="",
1515                formalDefinition="The type of relationship between agents"
1516        )
1517        private CodeableConceptDt myType;
1518        
1519        @Child(name="target", type=UriDt.class, order=1, min=1, max=1, summary=false, modifier=false)   
1520        @Description(
1521                shortDefinition="",
1522                formalDefinition="An internal reference to another agent listed in this provenance by its identifier"
1523        )
1524        private UriDt myTarget;
1525        
1526
1527        @Override
1528        public boolean isEmpty() {
1529                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myType,  myTarget);
1530        }
1531        
1532        @Override
1533        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1534                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myType, myTarget);
1535        }
1536
1537        /**
1538         * Gets the value(s) for <b>type</b> ().
1539         * creating it if it does
1540         * not exist. Will not return <code>null</code>.
1541         *
1542     * <p>
1543     * <b>Definition:</b>
1544     * The type of relationship between agents
1545     * </p> 
1546         */
1547        public CodeableConceptDt getType() {  
1548                if (myType == null) {
1549                        myType = new CodeableConceptDt();
1550                }
1551                return myType;
1552        }
1553
1554        /**
1555         * Sets the value(s) for <b>type</b> ()
1556         *
1557     * <p>
1558     * <b>Definition:</b>
1559     * The type of relationship between agents
1560     * </p> 
1561         */
1562        public AgentRelatedAgent setType(CodeableConceptDt theValue) {
1563                myType = theValue;
1564                return this;
1565        }
1566        
1567        
1568
1569  
1570        /**
1571         * Gets the value(s) for <b>target</b> ().
1572         * creating it if it does
1573         * not exist. Will not return <code>null</code>.
1574         *
1575     * <p>
1576     * <b>Definition:</b>
1577     * An internal reference to another agent listed in this provenance by its identifier
1578     * </p> 
1579         */
1580        public UriDt getTargetElement() {  
1581                if (myTarget == null) {
1582                        myTarget = new UriDt();
1583                }
1584                return myTarget;
1585        }
1586
1587        
1588        /**
1589         * Gets the value(s) for <b>target</b> ().
1590         * creating it if it does
1591         * not exist. This method may return <code>null</code>.
1592         *
1593     * <p>
1594     * <b>Definition:</b>
1595     * An internal reference to another agent listed in this provenance by its identifier
1596     * </p> 
1597         */
1598        public String getTarget() {  
1599                return getTargetElement().getValue();
1600        }
1601
1602        /**
1603         * Sets the value(s) for <b>target</b> ()
1604         *
1605     * <p>
1606     * <b>Definition:</b>
1607     * An internal reference to another agent listed in this provenance by its identifier
1608     * </p> 
1609         */
1610        public AgentRelatedAgent setTarget(UriDt theValue) {
1611                myTarget = theValue;
1612                return this;
1613        }
1614        
1615        
1616
1617        /**
1618         * Sets the value for <b>target</b> ()
1619         *
1620     * <p>
1621     * <b>Definition:</b>
1622     * An internal reference to another agent listed in this provenance by its identifier
1623     * </p> 
1624         */
1625        public AgentRelatedAgent setTarget( String theUri) {
1626                myTarget = new UriDt(theUri); 
1627                return this; 
1628        }
1629
1630 
1631
1632
1633        }
1634
1635
1636
1637        /**
1638         * Block class for child element: <b>Provenance.entity</b> ()
1639         *
1640     * <p>
1641     * <b>Definition:</b>
1642     * An entity used in this activity
1643     * </p> 
1644         */
1645        @Block()        
1646        public static class Entity 
1647            extends  BaseIdentifiableElement        implements IResourceBlock {
1648        
1649        @Child(name="role", type=CodeDt.class, order=0, min=1, max=1, summary=false, modifier=false)    
1650        @Description(
1651                shortDefinition="",
1652                formalDefinition="How the entity was used during the activity"
1653        )
1654        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/provenance-entity-role")
1655        private BoundCodeDt<ProvenanceEntityRoleEnum> myRole;
1656        
1657        @Child(name="type", type=CodingDt.class, order=1, min=1, max=1, summary=false, modifier=false)  
1658        @Description(
1659                shortDefinition="",
1660                formalDefinition="The type of the entity. If the entity is a resource, then this is a resource type"
1661        )
1662        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/resource-types")
1663        private CodingDt myType;
1664        
1665        @Child(name="reference", type=UriDt.class, order=2, min=1, max=1, summary=false, modifier=false)        
1666        @Description(
1667                shortDefinition="",
1668                formalDefinition="Identity of the  Entity used. May be a logical or physical uri and maybe absolute or relative"
1669        )
1670        private UriDt myReference;
1671        
1672        @Child(name="display", type=StringDt.class, order=3, min=0, max=1, summary=false, modifier=false)       
1673        @Description(
1674                shortDefinition="",
1675                formalDefinition="Human-readable description of the entity"
1676        )
1677        private StringDt myDisplay;
1678        
1679        @Child(name="agent", type=Agent.class, order=4, min=0, max=1, summary=false, modifier=false)    
1680        @Description(
1681                shortDefinition="",
1682                formalDefinition="The entity is attributed to an agent to express the agent's responsibility for that entity, possibly along with other agents. This description can be understood as shorthand for saying that the agent was responsible for the activity which generated the entity"
1683        )
1684        private Agent myAgent;
1685        
1686
1687        @Override
1688        public boolean isEmpty() {
1689                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myRole,  myType,  myReference,  myDisplay,  myAgent);
1690        }
1691        
1692        @Override
1693        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1694                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myRole, myType, myReference, myDisplay, myAgent);
1695        }
1696
1697        /**
1698         * Gets the value(s) for <b>role</b> ().
1699         * creating it if it does
1700         * not exist. Will not return <code>null</code>.
1701         *
1702     * <p>
1703     * <b>Definition:</b>
1704     * How the entity was used during the activity
1705     * </p> 
1706         */
1707        public BoundCodeDt<ProvenanceEntityRoleEnum> getRoleElement() {  
1708                if (myRole == null) {
1709                        myRole = new BoundCodeDt<ProvenanceEntityRoleEnum>(ProvenanceEntityRoleEnum.VALUESET_BINDER);
1710                }
1711                return myRole;
1712        }
1713
1714        
1715        /**
1716         * Gets the value(s) for <b>role</b> ().
1717         * creating it if it does
1718         * not exist. This method may return <code>null</code>.
1719         *
1720     * <p>
1721     * <b>Definition:</b>
1722     * How the entity was used during the activity
1723     * </p> 
1724         */
1725        public String getRole() {  
1726                return getRoleElement().getValue();
1727        }
1728
1729        /**
1730         * Sets the value(s) for <b>role</b> ()
1731         *
1732     * <p>
1733     * <b>Definition:</b>
1734     * How the entity was used during the activity
1735     * </p> 
1736         */
1737        public Entity setRole(BoundCodeDt<ProvenanceEntityRoleEnum> theValue) {
1738                myRole = theValue;
1739                return this;
1740        }
1741        
1742        
1743
1744        /**
1745         * Sets the value(s) for <b>role</b> ()
1746         *
1747     * <p>
1748     * <b>Definition:</b>
1749     * How the entity was used during the activity
1750     * </p> 
1751         */
1752        public Entity setRole(ProvenanceEntityRoleEnum theValue) {
1753                setRole(new BoundCodeDt<ProvenanceEntityRoleEnum>(ProvenanceEntityRoleEnum.VALUESET_BINDER, theValue));
1754                
1755/*
1756                getRoleElement().setValueAsEnum(theValue);
1757*/
1758                return this;
1759        }
1760
1761  
1762        /**
1763         * Gets the value(s) for <b>type</b> ().
1764         * creating it if it does
1765         * not exist. Will not return <code>null</code>.
1766         *
1767     * <p>
1768     * <b>Definition:</b>
1769     * The type of the entity. If the entity is a resource, then this is a resource type
1770     * </p> 
1771         */
1772        public CodingDt getType() {  
1773                if (myType == null) {
1774                        myType = new CodingDt();
1775                }
1776                return myType;
1777        }
1778
1779        /**
1780         * Sets the value(s) for <b>type</b> ()
1781         *
1782     * <p>
1783     * <b>Definition:</b>
1784     * The type of the entity. If the entity is a resource, then this is a resource type
1785     * </p> 
1786         */
1787        public Entity setType(CodingDt theValue) {
1788                myType = theValue;
1789                return this;
1790        }
1791        
1792        
1793
1794  
1795        /**
1796         * Gets the value(s) for <b>reference</b> ().
1797         * creating it if it does
1798         * not exist. Will not return <code>null</code>.
1799         *
1800     * <p>
1801     * <b>Definition:</b>
1802     * Identity of the  Entity used. May be a logical or physical uri and maybe absolute or relative
1803     * </p> 
1804         */
1805        public UriDt getReferenceElement() {  
1806                if (myReference == null) {
1807                        myReference = new UriDt();
1808                }
1809                return myReference;
1810        }
1811
1812        
1813        /**
1814         * Gets the value(s) for <b>reference</b> ().
1815         * creating it if it does
1816         * not exist. This method may return <code>null</code>.
1817         *
1818     * <p>
1819     * <b>Definition:</b>
1820     * Identity of the  Entity used. May be a logical or physical uri and maybe absolute or relative
1821     * </p> 
1822         */
1823        public String getReference() {  
1824                return getReferenceElement().getValue();
1825        }
1826
1827        /**
1828         * Sets the value(s) for <b>reference</b> ()
1829         *
1830     * <p>
1831     * <b>Definition:</b>
1832     * Identity of the  Entity used. May be a logical or physical uri and maybe absolute or relative
1833     * </p> 
1834         */
1835        public Entity setReference(UriDt theValue) {
1836                myReference = theValue;
1837                return this;
1838        }
1839        
1840        
1841
1842        /**
1843         * Sets the value for <b>reference</b> ()
1844         *
1845     * <p>
1846     * <b>Definition:</b>
1847     * Identity of the  Entity used. May be a logical or physical uri and maybe absolute or relative
1848     * </p> 
1849         */
1850        public Entity setReference( String theUri) {
1851                myReference = new UriDt(theUri); 
1852                return this; 
1853        }
1854
1855 
1856        /**
1857         * Gets the value(s) for <b>display</b> ().
1858         * creating it if it does
1859         * not exist. Will not return <code>null</code>.
1860         *
1861     * <p>
1862     * <b>Definition:</b>
1863     * Human-readable description of the entity
1864     * </p> 
1865         */
1866        public StringDt getDisplayElement() {  
1867                if (myDisplay == null) {
1868                        myDisplay = new StringDt();
1869                }
1870                return myDisplay;
1871        }
1872
1873        
1874        /**
1875         * Gets the value(s) for <b>display</b> ().
1876         * creating it if it does
1877         * not exist. This method may return <code>null</code>.
1878         *
1879     * <p>
1880     * <b>Definition:</b>
1881     * Human-readable description of the entity
1882     * </p> 
1883         */
1884        public String getDisplay() {  
1885                return getDisplayElement().getValue();
1886        }
1887
1888        /**
1889         * Sets the value(s) for <b>display</b> ()
1890         *
1891     * <p>
1892     * <b>Definition:</b>
1893     * Human-readable description of the entity
1894     * </p> 
1895         */
1896        public Entity setDisplay(StringDt theValue) {
1897                myDisplay = theValue;
1898                return this;
1899        }
1900        
1901        
1902
1903        /**
1904         * Sets the value for <b>display</b> ()
1905         *
1906     * <p>
1907     * <b>Definition:</b>
1908     * Human-readable description of the entity
1909     * </p> 
1910         */
1911        public Entity setDisplay( String theString) {
1912                myDisplay = new StringDt(theString); 
1913                return this; 
1914        }
1915
1916 
1917        /**
1918         * Gets the value(s) for <b>agent</b> ().
1919         * creating it if it does
1920         * not exist. Will not return <code>null</code>.
1921         *
1922     * <p>
1923     * <b>Definition:</b>
1924     * The entity is attributed to an agent to express the agent's responsibility for that entity, possibly along with other agents. This description can be understood as shorthand for saying that the agent was responsible for the activity which generated the entity
1925     * </p> 
1926         */
1927        public Agent getAgent() {  
1928                if (myAgent == null) {
1929                        myAgent = new Agent();
1930                }
1931                return myAgent;
1932        }
1933
1934        /**
1935         * Sets the value(s) for <b>agent</b> ()
1936         *
1937     * <p>
1938     * <b>Definition:</b>
1939     * The entity is attributed to an agent to express the agent's responsibility for that entity, possibly along with other agents. This description can be understood as shorthand for saying that the agent was responsible for the activity which generated the entity
1940     * </p> 
1941         */
1942        public Entity setAgent(Agent theValue) {
1943                myAgent = theValue;
1944                return this;
1945        }
1946        
1947        
1948
1949  
1950
1951
1952        }
1953
1954
1955
1956
1957    @Override
1958    public String getResourceName() {
1959        return "Provenance";
1960    }
1961    
1962    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
1963        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
1964    }
1965
1966
1967}