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>ConceptMap</b> Resource
282 * ()
283 *
284 * <p>
285 * <b>Definition:</b>
286 * A statement of relationships from one set of concepts to one or more other concepts - either code systems or data elements, or classes in class models
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/ConceptMap">http://hl7.org/fhir/profiles/ConceptMap</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="ConceptMap", profile="http://hl7.org/fhir/profiles/ConceptMap", id="conceptmap")
301public class ConceptMap extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource 
303    {
304
305        /**
306         * Search parameter constant for <b>url</b>
307         * <p>
308         * Description: <b>The URL of the concept map</b><br>
309         * Type: <b>uri</b><br>
310         * Path: <b>ConceptMap.url</b><br>
311         * </p>
312         */
313        @SearchParamDefinition(name="url", path="ConceptMap.url", description="The URL of the concept map", type="uri" 
314 )
315        public static final String SP_URL = "url";
316
317        /**
318         * <b>Fluent Client</b> search parameter constant for <b>url</b>
319         * <p>
320         * Description: <b>The URL of the concept map</b><br>
321         * Type: <b>uri</b><br>
322         * Path: <b>ConceptMap.url</b><br>
323         * </p>
324         */
325        public static final UriClientParam URL = new UriClientParam(SP_URL);
326
327        /**
328         * Search parameter constant for <b>identifier</b>
329         * <p>
330         * Description: <b>Additional identifier for the concept map</b><br>
331         * Type: <b>token</b><br>
332         * Path: <b>ConceptMap.identifier</b><br>
333         * </p>
334         */
335        @SearchParamDefinition(name="identifier", path="ConceptMap.identifier", description="Additional identifier for the concept map", type="token" 
336 )
337        public static final String SP_IDENTIFIER = "identifier";
338
339        /**
340         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
341         * <p>
342         * Description: <b>Additional identifier for the concept map</b><br>
343         * Type: <b>token</b><br>
344         * Path: <b>ConceptMap.identifier</b><br>
345         * </p>
346         */
347        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
348
349        /**
350         * Search parameter constant for <b>version</b>
351         * <p>
352         * Description: <b>The version identifier of the concept map</b><br>
353         * Type: <b>token</b><br>
354         * Path: <b>ConceptMap.version</b><br>
355         * </p>
356         */
357        @SearchParamDefinition(name="version", path="ConceptMap.version", description="The version identifier of the concept map", type="token" 
358 )
359        public static final String SP_VERSION = "version";
360
361        /**
362         * <b>Fluent Client</b> search parameter constant for <b>version</b>
363         * <p>
364         * Description: <b>The version identifier of the concept map</b><br>
365         * Type: <b>token</b><br>
366         * Path: <b>ConceptMap.version</b><br>
367         * </p>
368         */
369        public static final TokenClientParam VERSION = new TokenClientParam(SP_VERSION);
370
371        /**
372         * Search parameter constant for <b>name</b>
373         * <p>
374         * Description: <b>Name of the concept map</b><br>
375         * Type: <b>string</b><br>
376         * Path: <b>ConceptMap.name</b><br>
377         * </p>
378         */
379        @SearchParamDefinition(name="name", path="ConceptMap.name", description="Name of the concept map", type="string" 
380 )
381        public static final String SP_NAME = "name";
382
383        /**
384         * <b>Fluent Client</b> search parameter constant for <b>name</b>
385         * <p>
386         * Description: <b>Name of the concept map</b><br>
387         * Type: <b>string</b><br>
388         * Path: <b>ConceptMap.name</b><br>
389         * </p>
390         */
391        public static final StringClientParam NAME = new StringClientParam(SP_NAME);
392
393        /**
394         * Search parameter constant for <b>publisher</b>
395         * <p>
396         * Description: <b>Name of the publisher of the concept map</b><br>
397         * Type: <b>string</b><br>
398         * Path: <b>ConceptMap.publisher</b><br>
399         * </p>
400         */
401        @SearchParamDefinition(name="publisher", path="ConceptMap.publisher", description="Name of the publisher of the concept map", type="string" 
402 )
403        public static final String SP_PUBLISHER = "publisher";
404
405        /**
406         * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
407         * <p>
408         * Description: <b>Name of the publisher of the concept map</b><br>
409         * Type: <b>string</b><br>
410         * Path: <b>ConceptMap.publisher</b><br>
411         * </p>
412         */
413        public static final StringClientParam PUBLISHER = new StringClientParam(SP_PUBLISHER);
414
415        /**
416         * Search parameter constant for <b>description</b>
417         * <p>
418         * Description: <b>Text search in the description of the concept map</b><br>
419         * Type: <b>string</b><br>
420         * Path: <b>ConceptMap.description</b><br>
421         * </p>
422         */
423        @SearchParamDefinition(name="description", path="ConceptMap.description", description="Text search in the description of the concept map", type="string" 
424 )
425        public static final String SP_DESCRIPTION = "description";
426
427        /**
428         * <b>Fluent Client</b> search parameter constant for <b>description</b>
429         * <p>
430         * Description: <b>Text search in the description of the concept map</b><br>
431         * Type: <b>string</b><br>
432         * Path: <b>ConceptMap.description</b><br>
433         * </p>
434         */
435        public static final StringClientParam DESCRIPTION = new StringClientParam(SP_DESCRIPTION);
436
437        /**
438         * Search parameter constant for <b>status</b>
439         * <p>
440         * Description: <b>Status of the concept map</b><br>
441         * Type: <b>token</b><br>
442         * Path: <b>ConceptMap.status</b><br>
443         * </p>
444         */
445        @SearchParamDefinition(name="status", path="ConceptMap.status", description="Status of the concept map", type="token" 
446 )
447        public static final String SP_STATUS = "status";
448
449        /**
450         * <b>Fluent Client</b> search parameter constant for <b>status</b>
451         * <p>
452         * Description: <b>Status of the concept map</b><br>
453         * Type: <b>token</b><br>
454         * Path: <b>ConceptMap.status</b><br>
455         * </p>
456         */
457        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
458
459        /**
460         * Search parameter constant for <b>date</b>
461         * <p>
462         * Description: <b>The concept map publication date</b><br>
463         * Type: <b>date</b><br>
464         * Path: <b>ConceptMap.date</b><br>
465         * </p>
466         */
467        @SearchParamDefinition(name="date", path="ConceptMap.date", description="The concept map publication date", type="date" 
468 )
469        public static final String SP_DATE = "date";
470
471        /**
472         * <b>Fluent Client</b> search parameter constant for <b>date</b>
473         * <p>
474         * Description: <b>The concept map publication date</b><br>
475         * Type: <b>date</b><br>
476         * Path: <b>ConceptMap.date</b><br>
477         * </p>
478         */
479        public static final DateClientParam DATE = new DateClientParam(SP_DATE);
480
481        /**
482         * Search parameter constant for <b>source</b>
483         * <p>
484         * Description: <b></b><br>
485         * Type: <b>reference</b><br>
486         * Path: <b>ConceptMap.sourceReference</b><br>
487         * </p>
488         */
489        @SearchParamDefinition(name="source", path="ConceptMap.sourceReference", description="", type="reference" 
490 )
491        public static final String SP_SOURCE = "source";
492
493        /**
494         * <b>Fluent Client</b> search parameter constant for <b>source</b>
495         * <p>
496         * Description: <b></b><br>
497         * Type: <b>reference</b><br>
498         * Path: <b>ConceptMap.sourceReference</b><br>
499         * </p>
500         */
501        public static final ReferenceClientParam SOURCE = new ReferenceClientParam(SP_SOURCE);
502
503        /**
504         * Search parameter constant for <b>sourceuri</b>
505         * <p>
506         * Description: <b></b><br>
507         * Type: <b>reference</b><br>
508         * Path: <b>ConceptMap.sourceUri</b><br>
509         * </p>
510         */
511        @SearchParamDefinition(name="sourceuri", path="ConceptMap.sourceUri", description="", type="reference" 
512 )
513        public static final String SP_SOURCEURI = "sourceuri";
514
515        /**
516         * <b>Fluent Client</b> search parameter constant for <b>sourceuri</b>
517         * <p>
518         * Description: <b></b><br>
519         * Type: <b>reference</b><br>
520         * Path: <b>ConceptMap.sourceUri</b><br>
521         * </p>
522         */
523        public static final ReferenceClientParam SOURCEURI = new ReferenceClientParam(SP_SOURCEURI);
524
525        /**
526         * Search parameter constant for <b>target</b>
527         * <p>
528         * Description: <b></b><br>
529         * Type: <b>reference</b><br>
530         * Path: <b>ConceptMap.target[x]</b><br>
531         * </p>
532         */
533        @SearchParamDefinition(name="target", path="ConceptMap.target[x]", description="", type="reference" 
534 )
535        public static final String SP_TARGET = "target";
536
537        /**
538         * <b>Fluent Client</b> search parameter constant for <b>target</b>
539         * <p>
540         * Description: <b></b><br>
541         * Type: <b>reference</b><br>
542         * Path: <b>ConceptMap.target[x]</b><br>
543         * </p>
544         */
545        public static final ReferenceClientParam TARGET = new ReferenceClientParam(SP_TARGET);
546
547        /**
548         * Search parameter constant for <b>sourcesystem</b>
549         * <p>
550         * Description: <b></b><br>
551         * Type: <b>uri</b><br>
552         * Path: <b>ConceptMap.element.codeSystem</b><br>
553         * </p>
554         */
555        @SearchParamDefinition(name="sourcesystem", path="ConceptMap.element.codeSystem", description="", type="uri" 
556 )
557        public static final String SP_SOURCESYSTEM = "sourcesystem";
558
559        /**
560         * <b>Fluent Client</b> search parameter constant for <b>sourcesystem</b>
561         * <p>
562         * Description: <b></b><br>
563         * Type: <b>uri</b><br>
564         * Path: <b>ConceptMap.element.codeSystem</b><br>
565         * </p>
566         */
567        public static final UriClientParam SOURCESYSTEM = new UriClientParam(SP_SOURCESYSTEM);
568
569        /**
570         * Search parameter constant for <b>targetsystem</b>
571         * <p>
572         * Description: <b></b><br>
573         * Type: <b>uri</b><br>
574         * Path: <b>ConceptMap.element.target.codeSystem</b><br>
575         * </p>
576         */
577        @SearchParamDefinition(name="targetsystem", path="ConceptMap.element.target.codeSystem", description="", type="uri" 
578 )
579        public static final String SP_TARGETSYSTEM = "targetsystem";
580
581        /**
582         * <b>Fluent Client</b> search parameter constant for <b>targetsystem</b>
583         * <p>
584         * Description: <b></b><br>
585         * Type: <b>uri</b><br>
586         * Path: <b>ConceptMap.element.target.codeSystem</b><br>
587         * </p>
588         */
589        public static final UriClientParam TARGETSYSTEM = new UriClientParam(SP_TARGETSYSTEM);
590
591        /**
592         * Search parameter constant for <b>sourcecode</b>
593         * <p>
594         * Description: <b></b><br>
595         * Type: <b>token</b><br>
596         * Path: <b>ConceptMap.element.code</b><br>
597         * </p>
598         */
599        @SearchParamDefinition(name="sourcecode", path="ConceptMap.element.code", description="", type="token" 
600 )
601        public static final String SP_SOURCECODE = "sourcecode";
602
603        /**
604         * <b>Fluent Client</b> search parameter constant for <b>sourcecode</b>
605         * <p>
606         * Description: <b></b><br>
607         * Type: <b>token</b><br>
608         * Path: <b>ConceptMap.element.code</b><br>
609         * </p>
610         */
611        public static final TokenClientParam SOURCECODE = new TokenClientParam(SP_SOURCECODE);
612
613        /**
614         * Search parameter constant for <b>targetcode</b>
615         * <p>
616         * Description: <b></b><br>
617         * Type: <b>token</b><br>
618         * Path: <b>ConceptMap.element.target.code</b><br>
619         * </p>
620         */
621        @SearchParamDefinition(name="targetcode", path="ConceptMap.element.target.code", description="", type="token" 
622 )
623        public static final String SP_TARGETCODE = "targetcode";
624
625        /**
626         * <b>Fluent Client</b> search parameter constant for <b>targetcode</b>
627         * <p>
628         * Description: <b></b><br>
629         * Type: <b>token</b><br>
630         * Path: <b>ConceptMap.element.target.code</b><br>
631         * </p>
632         */
633        public static final TokenClientParam TARGETCODE = new TokenClientParam(SP_TARGETCODE);
634
635        /**
636         * Search parameter constant for <b>dependson</b>
637         * <p>
638         * Description: <b></b><br>
639         * Type: <b>uri</b><br>
640         * Path: <b>ConceptMap.element.target.dependsOn.element</b><br>
641         * </p>
642         */
643        @SearchParamDefinition(name="dependson", path="ConceptMap.element.target.dependsOn.element", description="", type="uri" 
644 )
645        public static final String SP_DEPENDSON = "dependson";
646
647        /**
648         * <b>Fluent Client</b> search parameter constant for <b>dependson</b>
649         * <p>
650         * Description: <b></b><br>
651         * Type: <b>uri</b><br>
652         * Path: <b>ConceptMap.element.target.dependsOn.element</b><br>
653         * </p>
654         */
655        public static final UriClientParam DEPENDSON = new UriClientParam(SP_DEPENDSON);
656
657        /**
658         * Search parameter constant for <b>product</b>
659         * <p>
660         * Description: <b></b><br>
661         * Type: <b>uri</b><br>
662         * Path: <b>ConceptMap.element.target.product.element</b><br>
663         * </p>
664         */
665        @SearchParamDefinition(name="product", path="ConceptMap.element.target.product.element", description="", type="uri" 
666 )
667        public static final String SP_PRODUCT = "product";
668
669        /**
670         * <b>Fluent Client</b> search parameter constant for <b>product</b>
671         * <p>
672         * Description: <b></b><br>
673         * Type: <b>uri</b><br>
674         * Path: <b>ConceptMap.element.target.product.element</b><br>
675         * </p>
676         */
677        public static final UriClientParam PRODUCT = new UriClientParam(SP_PRODUCT);
678
679        /**
680         * Search parameter constant for <b>context</b>
681         * <p>
682         * Description: <b>A use context assigned to the concept map</b><br>
683         * Type: <b>token</b><br>
684         * Path: <b>ConceptMap.useContext</b><br>
685         * </p>
686         */
687        @SearchParamDefinition(name="context", path="ConceptMap.useContext", description="A use context assigned to the concept map", type="token" 
688 )
689        public static final String SP_CONTEXT = "context";
690
691        /**
692         * <b>Fluent Client</b> search parameter constant for <b>context</b>
693         * <p>
694         * Description: <b>A use context assigned to the concept map</b><br>
695         * Type: <b>token</b><br>
696         * Path: <b>ConceptMap.useContext</b><br>
697         * </p>
698         */
699        public static final TokenClientParam CONTEXT = new TokenClientParam(SP_CONTEXT);
700
701
702        /**
703         * Constant for fluent queries to be used to add include statements. Specifies
704         * the path value of "<b>ConceptMap:source</b>".
705         */
706        public static final Include INCLUDE_SOURCE = new Include("ConceptMap:source");
707
708        /**
709         * Constant for fluent queries to be used to add include statements. Specifies
710         * the path value of "<b>ConceptMap:sourceuri</b>".
711         */
712        public static final Include INCLUDE_SOURCEURI = new Include("ConceptMap:sourceuri");
713
714        /**
715         * Constant for fluent queries to be used to add include statements. Specifies
716         * the path value of "<b>ConceptMap:target</b>".
717         */
718        public static final Include INCLUDE_TARGET = new Include("ConceptMap:target");
719
720
721        @Child(name="url", type=UriDt.class, order=0, min=0, max=1, summary=true, modifier=false)       
722        @Description(
723                shortDefinition="",
724                formalDefinition="An absolute URL that is used to identify this concept map when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this concept map is (or will be) published"
725        )
726        private UriDt myUrl;
727        
728        @Child(name="identifier", type=IdentifierDt.class, order=1, min=0, max=1, summary=true, modifier=false) 
729        @Description(
730                shortDefinition="",
731                formalDefinition="Formal identifier that is used to identify this concept map when it is represented in other formats, or referenced in a specification, model, design or an instance."
732        )
733        private IdentifierDt myIdentifier;
734        
735        @Child(name="version", type=StringDt.class, order=2, min=0, max=1, summary=true, modifier=false)        
736        @Description(
737                shortDefinition="",
738                formalDefinition="The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp"
739        )
740        private StringDt myVersion;
741        
742        @Child(name="name", type=StringDt.class, order=3, min=0, max=1, summary=true, modifier=false)   
743        @Description(
744                shortDefinition="",
745                formalDefinition="A free text natural language name describing the concept map"
746        )
747        private StringDt myName;
748        
749        @Child(name="status", type=CodeDt.class, order=4, min=1, max=1, summary=true, modifier=false)   
750        @Description(
751                shortDefinition="",
752                formalDefinition="The status of the concept map"
753        )
754        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/conformance-resource-status")
755        private BoundCodeDt<ConformanceResourceStatusEnum> myStatus;
756        
757        @Child(name="experimental", type=BooleanDt.class, order=5, min=0, max=1, summary=true, modifier=false)  
758        @Description(
759                shortDefinition="",
760                formalDefinition="This ConceptMap was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage"
761        )
762        private BooleanDt myExperimental;
763        
764        @Child(name="publisher", type=StringDt.class, order=6, min=0, max=1, summary=true, modifier=false)      
765        @Description(
766                shortDefinition="",
767                formalDefinition="The name of the individual or organization that published the concept map"
768        )
769        private StringDt myPublisher;
770        
771        @Child(name="contact", order=7, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
772        @Description(
773                shortDefinition="",
774                formalDefinition="Contacts to assist a user in finding and communicating with the publisher"
775        )
776        private java.util.List<Contact> myContact;
777        
778        @Child(name="date", type=DateTimeDt.class, order=8, min=0, max=1, summary=true, modifier=false) 
779        @Description(
780                shortDefinition="",
781                formalDefinition="The date this version of the concept map was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the concept map changes"
782        )
783        private DateTimeDt myDate;
784        
785        @Child(name="description", type=StringDt.class, order=9, min=0, max=1, summary=true, modifier=false)    
786        @Description(
787                shortDefinition="",
788                formalDefinition="A free text natural language description of the use of the concept map - reason for definition, conditions of use, etc."
789        )
790        private StringDt myDescription;
791        
792        @Child(name="useContext", type=CodeableConceptDt.class, order=10, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false) 
793        @Description(
794                shortDefinition="",
795                formalDefinition="The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of concept map instances."
796        )
797        private java.util.List<CodeableConceptDt> myUseContext;
798        
799        @Child(name="requirements", type=StringDt.class, order=11, min=0, max=1, summary=false, modifier=false) 
800        @Description(
801                shortDefinition="",
802                formalDefinition="Explains why this concept map is needed and why it has been constrained as it has"
803        )
804        private StringDt myRequirements;
805        
806        @Child(name="copyright", type=StringDt.class, order=12, min=0, max=1, summary=false, modifier=false)    
807        @Description(
808                shortDefinition="",
809                formalDefinition="A copyright statement relating to the concept map and/or its contents"
810        )
811        private StringDt myCopyright;
812        
813        @Child(name="source", order=13, min=1, max=1, summary=true, modifier=false, type={
814                UriDt.class, 
815                ValueSet.class, 
816                StructureDefinition.class
817        })
818        @Description(
819                shortDefinition="",
820                formalDefinition="The source value set that specifies the concepts that are being mapped"
821        )
822        private IDatatype mySource;
823        
824        @Child(name="target", order=14, min=1, max=1, summary=true, modifier=false, type={
825                UriDt.class, 
826                ValueSet.class, 
827                StructureDefinition.class
828        })
829        @Description(
830                shortDefinition="",
831                formalDefinition="The target value set provides context to the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made"
832        )
833        private IDatatype myTarget;
834        
835        @Child(name="element", order=15, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
836        @Description(
837                shortDefinition="",
838                formalDefinition="Mappings for an individual concept in the source to one or more concepts in the target"
839        )
840        private java.util.List<Element> myElement;
841        
842
843        @Override
844        public boolean isEmpty() {
845                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myUrl,  myIdentifier,  myVersion,  myName,  myStatus,  myExperimental,  myPublisher,  myContact,  myDate,  myDescription,  myUseContext,  myRequirements,  myCopyright,  mySource,  myTarget,  myElement);
846        }
847        
848        @Override
849        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
850                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myUrl, myIdentifier, myVersion, myName, myStatus, myExperimental, myPublisher, myContact, myDate, myDescription, myUseContext, myRequirements, myCopyright, mySource, myTarget, myElement);
851        }
852
853        /**
854         * Gets the value(s) for <b>url</b> ().
855         * creating it if it does
856         * not exist. Will not return <code>null</code>.
857         *
858     * <p>
859     * <b>Definition:</b>
860     * An absolute URL that is used to identify this concept map when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this concept map is (or will be) published
861     * </p> 
862         */
863        public UriDt getUrlElement() {  
864                if (myUrl == null) {
865                        myUrl = new UriDt();
866                }
867                return myUrl;
868        }
869
870        
871        /**
872         * Gets the value(s) for <b>url</b> ().
873         * creating it if it does
874         * not exist. This method may return <code>null</code>.
875         *
876     * <p>
877     * <b>Definition:</b>
878     * An absolute URL that is used to identify this concept map when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this concept map is (or will be) published
879     * </p> 
880         */
881        public String getUrl() {  
882                return getUrlElement().getValue();
883        }
884
885        /**
886         * Sets the value(s) for <b>url</b> ()
887         *
888     * <p>
889     * <b>Definition:</b>
890     * An absolute URL that is used to identify this concept map when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this concept map is (or will be) published
891     * </p> 
892         */
893        public ConceptMap setUrl(UriDt theValue) {
894                myUrl = theValue;
895                return this;
896        }
897        
898        
899
900        /**
901         * Sets the value for <b>url</b> ()
902         *
903     * <p>
904     * <b>Definition:</b>
905     * An absolute URL that is used to identify this concept map when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this concept map is (or will be) published
906     * </p> 
907         */
908        public ConceptMap setUrl( String theUri) {
909                myUrl = new UriDt(theUri); 
910                return this; 
911        }
912
913 
914        /**
915         * Gets the value(s) for <b>identifier</b> ().
916         * creating it if it does
917         * not exist. Will not return <code>null</code>.
918         *
919     * <p>
920     * <b>Definition:</b>
921     * Formal identifier that is used to identify this concept map when it is represented in other formats, or referenced in a specification, model, design or an instance.
922     * </p> 
923         */
924        public IdentifierDt getIdentifier() {  
925                if (myIdentifier == null) {
926                        myIdentifier = new IdentifierDt();
927                }
928                return myIdentifier;
929        }
930
931        /**
932         * Sets the value(s) for <b>identifier</b> ()
933         *
934     * <p>
935     * <b>Definition:</b>
936     * Formal identifier that is used to identify this concept map when it is represented in other formats, or referenced in a specification, model, design or an instance.
937     * </p> 
938         */
939        public ConceptMap setIdentifier(IdentifierDt theValue) {
940                myIdentifier = theValue;
941                return this;
942        }
943        
944        
945
946  
947        /**
948         * Gets the value(s) for <b>version</b> ().
949         * creating it if it does
950         * not exist. Will not return <code>null</code>.
951         *
952     * <p>
953     * <b>Definition:</b>
954     * The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp
955     * </p> 
956         */
957        public StringDt getVersionElement() {  
958                if (myVersion == null) {
959                        myVersion = new StringDt();
960                }
961                return myVersion;
962        }
963
964        
965        /**
966         * Gets the value(s) for <b>version</b> ().
967         * creating it if it does
968         * not exist. This method may return <code>null</code>.
969         *
970     * <p>
971     * <b>Definition:</b>
972     * The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp
973     * </p> 
974         */
975        public String getVersion() {  
976                return getVersionElement().getValue();
977        }
978
979        /**
980         * Sets the value(s) for <b>version</b> ()
981         *
982     * <p>
983     * <b>Definition:</b>
984     * The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp
985     * </p> 
986         */
987        public ConceptMap setVersion(StringDt theValue) {
988                myVersion = theValue;
989                return this;
990        }
991        
992        
993
994        /**
995         * Sets the value for <b>version</b> ()
996         *
997     * <p>
998     * <b>Definition:</b>
999     * The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp
1000     * </p> 
1001         */
1002        public ConceptMap setVersion( String theString) {
1003                myVersion = new StringDt(theString); 
1004                return this; 
1005        }
1006
1007 
1008        /**
1009         * Gets the value(s) for <b>name</b> ().
1010         * creating it if it does
1011         * not exist. Will not return <code>null</code>.
1012         *
1013     * <p>
1014     * <b>Definition:</b>
1015     * A free text natural language name describing the concept map
1016     * </p> 
1017         */
1018        public StringDt getNameElement() {  
1019                if (myName == null) {
1020                        myName = new StringDt();
1021                }
1022                return myName;
1023        }
1024
1025        
1026        /**
1027         * Gets the value(s) for <b>name</b> ().
1028         * creating it if it does
1029         * not exist. This method may return <code>null</code>.
1030         *
1031     * <p>
1032     * <b>Definition:</b>
1033     * A free text natural language name describing the concept map
1034     * </p> 
1035         */
1036        public String getName() {  
1037                return getNameElement().getValue();
1038        }
1039
1040        /**
1041         * Sets the value(s) for <b>name</b> ()
1042         *
1043     * <p>
1044     * <b>Definition:</b>
1045     * A free text natural language name describing the concept map
1046     * </p> 
1047         */
1048        public ConceptMap setName(StringDt theValue) {
1049                myName = theValue;
1050                return this;
1051        }
1052        
1053        
1054
1055        /**
1056         * Sets the value for <b>name</b> ()
1057         *
1058     * <p>
1059     * <b>Definition:</b>
1060     * A free text natural language name describing the concept map
1061     * </p> 
1062         */
1063        public ConceptMap setName( String theString) {
1064                myName = new StringDt(theString); 
1065                return this; 
1066        }
1067
1068 
1069        /**
1070         * Gets the value(s) for <b>status</b> ().
1071         * creating it if it does
1072         * not exist. Will not return <code>null</code>.
1073         *
1074     * <p>
1075     * <b>Definition:</b>
1076     * The status of the concept map
1077     * </p> 
1078         */
1079        public BoundCodeDt<ConformanceResourceStatusEnum> getStatusElement() {  
1080                if (myStatus == null) {
1081                        myStatus = new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER);
1082                }
1083                return myStatus;
1084        }
1085
1086        
1087        /**
1088         * Gets the value(s) for <b>status</b> ().
1089         * creating it if it does
1090         * not exist. This method may return <code>null</code>.
1091         *
1092     * <p>
1093     * <b>Definition:</b>
1094     * The status of the concept map
1095     * </p> 
1096         */
1097        public String getStatus() {  
1098                return getStatusElement().getValue();
1099        }
1100
1101        /**
1102         * Sets the value(s) for <b>status</b> ()
1103         *
1104     * <p>
1105     * <b>Definition:</b>
1106     * The status of the concept map
1107     * </p> 
1108         */
1109        public ConceptMap setStatus(BoundCodeDt<ConformanceResourceStatusEnum> theValue) {
1110                myStatus = theValue;
1111                return this;
1112        }
1113        
1114        
1115
1116        /**
1117         * Sets the value(s) for <b>status</b> ()
1118         *
1119     * <p>
1120     * <b>Definition:</b>
1121     * The status of the concept map
1122     * </p> 
1123         */
1124        public ConceptMap setStatus(ConformanceResourceStatusEnum theValue) {
1125                setStatus(new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER, theValue));
1126                
1127/*
1128                getStatusElement().setValueAsEnum(theValue);
1129*/
1130                return this;
1131        }
1132
1133  
1134        /**
1135         * Gets the value(s) for <b>experimental</b> ().
1136         * creating it if it does
1137         * not exist. Will not return <code>null</code>.
1138         *
1139     * <p>
1140     * <b>Definition:</b>
1141     * This ConceptMap was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1142     * </p> 
1143         */
1144        public BooleanDt getExperimentalElement() {  
1145                if (myExperimental == null) {
1146                        myExperimental = new BooleanDt();
1147                }
1148                return myExperimental;
1149        }
1150
1151        
1152        /**
1153         * Gets the value(s) for <b>experimental</b> ().
1154         * creating it if it does
1155         * not exist. This method may return <code>null</code>.
1156         *
1157     * <p>
1158     * <b>Definition:</b>
1159     * This ConceptMap was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1160     * </p> 
1161         */
1162        public Boolean getExperimental() {  
1163                return getExperimentalElement().getValue();
1164        }
1165
1166        /**
1167         * Sets the value(s) for <b>experimental</b> ()
1168         *
1169     * <p>
1170     * <b>Definition:</b>
1171     * This ConceptMap was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1172     * </p> 
1173         */
1174        public ConceptMap setExperimental(BooleanDt theValue) {
1175                myExperimental = theValue;
1176                return this;
1177        }
1178        
1179        
1180
1181        /**
1182         * Sets the value for <b>experimental</b> ()
1183         *
1184     * <p>
1185     * <b>Definition:</b>
1186     * This ConceptMap was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1187     * </p> 
1188         */
1189        public ConceptMap setExperimental( boolean theBoolean) {
1190                myExperimental = new BooleanDt(theBoolean); 
1191                return this; 
1192        }
1193
1194 
1195        /**
1196         * Gets the value(s) for <b>publisher</b> ().
1197         * creating it if it does
1198         * not exist. Will not return <code>null</code>.
1199         *
1200     * <p>
1201     * <b>Definition:</b>
1202     * The name of the individual or organization that published the concept map
1203     * </p> 
1204         */
1205        public StringDt getPublisherElement() {  
1206                if (myPublisher == null) {
1207                        myPublisher = new StringDt();
1208                }
1209                return myPublisher;
1210        }
1211
1212        
1213        /**
1214         * Gets the value(s) for <b>publisher</b> ().
1215         * creating it if it does
1216         * not exist. This method may return <code>null</code>.
1217         *
1218     * <p>
1219     * <b>Definition:</b>
1220     * The name of the individual or organization that published the concept map
1221     * </p> 
1222         */
1223        public String getPublisher() {  
1224                return getPublisherElement().getValue();
1225        }
1226
1227        /**
1228         * Sets the value(s) for <b>publisher</b> ()
1229         *
1230     * <p>
1231     * <b>Definition:</b>
1232     * The name of the individual or organization that published the concept map
1233     * </p> 
1234         */
1235        public ConceptMap setPublisher(StringDt theValue) {
1236                myPublisher = theValue;
1237                return this;
1238        }
1239        
1240        
1241
1242        /**
1243         * Sets the value for <b>publisher</b> ()
1244         *
1245     * <p>
1246     * <b>Definition:</b>
1247     * The name of the individual or organization that published the concept map
1248     * </p> 
1249         */
1250        public ConceptMap setPublisher( String theString) {
1251                myPublisher = new StringDt(theString); 
1252                return this; 
1253        }
1254
1255 
1256        /**
1257         * Gets the value(s) for <b>contact</b> ().
1258         * creating it if it does
1259         * not exist. Will not return <code>null</code>.
1260         *
1261     * <p>
1262     * <b>Definition:</b>
1263     * Contacts to assist a user in finding and communicating with the publisher
1264     * </p> 
1265         */
1266        public java.util.List<Contact> getContact() {  
1267                if (myContact == null) {
1268                        myContact = new java.util.ArrayList<Contact>();
1269                }
1270                return myContact;
1271        }
1272
1273        /**
1274         * Sets the value(s) for <b>contact</b> ()
1275         *
1276     * <p>
1277     * <b>Definition:</b>
1278     * Contacts to assist a user in finding and communicating with the publisher
1279     * </p> 
1280         */
1281        public ConceptMap setContact(java.util.List<Contact> theValue) {
1282                myContact = theValue;
1283                return this;
1284        }
1285        
1286        
1287
1288        /**
1289         * Adds and returns a new value for <b>contact</b> ()
1290         *
1291     * <p>
1292     * <b>Definition:</b>
1293     * Contacts to assist a user in finding and communicating with the publisher
1294     * </p> 
1295         */
1296        public Contact addContact() {
1297                Contact newType = new Contact();
1298                getContact().add(newType);
1299                return newType; 
1300        }
1301
1302        /**
1303         * Adds a given new value for <b>contact</b> ()
1304         *
1305         * <p>
1306         * <b>Definition:</b>
1307         * Contacts to assist a user in finding and communicating with the publisher
1308         * </p>
1309         * @param theValue The contact to add (must not be <code>null</code>)
1310         */
1311        public ConceptMap addContact(Contact theValue) {
1312                if (theValue == null) {
1313                        throw new NullPointerException("theValue must not be null");
1314                }
1315                getContact().add(theValue);
1316                return this;
1317        }
1318
1319        /**
1320         * Gets the first repetition for <b>contact</b> (),
1321         * creating it if it does not already exist.
1322         *
1323     * <p>
1324     * <b>Definition:</b>
1325     * Contacts to assist a user in finding and communicating with the publisher
1326     * </p> 
1327         */
1328        public Contact getContactFirstRep() {
1329                if (getContact().isEmpty()) {
1330                        return addContact();
1331                }
1332                return getContact().get(0); 
1333        }
1334  
1335        /**
1336         * Gets the value(s) for <b>date</b> ().
1337         * creating it if it does
1338         * not exist. Will not return <code>null</code>.
1339         *
1340     * <p>
1341     * <b>Definition:</b>
1342     * The date this version of the concept map was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the concept map changes
1343     * </p> 
1344         */
1345        public DateTimeDt getDateElement() {  
1346                if (myDate == null) {
1347                        myDate = new DateTimeDt();
1348                }
1349                return myDate;
1350        }
1351
1352        
1353        /**
1354         * Gets the value(s) for <b>date</b> ().
1355         * creating it if it does
1356         * not exist. This method may return <code>null</code>.
1357         *
1358     * <p>
1359     * <b>Definition:</b>
1360     * The date this version of the concept map was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the concept map changes
1361     * </p> 
1362         */
1363        public Date getDate() {  
1364                return getDateElement().getValue();
1365        }
1366
1367        /**
1368         * Sets the value(s) for <b>date</b> ()
1369         *
1370     * <p>
1371     * <b>Definition:</b>
1372     * The date this version of the concept map was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the concept map changes
1373     * </p> 
1374         */
1375        public ConceptMap setDate(DateTimeDt theValue) {
1376                myDate = theValue;
1377                return this;
1378        }
1379        
1380        
1381
1382        /**
1383         * Sets the value for <b>date</b> ()
1384         *
1385     * <p>
1386     * <b>Definition:</b>
1387     * The date this version of the concept map was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the concept map changes
1388     * </p> 
1389         */
1390        public ConceptMap setDateWithSecondsPrecision( Date theDate) {
1391                myDate = new DateTimeDt(theDate); 
1392                return this; 
1393        }
1394
1395        /**
1396         * Sets the value for <b>date</b> ()
1397         *
1398     * <p>
1399     * <b>Definition:</b>
1400     * The date this version of the concept map was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the concept map changes
1401     * </p> 
1402         */
1403        public ConceptMap setDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
1404                myDate = new DateTimeDt(theDate, thePrecision); 
1405                return this; 
1406        }
1407
1408 
1409        /**
1410         * Gets the value(s) for <b>description</b> ().
1411         * creating it if it does
1412         * not exist. Will not return <code>null</code>.
1413         *
1414     * <p>
1415     * <b>Definition:</b>
1416     * A free text natural language description of the use of the concept map - reason for definition, conditions of use, etc.
1417     * </p> 
1418         */
1419        public StringDt getDescriptionElement() {  
1420                if (myDescription == null) {
1421                        myDescription = new StringDt();
1422                }
1423                return myDescription;
1424        }
1425
1426        
1427        /**
1428         * Gets the value(s) for <b>description</b> ().
1429         * creating it if it does
1430         * not exist. This method may return <code>null</code>.
1431         *
1432     * <p>
1433     * <b>Definition:</b>
1434     * A free text natural language description of the use of the concept map - reason for definition, conditions of use, etc.
1435     * </p> 
1436         */
1437        public String getDescription() {  
1438                return getDescriptionElement().getValue();
1439        }
1440
1441        /**
1442         * Sets the value(s) for <b>description</b> ()
1443         *
1444     * <p>
1445     * <b>Definition:</b>
1446     * A free text natural language description of the use of the concept map - reason for definition, conditions of use, etc.
1447     * </p> 
1448         */
1449        public ConceptMap setDescription(StringDt theValue) {
1450                myDescription = theValue;
1451                return this;
1452        }
1453        
1454        
1455
1456        /**
1457         * Sets the value for <b>description</b> ()
1458         *
1459     * <p>
1460     * <b>Definition:</b>
1461     * A free text natural language description of the use of the concept map - reason for definition, conditions of use, etc.
1462     * </p> 
1463         */
1464        public ConceptMap setDescription( String theString) {
1465                myDescription = new StringDt(theString); 
1466                return this; 
1467        }
1468
1469 
1470        /**
1471         * Gets the value(s) for <b>useContext</b> ().
1472         * creating it if it does
1473         * not exist. Will not return <code>null</code>.
1474         *
1475     * <p>
1476     * <b>Definition:</b>
1477     * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of concept map instances.
1478     * </p> 
1479         */
1480        public java.util.List<CodeableConceptDt> getUseContext() {  
1481                if (myUseContext == null) {
1482                        myUseContext = new java.util.ArrayList<CodeableConceptDt>();
1483                }
1484                return myUseContext;
1485        }
1486
1487        /**
1488         * Sets the value(s) for <b>useContext</b> ()
1489         *
1490     * <p>
1491     * <b>Definition:</b>
1492     * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of concept map instances.
1493     * </p> 
1494         */
1495        public ConceptMap setUseContext(java.util.List<CodeableConceptDt> theValue) {
1496                myUseContext = theValue;
1497                return this;
1498        }
1499        
1500        
1501
1502        /**
1503         * Adds and returns a new value for <b>useContext</b> ()
1504         *
1505     * <p>
1506     * <b>Definition:</b>
1507     * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of concept map instances.
1508     * </p> 
1509         */
1510        public CodeableConceptDt addUseContext() {
1511                CodeableConceptDt newType = new CodeableConceptDt();
1512                getUseContext().add(newType);
1513                return newType; 
1514        }
1515
1516        /**
1517         * Adds a given new value for <b>useContext</b> ()
1518         *
1519         * <p>
1520         * <b>Definition:</b>
1521         * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of concept map instances.
1522         * </p>
1523         * @param theValue The useContext to add (must not be <code>null</code>)
1524         */
1525        public ConceptMap addUseContext(CodeableConceptDt theValue) {
1526                if (theValue == null) {
1527                        throw new NullPointerException("theValue must not be null");
1528                }
1529                getUseContext().add(theValue);
1530                return this;
1531        }
1532
1533        /**
1534         * Gets the first repetition for <b>useContext</b> (),
1535         * creating it if it does not already exist.
1536         *
1537     * <p>
1538     * <b>Definition:</b>
1539     * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of concept map instances.
1540     * </p> 
1541         */
1542        public CodeableConceptDt getUseContextFirstRep() {
1543                if (getUseContext().isEmpty()) {
1544                        return addUseContext();
1545                }
1546                return getUseContext().get(0); 
1547        }
1548  
1549        /**
1550         * Gets the value(s) for <b>requirements</b> ().
1551         * creating it if it does
1552         * not exist. Will not return <code>null</code>.
1553         *
1554     * <p>
1555     * <b>Definition:</b>
1556     * Explains why this concept map is needed and why it has been constrained as it has
1557     * </p> 
1558         */
1559        public StringDt getRequirementsElement() {  
1560                if (myRequirements == null) {
1561                        myRequirements = new StringDt();
1562                }
1563                return myRequirements;
1564        }
1565
1566        
1567        /**
1568         * Gets the value(s) for <b>requirements</b> ().
1569         * creating it if it does
1570         * not exist. This method may return <code>null</code>.
1571         *
1572     * <p>
1573     * <b>Definition:</b>
1574     * Explains why this concept map is needed and why it has been constrained as it has
1575     * </p> 
1576         */
1577        public String getRequirements() {  
1578                return getRequirementsElement().getValue();
1579        }
1580
1581        /**
1582         * Sets the value(s) for <b>requirements</b> ()
1583         *
1584     * <p>
1585     * <b>Definition:</b>
1586     * Explains why this concept map is needed and why it has been constrained as it has
1587     * </p> 
1588         */
1589        public ConceptMap setRequirements(StringDt theValue) {
1590                myRequirements = theValue;
1591                return this;
1592        }
1593        
1594        
1595
1596        /**
1597         * Sets the value for <b>requirements</b> ()
1598         *
1599     * <p>
1600     * <b>Definition:</b>
1601     * Explains why this concept map is needed and why it has been constrained as it has
1602     * </p> 
1603         */
1604        public ConceptMap setRequirements( String theString) {
1605                myRequirements = new StringDt(theString); 
1606                return this; 
1607        }
1608
1609 
1610        /**
1611         * Gets the value(s) for <b>copyright</b> ().
1612         * creating it if it does
1613         * not exist. Will not return <code>null</code>.
1614         *
1615     * <p>
1616     * <b>Definition:</b>
1617     * A copyright statement relating to the concept map and/or its contents
1618     * </p> 
1619         */
1620        public StringDt getCopyrightElement() {  
1621                if (myCopyright == null) {
1622                        myCopyright = new StringDt();
1623                }
1624                return myCopyright;
1625        }
1626
1627        
1628        /**
1629         * Gets the value(s) for <b>copyright</b> ().
1630         * creating it if it does
1631         * not exist. This method may return <code>null</code>.
1632         *
1633     * <p>
1634     * <b>Definition:</b>
1635     * A copyright statement relating to the concept map and/or its contents
1636     * </p> 
1637         */
1638        public String getCopyright() {  
1639                return getCopyrightElement().getValue();
1640        }
1641
1642        /**
1643         * Sets the value(s) for <b>copyright</b> ()
1644         *
1645     * <p>
1646     * <b>Definition:</b>
1647     * A copyright statement relating to the concept map and/or its contents
1648     * </p> 
1649         */
1650        public ConceptMap setCopyright(StringDt theValue) {
1651                myCopyright = theValue;
1652                return this;
1653        }
1654        
1655        
1656
1657        /**
1658         * Sets the value for <b>copyright</b> ()
1659         *
1660     * <p>
1661     * <b>Definition:</b>
1662     * A copyright statement relating to the concept map and/or its contents
1663     * </p> 
1664         */
1665        public ConceptMap setCopyright( String theString) {
1666                myCopyright = new StringDt(theString); 
1667                return this; 
1668        }
1669
1670 
1671        /**
1672         * Gets the value(s) for <b>source[x]</b> ().
1673         * creating it if it does
1674         * not exist. Will not return <code>null</code>.
1675         *
1676     * <p>
1677     * <b>Definition:</b>
1678     * The source value set that specifies the concepts that are being mapped
1679     * </p> 
1680         */
1681        public IDatatype getSource() {  
1682                return mySource;
1683        }
1684
1685        /**
1686         * Sets the value(s) for <b>source[x]</b> ()
1687         *
1688     * <p>
1689     * <b>Definition:</b>
1690     * The source value set that specifies the concepts that are being mapped
1691     * </p> 
1692         */
1693        public ConceptMap setSource(IDatatype theValue) {
1694                mySource = theValue;
1695                return this;
1696        }
1697        
1698        
1699
1700  
1701        /**
1702         * Gets the value(s) for <b>target[x]</b> ().
1703         * creating it if it does
1704         * not exist. Will not return <code>null</code>.
1705         *
1706     * <p>
1707     * <b>Definition:</b>
1708     * The target value set provides context to the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made
1709     * </p> 
1710         */
1711        public IDatatype getTarget() {  
1712                return myTarget;
1713        }
1714
1715        /**
1716         * Sets the value(s) for <b>target[x]</b> ()
1717         *
1718     * <p>
1719     * <b>Definition:</b>
1720     * The target value set provides context to the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made
1721     * </p> 
1722         */
1723        public ConceptMap setTarget(IDatatype theValue) {
1724                myTarget = theValue;
1725                return this;
1726        }
1727        
1728        
1729
1730  
1731        /**
1732         * Gets the value(s) for <b>element</b> ().
1733         * creating it if it does
1734         * not exist. Will not return <code>null</code>.
1735         *
1736     * <p>
1737     * <b>Definition:</b>
1738     * Mappings for an individual concept in the source to one or more concepts in the target
1739     * </p> 
1740         */
1741        public java.util.List<Element> getElement() {  
1742                if (myElement == null) {
1743                        myElement = new java.util.ArrayList<Element>();
1744                }
1745                return myElement;
1746        }
1747
1748        /**
1749         * Sets the value(s) for <b>element</b> ()
1750         *
1751     * <p>
1752     * <b>Definition:</b>
1753     * Mappings for an individual concept in the source to one or more concepts in the target
1754     * </p> 
1755         */
1756        public ConceptMap setElement(java.util.List<Element> theValue) {
1757                myElement = theValue;
1758                return this;
1759        }
1760        
1761        
1762
1763        /**
1764         * Adds and returns a new value for <b>element</b> ()
1765         *
1766     * <p>
1767     * <b>Definition:</b>
1768     * Mappings for an individual concept in the source to one or more concepts in the target
1769     * </p> 
1770         */
1771        public Element addElement() {
1772                Element newType = new Element();
1773                getElement().add(newType);
1774                return newType; 
1775        }
1776
1777        /**
1778         * Adds a given new value for <b>element</b> ()
1779         *
1780         * <p>
1781         * <b>Definition:</b>
1782         * Mappings for an individual concept in the source to one or more concepts in the target
1783         * </p>
1784         * @param theValue The element to add (must not be <code>null</code>)
1785         */
1786        public ConceptMap addElement(Element theValue) {
1787                if (theValue == null) {
1788                        throw new NullPointerException("theValue must not be null");
1789                }
1790                getElement().add(theValue);
1791                return this;
1792        }
1793
1794        /**
1795         * Gets the first repetition for <b>element</b> (),
1796         * creating it if it does not already exist.
1797         *
1798     * <p>
1799     * <b>Definition:</b>
1800     * Mappings for an individual concept in the source to one or more concepts in the target
1801     * </p> 
1802         */
1803        public Element getElementFirstRep() {
1804                if (getElement().isEmpty()) {
1805                        return addElement();
1806                }
1807                return getElement().get(0); 
1808        }
1809  
1810        /**
1811         * Block class for child element: <b>ConceptMap.contact</b> ()
1812         *
1813     * <p>
1814     * <b>Definition:</b>
1815     * Contacts to assist a user in finding and communicating with the publisher
1816     * </p> 
1817         */
1818        @Block()        
1819        public static class Contact 
1820            extends  BaseIdentifiableElement  
1821            implements IResourceBlock {
1822        
1823        @Child(name="name", type=StringDt.class, order=0, min=0, max=1, summary=true, modifier=false)   
1824        @Description(
1825                shortDefinition="",
1826                formalDefinition="The name of an individual to contact regarding the concept map"
1827        )
1828        private StringDt myName;
1829        
1830        @Child(name="telecom", type=ContactPointDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
1831        @Description(
1832                shortDefinition="",
1833                formalDefinition="Contact details for individual (if a name was provided) or the publisher"
1834        )
1835        private java.util.List<ContactPointDt> myTelecom;
1836        
1837
1838        @Override
1839        public boolean isEmpty() {
1840                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myTelecom);
1841        }
1842        
1843        @Override
1844        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1845                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myTelecom);
1846        }
1847
1848        /**
1849         * Gets the value(s) for <b>name</b> ().
1850         * creating it if it does
1851         * not exist. Will not return <code>null</code>.
1852         *
1853     * <p>
1854     * <b>Definition:</b>
1855     * The name of an individual to contact regarding the concept map
1856     * </p> 
1857         */
1858        public StringDt getNameElement() {  
1859                if (myName == null) {
1860                        myName = new StringDt();
1861                }
1862                return myName;
1863        }
1864
1865        
1866        /**
1867         * Gets the value(s) for <b>name</b> ().
1868         * creating it if it does
1869         * not exist. This method may return <code>null</code>.
1870         *
1871     * <p>
1872     * <b>Definition:</b>
1873     * The name of an individual to contact regarding the concept map
1874     * </p> 
1875         */
1876        public String getName() {  
1877                return getNameElement().getValue();
1878        }
1879
1880        /**
1881         * Sets the value(s) for <b>name</b> ()
1882         *
1883     * <p>
1884     * <b>Definition:</b>
1885     * The name of an individual to contact regarding the concept map
1886     * </p> 
1887         */
1888        public Contact setName(StringDt theValue) {
1889                myName = theValue;
1890                return this;
1891        }
1892        
1893        
1894
1895        /**
1896         * Sets the value for <b>name</b> ()
1897         *
1898     * <p>
1899     * <b>Definition:</b>
1900     * The name of an individual to contact regarding the concept map
1901     * </p> 
1902         */
1903        public Contact setName( String theString) {
1904                myName = new StringDt(theString); 
1905                return this; 
1906        }
1907
1908 
1909        /**
1910         * Gets the value(s) for <b>telecom</b> ().
1911         * creating it if it does
1912         * not exist. Will not return <code>null</code>.
1913         *
1914     * <p>
1915     * <b>Definition:</b>
1916     * Contact details for individual (if a name was provided) or the publisher
1917     * </p> 
1918         */
1919        public java.util.List<ContactPointDt> getTelecom() {  
1920                if (myTelecom == null) {
1921                        myTelecom = new java.util.ArrayList<ContactPointDt>();
1922                }
1923                return myTelecom;
1924        }
1925
1926        /**
1927         * Sets the value(s) for <b>telecom</b> ()
1928         *
1929     * <p>
1930     * <b>Definition:</b>
1931     * Contact details for individual (if a name was provided) or the publisher
1932     * </p> 
1933         */
1934        public Contact setTelecom(java.util.List<ContactPointDt> theValue) {
1935                myTelecom = theValue;
1936                return this;
1937        }
1938        
1939        
1940
1941        /**
1942         * Adds and returns a new value for <b>telecom</b> ()
1943         *
1944     * <p>
1945     * <b>Definition:</b>
1946     * Contact details for individual (if a name was provided) or the publisher
1947     * </p> 
1948         */
1949        public ContactPointDt addTelecom() {
1950                ContactPointDt newType = new ContactPointDt();
1951                getTelecom().add(newType);
1952                return newType; 
1953        }
1954
1955        /**
1956         * Adds a given new value for <b>telecom</b> ()
1957         *
1958         * <p>
1959         * <b>Definition:</b>
1960         * Contact details for individual (if a name was provided) or the publisher
1961         * </p>
1962         * @param theValue The telecom to add (must not be <code>null</code>)
1963         */
1964        public Contact addTelecom(ContactPointDt theValue) {
1965                if (theValue == null) {
1966                        throw new NullPointerException("theValue must not be null");
1967                }
1968                getTelecom().add(theValue);
1969                return this;
1970        }
1971
1972        /**
1973         * Gets the first repetition for <b>telecom</b> (),
1974         * creating it if it does not already exist.
1975         *
1976     * <p>
1977     * <b>Definition:</b>
1978     * Contact details for individual (if a name was provided) or the publisher
1979     * </p> 
1980         */
1981        public ContactPointDt getTelecomFirstRep() {
1982                if (getTelecom().isEmpty()) {
1983                        return addTelecom();
1984                }
1985                return getTelecom().get(0); 
1986        }
1987  
1988
1989
1990        }
1991
1992
1993        /**
1994         * Block class for child element: <b>ConceptMap.element</b> ()
1995         *
1996     * <p>
1997     * <b>Definition:</b>
1998     * Mappings for an individual concept in the source to one or more concepts in the target
1999     * </p> 
2000         */
2001        @Block()        
2002        public static class Element 
2003            extends  BaseIdentifiableElement  
2004            implements IResourceBlock {
2005        
2006        @Child(name="codeSystem", type=UriDt.class, order=0, min=0, max=1, summary=false, modifier=false)       
2007        @Description(
2008                shortDefinition="",
2009                formalDefinition="An absolute URI that identifies the Code System (if the source is a value set that crosses more than one code system)"
2010        )
2011        private UriDt myCodeSystem;
2012        
2013        @Child(name="code", type=CodeDt.class, order=1, min=0, max=1, summary=false, modifier=false)    
2014        @Description(
2015                shortDefinition="",
2016                formalDefinition="Identity (code or path) or the element/item being mapped"
2017        )
2018        private CodeDt myCode;
2019        
2020        @Child(name="target", order=2, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
2021        @Description(
2022                shortDefinition="",
2023                formalDefinition="A concept from the target value set that this concept maps to"
2024        )
2025        private java.util.List<ElementTarget> myTarget;
2026        
2027
2028        @Override
2029        public boolean isEmpty() {
2030                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCodeSystem,  myCode,  myTarget);
2031        }
2032        
2033        @Override
2034        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2035                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCodeSystem, myCode, myTarget);
2036        }
2037
2038        /**
2039         * Gets the value(s) for <b>codeSystem</b> ().
2040         * creating it if it does
2041         * not exist. Will not return <code>null</code>.
2042         *
2043     * <p>
2044     * <b>Definition:</b>
2045     * An absolute URI that identifies the Code System (if the source is a value set that crosses more than one code system)
2046     * </p> 
2047         */
2048        public UriDt getCodeSystemElement() {  
2049                if (myCodeSystem == null) {
2050                        myCodeSystem = new UriDt();
2051                }
2052                return myCodeSystem;
2053        }
2054
2055        
2056        /**
2057         * Gets the value(s) for <b>codeSystem</b> ().
2058         * creating it if it does
2059         * not exist. This method may return <code>null</code>.
2060         *
2061     * <p>
2062     * <b>Definition:</b>
2063     * An absolute URI that identifies the Code System (if the source is a value set that crosses more than one code system)
2064     * </p> 
2065         */
2066        public String getCodeSystem() {  
2067                return getCodeSystemElement().getValue();
2068        }
2069
2070        /**
2071         * Sets the value(s) for <b>codeSystem</b> ()
2072         *
2073     * <p>
2074     * <b>Definition:</b>
2075     * An absolute URI that identifies the Code System (if the source is a value set that crosses more than one code system)
2076     * </p> 
2077         */
2078        public Element setCodeSystem(UriDt theValue) {
2079                myCodeSystem = theValue;
2080                return this;
2081        }
2082        
2083        
2084
2085        /**
2086         * Sets the value for <b>codeSystem</b> ()
2087         *
2088     * <p>
2089     * <b>Definition:</b>
2090     * An absolute URI that identifies the Code System (if the source is a value set that crosses more than one code system)
2091     * </p> 
2092         */
2093        public Element setCodeSystem( String theUri) {
2094                myCodeSystem = new UriDt(theUri); 
2095                return this; 
2096        }
2097
2098 
2099        /**
2100         * Gets the value(s) for <b>code</b> ().
2101         * creating it if it does
2102         * not exist. Will not return <code>null</code>.
2103         *
2104     * <p>
2105     * <b>Definition:</b>
2106     * Identity (code or path) or the element/item being mapped
2107     * </p> 
2108         */
2109        public CodeDt getCodeElement() {  
2110                if (myCode == null) {
2111                        myCode = new CodeDt();
2112                }
2113                return myCode;
2114        }
2115
2116        
2117        /**
2118         * Gets the value(s) for <b>code</b> ().
2119         * creating it if it does
2120         * not exist. This method may return <code>null</code>.
2121         *
2122     * <p>
2123     * <b>Definition:</b>
2124     * Identity (code or path) or the element/item being mapped
2125     * </p> 
2126         */
2127        public String getCode() {  
2128                return getCodeElement().getValue();
2129        }
2130
2131        /**
2132         * Sets the value(s) for <b>code</b> ()
2133         *
2134     * <p>
2135     * <b>Definition:</b>
2136     * Identity (code or path) or the element/item being mapped
2137     * </p> 
2138         */
2139        public Element setCode(CodeDt theValue) {
2140                myCode = theValue;
2141                return this;
2142        }
2143        
2144        
2145
2146        /**
2147         * Sets the value for <b>code</b> ()
2148         *
2149     * <p>
2150     * <b>Definition:</b>
2151     * Identity (code or path) or the element/item being mapped
2152     * </p> 
2153         */
2154        public Element setCode( String theCode) {
2155                myCode = new CodeDt(theCode); 
2156                return this; 
2157        }
2158
2159 
2160        /**
2161         * Gets the value(s) for <b>target</b> ().
2162         * creating it if it does
2163         * not exist. Will not return <code>null</code>.
2164         *
2165     * <p>
2166     * <b>Definition:</b>
2167     * A concept from the target value set that this concept maps to
2168     * </p> 
2169         */
2170        public java.util.List<ElementTarget> getTarget() {  
2171                if (myTarget == null) {
2172                        myTarget = new java.util.ArrayList<ElementTarget>();
2173                }
2174                return myTarget;
2175        }
2176
2177        /**
2178         * Sets the value(s) for <b>target</b> ()
2179         *
2180     * <p>
2181     * <b>Definition:</b>
2182     * A concept from the target value set that this concept maps to
2183     * </p> 
2184         */
2185        public Element setTarget(java.util.List<ElementTarget> theValue) {
2186                myTarget = theValue;
2187                return this;
2188        }
2189        
2190        
2191
2192        /**
2193         * Adds and returns a new value for <b>target</b> ()
2194         *
2195     * <p>
2196     * <b>Definition:</b>
2197     * A concept from the target value set that this concept maps to
2198     * </p> 
2199         */
2200        public ElementTarget addTarget() {
2201                ElementTarget newType = new ElementTarget();
2202                getTarget().add(newType);
2203                return newType; 
2204        }
2205
2206        /**
2207         * Adds a given new value for <b>target</b> ()
2208         *
2209         * <p>
2210         * <b>Definition:</b>
2211         * A concept from the target value set that this concept maps to
2212         * </p>
2213         * @param theValue The target to add (must not be <code>null</code>)
2214         */
2215        public Element addTarget(ElementTarget theValue) {
2216                if (theValue == null) {
2217                        throw new NullPointerException("theValue must not be null");
2218                }
2219                getTarget().add(theValue);
2220                return this;
2221        }
2222
2223        /**
2224         * Gets the first repetition for <b>target</b> (),
2225         * creating it if it does not already exist.
2226         *
2227     * <p>
2228     * <b>Definition:</b>
2229     * A concept from the target value set that this concept maps to
2230     * </p> 
2231         */
2232        public ElementTarget getTargetFirstRep() {
2233                if (getTarget().isEmpty()) {
2234                        return addTarget();
2235                }
2236                return getTarget().get(0); 
2237        }
2238  
2239
2240
2241        }
2242
2243        /**
2244         * Block class for child element: <b>ConceptMap.element.target</b> ()
2245         *
2246     * <p>
2247     * <b>Definition:</b>
2248     * A concept from the target value set that this concept maps to
2249     * </p> 
2250         */
2251        @Block()        
2252        public static class ElementTarget 
2253            extends  BaseIdentifiableElement  
2254            implements IResourceBlock {
2255        
2256        @Child(name="codeSystem", type=UriDt.class, order=0, min=0, max=1, summary=false, modifier=false)       
2257        @Description(
2258                shortDefinition="",
2259                formalDefinition="An absolute URI that identifies the code system of the target code (if the target is a value set that cross code systems)"
2260        )
2261        private UriDt myCodeSystem;
2262        
2263        @Child(name="code", type=CodeDt.class, order=1, min=0, max=1, summary=false, modifier=false)    
2264        @Description(
2265                shortDefinition="",
2266                formalDefinition="Identity (code or path) or the element/item that the map refers to"
2267        )
2268        private CodeDt myCode;
2269        
2270        @Child(name="equivalence", type=CodeDt.class, order=2, min=1, max=1, summary=false, modifier=false)     
2271        @Description(
2272                shortDefinition="",
2273                formalDefinition="The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source)"
2274        )
2275        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/concept-map-equivalence")
2276        private BoundCodeDt<ConceptMapEquivalenceEnum> myEquivalence;
2277        
2278        @Child(name="comments", type=StringDt.class, order=3, min=0, max=1, summary=false, modifier=false)      
2279        @Description(
2280                shortDefinition="",
2281                formalDefinition="A description of status/issues in mapping that conveys additional information not represented in  the structured data"
2282        )
2283        private StringDt myComments;
2284        
2285        @Child(name="dependsOn", order=4, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
2286        @Description(
2287                shortDefinition="",
2288                formalDefinition="A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value"
2289        )
2290        private java.util.List<ElementTargetDependsOn> myDependsOn;
2291        
2292        @Child(name="product", type=ElementTargetDependsOn.class, order=5, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
2293        @Description(
2294                shortDefinition="",
2295                formalDefinition="A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied on"
2296        )
2297        private java.util.List<ElementTargetDependsOn> myProduct;
2298        
2299
2300        @Override
2301        public boolean isEmpty() {
2302                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCodeSystem,  myCode,  myEquivalence,  myComments,  myDependsOn,  myProduct);
2303        }
2304        
2305        @Override
2306        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2307                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCodeSystem, myCode, myEquivalence, myComments, myDependsOn, myProduct);
2308        }
2309
2310        /**
2311         * Gets the value(s) for <b>codeSystem</b> ().
2312         * creating it if it does
2313         * not exist. Will not return <code>null</code>.
2314         *
2315     * <p>
2316     * <b>Definition:</b>
2317     * An absolute URI that identifies the code system of the target code (if the target is a value set that cross code systems)
2318     * </p> 
2319         */
2320        public UriDt getCodeSystemElement() {  
2321                if (myCodeSystem == null) {
2322                        myCodeSystem = new UriDt();
2323                }
2324                return myCodeSystem;
2325        }
2326
2327        
2328        /**
2329         * Gets the value(s) for <b>codeSystem</b> ().
2330         * creating it if it does
2331         * not exist. This method may return <code>null</code>.
2332         *
2333     * <p>
2334     * <b>Definition:</b>
2335     * An absolute URI that identifies the code system of the target code (if the target is a value set that cross code systems)
2336     * </p> 
2337         */
2338        public String getCodeSystem() {  
2339                return getCodeSystemElement().getValue();
2340        }
2341
2342        /**
2343         * Sets the value(s) for <b>codeSystem</b> ()
2344         *
2345     * <p>
2346     * <b>Definition:</b>
2347     * An absolute URI that identifies the code system of the target code (if the target is a value set that cross code systems)
2348     * </p> 
2349         */
2350        public ElementTarget setCodeSystem(UriDt theValue) {
2351                myCodeSystem = theValue;
2352                return this;
2353        }
2354        
2355        
2356
2357        /**
2358         * Sets the value for <b>codeSystem</b> ()
2359         *
2360     * <p>
2361     * <b>Definition:</b>
2362     * An absolute URI that identifies the code system of the target code (if the target is a value set that cross code systems)
2363     * </p> 
2364         */
2365        public ElementTarget setCodeSystem( String theUri) {
2366                myCodeSystem = new UriDt(theUri); 
2367                return this; 
2368        }
2369
2370 
2371        /**
2372         * Gets the value(s) for <b>code</b> ().
2373         * creating it if it does
2374         * not exist. Will not return <code>null</code>.
2375         *
2376     * <p>
2377     * <b>Definition:</b>
2378     * Identity (code or path) or the element/item that the map refers to
2379     * </p> 
2380         */
2381        public CodeDt getCodeElement() {  
2382                if (myCode == null) {
2383                        myCode = new CodeDt();
2384                }
2385                return myCode;
2386        }
2387
2388        
2389        /**
2390         * Gets the value(s) for <b>code</b> ().
2391         * creating it if it does
2392         * not exist. This method may return <code>null</code>.
2393         *
2394     * <p>
2395     * <b>Definition:</b>
2396     * Identity (code or path) or the element/item that the map refers to
2397     * </p> 
2398         */
2399        public String getCode() {  
2400                return getCodeElement().getValue();
2401        }
2402
2403        /**
2404         * Sets the value(s) for <b>code</b> ()
2405         *
2406     * <p>
2407     * <b>Definition:</b>
2408     * Identity (code or path) or the element/item that the map refers to
2409     * </p> 
2410         */
2411        public ElementTarget setCode(CodeDt theValue) {
2412                myCode = theValue;
2413                return this;
2414        }
2415        
2416        
2417
2418        /**
2419         * Sets the value for <b>code</b> ()
2420         *
2421     * <p>
2422     * <b>Definition:</b>
2423     * Identity (code or path) or the element/item that the map refers to
2424     * </p> 
2425         */
2426        public ElementTarget setCode( String theCode) {
2427                myCode = new CodeDt(theCode); 
2428                return this; 
2429        }
2430
2431 
2432        /**
2433         * Gets the value(s) for <b>equivalence</b> ().
2434         * creating it if it does
2435         * not exist. Will not return <code>null</code>.
2436         *
2437     * <p>
2438     * <b>Definition:</b>
2439     * The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source)
2440     * </p> 
2441         */
2442        public BoundCodeDt<ConceptMapEquivalenceEnum> getEquivalenceElement() {  
2443                if (myEquivalence == null) {
2444                        myEquivalence = new BoundCodeDt<ConceptMapEquivalenceEnum>(ConceptMapEquivalenceEnum.VALUESET_BINDER);
2445                }
2446                return myEquivalence;
2447        }
2448
2449        
2450        /**
2451         * Gets the value(s) for <b>equivalence</b> ().
2452         * creating it if it does
2453         * not exist. This method may return <code>null</code>.
2454         *
2455     * <p>
2456     * <b>Definition:</b>
2457     * The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source)
2458     * </p> 
2459         */
2460        public String getEquivalence() {  
2461                return getEquivalenceElement().getValue();
2462        }
2463
2464        /**
2465         * Sets the value(s) for <b>equivalence</b> ()
2466         *
2467     * <p>
2468     * <b>Definition:</b>
2469     * The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source)
2470     * </p> 
2471         */
2472        public ElementTarget setEquivalence(BoundCodeDt<ConceptMapEquivalenceEnum> theValue) {
2473                myEquivalence = theValue;
2474                return this;
2475        }
2476        
2477        
2478
2479        /**
2480         * Sets the value(s) for <b>equivalence</b> ()
2481         *
2482     * <p>
2483     * <b>Definition:</b>
2484     * The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source)
2485     * </p> 
2486         */
2487        public ElementTarget setEquivalence(ConceptMapEquivalenceEnum theValue) {
2488                setEquivalence(new BoundCodeDt<ConceptMapEquivalenceEnum>(ConceptMapEquivalenceEnum.VALUESET_BINDER, theValue));
2489                
2490/*
2491                getEquivalenceElement().setValueAsEnum(theValue);
2492*/
2493                return this;
2494        }
2495
2496  
2497        /**
2498         * Gets the value(s) for <b>comments</b> ().
2499         * creating it if it does
2500         * not exist. Will not return <code>null</code>.
2501         *
2502     * <p>
2503     * <b>Definition:</b>
2504     * A description of status/issues in mapping that conveys additional information not represented in  the structured data
2505     * </p> 
2506         */
2507        public StringDt getCommentsElement() {  
2508                if (myComments == null) {
2509                        myComments = new StringDt();
2510                }
2511                return myComments;
2512        }
2513
2514        
2515        /**
2516         * Gets the value(s) for <b>comments</b> ().
2517         * creating it if it does
2518         * not exist. This method may return <code>null</code>.
2519         *
2520     * <p>
2521     * <b>Definition:</b>
2522     * A description of status/issues in mapping that conveys additional information not represented in  the structured data
2523     * </p> 
2524         */
2525        public String getComments() {  
2526                return getCommentsElement().getValue();
2527        }
2528
2529        /**
2530         * Sets the value(s) for <b>comments</b> ()
2531         *
2532     * <p>
2533     * <b>Definition:</b>
2534     * A description of status/issues in mapping that conveys additional information not represented in  the structured data
2535     * </p> 
2536         */
2537        public ElementTarget setComments(StringDt theValue) {
2538                myComments = theValue;
2539                return this;
2540        }
2541        
2542        
2543
2544        /**
2545         * Sets the value for <b>comments</b> ()
2546         *
2547     * <p>
2548     * <b>Definition:</b>
2549     * A description of status/issues in mapping that conveys additional information not represented in  the structured data
2550     * </p> 
2551         */
2552        public ElementTarget setComments( String theString) {
2553                myComments = new StringDt(theString); 
2554                return this; 
2555        }
2556
2557 
2558        /**
2559         * Gets the value(s) for <b>dependsOn</b> ().
2560         * creating it if it does
2561         * not exist. Will not return <code>null</code>.
2562         *
2563     * <p>
2564     * <b>Definition:</b>
2565     * A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value
2566     * </p> 
2567         */
2568        public java.util.List<ElementTargetDependsOn> getDependsOn() {  
2569                if (myDependsOn == null) {
2570                        myDependsOn = new java.util.ArrayList<ElementTargetDependsOn>();
2571                }
2572                return myDependsOn;
2573        }
2574
2575        /**
2576         * Sets the value(s) for <b>dependsOn</b> ()
2577         *
2578     * <p>
2579     * <b>Definition:</b>
2580     * A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value
2581     * </p> 
2582         */
2583        public ElementTarget setDependsOn(java.util.List<ElementTargetDependsOn> theValue) {
2584                myDependsOn = theValue;
2585                return this;
2586        }
2587        
2588        
2589
2590        /**
2591         * Adds and returns a new value for <b>dependsOn</b> ()
2592         *
2593     * <p>
2594     * <b>Definition:</b>
2595     * A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value
2596     * </p> 
2597         */
2598        public ElementTargetDependsOn addDependsOn() {
2599                ElementTargetDependsOn newType = new ElementTargetDependsOn();
2600                getDependsOn().add(newType);
2601                return newType; 
2602        }
2603
2604        /**
2605         * Adds a given new value for <b>dependsOn</b> ()
2606         *
2607         * <p>
2608         * <b>Definition:</b>
2609         * A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value
2610         * </p>
2611         * @param theValue The dependsOn to add (must not be <code>null</code>)
2612         */
2613        public ElementTarget addDependsOn(ElementTargetDependsOn theValue) {
2614                if (theValue == null) {
2615                        throw new NullPointerException("theValue must not be null");
2616                }
2617                getDependsOn().add(theValue);
2618                return this;
2619        }
2620
2621        /**
2622         * Gets the first repetition for <b>dependsOn</b> (),
2623         * creating it if it does not already exist.
2624         *
2625     * <p>
2626     * <b>Definition:</b>
2627     * A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value
2628     * </p> 
2629         */
2630        public ElementTargetDependsOn getDependsOnFirstRep() {
2631                if (getDependsOn().isEmpty()) {
2632                        return addDependsOn();
2633                }
2634                return getDependsOn().get(0); 
2635        }
2636  
2637        /**
2638         * Gets the value(s) for <b>product</b> ().
2639         * creating it if it does
2640         * not exist. Will not return <code>null</code>.
2641         *
2642     * <p>
2643     * <b>Definition:</b>
2644     * A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied on
2645     * </p> 
2646         */
2647        public java.util.List<ElementTargetDependsOn> getProduct() {  
2648                if (myProduct == null) {
2649                        myProduct = new java.util.ArrayList<ElementTargetDependsOn>();
2650                }
2651                return myProduct;
2652        }
2653
2654        /**
2655         * Sets the value(s) for <b>product</b> ()
2656         *
2657     * <p>
2658     * <b>Definition:</b>
2659     * A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied on
2660     * </p> 
2661         */
2662        public ElementTarget setProduct(java.util.List<ElementTargetDependsOn> theValue) {
2663                myProduct = theValue;
2664                return this;
2665        }
2666        
2667        
2668
2669        /**
2670         * Adds and returns a new value for <b>product</b> ()
2671         *
2672     * <p>
2673     * <b>Definition:</b>
2674     * A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied on
2675     * </p> 
2676         */
2677        public ElementTargetDependsOn addProduct() {
2678                ElementTargetDependsOn newType = new ElementTargetDependsOn();
2679                getProduct().add(newType);
2680                return newType; 
2681        }
2682
2683        /**
2684         * Adds a given new value for <b>product</b> ()
2685         *
2686         * <p>
2687         * <b>Definition:</b>
2688         * A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied on
2689         * </p>
2690         * @param theValue The product to add (must not be <code>null</code>)
2691         */
2692        public ElementTarget addProduct(ElementTargetDependsOn theValue) {
2693                if (theValue == null) {
2694                        throw new NullPointerException("theValue must not be null");
2695                }
2696                getProduct().add(theValue);
2697                return this;
2698        }
2699
2700        /**
2701         * Gets the first repetition for <b>product</b> (),
2702         * creating it if it does not already exist.
2703         *
2704     * <p>
2705     * <b>Definition:</b>
2706     * A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied on
2707     * </p> 
2708         */
2709        public ElementTargetDependsOn getProductFirstRep() {
2710                if (getProduct().isEmpty()) {
2711                        return addProduct();
2712                }
2713                return getProduct().get(0); 
2714        }
2715  
2716
2717
2718        }
2719
2720        /**
2721         * Block class for child element: <b>ConceptMap.element.target.dependsOn</b> ()
2722         *
2723     * <p>
2724     * <b>Definition:</b>
2725     * A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value
2726     * </p> 
2727         */
2728        @Block()        
2729        public static class ElementTargetDependsOn 
2730            extends  BaseIdentifiableElement  
2731            implements IResourceBlock {
2732        
2733        @Child(name="element", type=UriDt.class, order=0, min=1, max=1, summary=false, modifier=false)  
2734        @Description(
2735                shortDefinition="",
2736                formalDefinition="A reference to a specific concept that holds a coded value. This can be an element in a FHIR resource, or a specific reference to a data element in a different specification (e.g. HL7 v2) or a general reference to a kind of data field, or a reference to a value set with an appropriately narrow definition"
2737        )
2738        private UriDt myElement;
2739        
2740        @Child(name="codeSystem", type=UriDt.class, order=1, min=1, max=1, summary=false, modifier=false)       
2741        @Description(
2742                shortDefinition="",
2743                formalDefinition="An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems)"
2744        )
2745        private UriDt myCodeSystem;
2746        
2747        @Child(name="code", type=StringDt.class, order=2, min=1, max=1, summary=false, modifier=false)  
2748        @Description(
2749                shortDefinition="",
2750                formalDefinition="Identity (code or path) or the element/item/ValueSet that the map depends on / refers to"
2751        )
2752        private StringDt myCode;
2753        
2754
2755        @Override
2756        public boolean isEmpty() {
2757                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myElement,  myCodeSystem,  myCode);
2758        }
2759        
2760        @Override
2761        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2762                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myElement, myCodeSystem, myCode);
2763        }
2764
2765        /**
2766         * Gets the value(s) for <b>element</b> ().
2767         * creating it if it does
2768         * not exist. Will not return <code>null</code>.
2769         *
2770     * <p>
2771     * <b>Definition:</b>
2772     * A reference to a specific concept that holds a coded value. This can be an element in a FHIR resource, or a specific reference to a data element in a different specification (e.g. HL7 v2) or a general reference to a kind of data field, or a reference to a value set with an appropriately narrow definition
2773     * </p> 
2774         */
2775        public UriDt getElementElement() {  
2776                if (myElement == null) {
2777                        myElement = new UriDt();
2778                }
2779                return myElement;
2780        }
2781
2782        
2783        /**
2784         * Gets the value(s) for <b>element</b> ().
2785         * creating it if it does
2786         * not exist. This method may return <code>null</code>.
2787         *
2788     * <p>
2789     * <b>Definition:</b>
2790     * A reference to a specific concept that holds a coded value. This can be an element in a FHIR resource, or a specific reference to a data element in a different specification (e.g. HL7 v2) or a general reference to a kind of data field, or a reference to a value set with an appropriately narrow definition
2791     * </p> 
2792         */
2793        public String getElement() {  
2794                return getElementElement().getValue();
2795        }
2796
2797        /**
2798         * Sets the value(s) for <b>element</b> ()
2799         *
2800     * <p>
2801     * <b>Definition:</b>
2802     * A reference to a specific concept that holds a coded value. This can be an element in a FHIR resource, or a specific reference to a data element in a different specification (e.g. HL7 v2) or a general reference to a kind of data field, or a reference to a value set with an appropriately narrow definition
2803     * </p> 
2804         */
2805        public ElementTargetDependsOn setElement(UriDt theValue) {
2806                myElement = theValue;
2807                return this;
2808        }
2809        
2810        
2811
2812        /**
2813         * Sets the value for <b>element</b> ()
2814         *
2815     * <p>
2816     * <b>Definition:</b>
2817     * A reference to a specific concept that holds a coded value. This can be an element in a FHIR resource, or a specific reference to a data element in a different specification (e.g. HL7 v2) or a general reference to a kind of data field, or a reference to a value set with an appropriately narrow definition
2818     * </p> 
2819         */
2820        public ElementTargetDependsOn setElement( String theUri) {
2821                myElement = new UriDt(theUri); 
2822                return this; 
2823        }
2824
2825 
2826        /**
2827         * Gets the value(s) for <b>codeSystem</b> ().
2828         * creating it if it does
2829         * not exist. Will not return <code>null</code>.
2830         *
2831     * <p>
2832     * <b>Definition:</b>
2833     * An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems)
2834     * </p> 
2835         */
2836        public UriDt getCodeSystemElement() {  
2837                if (myCodeSystem == null) {
2838                        myCodeSystem = new UriDt();
2839                }
2840                return myCodeSystem;
2841        }
2842
2843        
2844        /**
2845         * Gets the value(s) for <b>codeSystem</b> ().
2846         * creating it if it does
2847         * not exist. This method may return <code>null</code>.
2848         *
2849     * <p>
2850     * <b>Definition:</b>
2851     * An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems)
2852     * </p> 
2853         */
2854        public String getCodeSystem() {  
2855                return getCodeSystemElement().getValue();
2856        }
2857
2858        /**
2859         * Sets the value(s) for <b>codeSystem</b> ()
2860         *
2861     * <p>
2862     * <b>Definition:</b>
2863     * An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems)
2864     * </p> 
2865         */
2866        public ElementTargetDependsOn setCodeSystem(UriDt theValue) {
2867                myCodeSystem = theValue;
2868                return this;
2869        }
2870        
2871        
2872
2873        /**
2874         * Sets the value for <b>codeSystem</b> ()
2875         *
2876     * <p>
2877     * <b>Definition:</b>
2878     * An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems)
2879     * </p> 
2880         */
2881        public ElementTargetDependsOn setCodeSystem( String theUri) {
2882                myCodeSystem = new UriDt(theUri); 
2883                return this; 
2884        }
2885
2886 
2887        /**
2888         * Gets the value(s) for <b>code</b> ().
2889         * creating it if it does
2890         * not exist. Will not return <code>null</code>.
2891         *
2892     * <p>
2893     * <b>Definition:</b>
2894     * Identity (code or path) or the element/item/ValueSet that the map depends on / refers to
2895     * </p> 
2896         */
2897        public StringDt getCodeElement() {  
2898                if (myCode == null) {
2899                        myCode = new StringDt();
2900                }
2901                return myCode;
2902        }
2903
2904        
2905        /**
2906         * Gets the value(s) for <b>code</b> ().
2907         * creating it if it does
2908         * not exist. This method may return <code>null</code>.
2909         *
2910     * <p>
2911     * <b>Definition:</b>
2912     * Identity (code or path) or the element/item/ValueSet that the map depends on / refers to
2913     * </p> 
2914         */
2915        public String getCode() {  
2916                return getCodeElement().getValue();
2917        }
2918
2919        /**
2920         * Sets the value(s) for <b>code</b> ()
2921         *
2922     * <p>
2923     * <b>Definition:</b>
2924     * Identity (code or path) or the element/item/ValueSet that the map depends on / refers to
2925     * </p> 
2926         */
2927        public ElementTargetDependsOn setCode(StringDt theValue) {
2928                myCode = theValue;
2929                return this;
2930        }
2931        
2932        
2933
2934        /**
2935         * Sets the value for <b>code</b> ()
2936         *
2937     * <p>
2938     * <b>Definition:</b>
2939     * Identity (code or path) or the element/item/ValueSet that the map depends on / refers to
2940     * </p> 
2941         */
2942        public ElementTargetDependsOn setCode( String theString) {
2943                myCode = new StringDt(theString); 
2944                return this; 
2945        }
2946
2947 
2948
2949
2950        }
2951
2952
2953
2954
2955
2956
2957    @Override
2958    public String getResourceName() {
2959        return "ConceptMap";
2960    }
2961    
2962    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
2963        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
2964    }
2965
2966
2967}