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