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>Claim</b> Resource
282 * ()
283 *
284 * <p>
285 * <b>Definition:</b>
286 * A provider issued list of services and products provided, or to be provided, to a patient which is provided to an insurer for payment recovery.
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/Claim">http://hl7.org/fhir/profiles/Claim</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="Claim", profile="http://hl7.org/fhir/profiles/Claim", id="claim")
301public class Claim extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource     {
303
304        /**
305         * Search parameter constant for <b>identifier</b>
306         * <p>
307         * Description: <b>The primary identifier of the financial resource</b><br>
308         * Type: <b>token</b><br>
309         * Path: <b>Claim.identifier</b><br>
310         * </p>
311         */
312        @SearchParamDefinition(name="identifier", path="Claim.identifier", description="The primary identifier of the financial resource", type="token"  )
313        public static final String SP_IDENTIFIER = "identifier";
314
315        /**
316         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
317         * <p>
318         * Description: <b>The primary identifier of the financial resource</b><br>
319         * Type: <b>token</b><br>
320         * Path: <b>Claim.identifier</b><br>
321         * </p>
322         */
323        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
324
325        /**
326         * Search parameter constant for <b>use</b>
327         * <p>
328         * Description: <b>The kind of financial resource</b><br>
329         * Type: <b>token</b><br>
330         * Path: <b>Claim.use</b><br>
331         * </p>
332         */
333        @SearchParamDefinition(name="use", path="Claim.use", description="The kind of financial resource", type="token"  )
334        public static final String SP_USE = "use";
335
336        /**
337         * <b>Fluent Client</b> search parameter constant for <b>use</b>
338         * <p>
339         * Description: <b>The kind of financial resource</b><br>
340         * Type: <b>token</b><br>
341         * Path: <b>Claim.use</b><br>
342         * </p>
343         */
344        public static final TokenClientParam USE = new TokenClientParam(SP_USE);
345
346        /**
347         * Search parameter constant for <b>priority</b>
348         * <p>
349         * Description: <b>Processing priority requested</b><br>
350         * Type: <b>token</b><br>
351         * Path: <b>Claim.priority</b><br>
352         * </p>
353         */
354        @SearchParamDefinition(name="priority", path="Claim.priority", description="Processing priority requested", type="token"  )
355        public static final String SP_PRIORITY = "priority";
356
357        /**
358         * <b>Fluent Client</b> search parameter constant for <b>priority</b>
359         * <p>
360         * Description: <b>Processing priority requested</b><br>
361         * Type: <b>token</b><br>
362         * Path: <b>Claim.priority</b><br>
363         * </p>
364         */
365        public static final TokenClientParam PRIORITY = new TokenClientParam(SP_PRIORITY);
366
367        /**
368         * Search parameter constant for <b>patient</b>
369         * <p>
370         * Description: <b>Patient</b><br>
371         * Type: <b>reference</b><br>
372         * Path: <b>Claim.patient</b><br>
373         * </p>
374         */
375        @SearchParamDefinition(name="patient", path="Claim.patient", description="Patient", type="reference" , providesMembershipIn={
376 @Compartment(name="Patient")   }
377 )
378        public static final String SP_PATIENT = "patient";
379
380        /**
381         * <b>Fluent Client</b> search parameter constant for <b>patient</b>
382         * <p>
383         * Description: <b>Patient</b><br>
384         * Type: <b>reference</b><br>
385         * Path: <b>Claim.patient</b><br>
386         * </p>
387         */
388        public static final ReferenceClientParam PATIENT = new ReferenceClientParam(SP_PATIENT);
389
390        /**
391         * Search parameter constant for <b>provider</b>
392         * <p>
393         * Description: <b>Provider responsible for the claim</b><br>
394         * Type: <b>reference</b><br>
395         * Path: <b>Claim.provider</b><br>
396         * </p>
397         */
398        @SearchParamDefinition(name="provider", path="Claim.provider", description="Provider responsible for the claim", type="reference" , providesMembershipIn={
399 @Compartment(name="Encounter")         }
400 )
401        public static final String SP_PROVIDER = "provider";
402
403        /**
404         * <b>Fluent Client</b> search parameter constant for <b>provider</b>
405         * <p>
406         * Description: <b>Provider responsible for the claim</b><br>
407         * Type: <b>reference</b><br>
408         * Path: <b>Claim.provider</b><br>
409         * </p>
410         */
411        public static final ReferenceClientParam PROVIDER = new ReferenceClientParam(SP_PROVIDER);
412
413
414        /**
415         * Constant for fluent queries to be used to add include statements. Specifies
416         * the path value of "<b>Claim:patient</b>".
417         */
418        public static final Include INCLUDE_PATIENT = new Include("Claim:patient");
419
420        /**
421         * Constant for fluent queries to be used to add include statements. Specifies
422         * the path value of "<b>Claim:provider</b>".
423         */
424        public static final Include INCLUDE_PROVIDER = new Include("Claim:provider");
425
426
427        @Child(name="type", type=CodeDt.class, order=0, min=1, max=1, summary=false, modifier=false)    
428        @Description(
429                shortDefinition="",
430                formalDefinition="The category of claim this is"
431        )
432        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/claim-type-link")
433        private BoundCodeDt<ClaimTypeEnum> myType;
434        
435        @Child(name="identifier", type=IdentifierDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
436        @Description(
437                shortDefinition="",
438                formalDefinition="The business identifier for the instance: invoice number, claim number, pre-determination or pre-authorization number."
439        )
440        private java.util.List<IdentifierDt> myIdentifier;
441        
442        @Child(name="ruleset", type=CodingDt.class, order=2, min=0, max=1, summary=false, modifier=false)       
443        @Description(
444                shortDefinition="",
445                formalDefinition="The version of the specification on which this instance relies."
446        )
447        private CodingDt myRuleset;
448        
449        @Child(name="originalRuleset", type=CodingDt.class, order=3, min=0, max=1, summary=false, modifier=false)       
450        @Description(
451                shortDefinition="",
452                formalDefinition="The version of the specification from which the original instance was created."
453        )
454        private CodingDt myOriginalRuleset;
455        
456        @Child(name="created", type=DateTimeDt.class, order=4, min=0, max=1, summary=false, modifier=false)     
457        @Description(
458                shortDefinition="",
459                formalDefinition="The date when the enclosed suite of services were performed or completed"
460        )
461        private DateTimeDt myCreated;
462        
463        @Child(name="target", order=5, min=0, max=1, summary=false, modifier=false, type={
464                ca.uhn.fhir.model.dstu2.resource.Organization.class     })
465        @Description(
466                shortDefinition="",
467                formalDefinition="Insurer Identifier, typical BIN number (6 digit)."
468        )
469        private ResourceReferenceDt myTarget;
470        
471        @Child(name="provider", order=6, min=0, max=1, summary=false, modifier=false, type={
472                ca.uhn.fhir.model.dstu2.resource.Practitioner.class     })
473        @Description(
474                shortDefinition="",
475                formalDefinition="The provider which is responsible for the bill, claim pre-determination, pre-authorization."
476        )
477        private ResourceReferenceDt myProvider;
478        
479        @Child(name="organization", order=7, min=0, max=1, summary=false, modifier=false, type={
480                ca.uhn.fhir.model.dstu2.resource.Organization.class     })
481        @Description(
482                shortDefinition="",
483                formalDefinition="The organization which is responsible for the bill, claim pre-determination, pre-authorization."
484        )
485        private ResourceReferenceDt myOrganization;
486        
487        @Child(name="use", type=CodeDt.class, order=8, min=0, max=1, summary=false, modifier=false)     
488        @Description(
489                shortDefinition="",
490                formalDefinition="Complete (Bill or Claim), Proposed (Pre-Authorization), Exploratory (Pre-determination)."
491        )
492        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/claim-use-link")
493        private BoundCodeDt<UseEnum> myUse;
494        
495        @Child(name="priority", type=CodingDt.class, order=9, min=0, max=1, summary=false, modifier=false)      
496        @Description(
497                shortDefinition="",
498                formalDefinition="Immediate (stat), best effort (normal), deferred (deferred)"
499        )
500        private CodingDt myPriority;
501        
502        @Child(name="fundsReserve", type=CodingDt.class, order=10, min=0, max=1, summary=false, modifier=false) 
503        @Description(
504                shortDefinition="",
505                formalDefinition="In the case of a Pre-Determination/Pre-Authorization the provider may request that funds in the amount of the expected Benefit be reserved ('Patient' or 'Provider') to pay for the Benefits determined on the subsequent claim(s). 'None' explicitly indicates no funds reserving is requested."
506        )
507        private CodingDt myFundsReserve;
508        
509        @Child(name="enterer", order=11, min=0, max=1, summary=false, modifier=false, type={
510                ca.uhn.fhir.model.dstu2.resource.Practitioner.class     })
511        @Description(
512                shortDefinition="",
513                formalDefinition="Person who created the invoice/claim/pre-determination or pre-authorization."
514        )
515        private ResourceReferenceDt myEnterer;
516        
517        @Child(name="facility", order=12, min=0, max=1, summary=false, modifier=false, type={
518                ca.uhn.fhir.model.dstu2.resource.Location.class })
519        @Description(
520                shortDefinition="",
521                formalDefinition="Facility where the services were provided."
522        )
523        private ResourceReferenceDt myFacility;
524        
525        @Child(name="prescription", order=13, min=0, max=1, summary=false, modifier=false, type={
526                ca.uhn.fhir.model.dstu2.resource.MedicationOrder.class,                 ca.uhn.fhir.model.dstu2.resource.VisionPrescription.class       })
527        @Description(
528                shortDefinition="",
529                formalDefinition="Prescription to support the dispensing of Pharmacy or Vision products."
530        )
531        private ResourceReferenceDt myPrescription;
532        
533        @Child(name="originalPrescription", order=14, min=0, max=1, summary=false, modifier=false, type={
534                ca.uhn.fhir.model.dstu2.resource.MedicationOrder.class  })
535        @Description(
536                shortDefinition="",
537                formalDefinition="Original prescription to support the dispensing of pharmacy services, medications or products."
538        )
539        private ResourceReferenceDt myOriginalPrescription;
540        
541        @Child(name="payee", order=15, min=0, max=1, summary=false, modifier=false)     
542        @Description(
543                shortDefinition="",
544                formalDefinition="The party to be reimbursed for the services."
545        )
546        private Payee myPayee;
547        
548        @Child(name="referral", order=16, min=0, max=1, summary=false, modifier=false, type={
549                ca.uhn.fhir.model.dstu2.resource.ReferralRequest.class  })
550        @Description(
551                shortDefinition="",
552                formalDefinition="The referral resource which lists the date, practitioner, reason and other supporting information."
553        )
554        private ResourceReferenceDt myReferral;
555        
556        @Child(name="diagnosis", order=17, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
557        @Description(
558                shortDefinition="",
559                formalDefinition="Ordered list of patient diagnosis for which care is sought."
560        )
561        private java.util.List<Diagnosis> myDiagnosis;
562        
563        @Child(name="condition", type=CodingDt.class, order=18, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
564        @Description(
565                shortDefinition="",
566                formalDefinition="List of patient conditions for which care is sought."
567        )
568        private java.util.List<CodingDt> myCondition;
569        
570        @Child(name="patient", order=19, min=1, max=1, summary=false, modifier=false, type={
571                ca.uhn.fhir.model.dstu2.resource.Patient.class  })
572        @Description(
573                shortDefinition="",
574                formalDefinition="Patient Resource"
575        )
576        private ResourceReferenceDt myPatient;
577        
578        @Child(name="coverage", order=20, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
579        @Description(
580                shortDefinition="",
581                formalDefinition="Financial instrument by which payment information for health care"
582        )
583        private java.util.List<Coverage> myCoverage;
584        
585        @Child(name="exception", type=CodingDt.class, order=21, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
586        @Description(
587                shortDefinition="",
588                formalDefinition="Factors which may influence the applicability of coverage."
589        )
590        private java.util.List<CodingDt> myException;
591        
592        @Child(name="school", type=StringDt.class, order=22, min=0, max=1, summary=false, modifier=false)       
593        @Description(
594                shortDefinition="",
595                formalDefinition="Name of school for over-aged dependents."
596        )
597        private StringDt mySchool;
598        
599        @Child(name="accident", type=DateDt.class, order=23, min=0, max=1, summary=false, modifier=false)       
600        @Description(
601                shortDefinition="",
602                formalDefinition="Date of an accident which these services are addressing."
603        )
604        private DateDt myAccident;
605        
606        @Child(name="accidentType", type=CodingDt.class, order=24, min=0, max=1, summary=false, modifier=false) 
607        @Description(
608                shortDefinition="",
609                formalDefinition="Type of accident: work, auto, etc."
610        )
611        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/v3-ActIncidentCode")
612        private CodingDt myAccidentType;
613        
614        @Child(name="interventionException", type=CodingDt.class, order=25, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
615        @Description(
616                shortDefinition="",
617                formalDefinition="A list of intervention and exception codes which may influence the adjudication of the claim."
618        )
619        private java.util.List<CodingDt> myInterventionException;
620        
621        @Child(name="item", order=26, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
622        @Description(
623                shortDefinition="",
624                formalDefinition="First tier of goods and services"
625        )
626        private java.util.List<Item> myItem;
627        
628        @Child(name="additionalMaterials", type=CodingDt.class, order=27, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
629        @Description(
630                shortDefinition="",
631                formalDefinition="Code to indicate that Xrays, images, emails, documents, models or attachments are being sent in support of this submission."
632        )
633        private java.util.List<CodingDt> myAdditionalMaterials;
634        
635        @Child(name="missingTeeth", order=28, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
636        @Description(
637                shortDefinition="",
638                formalDefinition="A list of teeth which would be expected but are not found due to having been previously  extracted or for other reasons."
639        )
640        private java.util.List<MissingTeeth> myMissingTeeth;
641        
642
643        @Override
644        public boolean isEmpty() {
645                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myType,  myIdentifier,  myRuleset,  myOriginalRuleset,  myCreated,  myTarget,  myProvider,  myOrganization,  myUse,  myPriority,  myFundsReserve,  myEnterer,  myFacility,  myPrescription,  myOriginalPrescription,  myPayee,  myReferral,  myDiagnosis,  myCondition,  myPatient,  myCoverage,  myException,  mySchool,  myAccident,  myAccidentType,  myInterventionException,  myItem,  myAdditionalMaterials,  myMissingTeeth);
646        }
647        
648        @Override
649        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
650                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myType, myIdentifier, myRuleset, myOriginalRuleset, myCreated, myTarget, myProvider, myOrganization, myUse, myPriority, myFundsReserve, myEnterer, myFacility, myPrescription, myOriginalPrescription, myPayee, myReferral, myDiagnosis, myCondition, myPatient, myCoverage, myException, mySchool, myAccident, myAccidentType, myInterventionException, myItem, myAdditionalMaterials, myMissingTeeth);
651        }
652
653        /**
654         * Gets the value(s) for <b>type</b> ().
655         * creating it if it does
656         * not exist. Will not return <code>null</code>.
657         *
658     * <p>
659     * <b>Definition:</b>
660     * The category of claim this is
661     * </p> 
662         */
663        public BoundCodeDt<ClaimTypeEnum> getTypeElement() {  
664                if (myType == null) {
665                        myType = new BoundCodeDt<ClaimTypeEnum>(ClaimTypeEnum.VALUESET_BINDER);
666                }
667                return myType;
668        }
669
670        
671        /**
672         * Gets the value(s) for <b>type</b> ().
673         * creating it if it does
674         * not exist. This method may return <code>null</code>.
675         *
676     * <p>
677     * <b>Definition:</b>
678     * The category of claim this is
679     * </p> 
680         */
681        public String getType() {  
682                return getTypeElement().getValue();
683        }
684
685        /**
686         * Sets the value(s) for <b>type</b> ()
687         *
688     * <p>
689     * <b>Definition:</b>
690     * The category of claim this is
691     * </p> 
692         */
693        public Claim setType(BoundCodeDt<ClaimTypeEnum> theValue) {
694                myType = theValue;
695                return this;
696        }
697        
698        
699
700        /**
701         * Sets the value(s) for <b>type</b> ()
702         *
703     * <p>
704     * <b>Definition:</b>
705     * The category of claim this is
706     * </p> 
707         */
708        public Claim setType(ClaimTypeEnum theValue) {
709                setType(new BoundCodeDt<ClaimTypeEnum>(ClaimTypeEnum.VALUESET_BINDER, theValue));
710                
711/*
712                getTypeElement().setValueAsEnum(theValue);
713*/
714                return this;
715        }
716
717  
718        /**
719         * Gets the value(s) for <b>identifier</b> ().
720         * creating it if it does
721         * not exist. Will not return <code>null</code>.
722         *
723     * <p>
724     * <b>Definition:</b>
725     * The business identifier for the instance: invoice number, claim number, pre-determination or pre-authorization number.
726     * </p> 
727         */
728        public java.util.List<IdentifierDt> getIdentifier() {  
729                if (myIdentifier == null) {
730                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
731                }
732                return myIdentifier;
733        }
734
735        /**
736         * Sets the value(s) for <b>identifier</b> ()
737         *
738     * <p>
739     * <b>Definition:</b>
740     * The business identifier for the instance: invoice number, claim number, pre-determination or pre-authorization number.
741     * </p> 
742         */
743        public Claim setIdentifier(java.util.List<IdentifierDt> theValue) {
744                myIdentifier = theValue;
745                return this;
746        }
747        
748        
749
750        /**
751         * Adds and returns a new value for <b>identifier</b> ()
752         *
753     * <p>
754     * <b>Definition:</b>
755     * The business identifier for the instance: invoice number, claim number, pre-determination or pre-authorization number.
756     * </p> 
757         */
758        public IdentifierDt addIdentifier() {
759                IdentifierDt newType = new IdentifierDt();
760                getIdentifier().add(newType);
761                return newType; 
762        }
763
764        /**
765         * Adds a given new value for <b>identifier</b> ()
766         *
767         * <p>
768         * <b>Definition:</b>
769         * The business identifier for the instance: invoice number, claim number, pre-determination or pre-authorization number.
770         * </p>
771         * @param theValue The identifier to add (must not be <code>null</code>)
772         */
773        public Claim addIdentifier(IdentifierDt theValue) {
774                if (theValue == null) {
775                        throw new NullPointerException("theValue must not be null");
776                }
777                getIdentifier().add(theValue);
778                return this;
779        }
780
781        /**
782         * Gets the first repetition for <b>identifier</b> (),
783         * creating it if it does not already exist.
784         *
785     * <p>
786     * <b>Definition:</b>
787     * The business identifier for the instance: invoice number, claim number, pre-determination or pre-authorization number.
788     * </p> 
789         */
790        public IdentifierDt getIdentifierFirstRep() {
791                if (getIdentifier().isEmpty()) {
792                        return addIdentifier();
793                }
794                return getIdentifier().get(0); 
795        }
796  
797        /**
798         * Gets the value(s) for <b>ruleset</b> ().
799         * creating it if it does
800         * not exist. Will not return <code>null</code>.
801         *
802     * <p>
803     * <b>Definition:</b>
804     * The version of the specification on which this instance relies.
805     * </p> 
806         */
807        public CodingDt getRuleset() {  
808                if (myRuleset == null) {
809                        myRuleset = new CodingDt();
810                }
811                return myRuleset;
812        }
813
814        /**
815         * Sets the value(s) for <b>ruleset</b> ()
816         *
817     * <p>
818     * <b>Definition:</b>
819     * The version of the specification on which this instance relies.
820     * </p> 
821         */
822        public Claim setRuleset(CodingDt theValue) {
823                myRuleset = theValue;
824                return this;
825        }
826        
827        
828
829  
830        /**
831         * Gets the value(s) for <b>originalRuleset</b> ().
832         * creating it if it does
833         * not exist. Will not return <code>null</code>.
834         *
835     * <p>
836     * <b>Definition:</b>
837     * The version of the specification from which the original instance was created.
838     * </p> 
839         */
840        public CodingDt getOriginalRuleset() {  
841                if (myOriginalRuleset == null) {
842                        myOriginalRuleset = new CodingDt();
843                }
844                return myOriginalRuleset;
845        }
846
847        /**
848         * Sets the value(s) for <b>originalRuleset</b> ()
849         *
850     * <p>
851     * <b>Definition:</b>
852     * The version of the specification from which the original instance was created.
853     * </p> 
854         */
855        public Claim setOriginalRuleset(CodingDt theValue) {
856                myOriginalRuleset = theValue;
857                return this;
858        }
859        
860        
861
862  
863        /**
864         * Gets the value(s) for <b>created</b> ().
865         * creating it if it does
866         * not exist. Will not return <code>null</code>.
867         *
868     * <p>
869     * <b>Definition:</b>
870     * The date when the enclosed suite of services were performed or completed
871     * </p> 
872         */
873        public DateTimeDt getCreatedElement() {  
874                if (myCreated == null) {
875                        myCreated = new DateTimeDt();
876                }
877                return myCreated;
878        }
879
880        
881        /**
882         * Gets the value(s) for <b>created</b> ().
883         * creating it if it does
884         * not exist. This method may return <code>null</code>.
885         *
886     * <p>
887     * <b>Definition:</b>
888     * The date when the enclosed suite of services were performed or completed
889     * </p> 
890         */
891        public Date getCreated() {  
892                return getCreatedElement().getValue();
893        }
894
895        /**
896         * Sets the value(s) for <b>created</b> ()
897         *
898     * <p>
899     * <b>Definition:</b>
900     * The date when the enclosed suite of services were performed or completed
901     * </p> 
902         */
903        public Claim setCreated(DateTimeDt theValue) {
904                myCreated = theValue;
905                return this;
906        }
907        
908        
909
910        /**
911         * Sets the value for <b>created</b> ()
912         *
913     * <p>
914     * <b>Definition:</b>
915     * The date when the enclosed suite of services were performed or completed
916     * </p> 
917         */
918        public Claim setCreatedWithSecondsPrecision( Date theDate) {
919                myCreated = new DateTimeDt(theDate); 
920                return this; 
921        }
922
923        /**
924         * Sets the value for <b>created</b> ()
925         *
926     * <p>
927     * <b>Definition:</b>
928     * The date when the enclosed suite of services were performed or completed
929     * </p> 
930         */
931        public Claim setCreated( Date theDate,  TemporalPrecisionEnum thePrecision) {
932                myCreated = new DateTimeDt(theDate, thePrecision); 
933                return this; 
934        }
935
936 
937        /**
938         * Gets the value(s) for <b>target</b> ().
939         * creating it if it does
940         * not exist. Will not return <code>null</code>.
941         *
942     * <p>
943     * <b>Definition:</b>
944     * Insurer Identifier, typical BIN number (6 digit).
945     * </p> 
946         */
947        public ResourceReferenceDt getTarget() {  
948                if (myTarget == null) {
949                        myTarget = new ResourceReferenceDt();
950                }
951                return myTarget;
952        }
953
954        /**
955         * Sets the value(s) for <b>target</b> ()
956         *
957     * <p>
958     * <b>Definition:</b>
959     * Insurer Identifier, typical BIN number (6 digit).
960     * </p> 
961         */
962        public Claim setTarget(ResourceReferenceDt theValue) {
963                myTarget = theValue;
964                return this;
965        }
966        
967        
968
969  
970        /**
971         * Gets the value(s) for <b>provider</b> ().
972         * creating it if it does
973         * not exist. Will not return <code>null</code>.
974         *
975     * <p>
976     * <b>Definition:</b>
977     * The provider which is responsible for the bill, claim pre-determination, pre-authorization.
978     * </p> 
979         */
980        public ResourceReferenceDt getProvider() {  
981                if (myProvider == null) {
982                        myProvider = new ResourceReferenceDt();
983                }
984                return myProvider;
985        }
986
987        /**
988         * Sets the value(s) for <b>provider</b> ()
989         *
990     * <p>
991     * <b>Definition:</b>
992     * The provider which is responsible for the bill, claim pre-determination, pre-authorization.
993     * </p> 
994         */
995        public Claim setProvider(ResourceReferenceDt theValue) {
996                myProvider = theValue;
997                return this;
998        }
999        
1000        
1001
1002  
1003        /**
1004         * Gets the value(s) for <b>organization</b> ().
1005         * creating it if it does
1006         * not exist. Will not return <code>null</code>.
1007         *
1008     * <p>
1009     * <b>Definition:</b>
1010     * The organization which is responsible for the bill, claim pre-determination, pre-authorization.
1011     * </p> 
1012         */
1013        public ResourceReferenceDt getOrganization() {  
1014                if (myOrganization == null) {
1015                        myOrganization = new ResourceReferenceDt();
1016                }
1017                return myOrganization;
1018        }
1019
1020        /**
1021         * Sets the value(s) for <b>organization</b> ()
1022         *
1023     * <p>
1024     * <b>Definition:</b>
1025     * The organization which is responsible for the bill, claim pre-determination, pre-authorization.
1026     * </p> 
1027         */
1028        public Claim setOrganization(ResourceReferenceDt theValue) {
1029                myOrganization = theValue;
1030                return this;
1031        }
1032        
1033        
1034
1035  
1036        /**
1037         * Gets the value(s) for <b>use</b> ().
1038         * creating it if it does
1039         * not exist. Will not return <code>null</code>.
1040         *
1041     * <p>
1042     * <b>Definition:</b>
1043     * Complete (Bill or Claim), Proposed (Pre-Authorization), Exploratory (Pre-determination).
1044     * </p> 
1045         */
1046        public BoundCodeDt<UseEnum> getUseElement() {  
1047                if (myUse == null) {
1048                        myUse = new BoundCodeDt<UseEnum>(UseEnum.VALUESET_BINDER);
1049                }
1050                return myUse;
1051        }
1052
1053        
1054        /**
1055         * Gets the value(s) for <b>use</b> ().
1056         * creating it if it does
1057         * not exist. This method may return <code>null</code>.
1058         *
1059     * <p>
1060     * <b>Definition:</b>
1061     * Complete (Bill or Claim), Proposed (Pre-Authorization), Exploratory (Pre-determination).
1062     * </p> 
1063         */
1064        public String getUse() {  
1065                return getUseElement().getValue();
1066        }
1067
1068        /**
1069         * Sets the value(s) for <b>use</b> ()
1070         *
1071     * <p>
1072     * <b>Definition:</b>
1073     * Complete (Bill or Claim), Proposed (Pre-Authorization), Exploratory (Pre-determination).
1074     * </p> 
1075         */
1076        public Claim setUse(BoundCodeDt<UseEnum> theValue) {
1077                myUse = theValue;
1078                return this;
1079        }
1080        
1081        
1082
1083        /**
1084         * Sets the value(s) for <b>use</b> ()
1085         *
1086     * <p>
1087     * <b>Definition:</b>
1088     * Complete (Bill or Claim), Proposed (Pre-Authorization), Exploratory (Pre-determination).
1089     * </p> 
1090         */
1091        public Claim setUse(UseEnum theValue) {
1092                setUse(new BoundCodeDt<UseEnum>(UseEnum.VALUESET_BINDER, theValue));
1093                
1094/*
1095                getUseElement().setValueAsEnum(theValue);
1096*/
1097                return this;
1098        }
1099
1100  
1101        /**
1102         * Gets the value(s) for <b>priority</b> ().
1103         * creating it if it does
1104         * not exist. Will not return <code>null</code>.
1105         *
1106     * <p>
1107     * <b>Definition:</b>
1108     * Immediate (stat), best effort (normal), deferred (deferred)
1109     * </p> 
1110         */
1111        public CodingDt getPriority() {  
1112                if (myPriority == null) {
1113                        myPriority = new CodingDt();
1114                }
1115                return myPriority;
1116        }
1117
1118        /**
1119         * Sets the value(s) for <b>priority</b> ()
1120         *
1121     * <p>
1122     * <b>Definition:</b>
1123     * Immediate (stat), best effort (normal), deferred (deferred)
1124     * </p> 
1125         */
1126        public Claim setPriority(CodingDt theValue) {
1127                myPriority = theValue;
1128                return this;
1129        }
1130        
1131        
1132
1133  
1134        /**
1135         * Gets the value(s) for <b>fundsReserve</b> ().
1136         * creating it if it does
1137         * not exist. Will not return <code>null</code>.
1138         *
1139     * <p>
1140     * <b>Definition:</b>
1141     * In the case of a Pre-Determination/Pre-Authorization the provider may request that funds in the amount of the expected Benefit be reserved ('Patient' or 'Provider') to pay for the Benefits determined on the subsequent claim(s). 'None' explicitly indicates no funds reserving is requested.
1142     * </p> 
1143         */
1144        public CodingDt getFundsReserve() {  
1145                if (myFundsReserve == null) {
1146                        myFundsReserve = new CodingDt();
1147                }
1148                return myFundsReserve;
1149        }
1150
1151        /**
1152         * Sets the value(s) for <b>fundsReserve</b> ()
1153         *
1154     * <p>
1155     * <b>Definition:</b>
1156     * In the case of a Pre-Determination/Pre-Authorization the provider may request that funds in the amount of the expected Benefit be reserved ('Patient' or 'Provider') to pay for the Benefits determined on the subsequent claim(s). 'None' explicitly indicates no funds reserving is requested.
1157     * </p> 
1158         */
1159        public Claim setFundsReserve(CodingDt theValue) {
1160                myFundsReserve = theValue;
1161                return this;
1162        }
1163        
1164        
1165
1166  
1167        /**
1168         * Gets the value(s) for <b>enterer</b> ().
1169         * creating it if it does
1170         * not exist. Will not return <code>null</code>.
1171         *
1172     * <p>
1173     * <b>Definition:</b>
1174     * Person who created the invoice/claim/pre-determination or pre-authorization.
1175     * </p> 
1176         */
1177        public ResourceReferenceDt getEnterer() {  
1178                if (myEnterer == null) {
1179                        myEnterer = new ResourceReferenceDt();
1180                }
1181                return myEnterer;
1182        }
1183
1184        /**
1185         * Sets the value(s) for <b>enterer</b> ()
1186         *
1187     * <p>
1188     * <b>Definition:</b>
1189     * Person who created the invoice/claim/pre-determination or pre-authorization.
1190     * </p> 
1191         */
1192        public Claim setEnterer(ResourceReferenceDt theValue) {
1193                myEnterer = theValue;
1194                return this;
1195        }
1196        
1197        
1198
1199  
1200        /**
1201         * Gets the value(s) for <b>facility</b> ().
1202         * creating it if it does
1203         * not exist. Will not return <code>null</code>.
1204         *
1205     * <p>
1206     * <b>Definition:</b>
1207     * Facility where the services were provided.
1208     * </p> 
1209         */
1210        public ResourceReferenceDt getFacility() {  
1211                if (myFacility == null) {
1212                        myFacility = new ResourceReferenceDt();
1213                }
1214                return myFacility;
1215        }
1216
1217        /**
1218         * Sets the value(s) for <b>facility</b> ()
1219         *
1220     * <p>
1221     * <b>Definition:</b>
1222     * Facility where the services were provided.
1223     * </p> 
1224         */
1225        public Claim setFacility(ResourceReferenceDt theValue) {
1226                myFacility = theValue;
1227                return this;
1228        }
1229        
1230        
1231
1232  
1233        /**
1234         * Gets the value(s) for <b>prescription</b> ().
1235         * creating it if it does
1236         * not exist. Will not return <code>null</code>.
1237         *
1238     * <p>
1239     * <b>Definition:</b>
1240     * Prescription to support the dispensing of Pharmacy or Vision products.
1241     * </p> 
1242         */
1243        public ResourceReferenceDt getPrescription() {  
1244                if (myPrescription == null) {
1245                        myPrescription = new ResourceReferenceDt();
1246                }
1247                return myPrescription;
1248        }
1249
1250        /**
1251         * Sets the value(s) for <b>prescription</b> ()
1252         *
1253     * <p>
1254     * <b>Definition:</b>
1255     * Prescription to support the dispensing of Pharmacy or Vision products.
1256     * </p> 
1257         */
1258        public Claim setPrescription(ResourceReferenceDt theValue) {
1259                myPrescription = theValue;
1260                return this;
1261        }
1262        
1263        
1264
1265  
1266        /**
1267         * Gets the value(s) for <b>originalPrescription</b> ().
1268         * creating it if it does
1269         * not exist. Will not return <code>null</code>.
1270         *
1271     * <p>
1272     * <b>Definition:</b>
1273     * Original prescription to support the dispensing of pharmacy services, medications or products.
1274     * </p> 
1275         */
1276        public ResourceReferenceDt getOriginalPrescription() {  
1277                if (myOriginalPrescription == null) {
1278                        myOriginalPrescription = new ResourceReferenceDt();
1279                }
1280                return myOriginalPrescription;
1281        }
1282
1283        /**
1284         * Sets the value(s) for <b>originalPrescription</b> ()
1285         *
1286     * <p>
1287     * <b>Definition:</b>
1288     * Original prescription to support the dispensing of pharmacy services, medications or products.
1289     * </p> 
1290         */
1291        public Claim setOriginalPrescription(ResourceReferenceDt theValue) {
1292                myOriginalPrescription = theValue;
1293                return this;
1294        }
1295        
1296        
1297
1298  
1299        /**
1300         * Gets the value(s) for <b>payee</b> ().
1301         * creating it if it does
1302         * not exist. Will not return <code>null</code>.
1303         *
1304     * <p>
1305     * <b>Definition:</b>
1306     * The party to be reimbursed for the services.
1307     * </p> 
1308         */
1309        public Payee getPayee() {  
1310                if (myPayee == null) {
1311                        myPayee = new Payee();
1312                }
1313                return myPayee;
1314        }
1315
1316        /**
1317         * Sets the value(s) for <b>payee</b> ()
1318         *
1319     * <p>
1320     * <b>Definition:</b>
1321     * The party to be reimbursed for the services.
1322     * </p> 
1323         */
1324        public Claim setPayee(Payee theValue) {
1325                myPayee = theValue;
1326                return this;
1327        }
1328        
1329        
1330
1331  
1332        /**
1333         * Gets the value(s) for <b>referral</b> ().
1334         * creating it if it does
1335         * not exist. Will not return <code>null</code>.
1336         *
1337     * <p>
1338     * <b>Definition:</b>
1339     * The referral resource which lists the date, practitioner, reason and other supporting information.
1340     * </p> 
1341         */
1342        public ResourceReferenceDt getReferral() {  
1343                if (myReferral == null) {
1344                        myReferral = new ResourceReferenceDt();
1345                }
1346                return myReferral;
1347        }
1348
1349        /**
1350         * Sets the value(s) for <b>referral</b> ()
1351         *
1352     * <p>
1353     * <b>Definition:</b>
1354     * The referral resource which lists the date, practitioner, reason and other supporting information.
1355     * </p> 
1356         */
1357        public Claim setReferral(ResourceReferenceDt theValue) {
1358                myReferral = theValue;
1359                return this;
1360        }
1361        
1362        
1363
1364  
1365        /**
1366         * Gets the value(s) for <b>diagnosis</b> ().
1367         * creating it if it does
1368         * not exist. Will not return <code>null</code>.
1369         *
1370     * <p>
1371     * <b>Definition:</b>
1372     * Ordered list of patient diagnosis for which care is sought.
1373     * </p> 
1374         */
1375        public java.util.List<Diagnosis> getDiagnosis() {  
1376                if (myDiagnosis == null) {
1377                        myDiagnosis = new java.util.ArrayList<Diagnosis>();
1378                }
1379                return myDiagnosis;
1380        }
1381
1382        /**
1383         * Sets the value(s) for <b>diagnosis</b> ()
1384         *
1385     * <p>
1386     * <b>Definition:</b>
1387     * Ordered list of patient diagnosis for which care is sought.
1388     * </p> 
1389         */
1390        public Claim setDiagnosis(java.util.List<Diagnosis> theValue) {
1391                myDiagnosis = theValue;
1392                return this;
1393        }
1394        
1395        
1396
1397        /**
1398         * Adds and returns a new value for <b>diagnosis</b> ()
1399         *
1400     * <p>
1401     * <b>Definition:</b>
1402     * Ordered list of patient diagnosis for which care is sought.
1403     * </p> 
1404         */
1405        public Diagnosis addDiagnosis() {
1406                Diagnosis newType = new Diagnosis();
1407                getDiagnosis().add(newType);
1408                return newType; 
1409        }
1410
1411        /**
1412         * Adds a given new value for <b>diagnosis</b> ()
1413         *
1414         * <p>
1415         * <b>Definition:</b>
1416         * Ordered list of patient diagnosis for which care is sought.
1417         * </p>
1418         * @param theValue The diagnosis to add (must not be <code>null</code>)
1419         */
1420        public Claim addDiagnosis(Diagnosis theValue) {
1421                if (theValue == null) {
1422                        throw new NullPointerException("theValue must not be null");
1423                }
1424                getDiagnosis().add(theValue);
1425                return this;
1426        }
1427
1428        /**
1429         * Gets the first repetition for <b>diagnosis</b> (),
1430         * creating it if it does not already exist.
1431         *
1432     * <p>
1433     * <b>Definition:</b>
1434     * Ordered list of patient diagnosis for which care is sought.
1435     * </p> 
1436         */
1437        public Diagnosis getDiagnosisFirstRep() {
1438                if (getDiagnosis().isEmpty()) {
1439                        return addDiagnosis();
1440                }
1441                return getDiagnosis().get(0); 
1442        }
1443  
1444        /**
1445         * Gets the value(s) for <b>condition</b> ().
1446         * creating it if it does
1447         * not exist. Will not return <code>null</code>.
1448         *
1449     * <p>
1450     * <b>Definition:</b>
1451     * List of patient conditions for which care is sought.
1452     * </p> 
1453         */
1454        public java.util.List<CodingDt> getCondition() {  
1455                if (myCondition == null) {
1456                        myCondition = new java.util.ArrayList<CodingDt>();
1457                }
1458                return myCondition;
1459        }
1460
1461        /**
1462         * Sets the value(s) for <b>condition</b> ()
1463         *
1464     * <p>
1465     * <b>Definition:</b>
1466     * List of patient conditions for which care is sought.
1467     * </p> 
1468         */
1469        public Claim setCondition(java.util.List<CodingDt> theValue) {
1470                myCondition = theValue;
1471                return this;
1472        }
1473        
1474        
1475
1476        /**
1477         * Adds and returns a new value for <b>condition</b> ()
1478         *
1479     * <p>
1480     * <b>Definition:</b>
1481     * List of patient conditions for which care is sought.
1482     * </p> 
1483         */
1484        public CodingDt addCondition() {
1485                CodingDt newType = new CodingDt();
1486                getCondition().add(newType);
1487                return newType; 
1488        }
1489
1490        /**
1491         * Adds a given new value for <b>condition</b> ()
1492         *
1493         * <p>
1494         * <b>Definition:</b>
1495         * List of patient conditions for which care is sought.
1496         * </p>
1497         * @param theValue The condition to add (must not be <code>null</code>)
1498         */
1499        public Claim addCondition(CodingDt theValue) {
1500                if (theValue == null) {
1501                        throw new NullPointerException("theValue must not be null");
1502                }
1503                getCondition().add(theValue);
1504                return this;
1505        }
1506
1507        /**
1508         * Gets the first repetition for <b>condition</b> (),
1509         * creating it if it does not already exist.
1510         *
1511     * <p>
1512     * <b>Definition:</b>
1513     * List of patient conditions for which care is sought.
1514     * </p> 
1515         */
1516        public CodingDt getConditionFirstRep() {
1517                if (getCondition().isEmpty()) {
1518                        return addCondition();
1519                }
1520                return getCondition().get(0); 
1521        }
1522  
1523        /**
1524         * Gets the value(s) for <b>patient</b> ().
1525         * creating it if it does
1526         * not exist. Will not return <code>null</code>.
1527         *
1528     * <p>
1529     * <b>Definition:</b>
1530     * Patient Resource
1531     * </p> 
1532         */
1533        public ResourceReferenceDt getPatient() {  
1534                if (myPatient == null) {
1535                        myPatient = new ResourceReferenceDt();
1536                }
1537                return myPatient;
1538        }
1539
1540        /**
1541         * Sets the value(s) for <b>patient</b> ()
1542         *
1543     * <p>
1544     * <b>Definition:</b>
1545     * Patient Resource
1546     * </p> 
1547         */
1548        public Claim setPatient(ResourceReferenceDt theValue) {
1549                myPatient = theValue;
1550                return this;
1551        }
1552        
1553        
1554
1555  
1556        /**
1557         * Gets the value(s) for <b>coverage</b> ().
1558         * creating it if it does
1559         * not exist. Will not return <code>null</code>.
1560         *
1561     * <p>
1562     * <b>Definition:</b>
1563     * Financial instrument by which payment information for health care
1564     * </p> 
1565         */
1566        public java.util.List<Coverage> getCoverage() {  
1567                if (myCoverage == null) {
1568                        myCoverage = new java.util.ArrayList<Coverage>();
1569                }
1570                return myCoverage;
1571        }
1572
1573        /**
1574         * Sets the value(s) for <b>coverage</b> ()
1575         *
1576     * <p>
1577     * <b>Definition:</b>
1578     * Financial instrument by which payment information for health care
1579     * </p> 
1580         */
1581        public Claim setCoverage(java.util.List<Coverage> theValue) {
1582                myCoverage = theValue;
1583                return this;
1584        }
1585        
1586        
1587
1588        /**
1589         * Adds and returns a new value for <b>coverage</b> ()
1590         *
1591     * <p>
1592     * <b>Definition:</b>
1593     * Financial instrument by which payment information for health care
1594     * </p> 
1595         */
1596        public Coverage addCoverage() {
1597                Coverage newType = new Coverage();
1598                getCoverage().add(newType);
1599                return newType; 
1600        }
1601
1602        /**
1603         * Adds a given new value for <b>coverage</b> ()
1604         *
1605         * <p>
1606         * <b>Definition:</b>
1607         * Financial instrument by which payment information for health care
1608         * </p>
1609         * @param theValue The coverage to add (must not be <code>null</code>)
1610         */
1611        public Claim addCoverage(Coverage theValue) {
1612                if (theValue == null) {
1613                        throw new NullPointerException("theValue must not be null");
1614                }
1615                getCoverage().add(theValue);
1616                return this;
1617        }
1618
1619        /**
1620         * Gets the first repetition for <b>coverage</b> (),
1621         * creating it if it does not already exist.
1622         *
1623     * <p>
1624     * <b>Definition:</b>
1625     * Financial instrument by which payment information for health care
1626     * </p> 
1627         */
1628        public Coverage getCoverageFirstRep() {
1629                if (getCoverage().isEmpty()) {
1630                        return addCoverage();
1631                }
1632                return getCoverage().get(0); 
1633        }
1634  
1635        /**
1636         * Gets the value(s) for <b>exception</b> ().
1637         * creating it if it does
1638         * not exist. Will not return <code>null</code>.
1639         *
1640     * <p>
1641     * <b>Definition:</b>
1642     * Factors which may influence the applicability of coverage.
1643     * </p> 
1644         */
1645        public java.util.List<CodingDt> getException() {  
1646                if (myException == null) {
1647                        myException = new java.util.ArrayList<CodingDt>();
1648                }
1649                return myException;
1650        }
1651
1652        /**
1653         * Sets the value(s) for <b>exception</b> ()
1654         *
1655     * <p>
1656     * <b>Definition:</b>
1657     * Factors which may influence the applicability of coverage.
1658     * </p> 
1659         */
1660        public Claim setException(java.util.List<CodingDt> theValue) {
1661                myException = theValue;
1662                return this;
1663        }
1664        
1665        
1666
1667        /**
1668         * Adds and returns a new value for <b>exception</b> ()
1669         *
1670     * <p>
1671     * <b>Definition:</b>
1672     * Factors which may influence the applicability of coverage.
1673     * </p> 
1674         */
1675        public CodingDt addException() {
1676                CodingDt newType = new CodingDt();
1677                getException().add(newType);
1678                return newType; 
1679        }
1680
1681        /**
1682         * Adds a given new value for <b>exception</b> ()
1683         *
1684         * <p>
1685         * <b>Definition:</b>
1686         * Factors which may influence the applicability of coverage.
1687         * </p>
1688         * @param theValue The exception to add (must not be <code>null</code>)
1689         */
1690        public Claim addException(CodingDt theValue) {
1691                if (theValue == null) {
1692                        throw new NullPointerException("theValue must not be null");
1693                }
1694                getException().add(theValue);
1695                return this;
1696        }
1697
1698        /**
1699         * Gets the first repetition for <b>exception</b> (),
1700         * creating it if it does not already exist.
1701         *
1702     * <p>
1703     * <b>Definition:</b>
1704     * Factors which may influence the applicability of coverage.
1705     * </p> 
1706         */
1707        public CodingDt getExceptionFirstRep() {
1708                if (getException().isEmpty()) {
1709                        return addException();
1710                }
1711                return getException().get(0); 
1712        }
1713  
1714        /**
1715         * Gets the value(s) for <b>school</b> ().
1716         * creating it if it does
1717         * not exist. Will not return <code>null</code>.
1718         *
1719     * <p>
1720     * <b>Definition:</b>
1721     * Name of school for over-aged dependents.
1722     * </p> 
1723         */
1724        public StringDt getSchoolElement() {  
1725                if (mySchool == null) {
1726                        mySchool = new StringDt();
1727                }
1728                return mySchool;
1729        }
1730
1731        
1732        /**
1733         * Gets the value(s) for <b>school</b> ().
1734         * creating it if it does
1735         * not exist. This method may return <code>null</code>.
1736         *
1737     * <p>
1738     * <b>Definition:</b>
1739     * Name of school for over-aged dependents.
1740     * </p> 
1741         */
1742        public String getSchool() {  
1743                return getSchoolElement().getValue();
1744        }
1745
1746        /**
1747         * Sets the value(s) for <b>school</b> ()
1748         *
1749     * <p>
1750     * <b>Definition:</b>
1751     * Name of school for over-aged dependents.
1752     * </p> 
1753         */
1754        public Claim setSchool(StringDt theValue) {
1755                mySchool = theValue;
1756                return this;
1757        }
1758        
1759        
1760
1761        /**
1762         * Sets the value for <b>school</b> ()
1763         *
1764     * <p>
1765     * <b>Definition:</b>
1766     * Name of school for over-aged dependents.
1767     * </p> 
1768         */
1769        public Claim setSchool( String theString) {
1770                mySchool = new StringDt(theString); 
1771                return this; 
1772        }
1773
1774 
1775        /**
1776         * Gets the value(s) for <b>accident</b> ().
1777         * creating it if it does
1778         * not exist. Will not return <code>null</code>.
1779         *
1780     * <p>
1781     * <b>Definition:</b>
1782     * Date of an accident which these services are addressing.
1783     * </p> 
1784         */
1785        public DateDt getAccidentElement() {  
1786                if (myAccident == null) {
1787                        myAccident = new DateDt();
1788                }
1789                return myAccident;
1790        }
1791
1792        
1793        /**
1794         * Gets the value(s) for <b>accident</b> ().
1795         * creating it if it does
1796         * not exist. This method may return <code>null</code>.
1797         *
1798     * <p>
1799     * <b>Definition:</b>
1800     * Date of an accident which these services are addressing.
1801     * </p> 
1802         */
1803        public Date getAccident() {  
1804                return getAccidentElement().getValue();
1805        }
1806
1807        /**
1808         * Sets the value(s) for <b>accident</b> ()
1809         *
1810     * <p>
1811     * <b>Definition:</b>
1812     * Date of an accident which these services are addressing.
1813     * </p> 
1814         */
1815        public Claim setAccident(DateDt theValue) {
1816                myAccident = theValue;
1817                return this;
1818        }
1819        
1820        
1821
1822        /**
1823         * Sets the value for <b>accident</b> ()
1824         *
1825     * <p>
1826     * <b>Definition:</b>
1827     * Date of an accident which these services are addressing.
1828     * </p> 
1829         */
1830        public Claim setAccidentWithDayPrecision( Date theDate) {
1831                myAccident = new DateDt(theDate); 
1832                return this; 
1833        }
1834
1835        /**
1836         * Sets the value for <b>accident</b> ()
1837         *
1838     * <p>
1839     * <b>Definition:</b>
1840     * Date of an accident which these services are addressing.
1841     * </p> 
1842         */
1843        public Claim setAccident( Date theDate,  TemporalPrecisionEnum thePrecision) {
1844                myAccident = new DateDt(theDate, thePrecision); 
1845                return this; 
1846        }
1847
1848 
1849        /**
1850         * Gets the value(s) for <b>accidentType</b> ().
1851         * creating it if it does
1852         * not exist. Will not return <code>null</code>.
1853         *
1854     * <p>
1855     * <b>Definition:</b>
1856     * Type of accident: work, auto, etc.
1857     * </p> 
1858         */
1859        public CodingDt getAccidentType() {  
1860                if (myAccidentType == null) {
1861                        myAccidentType = new CodingDt();
1862                }
1863                return myAccidentType;
1864        }
1865
1866        /**
1867         * Sets the value(s) for <b>accidentType</b> ()
1868         *
1869     * <p>
1870     * <b>Definition:</b>
1871     * Type of accident: work, auto, etc.
1872     * </p> 
1873         */
1874        public Claim setAccidentType(CodingDt theValue) {
1875                myAccidentType = theValue;
1876                return this;
1877        }
1878        
1879        
1880
1881  
1882        /**
1883         * Gets the value(s) for <b>interventionException</b> ().
1884         * creating it if it does
1885         * not exist. Will not return <code>null</code>.
1886         *
1887     * <p>
1888     * <b>Definition:</b>
1889     * A list of intervention and exception codes which may influence the adjudication of the claim.
1890     * </p> 
1891         */
1892        public java.util.List<CodingDt> getInterventionException() {  
1893                if (myInterventionException == null) {
1894                        myInterventionException = new java.util.ArrayList<CodingDt>();
1895                }
1896                return myInterventionException;
1897        }
1898
1899        /**
1900         * Sets the value(s) for <b>interventionException</b> ()
1901         *
1902     * <p>
1903     * <b>Definition:</b>
1904     * A list of intervention and exception codes which may influence the adjudication of the claim.
1905     * </p> 
1906         */
1907        public Claim setInterventionException(java.util.List<CodingDt> theValue) {
1908                myInterventionException = theValue;
1909                return this;
1910        }
1911        
1912        
1913
1914        /**
1915         * Adds and returns a new value for <b>interventionException</b> ()
1916         *
1917     * <p>
1918     * <b>Definition:</b>
1919     * A list of intervention and exception codes which may influence the adjudication of the claim.
1920     * </p> 
1921         */
1922        public CodingDt addInterventionException() {
1923                CodingDt newType = new CodingDt();
1924                getInterventionException().add(newType);
1925                return newType; 
1926        }
1927
1928        /**
1929         * Adds a given new value for <b>interventionException</b> ()
1930         *
1931         * <p>
1932         * <b>Definition:</b>
1933         * A list of intervention and exception codes which may influence the adjudication of the claim.
1934         * </p>
1935         * @param theValue The interventionException to add (must not be <code>null</code>)
1936         */
1937        public Claim addInterventionException(CodingDt theValue) {
1938                if (theValue == null) {
1939                        throw new NullPointerException("theValue must not be null");
1940                }
1941                getInterventionException().add(theValue);
1942                return this;
1943        }
1944
1945        /**
1946         * Gets the first repetition for <b>interventionException</b> (),
1947         * creating it if it does not already exist.
1948         *
1949     * <p>
1950     * <b>Definition:</b>
1951     * A list of intervention and exception codes which may influence the adjudication of the claim.
1952     * </p> 
1953         */
1954        public CodingDt getInterventionExceptionFirstRep() {
1955                if (getInterventionException().isEmpty()) {
1956                        return addInterventionException();
1957                }
1958                return getInterventionException().get(0); 
1959        }
1960  
1961        /**
1962         * Gets the value(s) for <b>item</b> ().
1963         * creating it if it does
1964         * not exist. Will not return <code>null</code>.
1965         *
1966     * <p>
1967     * <b>Definition:</b>
1968     * First tier of goods and services
1969     * </p> 
1970         */
1971        public java.util.List<Item> getItem() {  
1972                if (myItem == null) {
1973                        myItem = new java.util.ArrayList<Item>();
1974                }
1975                return myItem;
1976        }
1977
1978        /**
1979         * Sets the value(s) for <b>item</b> ()
1980         *
1981     * <p>
1982     * <b>Definition:</b>
1983     * First tier of goods and services
1984     * </p> 
1985         */
1986        public Claim setItem(java.util.List<Item> theValue) {
1987                myItem = theValue;
1988                return this;
1989        }
1990        
1991        
1992
1993        /**
1994         * Adds and returns a new value for <b>item</b> ()
1995         *
1996     * <p>
1997     * <b>Definition:</b>
1998     * First tier of goods and services
1999     * </p> 
2000         */
2001        public Item addItem() {
2002                Item newType = new Item();
2003                getItem().add(newType);
2004                return newType; 
2005        }
2006
2007        /**
2008         * Adds a given new value for <b>item</b> ()
2009         *
2010         * <p>
2011         * <b>Definition:</b>
2012         * First tier of goods and services
2013         * </p>
2014         * @param theValue The item to add (must not be <code>null</code>)
2015         */
2016        public Claim addItem(Item theValue) {
2017                if (theValue == null) {
2018                        throw new NullPointerException("theValue must not be null");
2019                }
2020                getItem().add(theValue);
2021                return this;
2022        }
2023
2024        /**
2025         * Gets the first repetition for <b>item</b> (),
2026         * creating it if it does not already exist.
2027         *
2028     * <p>
2029     * <b>Definition:</b>
2030     * First tier of goods and services
2031     * </p> 
2032         */
2033        public Item getItemFirstRep() {
2034                if (getItem().isEmpty()) {
2035                        return addItem();
2036                }
2037                return getItem().get(0); 
2038        }
2039  
2040        /**
2041         * Gets the value(s) for <b>additionalMaterials</b> ().
2042         * creating it if it does
2043         * not exist. Will not return <code>null</code>.
2044         *
2045     * <p>
2046     * <b>Definition:</b>
2047     * Code to indicate that Xrays, images, emails, documents, models or attachments are being sent in support of this submission.
2048     * </p> 
2049         */
2050        public java.util.List<CodingDt> getAdditionalMaterials() {  
2051                if (myAdditionalMaterials == null) {
2052                        myAdditionalMaterials = new java.util.ArrayList<CodingDt>();
2053                }
2054                return myAdditionalMaterials;
2055        }
2056
2057        /**
2058         * Sets the value(s) for <b>additionalMaterials</b> ()
2059         *
2060     * <p>
2061     * <b>Definition:</b>
2062     * Code to indicate that Xrays, images, emails, documents, models or attachments are being sent in support of this submission.
2063     * </p> 
2064         */
2065        public Claim setAdditionalMaterials(java.util.List<CodingDt> theValue) {
2066                myAdditionalMaterials = theValue;
2067                return this;
2068        }
2069        
2070        
2071
2072        /**
2073         * Adds and returns a new value for <b>additionalMaterials</b> ()
2074         *
2075     * <p>
2076     * <b>Definition:</b>
2077     * Code to indicate that Xrays, images, emails, documents, models or attachments are being sent in support of this submission.
2078     * </p> 
2079         */
2080        public CodingDt addAdditionalMaterials() {
2081                CodingDt newType = new CodingDt();
2082                getAdditionalMaterials().add(newType);
2083                return newType; 
2084        }
2085
2086        /**
2087         * Adds a given new value for <b>additionalMaterials</b> ()
2088         *
2089         * <p>
2090         * <b>Definition:</b>
2091         * Code to indicate that Xrays, images, emails, documents, models or attachments are being sent in support of this submission.
2092         * </p>
2093         * @param theValue The additionalMaterials to add (must not be <code>null</code>)
2094         */
2095        public Claim addAdditionalMaterials(CodingDt theValue) {
2096                if (theValue == null) {
2097                        throw new NullPointerException("theValue must not be null");
2098                }
2099                getAdditionalMaterials().add(theValue);
2100                return this;
2101        }
2102
2103        /**
2104         * Gets the first repetition for <b>additionalMaterials</b> (),
2105         * creating it if it does not already exist.
2106         *
2107     * <p>
2108     * <b>Definition:</b>
2109     * Code to indicate that Xrays, images, emails, documents, models or attachments are being sent in support of this submission.
2110     * </p> 
2111         */
2112        public CodingDt getAdditionalMaterialsFirstRep() {
2113                if (getAdditionalMaterials().isEmpty()) {
2114                        return addAdditionalMaterials();
2115                }
2116                return getAdditionalMaterials().get(0); 
2117        }
2118  
2119        /**
2120         * Gets the value(s) for <b>missingTeeth</b> ().
2121         * creating it if it does
2122         * not exist. Will not return <code>null</code>.
2123         *
2124     * <p>
2125     * <b>Definition:</b>
2126     * A list of teeth which would be expected but are not found due to having been previously  extracted or for other reasons.
2127     * </p> 
2128         */
2129        public java.util.List<MissingTeeth> getMissingTeeth() {  
2130                if (myMissingTeeth == null) {
2131                        myMissingTeeth = new java.util.ArrayList<MissingTeeth>();
2132                }
2133                return myMissingTeeth;
2134        }
2135
2136        /**
2137         * Sets the value(s) for <b>missingTeeth</b> ()
2138         *
2139     * <p>
2140     * <b>Definition:</b>
2141     * A list of teeth which would be expected but are not found due to having been previously  extracted or for other reasons.
2142     * </p> 
2143         */
2144        public Claim setMissingTeeth(java.util.List<MissingTeeth> theValue) {
2145                myMissingTeeth = theValue;
2146                return this;
2147        }
2148        
2149        
2150
2151        /**
2152         * Adds and returns a new value for <b>missingTeeth</b> ()
2153         *
2154     * <p>
2155     * <b>Definition:</b>
2156     * A list of teeth which would be expected but are not found due to having been previously  extracted or for other reasons.
2157     * </p> 
2158         */
2159        public MissingTeeth addMissingTeeth() {
2160                MissingTeeth newType = new MissingTeeth();
2161                getMissingTeeth().add(newType);
2162                return newType; 
2163        }
2164
2165        /**
2166         * Adds a given new value for <b>missingTeeth</b> ()
2167         *
2168         * <p>
2169         * <b>Definition:</b>
2170         * A list of teeth which would be expected but are not found due to having been previously  extracted or for other reasons.
2171         * </p>
2172         * @param theValue The missingTeeth to add (must not be <code>null</code>)
2173         */
2174        public Claim addMissingTeeth(MissingTeeth theValue) {
2175                if (theValue == null) {
2176                        throw new NullPointerException("theValue must not be null");
2177                }
2178                getMissingTeeth().add(theValue);
2179                return this;
2180        }
2181
2182        /**
2183         * Gets the first repetition for <b>missingTeeth</b> (),
2184         * creating it if it does not already exist.
2185         *
2186     * <p>
2187     * <b>Definition:</b>
2188     * A list of teeth which would be expected but are not found due to having been previously  extracted or for other reasons.
2189     * </p> 
2190         */
2191        public MissingTeeth getMissingTeethFirstRep() {
2192                if (getMissingTeeth().isEmpty()) {
2193                        return addMissingTeeth();
2194                }
2195                return getMissingTeeth().get(0); 
2196        }
2197  
2198        /**
2199         * Block class for child element: <b>Claim.payee</b> ()
2200         *
2201     * <p>
2202     * <b>Definition:</b>
2203     * The party to be reimbursed for the services.
2204     * </p> 
2205         */
2206        @Block()        
2207        public static class Payee 
2208            extends  BaseIdentifiableElement        implements IResourceBlock {
2209        
2210        @Child(name="type", type=CodingDt.class, order=0, min=0, max=1, summary=false, modifier=false)  
2211        @Description(
2212                shortDefinition="",
2213                formalDefinition="Party to be reimbursed: Subscriber, provider, other."
2214        )
2215        private CodingDt myType;
2216        
2217        @Child(name="provider", order=1, min=0, max=1, summary=false, modifier=false, type={
2218                ca.uhn.fhir.model.dstu2.resource.Practitioner.class     })
2219        @Description(
2220                shortDefinition="",
2221                formalDefinition="The provider who is to be reimbursed for the claim (the party to whom any benefit is assigned)"
2222        )
2223        private ResourceReferenceDt myProvider;
2224        
2225        @Child(name="organization", order=2, min=0, max=1, summary=false, modifier=false, type={
2226                ca.uhn.fhir.model.dstu2.resource.Organization.class     })
2227        @Description(
2228                shortDefinition="",
2229                formalDefinition="The organization who is to be reimbursed for the claim (the party to whom any benefit is assigned)"
2230        )
2231        private ResourceReferenceDt myOrganization;
2232        
2233        @Child(name="person", order=3, min=0, max=1, summary=false, modifier=false, type={
2234                ca.uhn.fhir.model.dstu2.resource.Patient.class  })
2235        @Description(
2236                shortDefinition="",
2237                formalDefinition="The person other than the subscriber who is to be reimbursed for the claim (the party to whom any benefit is assigned)"
2238        )
2239        private ResourceReferenceDt myPerson;
2240        
2241
2242        @Override
2243        public boolean isEmpty() {
2244                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myType,  myProvider,  myOrganization,  myPerson);
2245        }
2246        
2247        @Override
2248        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2249                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myType, myProvider, myOrganization, myPerson);
2250        }
2251
2252        /**
2253         * Gets the value(s) for <b>type</b> ().
2254         * creating it if it does
2255         * not exist. Will not return <code>null</code>.
2256         *
2257     * <p>
2258     * <b>Definition:</b>
2259     * Party to be reimbursed: Subscriber, provider, other.
2260     * </p> 
2261         */
2262        public CodingDt getType() {  
2263                if (myType == null) {
2264                        myType = new CodingDt();
2265                }
2266                return myType;
2267        }
2268
2269        /**
2270         * Sets the value(s) for <b>type</b> ()
2271         *
2272     * <p>
2273     * <b>Definition:</b>
2274     * Party to be reimbursed: Subscriber, provider, other.
2275     * </p> 
2276         */
2277        public Payee setType(CodingDt theValue) {
2278                myType = theValue;
2279                return this;
2280        }
2281        
2282        
2283
2284  
2285        /**
2286         * Gets the value(s) for <b>provider</b> ().
2287         * creating it if it does
2288         * not exist. Will not return <code>null</code>.
2289         *
2290     * <p>
2291     * <b>Definition:</b>
2292     * The provider who is to be reimbursed for the claim (the party to whom any benefit is assigned)
2293     * </p> 
2294         */
2295        public ResourceReferenceDt getProvider() {  
2296                if (myProvider == null) {
2297                        myProvider = new ResourceReferenceDt();
2298                }
2299                return myProvider;
2300        }
2301
2302        /**
2303         * Sets the value(s) for <b>provider</b> ()
2304         *
2305     * <p>
2306     * <b>Definition:</b>
2307     * The provider who is to be reimbursed for the claim (the party to whom any benefit is assigned)
2308     * </p> 
2309         */
2310        public Payee setProvider(ResourceReferenceDt theValue) {
2311                myProvider = theValue;
2312                return this;
2313        }
2314        
2315        
2316
2317  
2318        /**
2319         * Gets the value(s) for <b>organization</b> ().
2320         * creating it if it does
2321         * not exist. Will not return <code>null</code>.
2322         *
2323     * <p>
2324     * <b>Definition:</b>
2325     * The organization who is to be reimbursed for the claim (the party to whom any benefit is assigned)
2326     * </p> 
2327         */
2328        public ResourceReferenceDt getOrganization() {  
2329                if (myOrganization == null) {
2330                        myOrganization = new ResourceReferenceDt();
2331                }
2332                return myOrganization;
2333        }
2334
2335        /**
2336         * Sets the value(s) for <b>organization</b> ()
2337         *
2338     * <p>
2339     * <b>Definition:</b>
2340     * The organization who is to be reimbursed for the claim (the party to whom any benefit is assigned)
2341     * </p> 
2342         */
2343        public Payee setOrganization(ResourceReferenceDt theValue) {
2344                myOrganization = theValue;
2345                return this;
2346        }
2347        
2348        
2349
2350  
2351        /**
2352         * Gets the value(s) for <b>person</b> ().
2353         * creating it if it does
2354         * not exist. Will not return <code>null</code>.
2355         *
2356     * <p>
2357     * <b>Definition:</b>
2358     * The person other than the subscriber who is to be reimbursed for the claim (the party to whom any benefit is assigned)
2359     * </p> 
2360         */
2361        public ResourceReferenceDt getPerson() {  
2362                if (myPerson == null) {
2363                        myPerson = new ResourceReferenceDt();
2364                }
2365                return myPerson;
2366        }
2367
2368        /**
2369         * Sets the value(s) for <b>person</b> ()
2370         *
2371     * <p>
2372     * <b>Definition:</b>
2373     * The person other than the subscriber who is to be reimbursed for the claim (the party to whom any benefit is assigned)
2374     * </p> 
2375         */
2376        public Payee setPerson(ResourceReferenceDt theValue) {
2377                myPerson = theValue;
2378                return this;
2379        }
2380        
2381        
2382
2383  
2384
2385
2386        }
2387
2388
2389        /**
2390         * Block class for child element: <b>Claim.diagnosis</b> ()
2391         *
2392     * <p>
2393     * <b>Definition:</b>
2394     * Ordered list of patient diagnosis for which care is sought.
2395     * </p> 
2396         */
2397        @Block()        
2398        public static class Diagnosis 
2399            extends  BaseIdentifiableElement        implements IResourceBlock {
2400        
2401        @Child(name="sequence", type=PositiveIntDt.class, order=0, min=1, max=1, summary=false, modifier=false) 
2402        @Description(
2403                shortDefinition="",
2404                formalDefinition="Sequence of diagnosis which serves to order and provide a link."
2405        )
2406        private PositiveIntDt mySequence;
2407        
2408        @Child(name="diagnosis", type=CodingDt.class, order=1, min=1, max=1, summary=false, modifier=false)     
2409        @Description(
2410                shortDefinition="",
2411                formalDefinition="The diagnosis."
2412        )
2413        private CodingDt myDiagnosis;
2414        
2415
2416        @Override
2417        public boolean isEmpty() {
2418                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  mySequence,  myDiagnosis);
2419        }
2420        
2421        @Override
2422        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2423                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, mySequence, myDiagnosis);
2424        }
2425
2426        /**
2427         * Gets the value(s) for <b>sequence</b> ().
2428         * creating it if it does
2429         * not exist. Will not return <code>null</code>.
2430         *
2431     * <p>
2432     * <b>Definition:</b>
2433     * Sequence of diagnosis which serves to order and provide a link.
2434     * </p> 
2435         */
2436        public PositiveIntDt getSequenceElement() {  
2437                if (mySequence == null) {
2438                        mySequence = new PositiveIntDt();
2439                }
2440                return mySequence;
2441        }
2442
2443        
2444        /**
2445         * Gets the value(s) for <b>sequence</b> ().
2446         * creating it if it does
2447         * not exist. This method may return <code>null</code>.
2448         *
2449     * <p>
2450     * <b>Definition:</b>
2451     * Sequence of diagnosis which serves to order and provide a link.
2452     * </p> 
2453         */
2454        public Integer getSequence() {  
2455                return getSequenceElement().getValue();
2456        }
2457
2458        /**
2459         * Sets the value(s) for <b>sequence</b> ()
2460         *
2461     * <p>
2462     * <b>Definition:</b>
2463     * Sequence of diagnosis which serves to order and provide a link.
2464     * </p> 
2465         */
2466        public Diagnosis setSequence(PositiveIntDt theValue) {
2467                mySequence = theValue;
2468                return this;
2469        }
2470        
2471        
2472
2473        /**
2474         * Sets the value for <b>sequence</b> ()
2475         *
2476     * <p>
2477     * <b>Definition:</b>
2478     * Sequence of diagnosis which serves to order and provide a link.
2479     * </p> 
2480         */
2481        public Diagnosis setSequence( int theInteger) {
2482                mySequence = new PositiveIntDt(theInteger); 
2483                return this; 
2484        }
2485
2486 
2487        /**
2488         * Gets the value(s) for <b>diagnosis</b> ().
2489         * creating it if it does
2490         * not exist. Will not return <code>null</code>.
2491         *
2492     * <p>
2493     * <b>Definition:</b>
2494     * The diagnosis.
2495     * </p> 
2496         */
2497        public CodingDt getDiagnosis() {  
2498                if (myDiagnosis == null) {
2499                        myDiagnosis = new CodingDt();
2500                }
2501                return myDiagnosis;
2502        }
2503
2504        /**
2505         * Sets the value(s) for <b>diagnosis</b> ()
2506         *
2507     * <p>
2508     * <b>Definition:</b>
2509     * The diagnosis.
2510     * </p> 
2511         */
2512        public Diagnosis setDiagnosis(CodingDt theValue) {
2513                myDiagnosis = theValue;
2514                return this;
2515        }
2516        
2517        
2518
2519  
2520
2521
2522        }
2523
2524
2525        /**
2526         * Block class for child element: <b>Claim.coverage</b> ()
2527         *
2528     * <p>
2529     * <b>Definition:</b>
2530     * Financial instrument by which payment information for health care
2531     * </p> 
2532         */
2533        @Block()        
2534        public static class Coverage 
2535            extends  BaseIdentifiableElement        implements IResourceBlock {
2536        
2537        @Child(name="sequence", type=PositiveIntDt.class, order=0, min=1, max=1, summary=false, modifier=false) 
2538        @Description(
2539                shortDefinition="",
2540                formalDefinition="A service line item."
2541        )
2542        private PositiveIntDt mySequence;
2543        
2544        @Child(name="focal", type=BooleanDt.class, order=1, min=1, max=1, summary=false, modifier=false)        
2545        @Description(
2546                shortDefinition="",
2547                formalDefinition="The instance number of the Coverage which is the focus for adjudication. The Coverage against which the claim is to be adjudicated."
2548        )
2549        private BooleanDt myFocal;
2550        
2551        @Child(name="coverage", order=2, min=1, max=1, summary=false, modifier=false, type={
2552                ca.uhn.fhir.model.dstu2.resource.Coverage.class })
2553        @Description(
2554                shortDefinition="",
2555                formalDefinition="Reference to the program or plan identification, underwriter or payor."
2556        )
2557        private ResourceReferenceDt myCoverage;
2558        
2559        @Child(name="businessArrangement", type=StringDt.class, order=3, min=0, max=1, summary=false, modifier=false)   
2560        @Description(
2561                shortDefinition="",
2562                formalDefinition="The contract number of a business agreement which describes the terms and conditions."
2563        )
2564        private StringDt myBusinessArrangement;
2565        
2566        @Child(name="relationship", type=CodingDt.class, order=4, min=1, max=1, summary=false, modifier=false)  
2567        @Description(
2568                shortDefinition="",
2569                formalDefinition="The relationship of the patient to the subscriber"
2570        )
2571        private CodingDt myRelationship;
2572        
2573        @Child(name="preAuthRef", type=StringDt.class, order=5, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
2574        @Description(
2575                shortDefinition="",
2576                formalDefinition="A list of references from the Insurer to which these services pertain."
2577        )
2578        private java.util.List<StringDt> myPreAuthRef;
2579        
2580        @Child(name="claimResponse", order=6, min=0, max=1, summary=false, modifier=false, type={
2581                ca.uhn.fhir.model.dstu2.resource.ClaimResponse.class    })
2582        @Description(
2583                shortDefinition="",
2584                formalDefinition="The Coverages adjudication details."
2585        )
2586        private ResourceReferenceDt myClaimResponse;
2587        
2588        @Child(name="originalRuleset", type=CodingDt.class, order=7, min=0, max=1, summary=false, modifier=false)       
2589        @Description(
2590                shortDefinition="",
2591                formalDefinition="The style (standard) and version of the original material which was converted into this resource."
2592        )
2593        private CodingDt myOriginalRuleset;
2594        
2595
2596        @Override
2597        public boolean isEmpty() {
2598                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  mySequence,  myFocal,  myCoverage,  myBusinessArrangement,  myRelationship,  myPreAuthRef,  myClaimResponse,  myOriginalRuleset);
2599        }
2600        
2601        @Override
2602        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2603                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, mySequence, myFocal, myCoverage, myBusinessArrangement, myRelationship, myPreAuthRef, myClaimResponse, myOriginalRuleset);
2604        }
2605
2606        /**
2607         * Gets the value(s) for <b>sequence</b> ().
2608         * creating it if it does
2609         * not exist. Will not return <code>null</code>.
2610         *
2611     * <p>
2612     * <b>Definition:</b>
2613     * A service line item.
2614     * </p> 
2615         */
2616        public PositiveIntDt getSequenceElement() {  
2617                if (mySequence == null) {
2618                        mySequence = new PositiveIntDt();
2619                }
2620                return mySequence;
2621        }
2622
2623        
2624        /**
2625         * Gets the value(s) for <b>sequence</b> ().
2626         * creating it if it does
2627         * not exist. This method may return <code>null</code>.
2628         *
2629     * <p>
2630     * <b>Definition:</b>
2631     * A service line item.
2632     * </p> 
2633         */
2634        public Integer getSequence() {  
2635                return getSequenceElement().getValue();
2636        }
2637
2638        /**
2639         * Sets the value(s) for <b>sequence</b> ()
2640         *
2641     * <p>
2642     * <b>Definition:</b>
2643     * A service line item.
2644     * </p> 
2645         */
2646        public Coverage setSequence(PositiveIntDt theValue) {
2647                mySequence = theValue;
2648                return this;
2649        }
2650        
2651        
2652
2653        /**
2654         * Sets the value for <b>sequence</b> ()
2655         *
2656     * <p>
2657     * <b>Definition:</b>
2658     * A service line item.
2659     * </p> 
2660         */
2661        public Coverage setSequence( int theInteger) {
2662                mySequence = new PositiveIntDt(theInteger); 
2663                return this; 
2664        }
2665
2666 
2667        /**
2668         * Gets the value(s) for <b>focal</b> ().
2669         * creating it if it does
2670         * not exist. Will not return <code>null</code>.
2671         *
2672     * <p>
2673     * <b>Definition:</b>
2674     * The instance number of the Coverage which is the focus for adjudication. The Coverage against which the claim is to be adjudicated.
2675     * </p> 
2676         */
2677        public BooleanDt getFocalElement() {  
2678                if (myFocal == null) {
2679                        myFocal = new BooleanDt();
2680                }
2681                return myFocal;
2682        }
2683
2684        
2685        /**
2686         * Gets the value(s) for <b>focal</b> ().
2687         * creating it if it does
2688         * not exist. This method may return <code>null</code>.
2689         *
2690     * <p>
2691     * <b>Definition:</b>
2692     * The instance number of the Coverage which is the focus for adjudication. The Coverage against which the claim is to be adjudicated.
2693     * </p> 
2694         */
2695        public Boolean getFocal() {  
2696                return getFocalElement().getValue();
2697        }
2698
2699        /**
2700         * Sets the value(s) for <b>focal</b> ()
2701         *
2702     * <p>
2703     * <b>Definition:</b>
2704     * The instance number of the Coverage which is the focus for adjudication. The Coverage against which the claim is to be adjudicated.
2705     * </p> 
2706         */
2707        public Coverage setFocal(BooleanDt theValue) {
2708                myFocal = theValue;
2709                return this;
2710        }
2711        
2712        
2713
2714        /**
2715         * Sets the value for <b>focal</b> ()
2716         *
2717     * <p>
2718     * <b>Definition:</b>
2719     * The instance number of the Coverage which is the focus for adjudication. The Coverage against which the claim is to be adjudicated.
2720     * </p> 
2721         */
2722        public Coverage setFocal( boolean theBoolean) {
2723                myFocal = new BooleanDt(theBoolean); 
2724                return this; 
2725        }
2726
2727 
2728        /**
2729         * Gets the value(s) for <b>coverage</b> ().
2730         * creating it if it does
2731         * not exist. Will not return <code>null</code>.
2732         *
2733     * <p>
2734     * <b>Definition:</b>
2735     * Reference to the program or plan identification, underwriter or payor.
2736     * </p> 
2737         */
2738        public ResourceReferenceDt getCoverage() {  
2739                if (myCoverage == null) {
2740                        myCoverage = new ResourceReferenceDt();
2741                }
2742                return myCoverage;
2743        }
2744
2745        /**
2746         * Sets the value(s) for <b>coverage</b> ()
2747         *
2748     * <p>
2749     * <b>Definition:</b>
2750     * Reference to the program or plan identification, underwriter or payor.
2751     * </p> 
2752         */
2753        public Coverage setCoverage(ResourceReferenceDt theValue) {
2754                myCoverage = theValue;
2755                return this;
2756        }
2757        
2758        
2759
2760  
2761        /**
2762         * Gets the value(s) for <b>businessArrangement</b> ().
2763         * creating it if it does
2764         * not exist. Will not return <code>null</code>.
2765         *
2766     * <p>
2767     * <b>Definition:</b>
2768     * The contract number of a business agreement which describes the terms and conditions.
2769     * </p> 
2770         */
2771        public StringDt getBusinessArrangementElement() {  
2772                if (myBusinessArrangement == null) {
2773                        myBusinessArrangement = new StringDt();
2774                }
2775                return myBusinessArrangement;
2776        }
2777
2778        
2779        /**
2780         * Gets the value(s) for <b>businessArrangement</b> ().
2781         * creating it if it does
2782         * not exist. This method may return <code>null</code>.
2783         *
2784     * <p>
2785     * <b>Definition:</b>
2786     * The contract number of a business agreement which describes the terms and conditions.
2787     * </p> 
2788         */
2789        public String getBusinessArrangement() {  
2790                return getBusinessArrangementElement().getValue();
2791        }
2792
2793        /**
2794         * Sets the value(s) for <b>businessArrangement</b> ()
2795         *
2796     * <p>
2797     * <b>Definition:</b>
2798     * The contract number of a business agreement which describes the terms and conditions.
2799     * </p> 
2800         */
2801        public Coverage setBusinessArrangement(StringDt theValue) {
2802                myBusinessArrangement = theValue;
2803                return this;
2804        }
2805        
2806        
2807
2808        /**
2809         * Sets the value for <b>businessArrangement</b> ()
2810         *
2811     * <p>
2812     * <b>Definition:</b>
2813     * The contract number of a business agreement which describes the terms and conditions.
2814     * </p> 
2815         */
2816        public Coverage setBusinessArrangement( String theString) {
2817                myBusinessArrangement = new StringDt(theString); 
2818                return this; 
2819        }
2820
2821 
2822        /**
2823         * Gets the value(s) for <b>relationship</b> ().
2824         * creating it if it does
2825         * not exist. Will not return <code>null</code>.
2826         *
2827     * <p>
2828     * <b>Definition:</b>
2829     * The relationship of the patient to the subscriber
2830     * </p> 
2831         */
2832        public CodingDt getRelationship() {  
2833                if (myRelationship == null) {
2834                        myRelationship = new CodingDt();
2835                }
2836                return myRelationship;
2837        }
2838
2839        /**
2840         * Sets the value(s) for <b>relationship</b> ()
2841         *
2842     * <p>
2843     * <b>Definition:</b>
2844     * The relationship of the patient to the subscriber
2845     * </p> 
2846         */
2847        public Coverage setRelationship(CodingDt theValue) {
2848                myRelationship = theValue;
2849                return this;
2850        }
2851        
2852        
2853
2854  
2855        /**
2856         * Gets the value(s) for <b>preAuthRef</b> ().
2857         * creating it if it does
2858         * not exist. Will not return <code>null</code>.
2859         *
2860     * <p>
2861     * <b>Definition:</b>
2862     * A list of references from the Insurer to which these services pertain.
2863     * </p> 
2864         */
2865        public java.util.List<StringDt> getPreAuthRef() {  
2866                if (myPreAuthRef == null) {
2867                        myPreAuthRef = new java.util.ArrayList<StringDt>();
2868                }
2869                return myPreAuthRef;
2870        }
2871
2872        /**
2873         * Sets the value(s) for <b>preAuthRef</b> ()
2874         *
2875     * <p>
2876     * <b>Definition:</b>
2877     * A list of references from the Insurer to which these services pertain.
2878     * </p> 
2879         */
2880        public Coverage setPreAuthRef(java.util.List<StringDt> theValue) {
2881                myPreAuthRef = theValue;
2882                return this;
2883        }
2884        
2885        
2886
2887        /**
2888         * Adds and returns a new value for <b>preAuthRef</b> ()
2889         *
2890     * <p>
2891     * <b>Definition:</b>
2892     * A list of references from the Insurer to which these services pertain.
2893     * </p> 
2894         */
2895        public StringDt addPreAuthRef() {
2896                StringDt newType = new StringDt();
2897                getPreAuthRef().add(newType);
2898                return newType; 
2899        }
2900
2901        /**
2902         * Adds a given new value for <b>preAuthRef</b> ()
2903         *
2904         * <p>
2905         * <b>Definition:</b>
2906         * A list of references from the Insurer to which these services pertain.
2907         * </p>
2908         * @param theValue The preAuthRef to add (must not be <code>null</code>)
2909         */
2910        public Coverage addPreAuthRef(StringDt theValue) {
2911                if (theValue == null) {
2912                        throw new NullPointerException("theValue must not be null");
2913                }
2914                getPreAuthRef().add(theValue);
2915                return this;
2916        }
2917
2918        /**
2919         * Gets the first repetition for <b>preAuthRef</b> (),
2920         * creating it if it does not already exist.
2921         *
2922     * <p>
2923     * <b>Definition:</b>
2924     * A list of references from the Insurer to which these services pertain.
2925     * </p> 
2926         */
2927        public StringDt getPreAuthRefFirstRep() {
2928                if (getPreAuthRef().isEmpty()) {
2929                        return addPreAuthRef();
2930                }
2931                return getPreAuthRef().get(0); 
2932        }
2933        /**
2934         * Adds a new value for <b>preAuthRef</b> ()
2935         *
2936     * <p>
2937     * <b>Definition:</b>
2938     * A list of references from the Insurer to which these services pertain.
2939     * </p> 
2940     *
2941     * @return Returns a reference to this object, to allow for simple chaining.
2942         */
2943        public Coverage addPreAuthRef( String theString) {
2944                if (myPreAuthRef == null) {
2945                        myPreAuthRef = new java.util.ArrayList<StringDt>();
2946                }
2947                myPreAuthRef.add(new StringDt(theString));
2948                return this; 
2949        }
2950
2951 
2952        /**
2953         * Gets the value(s) for <b>claimResponse</b> ().
2954         * creating it if it does
2955         * not exist. Will not return <code>null</code>.
2956         *
2957     * <p>
2958     * <b>Definition:</b>
2959     * The Coverages adjudication details.
2960     * </p> 
2961         */
2962        public ResourceReferenceDt getClaimResponse() {  
2963                if (myClaimResponse == null) {
2964                        myClaimResponse = new ResourceReferenceDt();
2965                }
2966                return myClaimResponse;
2967        }
2968
2969        /**
2970         * Sets the value(s) for <b>claimResponse</b> ()
2971         *
2972     * <p>
2973     * <b>Definition:</b>
2974     * The Coverages adjudication details.
2975     * </p> 
2976         */
2977        public Coverage setClaimResponse(ResourceReferenceDt theValue) {
2978                myClaimResponse = theValue;
2979                return this;
2980        }
2981        
2982        
2983
2984  
2985        /**
2986         * Gets the value(s) for <b>originalRuleset</b> ().
2987         * creating it if it does
2988         * not exist. Will not return <code>null</code>.
2989         *
2990     * <p>
2991     * <b>Definition:</b>
2992     * The style (standard) and version of the original material which was converted into this resource.
2993     * </p> 
2994         */
2995        public CodingDt getOriginalRuleset() {  
2996                if (myOriginalRuleset == null) {
2997                        myOriginalRuleset = new CodingDt();
2998                }
2999                return myOriginalRuleset;
3000        }
3001
3002        /**
3003         * Sets the value(s) for <b>originalRuleset</b> ()
3004         *
3005     * <p>
3006     * <b>Definition:</b>
3007     * The style (standard) and version of the original material which was converted into this resource.
3008     * </p> 
3009         */
3010        public Coverage setOriginalRuleset(CodingDt theValue) {
3011                myOriginalRuleset = theValue;
3012                return this;
3013        }
3014        
3015        
3016
3017  
3018
3019
3020        }
3021
3022
3023        /**
3024         * Block class for child element: <b>Claim.item</b> ()
3025         *
3026     * <p>
3027     * <b>Definition:</b>
3028     * First tier of goods and services
3029     * </p> 
3030         */
3031        @Block()        
3032        public static class Item 
3033            extends  BaseIdentifiableElement        implements IResourceBlock {
3034        
3035        @Child(name="sequence", type=PositiveIntDt.class, order=0, min=1, max=1, summary=false, modifier=false) 
3036        @Description(
3037                shortDefinition="",
3038                formalDefinition="A service line number."
3039        )
3040        private PositiveIntDt mySequence;
3041        
3042        @Child(name="type", type=CodingDt.class, order=1, min=1, max=1, summary=false, modifier=false)  
3043        @Description(
3044                shortDefinition="",
3045                formalDefinition="The type of product or service."
3046        )
3047        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/v3-ActInvoiceGroupCode")
3048        private CodingDt myType;
3049        
3050        @Child(name="provider", order=2, min=0, max=1, summary=false, modifier=false, type={
3051                ca.uhn.fhir.model.dstu2.resource.Practitioner.class     })
3052        @Description(
3053                shortDefinition="",
3054                formalDefinition="The practitioner who is responsible for the services rendered to the patient"
3055        )
3056        private ResourceReferenceDt myProvider;
3057        
3058        @Child(name="diagnosisLinkId", type=PositiveIntDt.class, order=3, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
3059        @Description(
3060                shortDefinition="",
3061                formalDefinition="Diagnosis applicable for this service or product line."
3062        )
3063        private java.util.List<PositiveIntDt> myDiagnosisLinkId;
3064        
3065        @Child(name="service", type=CodingDt.class, order=4, min=1, max=1, summary=false, modifier=false)       
3066        @Description(
3067                shortDefinition="",
3068                formalDefinition="If a grouping item then 'GROUP' otherwise it is a node therefore a code to indicate the Professional Service or Product supplied."
3069        )
3070        private CodingDt myService;
3071        
3072        @Child(name="serviceDate", type=DateDt.class, order=5, min=0, max=1, summary=false, modifier=false)     
3073        @Description(
3074                shortDefinition="",
3075                formalDefinition="The date when the enclosed suite of services were performed or completed"
3076        )
3077        private DateDt myServiceDate;
3078        
3079        @Child(name="quantity", type=SimpleQuantityDt.class, order=6, min=0, max=1, summary=false, modifier=false)      
3080        @Description(
3081                shortDefinition="",
3082                formalDefinition="The number of repetitions of a service or product."
3083        )
3084        private SimpleQuantityDt myQuantity;
3085        
3086        @Child(name="unitPrice", type=MoneyDt.class, order=7, min=0, max=1, summary=false, modifier=false)      
3087        @Description(
3088                shortDefinition="",
3089                formalDefinition="If the item is a node then this is the fee for the product or service, otherwise this is the total of the fees for the children of the group."
3090        )
3091        private MoneyDt myUnitPrice;
3092        
3093        @Child(name="factor", type=DecimalDt.class, order=8, min=0, max=1, summary=false, modifier=false)       
3094        @Description(
3095                shortDefinition="",
3096                formalDefinition="A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."
3097        )
3098        private DecimalDt myFactor;
3099        
3100        @Child(name="points", type=DecimalDt.class, order=9, min=0, max=1, summary=false, modifier=false)       
3101        @Description(
3102                shortDefinition="",
3103                formalDefinition="An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point."
3104        )
3105        private DecimalDt myPoints;
3106        
3107        @Child(name="net", type=MoneyDt.class, order=10, min=0, max=1, summary=false, modifier=false)   
3108        @Description(
3109                shortDefinition="",
3110                formalDefinition="The quantity times the unit price for an additional  service or product or charge. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied."
3111        )
3112        private MoneyDt myNet;
3113        
3114        @Child(name="udi", type=CodingDt.class, order=11, min=0, max=1, summary=false, modifier=false)  
3115        @Description(
3116                shortDefinition="",
3117                formalDefinition="List of Unique Device Identifiers associated with this line item."
3118        )
3119        private CodingDt myUdi;
3120        
3121        @Child(name="bodySite", type=CodingDt.class, order=12, min=0, max=1, summary=false, modifier=false)     
3122        @Description(
3123                shortDefinition="",
3124                formalDefinition="Physical service site on the patient (limb, tooth, etc.)."
3125        )
3126        private CodingDt myBodySite;
3127        
3128        @Child(name="subSite", type=CodingDt.class, order=13, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
3129        @Description(
3130                shortDefinition="",
3131                formalDefinition="A region or surface of the site, e.g. limb region or tooth surface(s)."
3132        )
3133        private java.util.List<CodingDt> mySubSite;
3134        
3135        @Child(name="modifier", type=CodingDt.class, order=14, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
3136        @Description(
3137                shortDefinition="",
3138                formalDefinition="Item typification or modifiers codes, e.g. for Oral whether the treatment is cosmetic or associated with TMJ, or an appliance was lost or stolen."
3139        )
3140        private java.util.List<CodingDt> myModifier;
3141        
3142        @Child(name="detail", order=15, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
3143        @Description(
3144                shortDefinition="",
3145                formalDefinition="Second tier of goods and services"
3146        )
3147        private java.util.List<ItemDetail> myDetail;
3148        
3149        @Child(name="prosthesis", order=16, min=0, max=1, summary=false, modifier=false)        
3150        @Description(
3151                shortDefinition="",
3152                formalDefinition="The materials and placement date of prior fixed prosthesis."
3153        )
3154        private ItemProsthesis myProsthesis;
3155        
3156
3157        @Override
3158        public boolean isEmpty() {
3159                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  mySequence,  myType,  myProvider,  myDiagnosisLinkId,  myService,  myServiceDate,  myQuantity,  myUnitPrice,  myFactor,  myPoints,  myNet,  myUdi,  myBodySite,  mySubSite,  myModifier,  myDetail,  myProsthesis);
3160        }
3161        
3162        @Override
3163        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
3164                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, mySequence, myType, myProvider, myDiagnosisLinkId, myService, myServiceDate, myQuantity, myUnitPrice, myFactor, myPoints, myNet, myUdi, myBodySite, mySubSite, myModifier, myDetail, myProsthesis);
3165        }
3166
3167        /**
3168         * Gets the value(s) for <b>sequence</b> ().
3169         * creating it if it does
3170         * not exist. Will not return <code>null</code>.
3171         *
3172     * <p>
3173     * <b>Definition:</b>
3174     * A service line number.
3175     * </p> 
3176         */
3177        public PositiveIntDt getSequenceElement() {  
3178                if (mySequence == null) {
3179                        mySequence = new PositiveIntDt();
3180                }
3181                return mySequence;
3182        }
3183
3184        
3185        /**
3186         * Gets the value(s) for <b>sequence</b> ().
3187         * creating it if it does
3188         * not exist. This method may return <code>null</code>.
3189         *
3190     * <p>
3191     * <b>Definition:</b>
3192     * A service line number.
3193     * </p> 
3194         */
3195        public Integer getSequence() {  
3196                return getSequenceElement().getValue();
3197        }
3198
3199        /**
3200         * Sets the value(s) for <b>sequence</b> ()
3201         *
3202     * <p>
3203     * <b>Definition:</b>
3204     * A service line number.
3205     * </p> 
3206         */
3207        public Item setSequence(PositiveIntDt theValue) {
3208                mySequence = theValue;
3209                return this;
3210        }
3211        
3212        
3213
3214        /**
3215         * Sets the value for <b>sequence</b> ()
3216         *
3217     * <p>
3218     * <b>Definition:</b>
3219     * A service line number.
3220     * </p> 
3221         */
3222        public Item setSequence( int theInteger) {
3223                mySequence = new PositiveIntDt(theInteger); 
3224                return this; 
3225        }
3226
3227 
3228        /**
3229         * Gets the value(s) for <b>type</b> ().
3230         * creating it if it does
3231         * not exist. Will not return <code>null</code>.
3232         *
3233     * <p>
3234     * <b>Definition:</b>
3235     * The type of product or service.
3236     * </p> 
3237         */
3238        public CodingDt getType() {  
3239                if (myType == null) {
3240                        myType = new CodingDt();
3241                }
3242                return myType;
3243        }
3244
3245        /**
3246         * Sets the value(s) for <b>type</b> ()
3247         *
3248     * <p>
3249     * <b>Definition:</b>
3250     * The type of product or service.
3251     * </p> 
3252         */
3253        public Item setType(CodingDt theValue) {
3254                myType = theValue;
3255                return this;
3256        }
3257        
3258        
3259
3260  
3261        /**
3262         * Gets the value(s) for <b>provider</b> ().
3263         * creating it if it does
3264         * not exist. Will not return <code>null</code>.
3265         *
3266     * <p>
3267     * <b>Definition:</b>
3268     * The practitioner who is responsible for the services rendered to the patient
3269     * </p> 
3270         */
3271        public ResourceReferenceDt getProvider() {  
3272                if (myProvider == null) {
3273                        myProvider = new ResourceReferenceDt();
3274                }
3275                return myProvider;
3276        }
3277
3278        /**
3279         * Sets the value(s) for <b>provider</b> ()
3280         *
3281     * <p>
3282     * <b>Definition:</b>
3283     * The practitioner who is responsible for the services rendered to the patient
3284     * </p> 
3285         */
3286        public Item setProvider(ResourceReferenceDt theValue) {
3287                myProvider = theValue;
3288                return this;
3289        }
3290        
3291        
3292
3293  
3294        /**
3295         * Gets the value(s) for <b>diagnosisLinkId</b> ().
3296         * creating it if it does
3297         * not exist. Will not return <code>null</code>.
3298         *
3299     * <p>
3300     * <b>Definition:</b>
3301     * Diagnosis applicable for this service or product line.
3302     * </p> 
3303         */
3304        public java.util.List<PositiveIntDt> getDiagnosisLinkId() {  
3305                if (myDiagnosisLinkId == null) {
3306                        myDiagnosisLinkId = new java.util.ArrayList<PositiveIntDt>();
3307                }
3308                return myDiagnosisLinkId;
3309        }
3310
3311        /**
3312         * Sets the value(s) for <b>diagnosisLinkId</b> ()
3313         *
3314     * <p>
3315     * <b>Definition:</b>
3316     * Diagnosis applicable for this service or product line.
3317     * </p> 
3318         */
3319        public Item setDiagnosisLinkId(java.util.List<PositiveIntDt> theValue) {
3320                myDiagnosisLinkId = theValue;
3321                return this;
3322        }
3323        
3324        
3325
3326        /**
3327         * Adds and returns a new value for <b>diagnosisLinkId</b> ()
3328         *
3329     * <p>
3330     * <b>Definition:</b>
3331     * Diagnosis applicable for this service or product line.
3332     * </p> 
3333         */
3334        public PositiveIntDt addDiagnosisLinkId() {
3335                PositiveIntDt newType = new PositiveIntDt();
3336                getDiagnosisLinkId().add(newType);
3337                return newType; 
3338        }
3339
3340        /**
3341         * Adds a given new value for <b>diagnosisLinkId</b> ()
3342         *
3343         * <p>
3344         * <b>Definition:</b>
3345         * Diagnosis applicable for this service or product line.
3346         * </p>
3347         * @param theValue The diagnosisLinkId to add (must not be <code>null</code>)
3348         */
3349        public Item addDiagnosisLinkId(PositiveIntDt theValue) {
3350                if (theValue == null) {
3351                        throw new NullPointerException("theValue must not be null");
3352                }
3353                getDiagnosisLinkId().add(theValue);
3354                return this;
3355        }
3356
3357        /**
3358         * Gets the first repetition for <b>diagnosisLinkId</b> (),
3359         * creating it if it does not already exist.
3360         *
3361     * <p>
3362     * <b>Definition:</b>
3363     * Diagnosis applicable for this service or product line.
3364     * </p> 
3365         */
3366        public PositiveIntDt getDiagnosisLinkIdFirstRep() {
3367                if (getDiagnosisLinkId().isEmpty()) {
3368                        return addDiagnosisLinkId();
3369                }
3370                return getDiagnosisLinkId().get(0); 
3371        }
3372        /**
3373         * Adds a new value for <b>diagnosisLinkId</b> ()
3374         *
3375     * <p>
3376     * <b>Definition:</b>
3377     * Diagnosis applicable for this service or product line.
3378     * </p> 
3379     *
3380     * @return Returns a reference to this object, to allow for simple chaining.
3381         */
3382        public Item addDiagnosisLinkId( int theInteger) {
3383                if (myDiagnosisLinkId == null) {
3384                        myDiagnosisLinkId = new java.util.ArrayList<PositiveIntDt>();
3385                }
3386                myDiagnosisLinkId.add(new PositiveIntDt(theInteger));
3387                return this; 
3388        }
3389
3390 
3391        /**
3392         * Gets the value(s) for <b>service</b> ().
3393         * creating it if it does
3394         * not exist. Will not return <code>null</code>.
3395         *
3396     * <p>
3397     * <b>Definition:</b>
3398     * If a grouping item then 'GROUP' otherwise it is a node therefore a code to indicate the Professional Service or Product supplied.
3399     * </p> 
3400         */
3401        public CodingDt getService() {  
3402                if (myService == null) {
3403                        myService = new CodingDt();
3404                }
3405                return myService;
3406        }
3407
3408        /**
3409         * Sets the value(s) for <b>service</b> ()
3410         *
3411     * <p>
3412     * <b>Definition:</b>
3413     * If a grouping item then 'GROUP' otherwise it is a node therefore a code to indicate the Professional Service or Product supplied.
3414     * </p> 
3415         */
3416        public Item setService(CodingDt theValue) {
3417                myService = theValue;
3418                return this;
3419        }
3420        
3421        
3422
3423  
3424        /**
3425         * Gets the value(s) for <b>serviceDate</b> ().
3426         * creating it if it does
3427         * not exist. Will not return <code>null</code>.
3428         *
3429     * <p>
3430     * <b>Definition:</b>
3431     * The date when the enclosed suite of services were performed or completed
3432     * </p> 
3433         */
3434        public DateDt getServiceDateElement() {  
3435                if (myServiceDate == null) {
3436                        myServiceDate = new DateDt();
3437                }
3438                return myServiceDate;
3439        }
3440
3441        
3442        /**
3443         * Gets the value(s) for <b>serviceDate</b> ().
3444         * creating it if it does
3445         * not exist. This method may return <code>null</code>.
3446         *
3447     * <p>
3448     * <b>Definition:</b>
3449     * The date when the enclosed suite of services were performed or completed
3450     * </p> 
3451         */
3452        public Date getServiceDate() {  
3453                return getServiceDateElement().getValue();
3454        }
3455
3456        /**
3457         * Sets the value(s) for <b>serviceDate</b> ()
3458         *
3459     * <p>
3460     * <b>Definition:</b>
3461     * The date when the enclosed suite of services were performed or completed
3462     * </p> 
3463         */
3464        public Item setServiceDate(DateDt theValue) {
3465                myServiceDate = theValue;
3466                return this;
3467        }
3468        
3469        
3470
3471        /**
3472         * Sets the value for <b>serviceDate</b> ()
3473         *
3474     * <p>
3475     * <b>Definition:</b>
3476     * The date when the enclosed suite of services were performed or completed
3477     * </p> 
3478         */
3479        public Item setServiceDateWithDayPrecision( Date theDate) {
3480                myServiceDate = new DateDt(theDate); 
3481                return this; 
3482        }
3483
3484        /**
3485         * Sets the value for <b>serviceDate</b> ()
3486         *
3487     * <p>
3488     * <b>Definition:</b>
3489     * The date when the enclosed suite of services were performed or completed
3490     * </p> 
3491         */
3492        public Item setServiceDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
3493                myServiceDate = new DateDt(theDate, thePrecision); 
3494                return this; 
3495        }
3496
3497 
3498        /**
3499         * Gets the value(s) for <b>quantity</b> ().
3500         * creating it if it does
3501         * not exist. Will not return <code>null</code>.
3502         *
3503     * <p>
3504     * <b>Definition:</b>
3505     * The number of repetitions of a service or product.
3506     * </p> 
3507         */
3508        public SimpleQuantityDt getQuantity() {  
3509                if (myQuantity == null) {
3510                        myQuantity = new SimpleQuantityDt();
3511                }
3512                return myQuantity;
3513        }
3514
3515        /**
3516         * Sets the value(s) for <b>quantity</b> ()
3517         *
3518     * <p>
3519     * <b>Definition:</b>
3520     * The number of repetitions of a service or product.
3521     * </p> 
3522         */
3523        public Item setQuantity(SimpleQuantityDt theValue) {
3524                myQuantity = theValue;
3525                return this;
3526        }
3527        
3528        
3529
3530  
3531        /**
3532         * Gets the value(s) for <b>unitPrice</b> ().
3533         * creating it if it does
3534         * not exist. Will not return <code>null</code>.
3535         *
3536     * <p>
3537     * <b>Definition:</b>
3538     * If the item is a node then this is the fee for the product or service, otherwise this is the total of the fees for the children of the group.
3539     * </p> 
3540         */
3541        public MoneyDt getUnitPrice() {  
3542                if (myUnitPrice == null) {
3543                        myUnitPrice = new MoneyDt();
3544                }
3545                return myUnitPrice;
3546        }
3547
3548        /**
3549         * Sets the value(s) for <b>unitPrice</b> ()
3550         *
3551     * <p>
3552     * <b>Definition:</b>
3553     * If the item is a node then this is the fee for the product or service, otherwise this is the total of the fees for the children of the group.
3554     * </p> 
3555         */
3556        public Item setUnitPrice(MoneyDt theValue) {
3557                myUnitPrice = theValue;
3558                return this;
3559        }
3560        
3561        
3562
3563  
3564        /**
3565         * Gets the value(s) for <b>factor</b> ().
3566         * creating it if it does
3567         * not exist. Will not return <code>null</code>.
3568         *
3569     * <p>
3570     * <b>Definition:</b>
3571     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
3572     * </p> 
3573         */
3574        public DecimalDt getFactorElement() {  
3575                if (myFactor == null) {
3576                        myFactor = new DecimalDt();
3577                }
3578                return myFactor;
3579        }
3580
3581        
3582        /**
3583         * Gets the value(s) for <b>factor</b> ().
3584         * creating it if it does
3585         * not exist. This method may return <code>null</code>.
3586         *
3587     * <p>
3588     * <b>Definition:</b>
3589     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
3590     * </p> 
3591         */
3592        public BigDecimal getFactor() {  
3593                return getFactorElement().getValue();
3594        }
3595
3596        /**
3597         * Sets the value(s) for <b>factor</b> ()
3598         *
3599     * <p>
3600     * <b>Definition:</b>
3601     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
3602     * </p> 
3603         */
3604        public Item setFactor(DecimalDt theValue) {
3605                myFactor = theValue;
3606                return this;
3607        }
3608        
3609        
3610
3611        /**
3612         * Sets the value for <b>factor</b> ()
3613         *
3614     * <p>
3615     * <b>Definition:</b>
3616     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
3617     * </p> 
3618         */
3619        public Item setFactor( double theValue) {
3620                myFactor = new DecimalDt(theValue); 
3621                return this; 
3622        }
3623
3624        /**
3625         * Sets the value for <b>factor</b> ()
3626         *
3627     * <p>
3628     * <b>Definition:</b>
3629     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
3630     * </p> 
3631         */
3632        public Item setFactor( long theValue) {
3633                myFactor = new DecimalDt(theValue); 
3634                return this; 
3635        }
3636
3637        /**
3638         * Sets the value for <b>factor</b> ()
3639         *
3640     * <p>
3641     * <b>Definition:</b>
3642     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
3643     * </p> 
3644         */
3645        public Item setFactor( java.math.BigDecimal theValue) {
3646                myFactor = new DecimalDt(theValue); 
3647                return this; 
3648        }
3649
3650 
3651        /**
3652         * Gets the value(s) for <b>points</b> ().
3653         * creating it if it does
3654         * not exist. Will not return <code>null</code>.
3655         *
3656     * <p>
3657     * <b>Definition:</b>
3658     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
3659     * </p> 
3660         */
3661        public DecimalDt getPointsElement() {  
3662                if (myPoints == null) {
3663                        myPoints = new DecimalDt();
3664                }
3665                return myPoints;
3666        }
3667
3668        
3669        /**
3670         * Gets the value(s) for <b>points</b> ().
3671         * creating it if it does
3672         * not exist. This method may return <code>null</code>.
3673         *
3674     * <p>
3675     * <b>Definition:</b>
3676     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
3677     * </p> 
3678         */
3679        public BigDecimal getPoints() {  
3680                return getPointsElement().getValue();
3681        }
3682
3683        /**
3684         * Sets the value(s) for <b>points</b> ()
3685         *
3686     * <p>
3687     * <b>Definition:</b>
3688     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
3689     * </p> 
3690         */
3691        public Item setPoints(DecimalDt theValue) {
3692                myPoints = theValue;
3693                return this;
3694        }
3695        
3696        
3697
3698        /**
3699         * Sets the value for <b>points</b> ()
3700         *
3701     * <p>
3702     * <b>Definition:</b>
3703     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
3704     * </p> 
3705         */
3706        public Item setPoints( double theValue) {
3707                myPoints = new DecimalDt(theValue); 
3708                return this; 
3709        }
3710
3711        /**
3712         * Sets the value for <b>points</b> ()
3713         *
3714     * <p>
3715     * <b>Definition:</b>
3716     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
3717     * </p> 
3718         */
3719        public Item setPoints( long theValue) {
3720                myPoints = new DecimalDt(theValue); 
3721                return this; 
3722        }
3723
3724        /**
3725         * Sets the value for <b>points</b> ()
3726         *
3727     * <p>
3728     * <b>Definition:</b>
3729     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
3730     * </p> 
3731         */
3732        public Item setPoints( java.math.BigDecimal theValue) {
3733                myPoints = new DecimalDt(theValue); 
3734                return this; 
3735        }
3736
3737 
3738        /**
3739         * Gets the value(s) for <b>net</b> ().
3740         * creating it if it does
3741         * not exist. Will not return <code>null</code>.
3742         *
3743     * <p>
3744     * <b>Definition:</b>
3745     * The quantity times the unit price for an additional  service or product or charge. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.
3746     * </p> 
3747         */
3748        public MoneyDt getNet() {  
3749                if (myNet == null) {
3750                        myNet = new MoneyDt();
3751                }
3752                return myNet;
3753        }
3754
3755        /**
3756         * Sets the value(s) for <b>net</b> ()
3757         *
3758     * <p>
3759     * <b>Definition:</b>
3760     * The quantity times the unit price for an additional  service or product or charge. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.
3761     * </p> 
3762         */
3763        public Item setNet(MoneyDt theValue) {
3764                myNet = theValue;
3765                return this;
3766        }
3767        
3768        
3769
3770  
3771        /**
3772         * Gets the value(s) for <b>udi</b> ().
3773         * creating it if it does
3774         * not exist. Will not return <code>null</code>.
3775         *
3776     * <p>
3777     * <b>Definition:</b>
3778     * List of Unique Device Identifiers associated with this line item.
3779     * </p> 
3780         */
3781        public CodingDt getUdi() {  
3782                if (myUdi == null) {
3783                        myUdi = new CodingDt();
3784                }
3785                return myUdi;
3786        }
3787
3788        /**
3789         * Sets the value(s) for <b>udi</b> ()
3790         *
3791     * <p>
3792     * <b>Definition:</b>
3793     * List of Unique Device Identifiers associated with this line item.
3794     * </p> 
3795         */
3796        public Item setUdi(CodingDt theValue) {
3797                myUdi = theValue;
3798                return this;
3799        }
3800        
3801        
3802
3803  
3804        /**
3805         * Gets the value(s) for <b>bodySite</b> ().
3806         * creating it if it does
3807         * not exist. Will not return <code>null</code>.
3808         *
3809     * <p>
3810     * <b>Definition:</b>
3811     * Physical service site on the patient (limb, tooth, etc.).
3812     * </p> 
3813         */
3814        public CodingDt getBodySite() {  
3815                if (myBodySite == null) {
3816                        myBodySite = new CodingDt();
3817                }
3818                return myBodySite;
3819        }
3820
3821        /**
3822         * Sets the value(s) for <b>bodySite</b> ()
3823         *
3824     * <p>
3825     * <b>Definition:</b>
3826     * Physical service site on the patient (limb, tooth, etc.).
3827     * </p> 
3828         */
3829        public Item setBodySite(CodingDt theValue) {
3830                myBodySite = theValue;
3831                return this;
3832        }
3833        
3834        
3835
3836  
3837        /**
3838         * Gets the value(s) for <b>subSite</b> ().
3839         * creating it if it does
3840         * not exist. Will not return <code>null</code>.
3841         *
3842     * <p>
3843     * <b>Definition:</b>
3844     * A region or surface of the site, e.g. limb region or tooth surface(s).
3845     * </p> 
3846         */
3847        public java.util.List<CodingDt> getSubSite() {  
3848                if (mySubSite == null) {
3849                        mySubSite = new java.util.ArrayList<CodingDt>();
3850                }
3851                return mySubSite;
3852        }
3853
3854        /**
3855         * Sets the value(s) for <b>subSite</b> ()
3856         *
3857     * <p>
3858     * <b>Definition:</b>
3859     * A region or surface of the site, e.g. limb region or tooth surface(s).
3860     * </p> 
3861         */
3862        public Item setSubSite(java.util.List<CodingDt> theValue) {
3863                mySubSite = theValue;
3864                return this;
3865        }
3866        
3867        
3868
3869        /**
3870         * Adds and returns a new value for <b>subSite</b> ()
3871         *
3872     * <p>
3873     * <b>Definition:</b>
3874     * A region or surface of the site, e.g. limb region or tooth surface(s).
3875     * </p> 
3876         */
3877        public CodingDt addSubSite() {
3878                CodingDt newType = new CodingDt();
3879                getSubSite().add(newType);
3880                return newType; 
3881        }
3882
3883        /**
3884         * Adds a given new value for <b>subSite</b> ()
3885         *
3886         * <p>
3887         * <b>Definition:</b>
3888         * A region or surface of the site, e.g. limb region or tooth surface(s).
3889         * </p>
3890         * @param theValue The subSite to add (must not be <code>null</code>)
3891         */
3892        public Item addSubSite(CodingDt theValue) {
3893                if (theValue == null) {
3894                        throw new NullPointerException("theValue must not be null");
3895                }
3896                getSubSite().add(theValue);
3897                return this;
3898        }
3899
3900        /**
3901         * Gets the first repetition for <b>subSite</b> (),
3902         * creating it if it does not already exist.
3903         *
3904     * <p>
3905     * <b>Definition:</b>
3906     * A region or surface of the site, e.g. limb region or tooth surface(s).
3907     * </p> 
3908         */
3909        public CodingDt getSubSiteFirstRep() {
3910                if (getSubSite().isEmpty()) {
3911                        return addSubSite();
3912                }
3913                return getSubSite().get(0); 
3914        }
3915  
3916        /**
3917         * Gets the value(s) for <b>modifier</b> ().
3918         * creating it if it does
3919         * not exist. Will not return <code>null</code>.
3920         *
3921     * <p>
3922     * <b>Definition:</b>
3923     * Item typification or modifiers codes, e.g. for Oral whether the treatment is cosmetic or associated with TMJ, or an appliance was lost or stolen.
3924     * </p> 
3925         */
3926        public java.util.List<CodingDt> getModifier() {  
3927                if (myModifier == null) {
3928                        myModifier = new java.util.ArrayList<CodingDt>();
3929                }
3930                return myModifier;
3931        }
3932
3933        /**
3934         * Sets the value(s) for <b>modifier</b> ()
3935         *
3936     * <p>
3937     * <b>Definition:</b>
3938     * Item typification or modifiers codes, e.g. for Oral whether the treatment is cosmetic or associated with TMJ, or an appliance was lost or stolen.
3939     * </p> 
3940         */
3941        public Item setModifier(java.util.List<CodingDt> theValue) {
3942                myModifier = theValue;
3943                return this;
3944        }
3945        
3946        
3947
3948        /**
3949         * Adds and returns a new value for <b>modifier</b> ()
3950         *
3951     * <p>
3952     * <b>Definition:</b>
3953     * Item typification or modifiers codes, e.g. for Oral whether the treatment is cosmetic or associated with TMJ, or an appliance was lost or stolen.
3954     * </p> 
3955         */
3956        public CodingDt addModifier() {
3957                CodingDt newType = new CodingDt();
3958                getModifier().add(newType);
3959                return newType; 
3960        }
3961
3962        /**
3963         * Adds a given new value for <b>modifier</b> ()
3964         *
3965         * <p>
3966         * <b>Definition:</b>
3967         * Item typification or modifiers codes, e.g. for Oral whether the treatment is cosmetic or associated with TMJ, or an appliance was lost or stolen.
3968         * </p>
3969         * @param theValue The modifier to add (must not be <code>null</code>)
3970         */
3971        public Item addModifier(CodingDt theValue) {
3972                if (theValue == null) {
3973                        throw new NullPointerException("theValue must not be null");
3974                }
3975                getModifier().add(theValue);
3976                return this;
3977        }
3978
3979        /**
3980         * Gets the first repetition for <b>modifier</b> (),
3981         * creating it if it does not already exist.
3982         *
3983     * <p>
3984     * <b>Definition:</b>
3985     * Item typification or modifiers codes, e.g. for Oral whether the treatment is cosmetic or associated with TMJ, or an appliance was lost or stolen.
3986     * </p> 
3987         */
3988        public CodingDt getModifierFirstRep() {
3989                if (getModifier().isEmpty()) {
3990                        return addModifier();
3991                }
3992                return getModifier().get(0); 
3993        }
3994  
3995        /**
3996         * Gets the value(s) for <b>detail</b> ().
3997         * creating it if it does
3998         * not exist. Will not return <code>null</code>.
3999         *
4000     * <p>
4001     * <b>Definition:</b>
4002     * Second tier of goods and services
4003     * </p> 
4004         */
4005        public java.util.List<ItemDetail> getDetail() {  
4006                if (myDetail == null) {
4007                        myDetail = new java.util.ArrayList<ItemDetail>();
4008                }
4009                return myDetail;
4010        }
4011
4012        /**
4013         * Sets the value(s) for <b>detail</b> ()
4014         *
4015     * <p>
4016     * <b>Definition:</b>
4017     * Second tier of goods and services
4018     * </p> 
4019         */
4020        public Item setDetail(java.util.List<ItemDetail> theValue) {
4021                myDetail = theValue;
4022                return this;
4023        }
4024        
4025        
4026
4027        /**
4028         * Adds and returns a new value for <b>detail</b> ()
4029         *
4030     * <p>
4031     * <b>Definition:</b>
4032     * Second tier of goods and services
4033     * </p> 
4034         */
4035        public ItemDetail addDetail() {
4036                ItemDetail newType = new ItemDetail();
4037                getDetail().add(newType);
4038                return newType; 
4039        }
4040
4041        /**
4042         * Adds a given new value for <b>detail</b> ()
4043         *
4044         * <p>
4045         * <b>Definition:</b>
4046         * Second tier of goods and services
4047         * </p>
4048         * @param theValue The detail to add (must not be <code>null</code>)
4049         */
4050        public Item addDetail(ItemDetail theValue) {
4051                if (theValue == null) {
4052                        throw new NullPointerException("theValue must not be null");
4053                }
4054                getDetail().add(theValue);
4055                return this;
4056        }
4057
4058        /**
4059         * Gets the first repetition for <b>detail</b> (),
4060         * creating it if it does not already exist.
4061         *
4062     * <p>
4063     * <b>Definition:</b>
4064     * Second tier of goods and services
4065     * </p> 
4066         */
4067        public ItemDetail getDetailFirstRep() {
4068                if (getDetail().isEmpty()) {
4069                        return addDetail();
4070                }
4071                return getDetail().get(0); 
4072        }
4073  
4074        /**
4075         * Gets the value(s) for <b>prosthesis</b> ().
4076         * creating it if it does
4077         * not exist. Will not return <code>null</code>.
4078         *
4079     * <p>
4080     * <b>Definition:</b>
4081     * The materials and placement date of prior fixed prosthesis.
4082     * </p> 
4083         */
4084        public ItemProsthesis getProsthesis() {  
4085                if (myProsthesis == null) {
4086                        myProsthesis = new ItemProsthesis();
4087                }
4088                return myProsthesis;
4089        }
4090
4091        /**
4092         * Sets the value(s) for <b>prosthesis</b> ()
4093         *
4094     * <p>
4095     * <b>Definition:</b>
4096     * The materials and placement date of prior fixed prosthesis.
4097     * </p> 
4098         */
4099        public Item setProsthesis(ItemProsthesis theValue) {
4100                myProsthesis = theValue;
4101                return this;
4102        }
4103        
4104        
4105
4106  
4107
4108
4109        }
4110
4111        /**
4112         * Block class for child element: <b>Claim.item.detail</b> ()
4113         *
4114     * <p>
4115     * <b>Definition:</b>
4116     * Second tier of goods and services
4117     * </p> 
4118         */
4119        @Block()        
4120        public static class ItemDetail 
4121            extends  BaseIdentifiableElement        implements IResourceBlock {
4122        
4123        @Child(name="sequence", type=PositiveIntDt.class, order=0, min=1, max=1, summary=false, modifier=false) 
4124        @Description(
4125                shortDefinition="",
4126                formalDefinition="A service line number."
4127        )
4128        private PositiveIntDt mySequence;
4129        
4130        @Child(name="type", type=CodingDt.class, order=1, min=1, max=1, summary=false, modifier=false)  
4131        @Description(
4132                shortDefinition="",
4133                formalDefinition="The type of product or service."
4134        )
4135        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/v3-ActInvoiceGroupCode")
4136        private CodingDt myType;
4137        
4138        @Child(name="service", type=CodingDt.class, order=2, min=1, max=1, summary=false, modifier=false)       
4139        @Description(
4140                shortDefinition="",
4141                formalDefinition="If a grouping item then 'GROUP' otherwise it is a node therefore a code to indicate the Professional Service or Product supplied."
4142        )
4143        private CodingDt myService;
4144        
4145        @Child(name="quantity", type=SimpleQuantityDt.class, order=3, min=0, max=1, summary=false, modifier=false)      
4146        @Description(
4147                shortDefinition="",
4148                formalDefinition="The number of repetitions of a service or product."
4149        )
4150        private SimpleQuantityDt myQuantity;
4151        
4152        @Child(name="unitPrice", type=MoneyDt.class, order=4, min=0, max=1, summary=false, modifier=false)      
4153        @Description(
4154                shortDefinition="",
4155                formalDefinition="If the item is a node then this is the fee for the product or service, otherwise this is the total of the fees for the children of the group."
4156        )
4157        private MoneyDt myUnitPrice;
4158        
4159        @Child(name="factor", type=DecimalDt.class, order=5, min=0, max=1, summary=false, modifier=false)       
4160        @Description(
4161                shortDefinition="",
4162                formalDefinition="A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."
4163        )
4164        private DecimalDt myFactor;
4165        
4166        @Child(name="points", type=DecimalDt.class, order=6, min=0, max=1, summary=false, modifier=false)       
4167        @Description(
4168                shortDefinition="",
4169                formalDefinition="An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point."
4170        )
4171        private DecimalDt myPoints;
4172        
4173        @Child(name="net", type=MoneyDt.class, order=7, min=0, max=1, summary=false, modifier=false)    
4174        @Description(
4175                shortDefinition="",
4176                formalDefinition="The quantity times the unit price for an additional  service or product or charge. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied."
4177        )
4178        private MoneyDt myNet;
4179        
4180        @Child(name="udi", type=CodingDt.class, order=8, min=0, max=1, summary=false, modifier=false)   
4181        @Description(
4182                shortDefinition="",
4183                formalDefinition="List of Unique Device Identifiers associated with this line item."
4184        )
4185        private CodingDt myUdi;
4186        
4187        @Child(name="subDetail", order=9, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
4188        @Description(
4189                shortDefinition="",
4190                formalDefinition="Third tier of goods and services"
4191        )
4192        private java.util.List<ItemDetailSubDetail> mySubDetail;
4193        
4194
4195        @Override
4196        public boolean isEmpty() {
4197                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  mySequence,  myType,  myService,  myQuantity,  myUnitPrice,  myFactor,  myPoints,  myNet,  myUdi,  mySubDetail);
4198        }
4199        
4200        @Override
4201        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
4202                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, mySequence, myType, myService, myQuantity, myUnitPrice, myFactor, myPoints, myNet, myUdi, mySubDetail);
4203        }
4204
4205        /**
4206         * Gets the value(s) for <b>sequence</b> ().
4207         * creating it if it does
4208         * not exist. Will not return <code>null</code>.
4209         *
4210     * <p>
4211     * <b>Definition:</b>
4212     * A service line number.
4213     * </p> 
4214         */
4215        public PositiveIntDt getSequenceElement() {  
4216                if (mySequence == null) {
4217                        mySequence = new PositiveIntDt();
4218                }
4219                return mySequence;
4220        }
4221
4222        
4223        /**
4224         * Gets the value(s) for <b>sequence</b> ().
4225         * creating it if it does
4226         * not exist. This method may return <code>null</code>.
4227         *
4228     * <p>
4229     * <b>Definition:</b>
4230     * A service line number.
4231     * </p> 
4232         */
4233        public Integer getSequence() {  
4234                return getSequenceElement().getValue();
4235        }
4236
4237        /**
4238         * Sets the value(s) for <b>sequence</b> ()
4239         *
4240     * <p>
4241     * <b>Definition:</b>
4242     * A service line number.
4243     * </p> 
4244         */
4245        public ItemDetail setSequence(PositiveIntDt theValue) {
4246                mySequence = theValue;
4247                return this;
4248        }
4249        
4250        
4251
4252        /**
4253         * Sets the value for <b>sequence</b> ()
4254         *
4255     * <p>
4256     * <b>Definition:</b>
4257     * A service line number.
4258     * </p> 
4259         */
4260        public ItemDetail setSequence( int theInteger) {
4261                mySequence = new PositiveIntDt(theInteger); 
4262                return this; 
4263        }
4264
4265 
4266        /**
4267         * Gets the value(s) for <b>type</b> ().
4268         * creating it if it does
4269         * not exist. Will not return <code>null</code>.
4270         *
4271     * <p>
4272     * <b>Definition:</b>
4273     * The type of product or service.
4274     * </p> 
4275         */
4276        public CodingDt getType() {  
4277                if (myType == null) {
4278                        myType = new CodingDt();
4279                }
4280                return myType;
4281        }
4282
4283        /**
4284         * Sets the value(s) for <b>type</b> ()
4285         *
4286     * <p>
4287     * <b>Definition:</b>
4288     * The type of product or service.
4289     * </p> 
4290         */
4291        public ItemDetail setType(CodingDt theValue) {
4292                myType = theValue;
4293                return this;
4294        }
4295        
4296        
4297
4298  
4299        /**
4300         * Gets the value(s) for <b>service</b> ().
4301         * creating it if it does
4302         * not exist. Will not return <code>null</code>.
4303         *
4304     * <p>
4305     * <b>Definition:</b>
4306     * If a grouping item then 'GROUP' otherwise it is a node therefore a code to indicate the Professional Service or Product supplied.
4307     * </p> 
4308         */
4309        public CodingDt getService() {  
4310                if (myService == null) {
4311                        myService = new CodingDt();
4312                }
4313                return myService;
4314        }
4315
4316        /**
4317         * Sets the value(s) for <b>service</b> ()
4318         *
4319     * <p>
4320     * <b>Definition:</b>
4321     * If a grouping item then 'GROUP' otherwise it is a node therefore a code to indicate the Professional Service or Product supplied.
4322     * </p> 
4323         */
4324        public ItemDetail setService(CodingDt theValue) {
4325                myService = theValue;
4326                return this;
4327        }
4328        
4329        
4330
4331  
4332        /**
4333         * Gets the value(s) for <b>quantity</b> ().
4334         * creating it if it does
4335         * not exist. Will not return <code>null</code>.
4336         *
4337     * <p>
4338     * <b>Definition:</b>
4339     * The number of repetitions of a service or product.
4340     * </p> 
4341         */
4342        public SimpleQuantityDt getQuantity() {  
4343                if (myQuantity == null) {
4344                        myQuantity = new SimpleQuantityDt();
4345                }
4346                return myQuantity;
4347        }
4348
4349        /**
4350         * Sets the value(s) for <b>quantity</b> ()
4351         *
4352     * <p>
4353     * <b>Definition:</b>
4354     * The number of repetitions of a service or product.
4355     * </p> 
4356         */
4357        public ItemDetail setQuantity(SimpleQuantityDt theValue) {
4358                myQuantity = theValue;
4359                return this;
4360        }
4361        
4362        
4363
4364  
4365        /**
4366         * Gets the value(s) for <b>unitPrice</b> ().
4367         * creating it if it does
4368         * not exist. Will not return <code>null</code>.
4369         *
4370     * <p>
4371     * <b>Definition:</b>
4372     * If the item is a node then this is the fee for the product or service, otherwise this is the total of the fees for the children of the group.
4373     * </p> 
4374         */
4375        public MoneyDt getUnitPrice() {  
4376                if (myUnitPrice == null) {
4377                        myUnitPrice = new MoneyDt();
4378                }
4379                return myUnitPrice;
4380        }
4381
4382        /**
4383         * Sets the value(s) for <b>unitPrice</b> ()
4384         *
4385     * <p>
4386     * <b>Definition:</b>
4387     * If the item is a node then this is the fee for the product or service, otherwise this is the total of the fees for the children of the group.
4388     * </p> 
4389         */
4390        public ItemDetail setUnitPrice(MoneyDt theValue) {
4391                myUnitPrice = theValue;
4392                return this;
4393        }
4394        
4395        
4396
4397  
4398        /**
4399         * Gets the value(s) for <b>factor</b> ().
4400         * creating it if it does
4401         * not exist. Will not return <code>null</code>.
4402         *
4403     * <p>
4404     * <b>Definition:</b>
4405     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
4406     * </p> 
4407         */
4408        public DecimalDt getFactorElement() {  
4409                if (myFactor == null) {
4410                        myFactor = new DecimalDt();
4411                }
4412                return myFactor;
4413        }
4414
4415        
4416        /**
4417         * Gets the value(s) for <b>factor</b> ().
4418         * creating it if it does
4419         * not exist. This method may return <code>null</code>.
4420         *
4421     * <p>
4422     * <b>Definition:</b>
4423     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
4424     * </p> 
4425         */
4426        public BigDecimal getFactor() {  
4427                return getFactorElement().getValue();
4428        }
4429
4430        /**
4431         * Sets the value(s) for <b>factor</b> ()
4432         *
4433     * <p>
4434     * <b>Definition:</b>
4435     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
4436     * </p> 
4437         */
4438        public ItemDetail setFactor(DecimalDt theValue) {
4439                myFactor = theValue;
4440                return this;
4441        }
4442        
4443        
4444
4445        /**
4446         * Sets the value for <b>factor</b> ()
4447         *
4448     * <p>
4449     * <b>Definition:</b>
4450     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
4451     * </p> 
4452         */
4453        public ItemDetail setFactor( double theValue) {
4454                myFactor = new DecimalDt(theValue); 
4455                return this; 
4456        }
4457
4458        /**
4459         * Sets the value for <b>factor</b> ()
4460         *
4461     * <p>
4462     * <b>Definition:</b>
4463     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
4464     * </p> 
4465         */
4466        public ItemDetail setFactor( long theValue) {
4467                myFactor = new DecimalDt(theValue); 
4468                return this; 
4469        }
4470
4471        /**
4472         * Sets the value for <b>factor</b> ()
4473         *
4474     * <p>
4475     * <b>Definition:</b>
4476     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
4477     * </p> 
4478         */
4479        public ItemDetail setFactor( java.math.BigDecimal theValue) {
4480                myFactor = new DecimalDt(theValue); 
4481                return this; 
4482        }
4483
4484 
4485        /**
4486         * Gets the value(s) for <b>points</b> ().
4487         * creating it if it does
4488         * not exist. Will not return <code>null</code>.
4489         *
4490     * <p>
4491     * <b>Definition:</b>
4492     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
4493     * </p> 
4494         */
4495        public DecimalDt getPointsElement() {  
4496                if (myPoints == null) {
4497                        myPoints = new DecimalDt();
4498                }
4499                return myPoints;
4500        }
4501
4502        
4503        /**
4504         * Gets the value(s) for <b>points</b> ().
4505         * creating it if it does
4506         * not exist. This method may return <code>null</code>.
4507         *
4508     * <p>
4509     * <b>Definition:</b>
4510     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
4511     * </p> 
4512         */
4513        public BigDecimal getPoints() {  
4514                return getPointsElement().getValue();
4515        }
4516
4517        /**
4518         * Sets the value(s) for <b>points</b> ()
4519         *
4520     * <p>
4521     * <b>Definition:</b>
4522     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
4523     * </p> 
4524         */
4525        public ItemDetail setPoints(DecimalDt theValue) {
4526                myPoints = theValue;
4527                return this;
4528        }
4529        
4530        
4531
4532        /**
4533         * Sets the value for <b>points</b> ()
4534         *
4535     * <p>
4536     * <b>Definition:</b>
4537     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
4538     * </p> 
4539         */
4540        public ItemDetail setPoints( double theValue) {
4541                myPoints = new DecimalDt(theValue); 
4542                return this; 
4543        }
4544
4545        /**
4546         * Sets the value for <b>points</b> ()
4547         *
4548     * <p>
4549     * <b>Definition:</b>
4550     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
4551     * </p> 
4552         */
4553        public ItemDetail setPoints( long theValue) {
4554                myPoints = new DecimalDt(theValue); 
4555                return this; 
4556        }
4557
4558        /**
4559         * Sets the value for <b>points</b> ()
4560         *
4561     * <p>
4562     * <b>Definition:</b>
4563     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
4564     * </p> 
4565         */
4566        public ItemDetail setPoints( java.math.BigDecimal theValue) {
4567                myPoints = new DecimalDt(theValue); 
4568                return this; 
4569        }
4570
4571 
4572        /**
4573         * Gets the value(s) for <b>net</b> ().
4574         * creating it if it does
4575         * not exist. Will not return <code>null</code>.
4576         *
4577     * <p>
4578     * <b>Definition:</b>
4579     * The quantity times the unit price for an additional  service or product or charge. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.
4580     * </p> 
4581         */
4582        public MoneyDt getNet() {  
4583                if (myNet == null) {
4584                        myNet = new MoneyDt();
4585                }
4586                return myNet;
4587        }
4588
4589        /**
4590         * Sets the value(s) for <b>net</b> ()
4591         *
4592     * <p>
4593     * <b>Definition:</b>
4594     * The quantity times the unit price for an additional  service or product or charge. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.
4595     * </p> 
4596         */
4597        public ItemDetail setNet(MoneyDt theValue) {
4598                myNet = theValue;
4599                return this;
4600        }
4601        
4602        
4603
4604  
4605        /**
4606         * Gets the value(s) for <b>udi</b> ().
4607         * creating it if it does
4608         * not exist. Will not return <code>null</code>.
4609         *
4610     * <p>
4611     * <b>Definition:</b>
4612     * List of Unique Device Identifiers associated with this line item.
4613     * </p> 
4614         */
4615        public CodingDt getUdi() {  
4616                if (myUdi == null) {
4617                        myUdi = new CodingDt();
4618                }
4619                return myUdi;
4620        }
4621
4622        /**
4623         * Sets the value(s) for <b>udi</b> ()
4624         *
4625     * <p>
4626     * <b>Definition:</b>
4627     * List of Unique Device Identifiers associated with this line item.
4628     * </p> 
4629         */
4630        public ItemDetail setUdi(CodingDt theValue) {
4631                myUdi = theValue;
4632                return this;
4633        }
4634        
4635        
4636
4637  
4638        /**
4639         * Gets the value(s) for <b>subDetail</b> ().
4640         * creating it if it does
4641         * not exist. Will not return <code>null</code>.
4642         *
4643     * <p>
4644     * <b>Definition:</b>
4645     * Third tier of goods and services
4646     * </p> 
4647         */
4648        public java.util.List<ItemDetailSubDetail> getSubDetail() {  
4649                if (mySubDetail == null) {
4650                        mySubDetail = new java.util.ArrayList<ItemDetailSubDetail>();
4651                }
4652                return mySubDetail;
4653        }
4654
4655        /**
4656         * Sets the value(s) for <b>subDetail</b> ()
4657         *
4658     * <p>
4659     * <b>Definition:</b>
4660     * Third tier of goods and services
4661     * </p> 
4662         */
4663        public ItemDetail setSubDetail(java.util.List<ItemDetailSubDetail> theValue) {
4664                mySubDetail = theValue;
4665                return this;
4666        }
4667        
4668        
4669
4670        /**
4671         * Adds and returns a new value for <b>subDetail</b> ()
4672         *
4673     * <p>
4674     * <b>Definition:</b>
4675     * Third tier of goods and services
4676     * </p> 
4677         */
4678        public ItemDetailSubDetail addSubDetail() {
4679                ItemDetailSubDetail newType = new ItemDetailSubDetail();
4680                getSubDetail().add(newType);
4681                return newType; 
4682        }
4683
4684        /**
4685         * Adds a given new value for <b>subDetail</b> ()
4686         *
4687         * <p>
4688         * <b>Definition:</b>
4689         * Third tier of goods and services
4690         * </p>
4691         * @param theValue The subDetail to add (must not be <code>null</code>)
4692         */
4693        public ItemDetail addSubDetail(ItemDetailSubDetail theValue) {
4694                if (theValue == null) {
4695                        throw new NullPointerException("theValue must not be null");
4696                }
4697                getSubDetail().add(theValue);
4698                return this;
4699        }
4700
4701        /**
4702         * Gets the first repetition for <b>subDetail</b> (),
4703         * creating it if it does not already exist.
4704         *
4705     * <p>
4706     * <b>Definition:</b>
4707     * Third tier of goods and services
4708     * </p> 
4709         */
4710        public ItemDetailSubDetail getSubDetailFirstRep() {
4711                if (getSubDetail().isEmpty()) {
4712                        return addSubDetail();
4713                }
4714                return getSubDetail().get(0); 
4715        }
4716  
4717
4718
4719        }
4720
4721        /**
4722         * Block class for child element: <b>Claim.item.detail.subDetail</b> ()
4723         *
4724     * <p>
4725     * <b>Definition:</b>
4726     * Third tier of goods and services
4727     * </p> 
4728         */
4729        @Block()        
4730        public static class ItemDetailSubDetail 
4731            extends  BaseIdentifiableElement        implements IResourceBlock {
4732        
4733        @Child(name="sequence", type=PositiveIntDt.class, order=0, min=1, max=1, summary=false, modifier=false) 
4734        @Description(
4735                shortDefinition="",
4736                formalDefinition="A service line number."
4737        )
4738        private PositiveIntDt mySequence;
4739        
4740        @Child(name="type", type=CodingDt.class, order=1, min=1, max=1, summary=false, modifier=false)  
4741        @Description(
4742                shortDefinition="",
4743                formalDefinition="The type of product or service."
4744        )
4745        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/v3-ActInvoiceGroupCode")
4746        private CodingDt myType;
4747        
4748        @Child(name="service", type=CodingDt.class, order=2, min=1, max=1, summary=false, modifier=false)       
4749        @Description(
4750                shortDefinition="",
4751                formalDefinition="The fee for an additional  service or product or charge."
4752        )
4753        private CodingDt myService;
4754        
4755        @Child(name="quantity", type=SimpleQuantityDt.class, order=3, min=0, max=1, summary=false, modifier=false)      
4756        @Description(
4757                shortDefinition="",
4758                formalDefinition="The number of repetitions of a service or product."
4759        )
4760        private SimpleQuantityDt myQuantity;
4761        
4762        @Child(name="unitPrice", type=MoneyDt.class, order=4, min=0, max=1, summary=false, modifier=false)      
4763        @Description(
4764                shortDefinition="",
4765                formalDefinition="The fee for an additional  service or product or charge."
4766        )
4767        private MoneyDt myUnitPrice;
4768        
4769        @Child(name="factor", type=DecimalDt.class, order=5, min=0, max=1, summary=false, modifier=false)       
4770        @Description(
4771                shortDefinition="",
4772                formalDefinition="A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount."
4773        )
4774        private DecimalDt myFactor;
4775        
4776        @Child(name="points", type=DecimalDt.class, order=6, min=0, max=1, summary=false, modifier=false)       
4777        @Description(
4778                shortDefinition="",
4779                formalDefinition="An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point."
4780        )
4781        private DecimalDt myPoints;
4782        
4783        @Child(name="net", type=MoneyDt.class, order=7, min=0, max=1, summary=false, modifier=false)    
4784        @Description(
4785                shortDefinition="",
4786                formalDefinition="The quantity times the unit price for an additional  service or product or charge. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied."
4787        )
4788        private MoneyDt myNet;
4789        
4790        @Child(name="udi", type=CodingDt.class, order=8, min=0, max=1, summary=false, modifier=false)   
4791        @Description(
4792                shortDefinition="",
4793                formalDefinition="List of Unique Device Identifiers associated with this line item."
4794        )
4795        private CodingDt myUdi;
4796        
4797
4798        @Override
4799        public boolean isEmpty() {
4800                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  mySequence,  myType,  myService,  myQuantity,  myUnitPrice,  myFactor,  myPoints,  myNet,  myUdi);
4801        }
4802        
4803        @Override
4804        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
4805                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, mySequence, myType, myService, myQuantity, myUnitPrice, myFactor, myPoints, myNet, myUdi);
4806        }
4807
4808        /**
4809         * Gets the value(s) for <b>sequence</b> ().
4810         * creating it if it does
4811         * not exist. Will not return <code>null</code>.
4812         *
4813     * <p>
4814     * <b>Definition:</b>
4815     * A service line number.
4816     * </p> 
4817         */
4818        public PositiveIntDt getSequenceElement() {  
4819                if (mySequence == null) {
4820                        mySequence = new PositiveIntDt();
4821                }
4822                return mySequence;
4823        }
4824
4825        
4826        /**
4827         * Gets the value(s) for <b>sequence</b> ().
4828         * creating it if it does
4829         * not exist. This method may return <code>null</code>.
4830         *
4831     * <p>
4832     * <b>Definition:</b>
4833     * A service line number.
4834     * </p> 
4835         */
4836        public Integer getSequence() {  
4837                return getSequenceElement().getValue();
4838        }
4839
4840        /**
4841         * Sets the value(s) for <b>sequence</b> ()
4842         *
4843     * <p>
4844     * <b>Definition:</b>
4845     * A service line number.
4846     * </p> 
4847         */
4848        public ItemDetailSubDetail setSequence(PositiveIntDt theValue) {
4849                mySequence = theValue;
4850                return this;
4851        }
4852        
4853        
4854
4855        /**
4856         * Sets the value for <b>sequence</b> ()
4857         *
4858     * <p>
4859     * <b>Definition:</b>
4860     * A service line number.
4861     * </p> 
4862         */
4863        public ItemDetailSubDetail setSequence( int theInteger) {
4864                mySequence = new PositiveIntDt(theInteger); 
4865                return this; 
4866        }
4867
4868 
4869        /**
4870         * Gets the value(s) for <b>type</b> ().
4871         * creating it if it does
4872         * not exist. Will not return <code>null</code>.
4873         *
4874     * <p>
4875     * <b>Definition:</b>
4876     * The type of product or service.
4877     * </p> 
4878         */
4879        public CodingDt getType() {  
4880                if (myType == null) {
4881                        myType = new CodingDt();
4882                }
4883                return myType;
4884        }
4885
4886        /**
4887         * Sets the value(s) for <b>type</b> ()
4888         *
4889     * <p>
4890     * <b>Definition:</b>
4891     * The type of product or service.
4892     * </p> 
4893         */
4894        public ItemDetailSubDetail setType(CodingDt theValue) {
4895                myType = theValue;
4896                return this;
4897        }
4898        
4899        
4900
4901  
4902        /**
4903         * Gets the value(s) for <b>service</b> ().
4904         * creating it if it does
4905         * not exist. Will not return <code>null</code>.
4906         *
4907     * <p>
4908     * <b>Definition:</b>
4909     * The fee for an additional  service or product or charge.
4910     * </p> 
4911         */
4912        public CodingDt getService() {  
4913                if (myService == null) {
4914                        myService = new CodingDt();
4915                }
4916                return myService;
4917        }
4918
4919        /**
4920         * Sets the value(s) for <b>service</b> ()
4921         *
4922     * <p>
4923     * <b>Definition:</b>
4924     * The fee for an additional  service or product or charge.
4925     * </p> 
4926         */
4927        public ItemDetailSubDetail setService(CodingDt theValue) {
4928                myService = theValue;
4929                return this;
4930        }
4931        
4932        
4933
4934  
4935        /**
4936         * Gets the value(s) for <b>quantity</b> ().
4937         * creating it if it does
4938         * not exist. Will not return <code>null</code>.
4939         *
4940     * <p>
4941     * <b>Definition:</b>
4942     * The number of repetitions of a service or product.
4943     * </p> 
4944         */
4945        public SimpleQuantityDt getQuantity() {  
4946                if (myQuantity == null) {
4947                        myQuantity = new SimpleQuantityDt();
4948                }
4949                return myQuantity;
4950        }
4951
4952        /**
4953         * Sets the value(s) for <b>quantity</b> ()
4954         *
4955     * <p>
4956     * <b>Definition:</b>
4957     * The number of repetitions of a service or product.
4958     * </p> 
4959         */
4960        public ItemDetailSubDetail setQuantity(SimpleQuantityDt theValue) {
4961                myQuantity = theValue;
4962                return this;
4963        }
4964        
4965        
4966
4967  
4968        /**
4969         * Gets the value(s) for <b>unitPrice</b> ().
4970         * creating it if it does
4971         * not exist. Will not return <code>null</code>.
4972         *
4973     * <p>
4974     * <b>Definition:</b>
4975     * The fee for an additional  service or product or charge.
4976     * </p> 
4977         */
4978        public MoneyDt getUnitPrice() {  
4979                if (myUnitPrice == null) {
4980                        myUnitPrice = new MoneyDt();
4981                }
4982                return myUnitPrice;
4983        }
4984
4985        /**
4986         * Sets the value(s) for <b>unitPrice</b> ()
4987         *
4988     * <p>
4989     * <b>Definition:</b>
4990     * The fee for an additional  service or product or charge.
4991     * </p> 
4992         */
4993        public ItemDetailSubDetail setUnitPrice(MoneyDt theValue) {
4994                myUnitPrice = theValue;
4995                return this;
4996        }
4997        
4998        
4999
5000  
5001        /**
5002         * Gets the value(s) for <b>factor</b> ().
5003         * creating it if it does
5004         * not exist. Will not return <code>null</code>.
5005         *
5006     * <p>
5007     * <b>Definition:</b>
5008     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
5009     * </p> 
5010         */
5011        public DecimalDt getFactorElement() {  
5012                if (myFactor == null) {
5013                        myFactor = new DecimalDt();
5014                }
5015                return myFactor;
5016        }
5017
5018        
5019        /**
5020         * Gets the value(s) for <b>factor</b> ().
5021         * creating it if it does
5022         * not exist. This method may return <code>null</code>.
5023         *
5024     * <p>
5025     * <b>Definition:</b>
5026     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
5027     * </p> 
5028         */
5029        public BigDecimal getFactor() {  
5030                return getFactorElement().getValue();
5031        }
5032
5033        /**
5034         * Sets the value(s) for <b>factor</b> ()
5035         *
5036     * <p>
5037     * <b>Definition:</b>
5038     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
5039     * </p> 
5040         */
5041        public ItemDetailSubDetail setFactor(DecimalDt theValue) {
5042                myFactor = theValue;
5043                return this;
5044        }
5045        
5046        
5047
5048        /**
5049         * Sets the value for <b>factor</b> ()
5050         *
5051     * <p>
5052     * <b>Definition:</b>
5053     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
5054     * </p> 
5055         */
5056        public ItemDetailSubDetail setFactor( double theValue) {
5057                myFactor = new DecimalDt(theValue); 
5058                return this; 
5059        }
5060
5061        /**
5062         * Sets the value for <b>factor</b> ()
5063         *
5064     * <p>
5065     * <b>Definition:</b>
5066     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
5067     * </p> 
5068         */
5069        public ItemDetailSubDetail setFactor( long theValue) {
5070                myFactor = new DecimalDt(theValue); 
5071                return this; 
5072        }
5073
5074        /**
5075         * Sets the value for <b>factor</b> ()
5076         *
5077     * <p>
5078     * <b>Definition:</b>
5079     * A real number that represents a multiplier used in determining the overall value of services delivered and/or goods received. The concept of a Factor allows for a discount or surcharge multiplier to be applied to a monetary amount.
5080     * </p> 
5081         */
5082        public ItemDetailSubDetail setFactor( java.math.BigDecimal theValue) {
5083                myFactor = new DecimalDt(theValue); 
5084                return this; 
5085        }
5086
5087 
5088        /**
5089         * Gets the value(s) for <b>points</b> ().
5090         * creating it if it does
5091         * not exist. Will not return <code>null</code>.
5092         *
5093     * <p>
5094     * <b>Definition:</b>
5095     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
5096     * </p> 
5097         */
5098        public DecimalDt getPointsElement() {  
5099                if (myPoints == null) {
5100                        myPoints = new DecimalDt();
5101                }
5102                return myPoints;
5103        }
5104
5105        
5106        /**
5107         * Gets the value(s) for <b>points</b> ().
5108         * creating it if it does
5109         * not exist. This method may return <code>null</code>.
5110         *
5111     * <p>
5112     * <b>Definition:</b>
5113     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
5114     * </p> 
5115         */
5116        public BigDecimal getPoints() {  
5117                return getPointsElement().getValue();
5118        }
5119
5120        /**
5121         * Sets the value(s) for <b>points</b> ()
5122         *
5123     * <p>
5124     * <b>Definition:</b>
5125     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
5126     * </p> 
5127         */
5128        public ItemDetailSubDetail setPoints(DecimalDt theValue) {
5129                myPoints = theValue;
5130                return this;
5131        }
5132        
5133        
5134
5135        /**
5136         * Sets the value for <b>points</b> ()
5137         *
5138     * <p>
5139     * <b>Definition:</b>
5140     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
5141     * </p> 
5142         */
5143        public ItemDetailSubDetail setPoints( double theValue) {
5144                myPoints = new DecimalDt(theValue); 
5145                return this; 
5146        }
5147
5148        /**
5149         * Sets the value for <b>points</b> ()
5150         *
5151     * <p>
5152     * <b>Definition:</b>
5153     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
5154     * </p> 
5155         */
5156        public ItemDetailSubDetail setPoints( long theValue) {
5157                myPoints = new DecimalDt(theValue); 
5158                return this; 
5159        }
5160
5161        /**
5162         * Sets the value for <b>points</b> ()
5163         *
5164     * <p>
5165     * <b>Definition:</b>
5166     * An amount that expresses the weighting (based on difficulty, cost and/or resource intensiveness) associated with the good or service delivered. The concept of Points allows for assignment of point values for services and/or goods, such that a monetary amount can be assigned to each point.
5167     * </p> 
5168         */
5169        public ItemDetailSubDetail setPoints( java.math.BigDecimal theValue) {
5170                myPoints = new DecimalDt(theValue); 
5171                return this; 
5172        }
5173
5174 
5175        /**
5176         * Gets the value(s) for <b>net</b> ().
5177         * creating it if it does
5178         * not exist. Will not return <code>null</code>.
5179         *
5180     * <p>
5181     * <b>Definition:</b>
5182     * The quantity times the unit price for an additional  service or product or charge. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.
5183     * </p> 
5184         */
5185        public MoneyDt getNet() {  
5186                if (myNet == null) {
5187                        myNet = new MoneyDt();
5188                }
5189                return myNet;
5190        }
5191
5192        /**
5193         * Sets the value(s) for <b>net</b> ()
5194         *
5195     * <p>
5196     * <b>Definition:</b>
5197     * The quantity times the unit price for an additional  service or product or charge. For example, the formula: unit Quantity * unit Price (Cost per Point) * factor Number  * points = net Amount. Quantity, factor and points are assumed to be 1 if not supplied.
5198     * </p> 
5199         */
5200        public ItemDetailSubDetail setNet(MoneyDt theValue) {
5201                myNet = theValue;
5202                return this;
5203        }
5204        
5205        
5206
5207  
5208        /**
5209         * Gets the value(s) for <b>udi</b> ().
5210         * creating it if it does
5211         * not exist. Will not return <code>null</code>.
5212         *
5213     * <p>
5214     * <b>Definition:</b>
5215     * List of Unique Device Identifiers associated with this line item.
5216     * </p> 
5217         */
5218        public CodingDt getUdi() {  
5219                if (myUdi == null) {
5220                        myUdi = new CodingDt();
5221                }
5222                return myUdi;
5223        }
5224
5225        /**
5226         * Sets the value(s) for <b>udi</b> ()
5227         *
5228     * <p>
5229     * <b>Definition:</b>
5230     * List of Unique Device Identifiers associated with this line item.
5231     * </p> 
5232         */
5233        public ItemDetailSubDetail setUdi(CodingDt theValue) {
5234                myUdi = theValue;
5235                return this;
5236        }
5237        
5238        
5239
5240  
5241
5242
5243        }
5244
5245
5246
5247        /**
5248         * Block class for child element: <b>Claim.item.prosthesis</b> ()
5249         *
5250     * <p>
5251     * <b>Definition:</b>
5252     * The materials and placement date of prior fixed prosthesis.
5253     * </p> 
5254         */
5255        @Block()        
5256        public static class ItemProsthesis 
5257            extends  BaseIdentifiableElement        implements IResourceBlock {
5258        
5259        @Child(name="initial", type=BooleanDt.class, order=0, min=0, max=1, summary=false, modifier=false)      
5260        @Description(
5261                shortDefinition="",
5262                formalDefinition="Indicates whether this is the initial placement of a fixed prosthesis."
5263        )
5264        private BooleanDt myInitial;
5265        
5266        @Child(name="priorDate", type=DateDt.class, order=1, min=0, max=1, summary=false, modifier=false)       
5267        @Description(
5268                shortDefinition="",
5269                formalDefinition="Date of the initial placement."
5270        )
5271        private DateDt myPriorDate;
5272        
5273        @Child(name="priorMaterial", type=CodingDt.class, order=2, min=0, max=1, summary=false, modifier=false) 
5274        @Description(
5275                shortDefinition="",
5276                formalDefinition="Material of the prior denture or bridge prosthesis. (Oral)"
5277        )
5278        private CodingDt myPriorMaterial;
5279        
5280
5281        @Override
5282        public boolean isEmpty() {
5283                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myInitial,  myPriorDate,  myPriorMaterial);
5284        }
5285        
5286        @Override
5287        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
5288                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myInitial, myPriorDate, myPriorMaterial);
5289        }
5290
5291        /**
5292         * Gets the value(s) for <b>initial</b> ().
5293         * creating it if it does
5294         * not exist. Will not return <code>null</code>.
5295         *
5296     * <p>
5297     * <b>Definition:</b>
5298     * Indicates whether this is the initial placement of a fixed prosthesis.
5299     * </p> 
5300         */
5301        public BooleanDt getInitialElement() {  
5302                if (myInitial == null) {
5303                        myInitial = new BooleanDt();
5304                }
5305                return myInitial;
5306        }
5307
5308        
5309        /**
5310         * Gets the value(s) for <b>initial</b> ().
5311         * creating it if it does
5312         * not exist. This method may return <code>null</code>.
5313         *
5314     * <p>
5315     * <b>Definition:</b>
5316     * Indicates whether this is the initial placement of a fixed prosthesis.
5317     * </p> 
5318         */
5319        public Boolean getInitial() {  
5320                return getInitialElement().getValue();
5321        }
5322
5323        /**
5324         * Sets the value(s) for <b>initial</b> ()
5325         *
5326     * <p>
5327     * <b>Definition:</b>
5328     * Indicates whether this is the initial placement of a fixed prosthesis.
5329     * </p> 
5330         */
5331        public ItemProsthesis setInitial(BooleanDt theValue) {
5332                myInitial = theValue;
5333                return this;
5334        }
5335        
5336        
5337
5338        /**
5339         * Sets the value for <b>initial</b> ()
5340         *
5341     * <p>
5342     * <b>Definition:</b>
5343     * Indicates whether this is the initial placement of a fixed prosthesis.
5344     * </p> 
5345         */
5346        public ItemProsthesis setInitial( boolean theBoolean) {
5347                myInitial = new BooleanDt(theBoolean); 
5348                return this; 
5349        }
5350
5351 
5352        /**
5353         * Gets the value(s) for <b>priorDate</b> ().
5354         * creating it if it does
5355         * not exist. Will not return <code>null</code>.
5356         *
5357     * <p>
5358     * <b>Definition:</b>
5359     * Date of the initial placement.
5360     * </p> 
5361         */
5362        public DateDt getPriorDateElement() {  
5363                if (myPriorDate == null) {
5364                        myPriorDate = new DateDt();
5365                }
5366                return myPriorDate;
5367        }
5368
5369        
5370        /**
5371         * Gets the value(s) for <b>priorDate</b> ().
5372         * creating it if it does
5373         * not exist. This method may return <code>null</code>.
5374         *
5375     * <p>
5376     * <b>Definition:</b>
5377     * Date of the initial placement.
5378     * </p> 
5379         */
5380        public Date getPriorDate() {  
5381                return getPriorDateElement().getValue();
5382        }
5383
5384        /**
5385         * Sets the value(s) for <b>priorDate</b> ()
5386         *
5387     * <p>
5388     * <b>Definition:</b>
5389     * Date of the initial placement.
5390     * </p> 
5391         */
5392        public ItemProsthesis setPriorDate(DateDt theValue) {
5393                myPriorDate = theValue;
5394                return this;
5395        }
5396        
5397        
5398
5399        /**
5400         * Sets the value for <b>priorDate</b> ()
5401         *
5402     * <p>
5403     * <b>Definition:</b>
5404     * Date of the initial placement.
5405     * </p> 
5406         */
5407        public ItemProsthesis setPriorDateWithDayPrecision( Date theDate) {
5408                myPriorDate = new DateDt(theDate); 
5409                return this; 
5410        }
5411
5412        /**
5413         * Sets the value for <b>priorDate</b> ()
5414         *
5415     * <p>
5416     * <b>Definition:</b>
5417     * Date of the initial placement.
5418     * </p> 
5419         */
5420        public ItemProsthesis setPriorDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
5421                myPriorDate = new DateDt(theDate, thePrecision); 
5422                return this; 
5423        }
5424
5425 
5426        /**
5427         * Gets the value(s) for <b>priorMaterial</b> ().
5428         * creating it if it does
5429         * not exist. Will not return <code>null</code>.
5430         *
5431     * <p>
5432     * <b>Definition:</b>
5433     * Material of the prior denture or bridge prosthesis. (Oral)
5434     * </p> 
5435         */
5436        public CodingDt getPriorMaterial() {  
5437                if (myPriorMaterial == null) {
5438                        myPriorMaterial = new CodingDt();
5439                }
5440                return myPriorMaterial;
5441        }
5442
5443        /**
5444         * Sets the value(s) for <b>priorMaterial</b> ()
5445         *
5446     * <p>
5447     * <b>Definition:</b>
5448     * Material of the prior denture or bridge prosthesis. (Oral)
5449     * </p> 
5450         */
5451        public ItemProsthesis setPriorMaterial(CodingDt theValue) {
5452                myPriorMaterial = theValue;
5453                return this;
5454        }
5455        
5456        
5457
5458  
5459
5460
5461        }
5462
5463
5464
5465        /**
5466         * Block class for child element: <b>Claim.missingTeeth</b> ()
5467         *
5468     * <p>
5469     * <b>Definition:</b>
5470     * A list of teeth which would be expected but are not found due to having been previously  extracted or for other reasons.
5471     * </p> 
5472         */
5473        @Block()        
5474        public static class MissingTeeth 
5475            extends  BaseIdentifiableElement        implements IResourceBlock {
5476        
5477        @Child(name="tooth", type=CodingDt.class, order=0, min=1, max=1, summary=false, modifier=false) 
5478        @Description(
5479                shortDefinition="",
5480                formalDefinition="The code identifying which tooth is missing."
5481        )
5482        private CodingDt myTooth;
5483        
5484        @Child(name="reason", type=CodingDt.class, order=1, min=0, max=1, summary=false, modifier=false)        
5485        @Description(
5486                shortDefinition="",
5487                formalDefinition="Missing reason may be: E-extraction, O-other"
5488        )
5489        private CodingDt myReason;
5490        
5491        @Child(name="extractionDate", type=DateDt.class, order=2, min=0, max=1, summary=false, modifier=false)  
5492        @Description(
5493                shortDefinition="",
5494                formalDefinition="The date of the extraction either known from records or patient reported estimate."
5495        )
5496        private DateDt myExtractionDate;
5497        
5498
5499        @Override
5500        public boolean isEmpty() {
5501                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myTooth,  myReason,  myExtractionDate);
5502        }
5503        
5504        @Override
5505        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
5506                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myTooth, myReason, myExtractionDate);
5507        }
5508
5509        /**
5510         * Gets the value(s) for <b>tooth</b> ().
5511         * creating it if it does
5512         * not exist. Will not return <code>null</code>.
5513         *
5514     * <p>
5515     * <b>Definition:</b>
5516     * The code identifying which tooth is missing.
5517     * </p> 
5518         */
5519        public CodingDt getTooth() {  
5520                if (myTooth == null) {
5521                        myTooth = new CodingDt();
5522                }
5523                return myTooth;
5524        }
5525
5526        /**
5527         * Sets the value(s) for <b>tooth</b> ()
5528         *
5529     * <p>
5530     * <b>Definition:</b>
5531     * The code identifying which tooth is missing.
5532     * </p> 
5533         */
5534        public MissingTeeth setTooth(CodingDt theValue) {
5535                myTooth = theValue;
5536                return this;
5537        }
5538        
5539        
5540
5541  
5542        /**
5543         * Gets the value(s) for <b>reason</b> ().
5544         * creating it if it does
5545         * not exist. Will not return <code>null</code>.
5546         *
5547     * <p>
5548     * <b>Definition:</b>
5549     * Missing reason may be: E-extraction, O-other
5550     * </p> 
5551         */
5552        public CodingDt getReason() {  
5553                if (myReason == null) {
5554                        myReason = new CodingDt();
5555                }
5556                return myReason;
5557        }
5558
5559        /**
5560         * Sets the value(s) for <b>reason</b> ()
5561         *
5562     * <p>
5563     * <b>Definition:</b>
5564     * Missing reason may be: E-extraction, O-other
5565     * </p> 
5566         */
5567        public MissingTeeth setReason(CodingDt theValue) {
5568                myReason = theValue;
5569                return this;
5570        }
5571        
5572        
5573
5574  
5575        /**
5576         * Gets the value(s) for <b>extractionDate</b> ().
5577         * creating it if it does
5578         * not exist. Will not return <code>null</code>.
5579         *
5580     * <p>
5581     * <b>Definition:</b>
5582     * The date of the extraction either known from records or patient reported estimate.
5583     * </p> 
5584         */
5585        public DateDt getExtractionDateElement() {  
5586                if (myExtractionDate == null) {
5587                        myExtractionDate = new DateDt();
5588                }
5589                return myExtractionDate;
5590        }
5591
5592        
5593        /**
5594         * Gets the value(s) for <b>extractionDate</b> ().
5595         * creating it if it does
5596         * not exist. This method may return <code>null</code>.
5597         *
5598     * <p>
5599     * <b>Definition:</b>
5600     * The date of the extraction either known from records or patient reported estimate.
5601     * </p> 
5602         */
5603        public Date getExtractionDate() {  
5604                return getExtractionDateElement().getValue();
5605        }
5606
5607        /**
5608         * Sets the value(s) for <b>extractionDate</b> ()
5609         *
5610     * <p>
5611     * <b>Definition:</b>
5612     * The date of the extraction either known from records or patient reported estimate.
5613     * </p> 
5614         */
5615        public MissingTeeth setExtractionDate(DateDt theValue) {
5616                myExtractionDate = theValue;
5617                return this;
5618        }
5619        
5620        
5621
5622        /**
5623         * Sets the value for <b>extractionDate</b> ()
5624         *
5625     * <p>
5626     * <b>Definition:</b>
5627     * The date of the extraction either known from records or patient reported estimate.
5628     * </p> 
5629         */
5630        public MissingTeeth setExtractionDateWithDayPrecision( Date theDate) {
5631                myExtractionDate = new DateDt(theDate); 
5632                return this; 
5633        }
5634
5635        /**
5636         * Sets the value for <b>extractionDate</b> ()
5637         *
5638     * <p>
5639     * <b>Definition:</b>
5640     * The date of the extraction either known from records or patient reported estimate.
5641     * </p> 
5642         */
5643        public MissingTeeth setExtractionDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
5644                myExtractionDate = new DateDt(theDate, thePrecision); 
5645                return this; 
5646        }
5647
5648 
5649
5650
5651        }
5652
5653
5654
5655
5656    @Override
5657    public String getResourceName() {
5658        return "Claim";
5659    }
5660    
5661    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
5662        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
5663    }
5664
5665
5666}