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>Communication</b> Resource
282 * ()
283 *
284 * <p>
285 * <b>Definition:</b>
286 * An occurrence of information being transmitted; e.g. an alert that was sent to a responsible provider, a public health agency was notified about a reportable condition.
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/Communication">http://hl7.org/fhir/profiles/Communication</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="Communication", profile="http://hl7.org/fhir/profiles/Communication", id="communication")
301public class Communication extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource     {
303
304        /**
305         * Search parameter constant for <b>identifier</b>
306         * <p>
307         * Description: <b></b><br>
308         * Type: <b>token</b><br>
309         * Path: <b>Communication.identifier</b><br>
310         * </p>
311         */
312        @SearchParamDefinition(name="identifier", path="Communication.identifier", description="", type="token"  )
313        public static final String SP_IDENTIFIER = "identifier";
314
315        /**
316         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
317         * <p>
318         * Description: <b></b><br>
319         * Type: <b>token</b><br>
320         * Path: <b>Communication.identifier</b><br>
321         * </p>
322         */
323        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
324
325        /**
326         * Search parameter constant for <b>category</b>
327         * <p>
328         * Description: <b></b><br>
329         * Type: <b>token</b><br>
330         * Path: <b>Communication.category</b><br>
331         * </p>
332         */
333        @SearchParamDefinition(name="category", path="Communication.category", description="", type="token"  )
334        public static final String SP_CATEGORY = "category";
335
336        /**
337         * <b>Fluent Client</b> search parameter constant for <b>category</b>
338         * <p>
339         * Description: <b></b><br>
340         * Type: <b>token</b><br>
341         * Path: <b>Communication.category</b><br>
342         * </p>
343         */
344        public static final TokenClientParam CATEGORY = new TokenClientParam(SP_CATEGORY);
345
346        /**
347         * Search parameter constant for <b>sender</b>
348         * <p>
349         * Description: <b></b><br>
350         * Type: <b>reference</b><br>
351         * Path: <b>Communication.sender</b><br>
352         * </p>
353         */
354        @SearchParamDefinition(name="sender", path="Communication.sender", description="", type="reference" , providesMembershipIn={
355 @Compartment(name="Patient") ,  @Compartment(name="RelatedPerson") ,  @Compartment(name="Practitioner") ,  @Compartment(name="Device")         }
356 )
357        public static final String SP_SENDER = "sender";
358
359        /**
360         * <b>Fluent Client</b> search parameter constant for <b>sender</b>
361         * <p>
362         * Description: <b></b><br>
363         * Type: <b>reference</b><br>
364         * Path: <b>Communication.sender</b><br>
365         * </p>
366         */
367        public static final ReferenceClientParam SENDER = new ReferenceClientParam(SP_SENDER);
368
369        /**
370         * Search parameter constant for <b>recipient</b>
371         * <p>
372         * Description: <b></b><br>
373         * Type: <b>reference</b><br>
374         * Path: <b>Communication.recipient</b><br>
375         * </p>
376         */
377        @SearchParamDefinition(name="recipient", path="Communication.recipient", description="", type="reference" , providesMembershipIn={
378 @Compartment(name="Patient") ,  @Compartment(name="RelatedPerson") ,  @Compartment(name="Practitioner") ,  @Compartment(name="Device")         }
379 )
380        public static final String SP_RECIPIENT = "recipient";
381
382        /**
383         * <b>Fluent Client</b> search parameter constant for <b>recipient</b>
384         * <p>
385         * Description: <b></b><br>
386         * Type: <b>reference</b><br>
387         * Path: <b>Communication.recipient</b><br>
388         * </p>
389         */
390        public static final ReferenceClientParam RECIPIENT = new ReferenceClientParam(SP_RECIPIENT);
391
392        /**
393         * Search parameter constant for <b>medium</b>
394         * <p>
395         * Description: <b></b><br>
396         * Type: <b>token</b><br>
397         * Path: <b>Communication.medium</b><br>
398         * </p>
399         */
400        @SearchParamDefinition(name="medium", path="Communication.medium", description="", type="token"  )
401        public static final String SP_MEDIUM = "medium";
402
403        /**
404         * <b>Fluent Client</b> search parameter constant for <b>medium</b>
405         * <p>
406         * Description: <b></b><br>
407         * Type: <b>token</b><br>
408         * Path: <b>Communication.medium</b><br>
409         * </p>
410         */
411        public static final TokenClientParam MEDIUM = new TokenClientParam(SP_MEDIUM);
412
413        /**
414         * Search parameter constant for <b>status</b>
415         * <p>
416         * Description: <b></b><br>
417         * Type: <b>token</b><br>
418         * Path: <b>Communication.status</b><br>
419         * </p>
420         */
421        @SearchParamDefinition(name="status", path="Communication.status", description="", type="token"  )
422        public static final String SP_STATUS = "status";
423
424        /**
425         * <b>Fluent Client</b> search parameter constant for <b>status</b>
426         * <p>
427         * Description: <b></b><br>
428         * Type: <b>token</b><br>
429         * Path: <b>Communication.status</b><br>
430         * </p>
431         */
432        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
433
434        /**
435         * Search parameter constant for <b>encounter</b>
436         * <p>
437         * Description: <b></b><br>
438         * Type: <b>reference</b><br>
439         * Path: <b>Communication.encounter</b><br>
440         * </p>
441         */
442        @SearchParamDefinition(name="encounter", path="Communication.encounter", description="", type="reference" , providesMembershipIn={
443 @Compartment(name="Encounter")         }
444 )
445        public static final String SP_ENCOUNTER = "encounter";
446
447        /**
448         * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
449         * <p>
450         * Description: <b></b><br>
451         * Type: <b>reference</b><br>
452         * Path: <b>Communication.encounter</b><br>
453         * </p>
454         */
455        public static final ReferenceClientParam ENCOUNTER = new ReferenceClientParam(SP_ENCOUNTER);
456
457        /**
458         * Search parameter constant for <b>sent</b>
459         * <p>
460         * Description: <b></b><br>
461         * Type: <b>date</b><br>
462         * Path: <b>Communication.sent</b><br>
463         * </p>
464         */
465        @SearchParamDefinition(name="sent", path="Communication.sent", description="", type="date"  )
466        public static final String SP_SENT = "sent";
467
468        /**
469         * <b>Fluent Client</b> search parameter constant for <b>sent</b>
470         * <p>
471         * Description: <b></b><br>
472         * Type: <b>date</b><br>
473         * Path: <b>Communication.sent</b><br>
474         * </p>
475         */
476        public static final DateClientParam SENT = new DateClientParam(SP_SENT);
477
478        /**
479         * Search parameter constant for <b>received</b>
480         * <p>
481         * Description: <b></b><br>
482         * Type: <b>date</b><br>
483         * Path: <b>Communication.received</b><br>
484         * </p>
485         */
486        @SearchParamDefinition(name="received", path="Communication.received", description="", type="date"  )
487        public static final String SP_RECEIVED = "received";
488
489        /**
490         * <b>Fluent Client</b> search parameter constant for <b>received</b>
491         * <p>
492         * Description: <b></b><br>
493         * Type: <b>date</b><br>
494         * Path: <b>Communication.received</b><br>
495         * </p>
496         */
497        public static final DateClientParam RECEIVED = new DateClientParam(SP_RECEIVED);
498
499        /**
500         * Search parameter constant for <b>subject</b>
501         * <p>
502         * Description: <b></b><br>
503         * Type: <b>reference</b><br>
504         * Path: <b>Communication.subject</b><br>
505         * </p>
506         */
507        @SearchParamDefinition(name="subject", path="Communication.subject", description="", type="reference" , providesMembershipIn={
508 @Compartment(name="Patient")   }
509 )
510        public static final String SP_SUBJECT = "subject";
511
512        /**
513         * <b>Fluent Client</b> search parameter constant for <b>subject</b>
514         * <p>
515         * Description: <b></b><br>
516         * Type: <b>reference</b><br>
517         * Path: <b>Communication.subject</b><br>
518         * </p>
519         */
520        public static final ReferenceClientParam SUBJECT = new ReferenceClientParam(SP_SUBJECT);
521
522        /**
523         * Search parameter constant for <b>patient</b>
524         * <p>
525         * Description: <b></b><br>
526         * Type: <b>reference</b><br>
527         * Path: <b>Communication.subject</b><br>
528         * </p>
529         */
530        @SearchParamDefinition(name="patient", path="Communication.subject", description="", type="reference"  )
531        public static final String SP_PATIENT = "patient";
532
533        /**
534         * <b>Fluent Client</b> search parameter constant for <b>patient</b>
535         * <p>
536         * Description: <b></b><br>
537         * Type: <b>reference</b><br>
538         * Path: <b>Communication.subject</b><br>
539         * </p>
540         */
541        public static final ReferenceClientParam PATIENT = new ReferenceClientParam(SP_PATIENT);
542
543        /**
544         * Search parameter constant for <b>request</b>
545         * <p>
546         * Description: <b></b><br>
547         * Type: <b>reference</b><br>
548         * Path: <b>Communication.requestDetail</b><br>
549         * </p>
550         */
551        @SearchParamDefinition(name="request", path="Communication.requestDetail", description="", type="reference"  )
552        public static final String SP_REQUEST = "request";
553
554        /**
555         * <b>Fluent Client</b> search parameter constant for <b>request</b>
556         * <p>
557         * Description: <b></b><br>
558         * Type: <b>reference</b><br>
559         * Path: <b>Communication.requestDetail</b><br>
560         * </p>
561         */
562        public static final ReferenceClientParam REQUEST = new ReferenceClientParam(SP_REQUEST);
563
564
565        /**
566         * Constant for fluent queries to be used to add include statements. Specifies
567         * the path value of "<b>Communication:encounter</b>".
568         */
569        public static final Include INCLUDE_ENCOUNTER = new Include("Communication:encounter");
570
571        /**
572         * Constant for fluent queries to be used to add include statements. Specifies
573         * the path value of "<b>Communication:patient</b>".
574         */
575        public static final Include INCLUDE_PATIENT = new Include("Communication:patient");
576
577        /**
578         * Constant for fluent queries to be used to add include statements. Specifies
579         * the path value of "<b>Communication:recipient</b>".
580         */
581        public static final Include INCLUDE_RECIPIENT = new Include("Communication:recipient");
582
583        /**
584         * Constant for fluent queries to be used to add include statements. Specifies
585         * the path value of "<b>Communication:request</b>".
586         */
587        public static final Include INCLUDE_REQUEST = new Include("Communication:request");
588
589        /**
590         * Constant for fluent queries to be used to add include statements. Specifies
591         * the path value of "<b>Communication:sender</b>".
592         */
593        public static final Include INCLUDE_SENDER = new Include("Communication:sender");
594
595        /**
596         * Constant for fluent queries to be used to add include statements. Specifies
597         * the path value of "<b>Communication:subject</b>".
598         */
599        public static final Include INCLUDE_SUBJECT = new Include("Communication:subject");
600
601
602        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
603        @Description(
604                shortDefinition="",
605                formalDefinition="Identifiers associated with this Communication that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)."
606        )
607        private java.util.List<IdentifierDt> myIdentifier;
608        
609        @Child(name="category", type=CodeableConceptDt.class, order=1, min=0, max=1, summary=false, modifier=false)     
610        @Description(
611                shortDefinition="",
612                formalDefinition="The type of message conveyed such as alert, notification, reminder, instruction, etc."
613        )
614        private CodeableConceptDt myCategory;
615        
616        @Child(name="sender", order=2, min=0, max=1, summary=false, modifier=false, type={
617                ca.uhn.fhir.model.dstu2.resource.Device.class,          ca.uhn.fhir.model.dstu2.resource.Organization.class,            ca.uhn.fhir.model.dstu2.resource.Patient.class,                 ca.uhn.fhir.model.dstu2.resource.Practitioner.class,            ca.uhn.fhir.model.dstu2.resource.RelatedPerson.class    })
618        @Description(
619                shortDefinition="",
620                formalDefinition="The entity (e.g. person, organization, clinical information system, or device) which was the source of the communication."
621        )
622        private ResourceReferenceDt mySender;
623        
624        @Child(name="recipient", order=3, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
625                ca.uhn.fhir.model.dstu2.resource.Device.class,          ca.uhn.fhir.model.dstu2.resource.Organization.class,            ca.uhn.fhir.model.dstu2.resource.Patient.class,                 ca.uhn.fhir.model.dstu2.resource.Practitioner.class,            ca.uhn.fhir.model.dstu2.resource.RelatedPerson.class,           ca.uhn.fhir.model.dstu2.resource.Group.class    })
626        @Description(
627                shortDefinition="",
628                formalDefinition="The entity (e.g. person, organization, clinical information system, or device) which was the target of the communication. If receipts need to be tracked by individual, a separate resource instance will need to be created for each recipient.  Multiple recipient communications are intended where either a receipt(s) is not tracked (e.g. a mass mail-out) or is captured in aggregate (all emails confirmed received by a particular time)."
629        )
630        private java.util.List<ResourceReferenceDt> myRecipient;
631        
632        @Child(name="payload", order=4, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
633        @Description(
634                shortDefinition="",
635                formalDefinition="Text, attachment(s), or resource(s) that was communicated to the recipient."
636        )
637        private java.util.List<Payload> myPayload;
638        
639        @Child(name="medium", type=CodeableConceptDt.class, order=5, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
640        @Description(
641                shortDefinition="",
642                formalDefinition="A channel that was used for this communication (e.g. email, fax)."
643        )
644        private java.util.List<CodeableConceptDt> myMedium;
645        
646        @Child(name="status", type=CodeDt.class, order=6, min=0, max=1, summary=false, modifier=true)   
647        @Description(
648                shortDefinition="",
649                formalDefinition="The status of the transmission."
650        )
651        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/communication-status")
652        private BoundCodeDt<CommunicationStatusEnum> myStatus;
653        
654        @Child(name="encounter", order=7, min=0, max=1, summary=false, modifier=false, type={
655                ca.uhn.fhir.model.dstu2.resource.Encounter.class        })
656        @Description(
657                shortDefinition="",
658                formalDefinition="The encounter within which the communication was sent."
659        )
660        private ResourceReferenceDt myEncounter;
661        
662        @Child(name="sent", type=DateTimeDt.class, order=8, min=0, max=1, summary=false, modifier=false)        
663        @Description(
664                shortDefinition="",
665                formalDefinition="The time when this communication was sent."
666        )
667        private DateTimeDt mySent;
668        
669        @Child(name="received", type=DateTimeDt.class, order=9, min=0, max=1, summary=false, modifier=false)    
670        @Description(
671                shortDefinition="",
672                formalDefinition="The time when this communication arrived at the destination."
673        )
674        private DateTimeDt myReceived;
675        
676        @Child(name="reason", type=CodeableConceptDt.class, order=10, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
677        @Description(
678                shortDefinition="",
679                formalDefinition="The reason or justification for the communication."
680        )
681        private java.util.List<CodeableConceptDt> myReason;
682        
683        @Child(name="subject", order=11, min=0, max=1, summary=false, modifier=false, type={
684                ca.uhn.fhir.model.dstu2.resource.Patient.class  })
685        @Description(
686                shortDefinition="",
687                formalDefinition="The patient who was the focus of this communication."
688        )
689        private ResourceReferenceDt mySubject;
690        
691        @Child(name="requestDetail", order=12, min=0, max=1, summary=false, modifier=false, type={
692                ca.uhn.fhir.model.dstu2.resource.CommunicationRequest.class     })
693        @Description(
694                shortDefinition="",
695                formalDefinition="The communication request that was responsible for producing this communication."
696        )
697        private ResourceReferenceDt myRequestDetail;
698        
699
700        @Override
701        public boolean isEmpty() {
702                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myCategory,  mySender,  myRecipient,  myPayload,  myMedium,  myStatus,  myEncounter,  mySent,  myReceived,  myReason,  mySubject,  myRequestDetail);
703        }
704        
705        @Override
706        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
707                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myCategory, mySender, myRecipient, myPayload, myMedium, myStatus, myEncounter, mySent, myReceived, myReason, mySubject, myRequestDetail);
708        }
709
710        /**
711         * Gets the value(s) for <b>identifier</b> ().
712         * creating it if it does
713         * not exist. Will not return <code>null</code>.
714         *
715     * <p>
716     * <b>Definition:</b>
717     * Identifiers associated with this Communication that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).
718     * </p> 
719         */
720        public java.util.List<IdentifierDt> getIdentifier() {  
721                if (myIdentifier == null) {
722                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
723                }
724                return myIdentifier;
725        }
726
727        /**
728         * Sets the value(s) for <b>identifier</b> ()
729         *
730     * <p>
731     * <b>Definition:</b>
732     * Identifiers associated with this Communication that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).
733     * </p> 
734         */
735        public Communication setIdentifier(java.util.List<IdentifierDt> theValue) {
736                myIdentifier = theValue;
737                return this;
738        }
739        
740        
741
742        /**
743         * Adds and returns a new value for <b>identifier</b> ()
744         *
745     * <p>
746     * <b>Definition:</b>
747     * Identifiers associated with this Communication that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).
748     * </p> 
749         */
750        public IdentifierDt addIdentifier() {
751                IdentifierDt newType = new IdentifierDt();
752                getIdentifier().add(newType);
753                return newType; 
754        }
755
756        /**
757         * Adds a given new value for <b>identifier</b> ()
758         *
759         * <p>
760         * <b>Definition:</b>
761         * Identifiers associated with this Communication that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).
762         * </p>
763         * @param theValue The identifier to add (must not be <code>null</code>)
764         */
765        public Communication addIdentifier(IdentifierDt theValue) {
766                if (theValue == null) {
767                        throw new NullPointerException("theValue must not be null");
768                }
769                getIdentifier().add(theValue);
770                return this;
771        }
772
773        /**
774         * Gets the first repetition for <b>identifier</b> (),
775         * creating it if it does not already exist.
776         *
777     * <p>
778     * <b>Definition:</b>
779     * Identifiers associated with this Communication that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).
780     * </p> 
781         */
782        public IdentifierDt getIdentifierFirstRep() {
783                if (getIdentifier().isEmpty()) {
784                        return addIdentifier();
785                }
786                return getIdentifier().get(0); 
787        }
788  
789        /**
790         * Gets the value(s) for <b>category</b> ().
791         * creating it if it does
792         * not exist. Will not return <code>null</code>.
793         *
794     * <p>
795     * <b>Definition:</b>
796     * The type of message conveyed such as alert, notification, reminder, instruction, etc.
797     * </p> 
798         */
799        public CodeableConceptDt getCategory() {  
800                if (myCategory == null) {
801                        myCategory = new CodeableConceptDt();
802                }
803                return myCategory;
804        }
805
806        /**
807         * Sets the value(s) for <b>category</b> ()
808         *
809     * <p>
810     * <b>Definition:</b>
811     * The type of message conveyed such as alert, notification, reminder, instruction, etc.
812     * </p> 
813         */
814        public Communication setCategory(CodeableConceptDt theValue) {
815                myCategory = theValue;
816                return this;
817        }
818        
819        
820
821  
822        /**
823         * Gets the value(s) for <b>sender</b> ().
824         * creating it if it does
825         * not exist. Will not return <code>null</code>.
826         *
827     * <p>
828     * <b>Definition:</b>
829     * The entity (e.g. person, organization, clinical information system, or device) which was the source of the communication.
830     * </p> 
831         */
832        public ResourceReferenceDt getSender() {  
833                if (mySender == null) {
834                        mySender = new ResourceReferenceDt();
835                }
836                return mySender;
837        }
838
839        /**
840         * Sets the value(s) for <b>sender</b> ()
841         *
842     * <p>
843     * <b>Definition:</b>
844     * The entity (e.g. person, organization, clinical information system, or device) which was the source of the communication.
845     * </p> 
846         */
847        public Communication setSender(ResourceReferenceDt theValue) {
848                mySender = theValue;
849                return this;
850        }
851        
852        
853
854  
855        /**
856         * Gets the value(s) for <b>recipient</b> ().
857         * creating it if it does
858         * not exist. Will not return <code>null</code>.
859         *
860     * <p>
861     * <b>Definition:</b>
862     * The entity (e.g. person, organization, clinical information system, or device) which was the target of the communication. If receipts need to be tracked by individual, a separate resource instance will need to be created for each recipient. &nbsp;Multiple recipient communications are intended where either a receipt(s) is not tracked (e.g. a mass mail-out) or is captured in aggregate (all emails confirmed received by a particular time).
863     * </p> 
864         */
865        public java.util.List<ResourceReferenceDt> getRecipient() {  
866                if (myRecipient == null) {
867                        myRecipient = new java.util.ArrayList<ResourceReferenceDt>();
868                }
869                return myRecipient;
870        }
871
872        /**
873         * Sets the value(s) for <b>recipient</b> ()
874         *
875     * <p>
876     * <b>Definition:</b>
877     * The entity (e.g. person, organization, clinical information system, or device) which was the target of the communication. If receipts need to be tracked by individual, a separate resource instance will need to be created for each recipient. &nbsp;Multiple recipient communications are intended where either a receipt(s) is not tracked (e.g. a mass mail-out) or is captured in aggregate (all emails confirmed received by a particular time).
878     * </p> 
879         */
880        public Communication setRecipient(java.util.List<ResourceReferenceDt> theValue) {
881                myRecipient = theValue;
882                return this;
883        }
884        
885        
886
887        /**
888         * Adds and returns a new value for <b>recipient</b> ()
889         *
890     * <p>
891     * <b>Definition:</b>
892     * The entity (e.g. person, organization, clinical information system, or device) which was the target of the communication. If receipts need to be tracked by individual, a separate resource instance will need to be created for each recipient. &nbsp;Multiple recipient communications are intended where either a receipt(s) is not tracked (e.g. a mass mail-out) or is captured in aggregate (all emails confirmed received by a particular time).
893     * </p> 
894         */
895        public ResourceReferenceDt addRecipient() {
896                ResourceReferenceDt newType = new ResourceReferenceDt();
897                getRecipient().add(newType);
898                return newType; 
899        }
900  
901        /**
902         * Gets the value(s) for <b>payload</b> ().
903         * creating it if it does
904         * not exist. Will not return <code>null</code>.
905         *
906     * <p>
907     * <b>Definition:</b>
908     * Text, attachment(s), or resource(s) that was communicated to the recipient.
909     * </p> 
910         */
911        public java.util.List<Payload> getPayload() {  
912                if (myPayload == null) {
913                        myPayload = new java.util.ArrayList<Payload>();
914                }
915                return myPayload;
916        }
917
918        /**
919         * Sets the value(s) for <b>payload</b> ()
920         *
921     * <p>
922     * <b>Definition:</b>
923     * Text, attachment(s), or resource(s) that was communicated to the recipient.
924     * </p> 
925         */
926        public Communication setPayload(java.util.List<Payload> theValue) {
927                myPayload = theValue;
928                return this;
929        }
930        
931        
932
933        /**
934         * Adds and returns a new value for <b>payload</b> ()
935         *
936     * <p>
937     * <b>Definition:</b>
938     * Text, attachment(s), or resource(s) that was communicated to the recipient.
939     * </p> 
940         */
941        public Payload addPayload() {
942                Payload newType = new Payload();
943                getPayload().add(newType);
944                return newType; 
945        }
946
947        /**
948         * Adds a given new value for <b>payload</b> ()
949         *
950         * <p>
951         * <b>Definition:</b>
952         * Text, attachment(s), or resource(s) that was communicated to the recipient.
953         * </p>
954         * @param theValue The payload to add (must not be <code>null</code>)
955         */
956        public Communication addPayload(Payload theValue) {
957                if (theValue == null) {
958                        throw new NullPointerException("theValue must not be null");
959                }
960                getPayload().add(theValue);
961                return this;
962        }
963
964        /**
965         * Gets the first repetition for <b>payload</b> (),
966         * creating it if it does not already exist.
967         *
968     * <p>
969     * <b>Definition:</b>
970     * Text, attachment(s), or resource(s) that was communicated to the recipient.
971     * </p> 
972         */
973        public Payload getPayloadFirstRep() {
974                if (getPayload().isEmpty()) {
975                        return addPayload();
976                }
977                return getPayload().get(0); 
978        }
979  
980        /**
981         * Gets the value(s) for <b>medium</b> ().
982         * creating it if it does
983         * not exist. Will not return <code>null</code>.
984         *
985     * <p>
986     * <b>Definition:</b>
987     * A channel that was used for this communication (e.g. email, fax).
988     * </p> 
989         */
990        public java.util.List<CodeableConceptDt> getMedium() {  
991                if (myMedium == null) {
992                        myMedium = new java.util.ArrayList<CodeableConceptDt>();
993                }
994                return myMedium;
995        }
996
997        /**
998         * Sets the value(s) for <b>medium</b> ()
999         *
1000     * <p>
1001     * <b>Definition:</b>
1002     * A channel that was used for this communication (e.g. email, fax).
1003     * </p> 
1004         */
1005        public Communication setMedium(java.util.List<CodeableConceptDt> theValue) {
1006                myMedium = theValue;
1007                return this;
1008        }
1009        
1010        
1011
1012        /**
1013         * Adds and returns a new value for <b>medium</b> ()
1014         *
1015     * <p>
1016     * <b>Definition:</b>
1017     * A channel that was used for this communication (e.g. email, fax).
1018     * </p> 
1019         */
1020        public CodeableConceptDt addMedium() {
1021                CodeableConceptDt newType = new CodeableConceptDt();
1022                getMedium().add(newType);
1023                return newType; 
1024        }
1025
1026        /**
1027         * Adds a given new value for <b>medium</b> ()
1028         *
1029         * <p>
1030         * <b>Definition:</b>
1031         * A channel that was used for this communication (e.g. email, fax).
1032         * </p>
1033         * @param theValue The medium to add (must not be <code>null</code>)
1034         */
1035        public Communication addMedium(CodeableConceptDt theValue) {
1036                if (theValue == null) {
1037                        throw new NullPointerException("theValue must not be null");
1038                }
1039                getMedium().add(theValue);
1040                return this;
1041        }
1042
1043        /**
1044         * Gets the first repetition for <b>medium</b> (),
1045         * creating it if it does not already exist.
1046         *
1047     * <p>
1048     * <b>Definition:</b>
1049     * A channel that was used for this communication (e.g. email, fax).
1050     * </p> 
1051         */
1052        public CodeableConceptDt getMediumFirstRep() {
1053                if (getMedium().isEmpty()) {
1054                        return addMedium();
1055                }
1056                return getMedium().get(0); 
1057        }
1058  
1059        /**
1060         * Gets the value(s) for <b>status</b> ().
1061         * creating it if it does
1062         * not exist. Will not return <code>null</code>.
1063         *
1064     * <p>
1065     * <b>Definition:</b>
1066     * The status of the transmission.
1067     * </p> 
1068         */
1069        public BoundCodeDt<CommunicationStatusEnum> getStatusElement() {  
1070                if (myStatus == null) {
1071                        myStatus = new BoundCodeDt<CommunicationStatusEnum>(CommunicationStatusEnum.VALUESET_BINDER);
1072                }
1073                return myStatus;
1074        }
1075
1076        
1077        /**
1078         * Gets the value(s) for <b>status</b> ().
1079         * creating it if it does
1080         * not exist. This method may return <code>null</code>.
1081         *
1082     * <p>
1083     * <b>Definition:</b>
1084     * The status of the transmission.
1085     * </p> 
1086         */
1087        public String getStatus() {  
1088                return getStatusElement().getValue();
1089        }
1090
1091        /**
1092         * Sets the value(s) for <b>status</b> ()
1093         *
1094     * <p>
1095     * <b>Definition:</b>
1096     * The status of the transmission.
1097     * </p> 
1098         */
1099        public Communication setStatus(BoundCodeDt<CommunicationStatusEnum> theValue) {
1100                myStatus = theValue;
1101                return this;
1102        }
1103        
1104        
1105
1106        /**
1107         * Sets the value(s) for <b>status</b> ()
1108         *
1109     * <p>
1110     * <b>Definition:</b>
1111     * The status of the transmission.
1112     * </p> 
1113         */
1114        public Communication setStatus(CommunicationStatusEnum theValue) {
1115                setStatus(new BoundCodeDt<CommunicationStatusEnum>(CommunicationStatusEnum.VALUESET_BINDER, theValue));
1116                
1117/*
1118                getStatusElement().setValueAsEnum(theValue);
1119*/
1120                return this;
1121        }
1122
1123  
1124        /**
1125         * Gets the value(s) for <b>encounter</b> ().
1126         * creating it if it does
1127         * not exist. Will not return <code>null</code>.
1128         *
1129     * <p>
1130     * <b>Definition:</b>
1131     * The encounter within which the communication was sent.
1132     * </p> 
1133         */
1134        public ResourceReferenceDt getEncounter() {  
1135                if (myEncounter == null) {
1136                        myEncounter = new ResourceReferenceDt();
1137                }
1138                return myEncounter;
1139        }
1140
1141        /**
1142         * Sets the value(s) for <b>encounter</b> ()
1143         *
1144     * <p>
1145     * <b>Definition:</b>
1146     * The encounter within which the communication was sent.
1147     * </p> 
1148         */
1149        public Communication setEncounter(ResourceReferenceDt theValue) {
1150                myEncounter = theValue;
1151                return this;
1152        }
1153        
1154        
1155
1156  
1157        /**
1158         * Gets the value(s) for <b>sent</b> ().
1159         * creating it if it does
1160         * not exist. Will not return <code>null</code>.
1161         *
1162     * <p>
1163     * <b>Definition:</b>
1164     * The time when this communication was sent.
1165     * </p> 
1166         */
1167        public DateTimeDt getSentElement() {  
1168                if (mySent == null) {
1169                        mySent = new DateTimeDt();
1170                }
1171                return mySent;
1172        }
1173
1174        
1175        /**
1176         * Gets the value(s) for <b>sent</b> ().
1177         * creating it if it does
1178         * not exist. This method may return <code>null</code>.
1179         *
1180     * <p>
1181     * <b>Definition:</b>
1182     * The time when this communication was sent.
1183     * </p> 
1184         */
1185        public Date getSent() {  
1186                return getSentElement().getValue();
1187        }
1188
1189        /**
1190         * Sets the value(s) for <b>sent</b> ()
1191         *
1192     * <p>
1193     * <b>Definition:</b>
1194     * The time when this communication was sent.
1195     * </p> 
1196         */
1197        public Communication setSent(DateTimeDt theValue) {
1198                mySent = theValue;
1199                return this;
1200        }
1201        
1202        
1203
1204        /**
1205         * Sets the value for <b>sent</b> ()
1206         *
1207     * <p>
1208     * <b>Definition:</b>
1209     * The time when this communication was sent.
1210     * </p> 
1211         */
1212        public Communication setSent( Date theDate,  TemporalPrecisionEnum thePrecision) {
1213                mySent = new DateTimeDt(theDate, thePrecision); 
1214                return this; 
1215        }
1216
1217        /**
1218         * Sets the value for <b>sent</b> ()
1219         *
1220     * <p>
1221     * <b>Definition:</b>
1222     * The time when this communication was sent.
1223     * </p> 
1224         */
1225        public Communication setSentWithSecondsPrecision( Date theDate) {
1226                mySent = new DateTimeDt(theDate); 
1227                return this; 
1228        }
1229
1230 
1231        /**
1232         * Gets the value(s) for <b>received</b> ().
1233         * creating it if it does
1234         * not exist. Will not return <code>null</code>.
1235         *
1236     * <p>
1237     * <b>Definition:</b>
1238     * The time when this communication arrived at the destination.
1239     * </p> 
1240         */
1241        public DateTimeDt getReceivedElement() {  
1242                if (myReceived == null) {
1243                        myReceived = new DateTimeDt();
1244                }
1245                return myReceived;
1246        }
1247
1248        
1249        /**
1250         * Gets the value(s) for <b>received</b> ().
1251         * creating it if it does
1252         * not exist. This method may return <code>null</code>.
1253         *
1254     * <p>
1255     * <b>Definition:</b>
1256     * The time when this communication arrived at the destination.
1257     * </p> 
1258         */
1259        public Date getReceived() {  
1260                return getReceivedElement().getValue();
1261        }
1262
1263        /**
1264         * Sets the value(s) for <b>received</b> ()
1265         *
1266     * <p>
1267     * <b>Definition:</b>
1268     * The time when this communication arrived at the destination.
1269     * </p> 
1270         */
1271        public Communication setReceived(DateTimeDt theValue) {
1272                myReceived = theValue;
1273                return this;
1274        }
1275        
1276        
1277
1278        /**
1279         * Sets the value for <b>received</b> ()
1280         *
1281     * <p>
1282     * <b>Definition:</b>
1283     * The time when this communication arrived at the destination.
1284     * </p> 
1285         */
1286        public Communication setReceived( Date theDate,  TemporalPrecisionEnum thePrecision) {
1287                myReceived = new DateTimeDt(theDate, thePrecision); 
1288                return this; 
1289        }
1290
1291        /**
1292         * Sets the value for <b>received</b> ()
1293         *
1294     * <p>
1295     * <b>Definition:</b>
1296     * The time when this communication arrived at the destination.
1297     * </p> 
1298         */
1299        public Communication setReceivedWithSecondsPrecision( Date theDate) {
1300                myReceived = new DateTimeDt(theDate); 
1301                return this; 
1302        }
1303
1304 
1305        /**
1306         * Gets the value(s) for <b>reason</b> ().
1307         * creating it if it does
1308         * not exist. Will not return <code>null</code>.
1309         *
1310     * <p>
1311     * <b>Definition:</b>
1312     * The reason or justification for the communication.
1313     * </p> 
1314         */
1315        public java.util.List<CodeableConceptDt> getReason() {  
1316                if (myReason == null) {
1317                        myReason = new java.util.ArrayList<CodeableConceptDt>();
1318                }
1319                return myReason;
1320        }
1321
1322        /**
1323         * Sets the value(s) for <b>reason</b> ()
1324         *
1325     * <p>
1326     * <b>Definition:</b>
1327     * The reason or justification for the communication.
1328     * </p> 
1329         */
1330        public Communication setReason(java.util.List<CodeableConceptDt> theValue) {
1331                myReason = theValue;
1332                return this;
1333        }
1334        
1335        
1336
1337        /**
1338         * Adds and returns a new value for <b>reason</b> ()
1339         *
1340     * <p>
1341     * <b>Definition:</b>
1342     * The reason or justification for the communication.
1343     * </p> 
1344         */
1345        public CodeableConceptDt addReason() {
1346                CodeableConceptDt newType = new CodeableConceptDt();
1347                getReason().add(newType);
1348                return newType; 
1349        }
1350
1351        /**
1352         * Adds a given new value for <b>reason</b> ()
1353         *
1354         * <p>
1355         * <b>Definition:</b>
1356         * The reason or justification for the communication.
1357         * </p>
1358         * @param theValue The reason to add (must not be <code>null</code>)
1359         */
1360        public Communication addReason(CodeableConceptDt theValue) {
1361                if (theValue == null) {
1362                        throw new NullPointerException("theValue must not be null");
1363                }
1364                getReason().add(theValue);
1365                return this;
1366        }
1367
1368        /**
1369         * Gets the first repetition for <b>reason</b> (),
1370         * creating it if it does not already exist.
1371         *
1372     * <p>
1373     * <b>Definition:</b>
1374     * The reason or justification for the communication.
1375     * </p> 
1376         */
1377        public CodeableConceptDt getReasonFirstRep() {
1378                if (getReason().isEmpty()) {
1379                        return addReason();
1380                }
1381                return getReason().get(0); 
1382        }
1383  
1384        /**
1385         * Gets the value(s) for <b>subject</b> ().
1386         * creating it if it does
1387         * not exist. Will not return <code>null</code>.
1388         *
1389     * <p>
1390     * <b>Definition:</b>
1391     * The patient who was the focus of this communication.
1392     * </p> 
1393         */
1394        public ResourceReferenceDt getSubject() {  
1395                if (mySubject == null) {
1396                        mySubject = new ResourceReferenceDt();
1397                }
1398                return mySubject;
1399        }
1400
1401        /**
1402         * Sets the value(s) for <b>subject</b> ()
1403         *
1404     * <p>
1405     * <b>Definition:</b>
1406     * The patient who was the focus of this communication.
1407     * </p> 
1408         */
1409        public Communication setSubject(ResourceReferenceDt theValue) {
1410                mySubject = theValue;
1411                return this;
1412        }
1413        
1414        
1415
1416  
1417        /**
1418         * Gets the value(s) for <b>requestDetail</b> ().
1419         * creating it if it does
1420         * not exist. Will not return <code>null</code>.
1421         *
1422     * <p>
1423     * <b>Definition:</b>
1424     * The communication request that was responsible for producing this communication.
1425     * </p> 
1426         */
1427        public ResourceReferenceDt getRequestDetail() {  
1428                if (myRequestDetail == null) {
1429                        myRequestDetail = new ResourceReferenceDt();
1430                }
1431                return myRequestDetail;
1432        }
1433
1434        /**
1435         * Sets the value(s) for <b>requestDetail</b> ()
1436         *
1437     * <p>
1438     * <b>Definition:</b>
1439     * The communication request that was responsible for producing this communication.
1440     * </p> 
1441         */
1442        public Communication setRequestDetail(ResourceReferenceDt theValue) {
1443                myRequestDetail = theValue;
1444                return this;
1445        }
1446        
1447        
1448
1449  
1450        /**
1451         * Block class for child element: <b>Communication.payload</b> ()
1452         *
1453     * <p>
1454     * <b>Definition:</b>
1455     * Text, attachment(s), or resource(s) that was communicated to the recipient.
1456     * </p> 
1457         */
1458        @Block()        
1459        public static class Payload 
1460            extends  BaseIdentifiableElement        implements IResourceBlock {
1461        
1462        @Child(name="content", order=0, min=1, max=1, summary=false, modifier=false, type={
1463                StringDt.class,                 AttachmentDt.class,             IResource.class })
1464        @Description(
1465                shortDefinition="",
1466                formalDefinition="A communicated content (or for multi-part communications, one portion of the communication)"
1467        )
1468        private IDatatype myContent;
1469        
1470
1471        @Override
1472        public boolean isEmpty() {
1473                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myContent);
1474        }
1475        
1476        @Override
1477        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1478                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myContent);
1479        }
1480
1481        /**
1482         * Gets the value(s) for <b>content[x]</b> ().
1483         * creating it if it does
1484         * not exist. Will not return <code>null</code>.
1485         *
1486     * <p>
1487     * <b>Definition:</b>
1488     * A communicated content (or for multi-part communications, one portion of the communication)
1489     * </p> 
1490         */
1491        public IDatatype getContent() {  
1492                return myContent;
1493        }
1494
1495        /**
1496         * Sets the value(s) for <b>content[x]</b> ()
1497         *
1498     * <p>
1499     * <b>Definition:</b>
1500     * A communicated content (or for multi-part communications, one portion of the communication)
1501     * </p> 
1502         */
1503        public Payload setContent(IDatatype theValue) {
1504                myContent = theValue;
1505                return this;
1506        }
1507        
1508        
1509
1510  
1511
1512
1513        }
1514
1515
1516
1517
1518    @Override
1519    public String getResourceName() {
1520        return "Communication";
1521    }
1522    
1523    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
1524        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
1525    }
1526
1527
1528}