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