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