001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * The Citation Resource enables reference to any knowledge artifact for purposes of identification and attribution. The Citation Resource supports existing reference structures and developing publication practices such as versioning, expressing complex contributorship roles, and referencing computable resources.
052 */
053@ResourceDef(name="Citation", profile="http://hl7.org/fhir/StructureDefinition/Citation")
054public class Citation extends MetadataResource {
055
056    public enum RelatedArtifactTypeExpanded {
057        /**
058         * Additional documentation for the knowledge resource. This would include additional instructions on usage as well as additional information on clinical context or appropriateness.
059         */
060        DOCUMENTATION, 
061        /**
062         * The target artifact is a summary of the justification for the knowledge resource including supporting evidence, relevant guidelines, or other clinically important information. This information is intended to provide a way to make the justification for the knowledge resource available to the consumer of interventions or results produced by the knowledge resource.
063         */
064        JUSTIFICATION, 
065        /**
066         * Bibliographic citation for papers, references, or other relevant material for the knowledge resource. This is intended to allow for citation of related material, but that was not necessarily specifically prepared in connection with this knowledge resource.
067         */
068        CITATION, 
069        /**
070         * The previous version of the knowledge artifact, used to establish an ordering of versions of an artifact, independent of the status of each version.
071         */
072        PREDECESSOR, 
073        /**
074         * The subsequent version of the knowledge artfact, used to establish an ordering of versions of an artifact, independent of the status of each version.
075         */
076        SUCCESSOR, 
077        /**
078         * This artifact is derived from the target artifact. This is intended to capture the relationship in which a particular knowledge resource is based on the content of another artifact, but is modified to capture either a different set of overall requirements, or a more specific set of requirements such as those involved in a particular institution or clinical setting. The artifact may be derived from one or more target artifacts.
079         */
080        DERIVEDFROM, 
081        /**
082         * This artifact depends on the target artifact. There is a requirement to use the target artifact in the creation or interpretation of this artifact.
083         */
084        DEPENDSON, 
085        /**
086         * This artifact is composed of the target artifact. This artifact is constructed with the target artifact as a component. The target artifact is a part of this artifact. (A dataset is composed of data.).
087         */
088        COMPOSEDOF, 
089        /**
090         * This artifact is a part of the target artifact. The target artifact is composed of this artifact (and possibly other artifacts).
091         */
092        PARTOF, 
093        /**
094         * This artifact amends or changes the target artifact. This artifact adds additional information that is functionally expected to replace information in the target artifact. This artifact replaces a part but not all of the target artifact.
095         */
096        AMENDS, 
097        /**
098         * This artifact is amended with or changed by the target artifact. There is information in this artifact that should be functionally replaced with information in the target artifact.
099         */
100        AMENDEDWITH, 
101        /**
102         * This artifact adds additional information to the target artifact. The additional information does not replace or change information in the target artifact.
103         */
104        APPENDS, 
105        /**
106         * This artifact has additional information in the target artifact.
107         */
108        APPENDEDWITH, 
109        /**
110         * This artifact cites the target artifact. This may be a bibliographic citation for papers, references, or other relevant material for the knowledge resource. This is intended to allow for citation of related material, but that was not necessarily specifically prepared in connection with this knowledge resource.
111         */
112        CITES, 
113        /**
114         * This artifact is cited by the target artifact.
115         */
116        CITEDBY, 
117        /**
118         * This artifact contains comments about the target artifact.
119         */
120        COMMENTSON, 
121        /**
122         * This artifact has comments about it in the target artifact.  The type of comments may be expressed in the targetClassifier element such as reply, review, editorial, feedback, solicited, unsolicited, structured, unstructured.
123         */
124        COMMENTIN, 
125        /**
126         * This artifact is a container in which the target artifact is contained. A container is a data structure whose instances are collections of other objects. (A database contains the dataset.).
127         */
128        CONTAINS, 
129        /**
130         * This artifact is contained in the target artifact. The target artifact is a data structure whose instances are collections of other objects.
131         */
132        CONTAINEDIN, 
133        /**
134         * This artifact identifies errors and replacement content for the target artifact.
135         */
136        CORRECTS, 
137        /**
138         * This artifact has corrections to it in the target artifact. The target artifact identifies errors and replacement content for this artifact.
139         */
140        CORRECTIONIN, 
141        /**
142         * This artifact replaces or supersedes the target artifact. The target artifact may be considered deprecated.
143         */
144        REPLACES, 
145        /**
146         * This artifact is replaced with or superseded by the target artifact. This artifact may be considered deprecated.
147         */
148        REPLACEDWITH, 
149        /**
150         * This artifact retracts the target artifact. The content that was published in the target artifact should be considered removed from publication and should no longer be considered part of the public record.
151         */
152        RETRACTS, 
153        /**
154         * This artifact is retracted by the target artifact. The content that was published in this artifact should be considered removed from publication and should no longer be considered part of the public record.
155         */
156        RETRACTEDBY, 
157        /**
158         * This artifact is a signature of the target artifact.
159         */
160        SIGNS, 
161        /**
162         * This artifact has characteristics in common with the target artifact. This relationship may be used in systems to ?deduplicate? knowledge artifacts from different sources, or in systems to show ?similar items?.
163         */
164        SIMILARTO, 
165        /**
166         * This artifact provides additional support for the target artifact. The type of support  is not documentation as it does not describe, explain, or instruct regarding the target artifact.
167         */
168        SUPPORTS, 
169        /**
170         * The target artifact contains additional information related to the knowledge artifact but is not documentation as the additional information does not describe, explain, or instruct regarding the knowledge artifact content or application. This could include an associated dataset.
171         */
172        SUPPORTEDWITH, 
173        /**
174         * This artifact was generated by transforming the target artifact (e.g., format or language conversion). This is intended to capture the relationship in which a particular knowledge resource is based on the content of another artifact, but changes are only apparent in form and there is only one target artifact with the ?transforms? relationship type.
175         */
176        TRANSFORMS, 
177        /**
178         * This artifact was transformed into the target artifact (e.g., by format or language conversion).
179         */
180        TRANSFORMEDINTO, 
181        /**
182         * This artifact was generated by transforming a related artifact (e.g., format or language conversion), noted separately with the ?transforms? relationship type. This transformation used the target artifact to inform the transformation. The target artifact may be a conversion script or translation guide.
183         */
184        TRANSFORMEDWITH, 
185        /**
186         * This artifact provides additional documentation for the target artifact. This could include additional instructions on usage as well as additional information on clinical context or appropriateness.
187         */
188        DOCUMENTS, 
189        /**
190         * The target artifact is a precise description of a concept in this artifact. This may be used when the RelatedArtifact datatype is used in elements contained in this artifact.
191         */
192        SPECIFICATIONOF, 
193        /**
194         * This artifact was created with the target artifact. The target artifact is a tool or support material used in the creation of the artifact, and not content that the artifact was derived from.
195         */
196        CREATEDWITH, 
197        /**
198         * The related artifact is the citation for this artifact.
199         */
200        CITEAS, 
201        /**
202         * A copy of the artifact in a publication with a different artifact identifier.
203         */
204        REPRINT, 
205        /**
206         * The original version of record for which the current artifact is a copy.
207         */
208        REPRINTOF, 
209        /**
210         * added to help the parsers with the generic types
211         */
212        NULL;
213        public static RelatedArtifactTypeExpanded fromCode(String codeString) throws FHIRException {
214            if (codeString == null || "".equals(codeString))
215                return null;
216        if ("documentation".equals(codeString))
217          return DOCUMENTATION;
218        if ("justification".equals(codeString))
219          return JUSTIFICATION;
220        if ("citation".equals(codeString))
221          return CITATION;
222        if ("predecessor".equals(codeString))
223          return PREDECESSOR;
224        if ("successor".equals(codeString))
225          return SUCCESSOR;
226        if ("derived-from".equals(codeString))
227          return DERIVEDFROM;
228        if ("depends-on".equals(codeString))
229          return DEPENDSON;
230        if ("composed-of".equals(codeString))
231          return COMPOSEDOF;
232        if ("part-of".equals(codeString))
233          return PARTOF;
234        if ("amends".equals(codeString))
235          return AMENDS;
236        if ("amended-with".equals(codeString))
237          return AMENDEDWITH;
238        if ("appends".equals(codeString))
239          return APPENDS;
240        if ("appended-with".equals(codeString))
241          return APPENDEDWITH;
242        if ("cites".equals(codeString))
243          return CITES;
244        if ("cited-by".equals(codeString))
245          return CITEDBY;
246        if ("comments-on".equals(codeString))
247          return COMMENTSON;
248        if ("comment-in".equals(codeString))
249          return COMMENTIN;
250        if ("contains".equals(codeString))
251          return CONTAINS;
252        if ("contained-in".equals(codeString))
253          return CONTAINEDIN;
254        if ("corrects".equals(codeString))
255          return CORRECTS;
256        if ("correction-in".equals(codeString))
257          return CORRECTIONIN;
258        if ("replaces".equals(codeString))
259          return REPLACES;
260        if ("replaced-with".equals(codeString))
261          return REPLACEDWITH;
262        if ("retracts".equals(codeString))
263          return RETRACTS;
264        if ("retracted-by".equals(codeString))
265          return RETRACTEDBY;
266        if ("signs".equals(codeString))
267          return SIGNS;
268        if ("similar-to".equals(codeString))
269          return SIMILARTO;
270        if ("supports".equals(codeString))
271          return SUPPORTS;
272        if ("supported-with".equals(codeString))
273          return SUPPORTEDWITH;
274        if ("transforms".equals(codeString))
275          return TRANSFORMS;
276        if ("transformed-into".equals(codeString))
277          return TRANSFORMEDINTO;
278        if ("transformed-with".equals(codeString))
279          return TRANSFORMEDWITH;
280        if ("documents".equals(codeString))
281          return DOCUMENTS;
282        if ("specification-of".equals(codeString))
283          return SPECIFICATIONOF;
284        if ("created-with".equals(codeString))
285          return CREATEDWITH;
286        if ("cite-as".equals(codeString))
287          return CITEAS;
288        if ("reprint".equals(codeString))
289          return REPRINT;
290        if ("reprint-of".equals(codeString))
291          return REPRINTOF;
292        if (Configuration.isAcceptInvalidEnums())
293          return null;
294        else
295          throw new FHIRException("Unknown RelatedArtifactTypeExpanded code '"+codeString+"'");
296        }
297        public String toCode() {
298          switch (this) {
299            case DOCUMENTATION: return "documentation";
300            case JUSTIFICATION: return "justification";
301            case CITATION: return "citation";
302            case PREDECESSOR: return "predecessor";
303            case SUCCESSOR: return "successor";
304            case DERIVEDFROM: return "derived-from";
305            case DEPENDSON: return "depends-on";
306            case COMPOSEDOF: return "composed-of";
307            case PARTOF: return "part-of";
308            case AMENDS: return "amends";
309            case AMENDEDWITH: return "amended-with";
310            case APPENDS: return "appends";
311            case APPENDEDWITH: return "appended-with";
312            case CITES: return "cites";
313            case CITEDBY: return "cited-by";
314            case COMMENTSON: return "comments-on";
315            case COMMENTIN: return "comment-in";
316            case CONTAINS: return "contains";
317            case CONTAINEDIN: return "contained-in";
318            case CORRECTS: return "corrects";
319            case CORRECTIONIN: return "correction-in";
320            case REPLACES: return "replaces";
321            case REPLACEDWITH: return "replaced-with";
322            case RETRACTS: return "retracts";
323            case RETRACTEDBY: return "retracted-by";
324            case SIGNS: return "signs";
325            case SIMILARTO: return "similar-to";
326            case SUPPORTS: return "supports";
327            case SUPPORTEDWITH: return "supported-with";
328            case TRANSFORMS: return "transforms";
329            case TRANSFORMEDINTO: return "transformed-into";
330            case TRANSFORMEDWITH: return "transformed-with";
331            case DOCUMENTS: return "documents";
332            case SPECIFICATIONOF: return "specification-of";
333            case CREATEDWITH: return "created-with";
334            case CITEAS: return "cite-as";
335            case REPRINT: return "reprint";
336            case REPRINTOF: return "reprint-of";
337            case NULL: return null;
338            default: return "?";
339          }
340        }
341        public String getSystem() {
342          switch (this) {
343            case DOCUMENTATION: return "http://hl7.org/fhir/related-artifact-type";
344            case JUSTIFICATION: return "http://hl7.org/fhir/related-artifact-type";
345            case CITATION: return "http://hl7.org/fhir/related-artifact-type";
346            case PREDECESSOR: return "http://hl7.org/fhir/related-artifact-type";
347            case SUCCESSOR: return "http://hl7.org/fhir/related-artifact-type";
348            case DERIVEDFROM: return "http://hl7.org/fhir/related-artifact-type";
349            case DEPENDSON: return "http://hl7.org/fhir/related-artifact-type";
350            case COMPOSEDOF: return "http://hl7.org/fhir/related-artifact-type";
351            case PARTOF: return "http://hl7.org/fhir/related-artifact-type";
352            case AMENDS: return "http://hl7.org/fhir/related-artifact-type";
353            case AMENDEDWITH: return "http://hl7.org/fhir/related-artifact-type";
354            case APPENDS: return "http://hl7.org/fhir/related-artifact-type";
355            case APPENDEDWITH: return "http://hl7.org/fhir/related-artifact-type";
356            case CITES: return "http://hl7.org/fhir/related-artifact-type";
357            case CITEDBY: return "http://hl7.org/fhir/related-artifact-type";
358            case COMMENTSON: return "http://hl7.org/fhir/related-artifact-type";
359            case COMMENTIN: return "http://hl7.org/fhir/related-artifact-type";
360            case CONTAINS: return "http://hl7.org/fhir/related-artifact-type";
361            case CONTAINEDIN: return "http://hl7.org/fhir/related-artifact-type";
362            case CORRECTS: return "http://hl7.org/fhir/related-artifact-type";
363            case CORRECTIONIN: return "http://hl7.org/fhir/related-artifact-type";
364            case REPLACES: return "http://hl7.org/fhir/related-artifact-type";
365            case REPLACEDWITH: return "http://hl7.org/fhir/related-artifact-type";
366            case RETRACTS: return "http://hl7.org/fhir/related-artifact-type";
367            case RETRACTEDBY: return "http://hl7.org/fhir/related-artifact-type";
368            case SIGNS: return "http://hl7.org/fhir/related-artifact-type";
369            case SIMILARTO: return "http://hl7.org/fhir/related-artifact-type";
370            case SUPPORTS: return "http://hl7.org/fhir/related-artifact-type";
371            case SUPPORTEDWITH: return "http://hl7.org/fhir/related-artifact-type";
372            case TRANSFORMS: return "http://hl7.org/fhir/related-artifact-type";
373            case TRANSFORMEDINTO: return "http://hl7.org/fhir/related-artifact-type";
374            case TRANSFORMEDWITH: return "http://hl7.org/fhir/related-artifact-type";
375            case DOCUMENTS: return "http://hl7.org/fhir/related-artifact-type";
376            case SPECIFICATIONOF: return "http://hl7.org/fhir/related-artifact-type";
377            case CREATEDWITH: return "http://hl7.org/fhir/related-artifact-type";
378            case CITEAS: return "http://hl7.org/fhir/related-artifact-type";
379            case REPRINT: return "http://hl7.org/fhir/related-artifact-type-expanded";
380            case REPRINTOF: return "http://hl7.org/fhir/related-artifact-type-expanded";
381            case NULL: return null;
382            default: return "?";
383          }
384        }
385        public String getDefinition() {
386          switch (this) {
387            case DOCUMENTATION: return "Additional documentation for the knowledge resource. This would include additional instructions on usage as well as additional information on clinical context or appropriateness.";
388            case JUSTIFICATION: return "The target artifact is a summary of the justification for the knowledge resource including supporting evidence, relevant guidelines, or other clinically important information. This information is intended to provide a way to make the justification for the knowledge resource available to the consumer of interventions or results produced by the knowledge resource.";
389            case CITATION: return "Bibliographic citation for papers, references, or other relevant material for the knowledge resource. This is intended to allow for citation of related material, but that was not necessarily specifically prepared in connection with this knowledge resource.";
390            case PREDECESSOR: return "The previous version of the knowledge artifact, used to establish an ordering of versions of an artifact, independent of the status of each version.";
391            case SUCCESSOR: return "The subsequent version of the knowledge artfact, used to establish an ordering of versions of an artifact, independent of the status of each version.";
392            case DERIVEDFROM: return "This artifact is derived from the target artifact. This is intended to capture the relationship in which a particular knowledge resource is based on the content of another artifact, but is modified to capture either a different set of overall requirements, or a more specific set of requirements such as those involved in a particular institution or clinical setting. The artifact may be derived from one or more target artifacts.";
393            case DEPENDSON: return "This artifact depends on the target artifact. There is a requirement to use the target artifact in the creation or interpretation of this artifact.";
394            case COMPOSEDOF: return "This artifact is composed of the target artifact. This artifact is constructed with the target artifact as a component. The target artifact is a part of this artifact. (A dataset is composed of data.).";
395            case PARTOF: return "This artifact is a part of the target artifact. The target artifact is composed of this artifact (and possibly other artifacts).";
396            case AMENDS: return "This artifact amends or changes the target artifact. This artifact adds additional information that is functionally expected to replace information in the target artifact. This artifact replaces a part but not all of the target artifact.";
397            case AMENDEDWITH: return "This artifact is amended with or changed by the target artifact. There is information in this artifact that should be functionally replaced with information in the target artifact.";
398            case APPENDS: return "This artifact adds additional information to the target artifact. The additional information does not replace or change information in the target artifact.";
399            case APPENDEDWITH: return "This artifact has additional information in the target artifact.";
400            case CITES: return "This artifact cites the target artifact. This may be a bibliographic citation for papers, references, or other relevant material for the knowledge resource. This is intended to allow for citation of related material, but that was not necessarily specifically prepared in connection with this knowledge resource.";
401            case CITEDBY: return "This artifact is cited by the target artifact.";
402            case COMMENTSON: return "This artifact contains comments about the target artifact.";
403            case COMMENTIN: return "This artifact has comments about it in the target artifact.  The type of comments may be expressed in the targetClassifier element such as reply, review, editorial, feedback, solicited, unsolicited, structured, unstructured.";
404            case CONTAINS: return "This artifact is a container in which the target artifact is contained. A container is a data structure whose instances are collections of other objects. (A database contains the dataset.).";
405            case CONTAINEDIN: return "This artifact is contained in the target artifact. The target artifact is a data structure whose instances are collections of other objects.";
406            case CORRECTS: return "This artifact identifies errors and replacement content for the target artifact.";
407            case CORRECTIONIN: return "This artifact has corrections to it in the target artifact. The target artifact identifies errors and replacement content for this artifact.";
408            case REPLACES: return "This artifact replaces or supersedes the target artifact. The target artifact may be considered deprecated.";
409            case REPLACEDWITH: return "This artifact is replaced with or superseded by the target artifact. This artifact may be considered deprecated.";
410            case RETRACTS: return "This artifact retracts the target artifact. The content that was published in the target artifact should be considered removed from publication and should no longer be considered part of the public record.";
411            case RETRACTEDBY: return "This artifact is retracted by the target artifact. The content that was published in this artifact should be considered removed from publication and should no longer be considered part of the public record.";
412            case SIGNS: return "This artifact is a signature of the target artifact.";
413            case SIMILARTO: return "This artifact has characteristics in common with the target artifact. This relationship may be used in systems to ?deduplicate? knowledge artifacts from different sources, or in systems to show ?similar items?.";
414            case SUPPORTS: return "This artifact provides additional support for the target artifact. The type of support  is not documentation as it does not describe, explain, or instruct regarding the target artifact.";
415            case SUPPORTEDWITH: return "The target artifact contains additional information related to the knowledge artifact but is not documentation as the additional information does not describe, explain, or instruct regarding the knowledge artifact content or application. This could include an associated dataset.";
416            case TRANSFORMS: return "This artifact was generated by transforming the target artifact (e.g., format or language conversion). This is intended to capture the relationship in which a particular knowledge resource is based on the content of another artifact, but changes are only apparent in form and there is only one target artifact with the ?transforms? relationship type.";
417            case TRANSFORMEDINTO: return "This artifact was transformed into the target artifact (e.g., by format or language conversion).";
418            case TRANSFORMEDWITH: return "This artifact was generated by transforming a related artifact (e.g., format or language conversion), noted separately with the ?transforms? relationship type. This transformation used the target artifact to inform the transformation. The target artifact may be a conversion script or translation guide.";
419            case DOCUMENTS: return "This artifact provides additional documentation for the target artifact. This could include additional instructions on usage as well as additional information on clinical context or appropriateness.";
420            case SPECIFICATIONOF: return "The target artifact is a precise description of a concept in this artifact. This may be used when the RelatedArtifact datatype is used in elements contained in this artifact.";
421            case CREATEDWITH: return "This artifact was created with the target artifact. The target artifact is a tool or support material used in the creation of the artifact, and not content that the artifact was derived from.";
422            case CITEAS: return "The related artifact is the citation for this artifact.";
423            case REPRINT: return "A copy of the artifact in a publication with a different artifact identifier.";
424            case REPRINTOF: return "The original version of record for which the current artifact is a copy.";
425            case NULL: return null;
426            default: return "?";
427          }
428        }
429        public String getDisplay() {
430          switch (this) {
431            case DOCUMENTATION: return "Documentation";
432            case JUSTIFICATION: return "Justification";
433            case CITATION: return "Citation";
434            case PREDECESSOR: return "Predecessor";
435            case SUCCESSOR: return "Successor";
436            case DERIVEDFROM: return "Derived From";
437            case DEPENDSON: return "Depends On";
438            case COMPOSEDOF: return "Composed Of";
439            case PARTOF: return "Part Of";
440            case AMENDS: return "Amends";
441            case AMENDEDWITH: return "Amended With";
442            case APPENDS: return "Appends";
443            case APPENDEDWITH: return "Appended With";
444            case CITES: return "Cites";
445            case CITEDBY: return "Cited By";
446            case COMMENTSON: return "Is Comment On";
447            case COMMENTIN: return "Has Comment In";
448            case CONTAINS: return "Contains";
449            case CONTAINEDIN: return "Contained In";
450            case CORRECTS: return "Corrects";
451            case CORRECTIONIN: return "Correction In";
452            case REPLACES: return "Replaces";
453            case REPLACEDWITH: return "Replaced With";
454            case RETRACTS: return "Retracts";
455            case RETRACTEDBY: return "Retracted By";
456            case SIGNS: return "Signs";
457            case SIMILARTO: return "Similar To";
458            case SUPPORTS: return "Supports";
459            case SUPPORTEDWITH: return "Supported With";
460            case TRANSFORMS: return "Transforms";
461            case TRANSFORMEDINTO: return "Transformed Into";
462            case TRANSFORMEDWITH: return "Transformed With";
463            case DOCUMENTS: return "Documents";
464            case SPECIFICATIONOF: return "Specification Of";
465            case CREATEDWITH: return "Created With";
466            case CITEAS: return "Cite As";
467            case REPRINT: return "Reprint";
468            case REPRINTOF: return "Reprint Of";
469            case NULL: return null;
470            default: return "?";
471          }
472        }
473    }
474
475  public static class RelatedArtifactTypeExpandedEnumFactory implements EnumFactory<RelatedArtifactTypeExpanded> {
476    public RelatedArtifactTypeExpanded fromCode(String codeString) throws IllegalArgumentException {
477      if (codeString == null || "".equals(codeString))
478            if (codeString == null || "".equals(codeString))
479                return null;
480        if ("documentation".equals(codeString))
481          return RelatedArtifactTypeExpanded.DOCUMENTATION;
482        if ("justification".equals(codeString))
483          return RelatedArtifactTypeExpanded.JUSTIFICATION;
484        if ("citation".equals(codeString))
485          return RelatedArtifactTypeExpanded.CITATION;
486        if ("predecessor".equals(codeString))
487          return RelatedArtifactTypeExpanded.PREDECESSOR;
488        if ("successor".equals(codeString))
489          return RelatedArtifactTypeExpanded.SUCCESSOR;
490        if ("derived-from".equals(codeString))
491          return RelatedArtifactTypeExpanded.DERIVEDFROM;
492        if ("depends-on".equals(codeString))
493          return RelatedArtifactTypeExpanded.DEPENDSON;
494        if ("composed-of".equals(codeString))
495          return RelatedArtifactTypeExpanded.COMPOSEDOF;
496        if ("part-of".equals(codeString))
497          return RelatedArtifactTypeExpanded.PARTOF;
498        if ("amends".equals(codeString))
499          return RelatedArtifactTypeExpanded.AMENDS;
500        if ("amended-with".equals(codeString))
501          return RelatedArtifactTypeExpanded.AMENDEDWITH;
502        if ("appends".equals(codeString))
503          return RelatedArtifactTypeExpanded.APPENDS;
504        if ("appended-with".equals(codeString))
505          return RelatedArtifactTypeExpanded.APPENDEDWITH;
506        if ("cites".equals(codeString))
507          return RelatedArtifactTypeExpanded.CITES;
508        if ("cited-by".equals(codeString))
509          return RelatedArtifactTypeExpanded.CITEDBY;
510        if ("comments-on".equals(codeString))
511          return RelatedArtifactTypeExpanded.COMMENTSON;
512        if ("comment-in".equals(codeString))
513          return RelatedArtifactTypeExpanded.COMMENTIN;
514        if ("contains".equals(codeString))
515          return RelatedArtifactTypeExpanded.CONTAINS;
516        if ("contained-in".equals(codeString))
517          return RelatedArtifactTypeExpanded.CONTAINEDIN;
518        if ("corrects".equals(codeString))
519          return RelatedArtifactTypeExpanded.CORRECTS;
520        if ("correction-in".equals(codeString))
521          return RelatedArtifactTypeExpanded.CORRECTIONIN;
522        if ("replaces".equals(codeString))
523          return RelatedArtifactTypeExpanded.REPLACES;
524        if ("replaced-with".equals(codeString))
525          return RelatedArtifactTypeExpanded.REPLACEDWITH;
526        if ("retracts".equals(codeString))
527          return RelatedArtifactTypeExpanded.RETRACTS;
528        if ("retracted-by".equals(codeString))
529          return RelatedArtifactTypeExpanded.RETRACTEDBY;
530        if ("signs".equals(codeString))
531          return RelatedArtifactTypeExpanded.SIGNS;
532        if ("similar-to".equals(codeString))
533          return RelatedArtifactTypeExpanded.SIMILARTO;
534        if ("supports".equals(codeString))
535          return RelatedArtifactTypeExpanded.SUPPORTS;
536        if ("supported-with".equals(codeString))
537          return RelatedArtifactTypeExpanded.SUPPORTEDWITH;
538        if ("transforms".equals(codeString))
539          return RelatedArtifactTypeExpanded.TRANSFORMS;
540        if ("transformed-into".equals(codeString))
541          return RelatedArtifactTypeExpanded.TRANSFORMEDINTO;
542        if ("transformed-with".equals(codeString))
543          return RelatedArtifactTypeExpanded.TRANSFORMEDWITH;
544        if ("documents".equals(codeString))
545          return RelatedArtifactTypeExpanded.DOCUMENTS;
546        if ("specification-of".equals(codeString))
547          return RelatedArtifactTypeExpanded.SPECIFICATIONOF;
548        if ("created-with".equals(codeString))
549          return RelatedArtifactTypeExpanded.CREATEDWITH;
550        if ("cite-as".equals(codeString))
551          return RelatedArtifactTypeExpanded.CITEAS;
552        if ("reprint".equals(codeString))
553          return RelatedArtifactTypeExpanded.REPRINT;
554        if ("reprint-of".equals(codeString))
555          return RelatedArtifactTypeExpanded.REPRINTOF;
556        throw new IllegalArgumentException("Unknown RelatedArtifactTypeExpanded code '"+codeString+"'");
557        }
558        public Enumeration<RelatedArtifactTypeExpanded> fromType(PrimitiveType<?> code) throws FHIRException {
559          if (code == null)
560            return null;
561          if (code.isEmpty())
562            return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.NULL, code);
563          String codeString = ((PrimitiveType) code).asStringValue();
564          if (codeString == null || "".equals(codeString))
565            return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.NULL, code);
566        if ("documentation".equals(codeString))
567          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.DOCUMENTATION, code);
568        if ("justification".equals(codeString))
569          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.JUSTIFICATION, code);
570        if ("citation".equals(codeString))
571          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.CITATION, code);
572        if ("predecessor".equals(codeString))
573          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.PREDECESSOR, code);
574        if ("successor".equals(codeString))
575          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.SUCCESSOR, code);
576        if ("derived-from".equals(codeString))
577          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.DERIVEDFROM, code);
578        if ("depends-on".equals(codeString))
579          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.DEPENDSON, code);
580        if ("composed-of".equals(codeString))
581          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.COMPOSEDOF, code);
582        if ("part-of".equals(codeString))
583          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.PARTOF, code);
584        if ("amends".equals(codeString))
585          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.AMENDS, code);
586        if ("amended-with".equals(codeString))
587          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.AMENDEDWITH, code);
588        if ("appends".equals(codeString))
589          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.APPENDS, code);
590        if ("appended-with".equals(codeString))
591          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.APPENDEDWITH, code);
592        if ("cites".equals(codeString))
593          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.CITES, code);
594        if ("cited-by".equals(codeString))
595          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.CITEDBY, code);
596        if ("comments-on".equals(codeString))
597          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.COMMENTSON, code);
598        if ("comment-in".equals(codeString))
599          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.COMMENTIN, code);
600        if ("contains".equals(codeString))
601          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.CONTAINS, code);
602        if ("contained-in".equals(codeString))
603          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.CONTAINEDIN, code);
604        if ("corrects".equals(codeString))
605          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.CORRECTS, code);
606        if ("correction-in".equals(codeString))
607          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.CORRECTIONIN, code);
608        if ("replaces".equals(codeString))
609          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.REPLACES, code);
610        if ("replaced-with".equals(codeString))
611          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.REPLACEDWITH, code);
612        if ("retracts".equals(codeString))
613          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.RETRACTS, code);
614        if ("retracted-by".equals(codeString))
615          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.RETRACTEDBY, code);
616        if ("signs".equals(codeString))
617          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.SIGNS, code);
618        if ("similar-to".equals(codeString))
619          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.SIMILARTO, code);
620        if ("supports".equals(codeString))
621          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.SUPPORTS, code);
622        if ("supported-with".equals(codeString))
623          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.SUPPORTEDWITH, code);
624        if ("transforms".equals(codeString))
625          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.TRANSFORMS, code);
626        if ("transformed-into".equals(codeString))
627          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.TRANSFORMEDINTO, code);
628        if ("transformed-with".equals(codeString))
629          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.TRANSFORMEDWITH, code);
630        if ("documents".equals(codeString))
631          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.DOCUMENTS, code);
632        if ("specification-of".equals(codeString))
633          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.SPECIFICATIONOF, code);
634        if ("created-with".equals(codeString))
635          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.CREATEDWITH, code);
636        if ("cite-as".equals(codeString))
637          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.CITEAS, code);
638        if ("reprint".equals(codeString))
639          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.REPRINT, code);
640        if ("reprint-of".equals(codeString))
641          return new Enumeration<RelatedArtifactTypeExpanded>(this, RelatedArtifactTypeExpanded.REPRINTOF, code);
642        throw new FHIRException("Unknown RelatedArtifactTypeExpanded code '"+codeString+"'");
643        }
644    public String toCode(RelatedArtifactTypeExpanded code) {
645      if (code == RelatedArtifactTypeExpanded.DOCUMENTATION)
646        return "documentation";
647      if (code == RelatedArtifactTypeExpanded.JUSTIFICATION)
648        return "justification";
649      if (code == RelatedArtifactTypeExpanded.CITATION)
650        return "citation";
651      if (code == RelatedArtifactTypeExpanded.PREDECESSOR)
652        return "predecessor";
653      if (code == RelatedArtifactTypeExpanded.SUCCESSOR)
654        return "successor";
655      if (code == RelatedArtifactTypeExpanded.DERIVEDFROM)
656        return "derived-from";
657      if (code == RelatedArtifactTypeExpanded.DEPENDSON)
658        return "depends-on";
659      if (code == RelatedArtifactTypeExpanded.COMPOSEDOF)
660        return "composed-of";
661      if (code == RelatedArtifactTypeExpanded.PARTOF)
662        return "part-of";
663      if (code == RelatedArtifactTypeExpanded.AMENDS)
664        return "amends";
665      if (code == RelatedArtifactTypeExpanded.AMENDEDWITH)
666        return "amended-with";
667      if (code == RelatedArtifactTypeExpanded.APPENDS)
668        return "appends";
669      if (code == RelatedArtifactTypeExpanded.APPENDEDWITH)
670        return "appended-with";
671      if (code == RelatedArtifactTypeExpanded.CITES)
672        return "cites";
673      if (code == RelatedArtifactTypeExpanded.CITEDBY)
674        return "cited-by";
675      if (code == RelatedArtifactTypeExpanded.COMMENTSON)
676        return "comments-on";
677      if (code == RelatedArtifactTypeExpanded.COMMENTIN)
678        return "comment-in";
679      if (code == RelatedArtifactTypeExpanded.CONTAINS)
680        return "contains";
681      if (code == RelatedArtifactTypeExpanded.CONTAINEDIN)
682        return "contained-in";
683      if (code == RelatedArtifactTypeExpanded.CORRECTS)
684        return "corrects";
685      if (code == RelatedArtifactTypeExpanded.CORRECTIONIN)
686        return "correction-in";
687      if (code == RelatedArtifactTypeExpanded.REPLACES)
688        return "replaces";
689      if (code == RelatedArtifactTypeExpanded.REPLACEDWITH)
690        return "replaced-with";
691      if (code == RelatedArtifactTypeExpanded.RETRACTS)
692        return "retracts";
693      if (code == RelatedArtifactTypeExpanded.RETRACTEDBY)
694        return "retracted-by";
695      if (code == RelatedArtifactTypeExpanded.SIGNS)
696        return "signs";
697      if (code == RelatedArtifactTypeExpanded.SIMILARTO)
698        return "similar-to";
699      if (code == RelatedArtifactTypeExpanded.SUPPORTS)
700        return "supports";
701      if (code == RelatedArtifactTypeExpanded.SUPPORTEDWITH)
702        return "supported-with";
703      if (code == RelatedArtifactTypeExpanded.TRANSFORMS)
704        return "transforms";
705      if (code == RelatedArtifactTypeExpanded.TRANSFORMEDINTO)
706        return "transformed-into";
707      if (code == RelatedArtifactTypeExpanded.TRANSFORMEDWITH)
708        return "transformed-with";
709      if (code == RelatedArtifactTypeExpanded.DOCUMENTS)
710        return "documents";
711      if (code == RelatedArtifactTypeExpanded.SPECIFICATIONOF)
712        return "specification-of";
713      if (code == RelatedArtifactTypeExpanded.CREATEDWITH)
714        return "created-with";
715      if (code == RelatedArtifactTypeExpanded.CITEAS)
716        return "cite-as";
717      if (code == RelatedArtifactTypeExpanded.REPRINT)
718        return "reprint";
719      if (code == RelatedArtifactTypeExpanded.REPRINTOF)
720        return "reprint-of";
721      return "?";
722      }
723    public String toSystem(RelatedArtifactTypeExpanded code) {
724      return code.getSystem();
725      }
726    }
727
728    @Block()
729    public static class CitationSummaryComponent extends BackboneElement implements IBaseBackboneElement {
730        /**
731         * Format for display of the citation summary.
732         */
733        @Child(name = "style", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
734        @Description(shortDefinition="Format for display of the citation summary", formalDefinition="Format for display of the citation summary." )
735        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/citation-summary-style")
736        protected CodeableConcept style;
737
738        /**
739         * The human-readable display of the citation summary.
740         */
741        @Child(name = "text", type = {MarkdownType.class}, order=2, min=1, max=1, modifier=false, summary=true)
742        @Description(shortDefinition="The human-readable display of the citation summary", formalDefinition="The human-readable display of the citation summary." )
743        protected MarkdownType text;
744
745        private static final long serialVersionUID = 123416446L;
746
747    /**
748     * Constructor
749     */
750      public CitationSummaryComponent() {
751        super();
752      }
753
754    /**
755     * Constructor
756     */
757      public CitationSummaryComponent(String text) {
758        super();
759        this.setText(text);
760      }
761
762        /**
763         * @return {@link #style} (Format for display of the citation summary.)
764         */
765        public CodeableConcept getStyle() { 
766          if (this.style == null)
767            if (Configuration.errorOnAutoCreate())
768              throw new Error("Attempt to auto-create CitationSummaryComponent.style");
769            else if (Configuration.doAutoCreate())
770              this.style = new CodeableConcept(); // cc
771          return this.style;
772        }
773
774        public boolean hasStyle() { 
775          return this.style != null && !this.style.isEmpty();
776        }
777
778        /**
779         * @param value {@link #style} (Format for display of the citation summary.)
780         */
781        public CitationSummaryComponent setStyle(CodeableConcept value) { 
782          this.style = value;
783          return this;
784        }
785
786        /**
787         * @return {@link #text} (The human-readable display of the citation summary.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
788         */
789        public MarkdownType getTextElement() { 
790          if (this.text == null)
791            if (Configuration.errorOnAutoCreate())
792              throw new Error("Attempt to auto-create CitationSummaryComponent.text");
793            else if (Configuration.doAutoCreate())
794              this.text = new MarkdownType(); // bb
795          return this.text;
796        }
797
798        public boolean hasTextElement() { 
799          return this.text != null && !this.text.isEmpty();
800        }
801
802        public boolean hasText() { 
803          return this.text != null && !this.text.isEmpty();
804        }
805
806        /**
807         * @param value {@link #text} (The human-readable display of the citation summary.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
808         */
809        public CitationSummaryComponent setTextElement(MarkdownType value) { 
810          this.text = value;
811          return this;
812        }
813
814        /**
815         * @return The human-readable display of the citation summary.
816         */
817        public String getText() { 
818          return this.text == null ? null : this.text.getValue();
819        }
820
821        /**
822         * @param value The human-readable display of the citation summary.
823         */
824        public CitationSummaryComponent setText(String value) { 
825            if (this.text == null)
826              this.text = new MarkdownType();
827            this.text.setValue(value);
828          return this;
829        }
830
831        protected void listChildren(List<Property> children) {
832          super.listChildren(children);
833          children.add(new Property("style", "CodeableConcept", "Format for display of the citation summary.", 0, 1, style));
834          children.add(new Property("text", "markdown", "The human-readable display of the citation summary.", 0, 1, text));
835        }
836
837        @Override
838        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
839          switch (_hash) {
840          case 109780401: /*style*/  return new Property("style", "CodeableConcept", "Format for display of the citation summary.", 0, 1, style);
841          case 3556653: /*text*/  return new Property("text", "markdown", "The human-readable display of the citation summary.", 0, 1, text);
842          default: return super.getNamedProperty(_hash, _name, _checkValid);
843          }
844
845        }
846
847      @Override
848      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
849        switch (hash) {
850        case 109780401: /*style*/ return this.style == null ? new Base[0] : new Base[] {this.style}; // CodeableConcept
851        case 3556653: /*text*/ return this.text == null ? new Base[0] : new Base[] {this.text}; // MarkdownType
852        default: return super.getProperty(hash, name, checkValid);
853        }
854
855      }
856
857      @Override
858      public Base setProperty(int hash, String name, Base value) throws FHIRException {
859        switch (hash) {
860        case 109780401: // style
861          this.style = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
862          return value;
863        case 3556653: // text
864          this.text = TypeConvertor.castToMarkdown(value); // MarkdownType
865          return value;
866        default: return super.setProperty(hash, name, value);
867        }
868
869      }
870
871      @Override
872      public Base setProperty(String name, Base value) throws FHIRException {
873        if (name.equals("style")) {
874          this.style = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
875        } else if (name.equals("text")) {
876          this.text = TypeConvertor.castToMarkdown(value); // MarkdownType
877        } else
878          return super.setProperty(name, value);
879        return value;
880      }
881
882  @Override
883  public void removeChild(String name, Base value) throws FHIRException {
884        if (name.equals("style")) {
885          this.style = null;
886        } else if (name.equals("text")) {
887          this.text = null;
888        } else
889          super.removeChild(name, value);
890        
891      }
892
893      @Override
894      public Base makeProperty(int hash, String name) throws FHIRException {
895        switch (hash) {
896        case 109780401:  return getStyle();
897        case 3556653:  return getTextElement();
898        default: return super.makeProperty(hash, name);
899        }
900
901      }
902
903      @Override
904      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
905        switch (hash) {
906        case 109780401: /*style*/ return new String[] {"CodeableConcept"};
907        case 3556653: /*text*/ return new String[] {"markdown"};
908        default: return super.getTypesForProperty(hash, name);
909        }
910
911      }
912
913      @Override
914      public Base addChild(String name) throws FHIRException {
915        if (name.equals("style")) {
916          this.style = new CodeableConcept();
917          return this.style;
918        }
919        else if (name.equals("text")) {
920          throw new FHIRException("Cannot call addChild on a singleton property Citation.summary.text");
921        }
922        else
923          return super.addChild(name);
924      }
925
926      public CitationSummaryComponent copy() {
927        CitationSummaryComponent dst = new CitationSummaryComponent();
928        copyValues(dst);
929        return dst;
930      }
931
932      public void copyValues(CitationSummaryComponent dst) {
933        super.copyValues(dst);
934        dst.style = style == null ? null : style.copy();
935        dst.text = text == null ? null : text.copy();
936      }
937
938      @Override
939      public boolean equalsDeep(Base other_) {
940        if (!super.equalsDeep(other_))
941          return false;
942        if (!(other_ instanceof CitationSummaryComponent))
943          return false;
944        CitationSummaryComponent o = (CitationSummaryComponent) other_;
945        return compareDeep(style, o.style, true) && compareDeep(text, o.text, true);
946      }
947
948      @Override
949      public boolean equalsShallow(Base other_) {
950        if (!super.equalsShallow(other_))
951          return false;
952        if (!(other_ instanceof CitationSummaryComponent))
953          return false;
954        CitationSummaryComponent o = (CitationSummaryComponent) other_;
955        return compareValues(text, o.text, true);
956      }
957
958      public boolean isEmpty() {
959        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(style, text);
960      }
961
962  public String fhirType() {
963    return "Citation.summary";
964
965  }
966
967  }
968
969    @Block()
970    public static class CitationClassificationComponent extends BackboneElement implements IBaseBackboneElement {
971        /**
972         * The kind of classifier (e.g. publication type, keyword).
973         */
974        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
975        @Description(shortDefinition="The kind of classifier (e.g. publication type, keyword)", formalDefinition="The kind of classifier (e.g. publication type, keyword)." )
976        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/citation-classification-type")
977        protected CodeableConcept type;
978
979        /**
980         * The specific classification value.
981         */
982        @Child(name = "classifier", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
983        @Description(shortDefinition="The specific classification value", formalDefinition="The specific classification value." )
984        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/citation-artifact-classifier")
985        protected List<CodeableConcept> classifier;
986
987        private static final long serialVersionUID = -283121869L;
988
989    /**
990     * Constructor
991     */
992      public CitationClassificationComponent() {
993        super();
994      }
995
996        /**
997         * @return {@link #type} (The kind of classifier (e.g. publication type, keyword).)
998         */
999        public CodeableConcept getType() { 
1000          if (this.type == null)
1001            if (Configuration.errorOnAutoCreate())
1002              throw new Error("Attempt to auto-create CitationClassificationComponent.type");
1003            else if (Configuration.doAutoCreate())
1004              this.type = new CodeableConcept(); // cc
1005          return this.type;
1006        }
1007
1008        public boolean hasType() { 
1009          return this.type != null && !this.type.isEmpty();
1010        }
1011
1012        /**
1013         * @param value {@link #type} (The kind of classifier (e.g. publication type, keyword).)
1014         */
1015        public CitationClassificationComponent setType(CodeableConcept value) { 
1016          this.type = value;
1017          return this;
1018        }
1019
1020        /**
1021         * @return {@link #classifier} (The specific classification value.)
1022         */
1023        public List<CodeableConcept> getClassifier() { 
1024          if (this.classifier == null)
1025            this.classifier = new ArrayList<CodeableConcept>();
1026          return this.classifier;
1027        }
1028
1029        /**
1030         * @return Returns a reference to <code>this</code> for easy method chaining
1031         */
1032        public CitationClassificationComponent setClassifier(List<CodeableConcept> theClassifier) { 
1033          this.classifier = theClassifier;
1034          return this;
1035        }
1036
1037        public boolean hasClassifier() { 
1038          if (this.classifier == null)
1039            return false;
1040          for (CodeableConcept item : this.classifier)
1041            if (!item.isEmpty())
1042              return true;
1043          return false;
1044        }
1045
1046        public CodeableConcept addClassifier() { //3
1047          CodeableConcept t = new CodeableConcept();
1048          if (this.classifier == null)
1049            this.classifier = new ArrayList<CodeableConcept>();
1050          this.classifier.add(t);
1051          return t;
1052        }
1053
1054        public CitationClassificationComponent addClassifier(CodeableConcept t) { //3
1055          if (t == null)
1056            return this;
1057          if (this.classifier == null)
1058            this.classifier = new ArrayList<CodeableConcept>();
1059          this.classifier.add(t);
1060          return this;
1061        }
1062
1063        /**
1064         * @return The first repetition of repeating field {@link #classifier}, creating it if it does not already exist {3}
1065         */
1066        public CodeableConcept getClassifierFirstRep() { 
1067          if (getClassifier().isEmpty()) {
1068            addClassifier();
1069          }
1070          return getClassifier().get(0);
1071        }
1072
1073        protected void listChildren(List<Property> children) {
1074          super.listChildren(children);
1075          children.add(new Property("type", "CodeableConcept", "The kind of classifier (e.g. publication type, keyword).", 0, 1, type));
1076          children.add(new Property("classifier", "CodeableConcept", "The specific classification value.", 0, java.lang.Integer.MAX_VALUE, classifier));
1077        }
1078
1079        @Override
1080        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1081          switch (_hash) {
1082          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "The kind of classifier (e.g. publication type, keyword).", 0, 1, type);
1083          case -281470431: /*classifier*/  return new Property("classifier", "CodeableConcept", "The specific classification value.", 0, java.lang.Integer.MAX_VALUE, classifier);
1084          default: return super.getNamedProperty(_hash, _name, _checkValid);
1085          }
1086
1087        }
1088
1089      @Override
1090      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1091        switch (hash) {
1092        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
1093        case -281470431: /*classifier*/ return this.classifier == null ? new Base[0] : this.classifier.toArray(new Base[this.classifier.size()]); // CodeableConcept
1094        default: return super.getProperty(hash, name, checkValid);
1095        }
1096
1097      }
1098
1099      @Override
1100      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1101        switch (hash) {
1102        case 3575610: // type
1103          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1104          return value;
1105        case -281470431: // classifier
1106          this.getClassifier().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1107          return value;
1108        default: return super.setProperty(hash, name, value);
1109        }
1110
1111      }
1112
1113      @Override
1114      public Base setProperty(String name, Base value) throws FHIRException {
1115        if (name.equals("type")) {
1116          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1117        } else if (name.equals("classifier")) {
1118          this.getClassifier().add(TypeConvertor.castToCodeableConcept(value));
1119        } else
1120          return super.setProperty(name, value);
1121        return value;
1122      }
1123
1124  @Override
1125  public void removeChild(String name, Base value) throws FHIRException {
1126        if (name.equals("type")) {
1127          this.type = null;
1128        } else if (name.equals("classifier")) {
1129          this.getClassifier().remove(value);
1130        } else
1131          super.removeChild(name, value);
1132        
1133      }
1134
1135      @Override
1136      public Base makeProperty(int hash, String name) throws FHIRException {
1137        switch (hash) {
1138        case 3575610:  return getType();
1139        case -281470431:  return addClassifier(); 
1140        default: return super.makeProperty(hash, name);
1141        }
1142
1143      }
1144
1145      @Override
1146      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1147        switch (hash) {
1148        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
1149        case -281470431: /*classifier*/ return new String[] {"CodeableConcept"};
1150        default: return super.getTypesForProperty(hash, name);
1151        }
1152
1153      }
1154
1155      @Override
1156      public Base addChild(String name) throws FHIRException {
1157        if (name.equals("type")) {
1158          this.type = new CodeableConcept();
1159          return this.type;
1160        }
1161        else if (name.equals("classifier")) {
1162          return addClassifier();
1163        }
1164        else
1165          return super.addChild(name);
1166      }
1167
1168      public CitationClassificationComponent copy() {
1169        CitationClassificationComponent dst = new CitationClassificationComponent();
1170        copyValues(dst);
1171        return dst;
1172      }
1173
1174      public void copyValues(CitationClassificationComponent dst) {
1175        super.copyValues(dst);
1176        dst.type = type == null ? null : type.copy();
1177        if (classifier != null) {
1178          dst.classifier = new ArrayList<CodeableConcept>();
1179          for (CodeableConcept i : classifier)
1180            dst.classifier.add(i.copy());
1181        };
1182      }
1183
1184      @Override
1185      public boolean equalsDeep(Base other_) {
1186        if (!super.equalsDeep(other_))
1187          return false;
1188        if (!(other_ instanceof CitationClassificationComponent))
1189          return false;
1190        CitationClassificationComponent o = (CitationClassificationComponent) other_;
1191        return compareDeep(type, o.type, true) && compareDeep(classifier, o.classifier, true);
1192      }
1193
1194      @Override
1195      public boolean equalsShallow(Base other_) {
1196        if (!super.equalsShallow(other_))
1197          return false;
1198        if (!(other_ instanceof CitationClassificationComponent))
1199          return false;
1200        CitationClassificationComponent o = (CitationClassificationComponent) other_;
1201        return true;
1202      }
1203
1204      public boolean isEmpty() {
1205        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, classifier);
1206      }
1207
1208  public String fhirType() {
1209    return "Citation.classification";
1210
1211  }
1212
1213  }
1214
1215    @Block()
1216    public static class CitationStatusDateComponent extends BackboneElement implements IBaseBackboneElement {
1217        /**
1218         * The state or status of the citation record (that will be paired with the period).
1219         */
1220        @Child(name = "activity", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
1221        @Description(shortDefinition="Classification of the status", formalDefinition="The state or status of the citation record (that will be paired with the period)." )
1222        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/citation-status-type")
1223        protected CodeableConcept activity;
1224
1225        /**
1226         * Whether the status date is actual (has occurred) or expected (estimated or anticipated).
1227         */
1228        @Child(name = "actual", type = {BooleanType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1229        @Description(shortDefinition="Either occurred or expected", formalDefinition="Whether the status date is actual (has occurred) or expected (estimated or anticipated)." )
1230        protected BooleanType actual;
1231
1232        /**
1233         * When the status started and/or ended.
1234         */
1235        @Child(name = "period", type = {Period.class}, order=3, min=1, max=1, modifier=false, summary=false)
1236        @Description(shortDefinition="When the status started and/or ended", formalDefinition="When the status started and/or ended." )
1237        protected Period period;
1238
1239        private static final long serialVersionUID = 1123586924L;
1240
1241    /**
1242     * Constructor
1243     */
1244      public CitationStatusDateComponent() {
1245        super();
1246      }
1247
1248    /**
1249     * Constructor
1250     */
1251      public CitationStatusDateComponent(CodeableConcept activity, Period period) {
1252        super();
1253        this.setActivity(activity);
1254        this.setPeriod(period);
1255      }
1256
1257        /**
1258         * @return {@link #activity} (The state or status of the citation record (that will be paired with the period).)
1259         */
1260        public CodeableConcept getActivity() { 
1261          if (this.activity == null)
1262            if (Configuration.errorOnAutoCreate())
1263              throw new Error("Attempt to auto-create CitationStatusDateComponent.activity");
1264            else if (Configuration.doAutoCreate())
1265              this.activity = new CodeableConcept(); // cc
1266          return this.activity;
1267        }
1268
1269        public boolean hasActivity() { 
1270          return this.activity != null && !this.activity.isEmpty();
1271        }
1272
1273        /**
1274         * @param value {@link #activity} (The state or status of the citation record (that will be paired with the period).)
1275         */
1276        public CitationStatusDateComponent setActivity(CodeableConcept value) { 
1277          this.activity = value;
1278          return this;
1279        }
1280
1281        /**
1282         * @return {@link #actual} (Whether the status date is actual (has occurred) or expected (estimated or anticipated).). This is the underlying object with id, value and extensions. The accessor "getActual" gives direct access to the value
1283         */
1284        public BooleanType getActualElement() { 
1285          if (this.actual == null)
1286            if (Configuration.errorOnAutoCreate())
1287              throw new Error("Attempt to auto-create CitationStatusDateComponent.actual");
1288            else if (Configuration.doAutoCreate())
1289              this.actual = new BooleanType(); // bb
1290          return this.actual;
1291        }
1292
1293        public boolean hasActualElement() { 
1294          return this.actual != null && !this.actual.isEmpty();
1295        }
1296
1297        public boolean hasActual() { 
1298          return this.actual != null && !this.actual.isEmpty();
1299        }
1300
1301        /**
1302         * @param value {@link #actual} (Whether the status date is actual (has occurred) or expected (estimated or anticipated).). This is the underlying object with id, value and extensions. The accessor "getActual" gives direct access to the value
1303         */
1304        public CitationStatusDateComponent setActualElement(BooleanType value) { 
1305          this.actual = value;
1306          return this;
1307        }
1308
1309        /**
1310         * @return Whether the status date is actual (has occurred) or expected (estimated or anticipated).
1311         */
1312        public boolean getActual() { 
1313          return this.actual == null || this.actual.isEmpty() ? false : this.actual.getValue();
1314        }
1315
1316        /**
1317         * @param value Whether the status date is actual (has occurred) or expected (estimated or anticipated).
1318         */
1319        public CitationStatusDateComponent setActual(boolean value) { 
1320            if (this.actual == null)
1321              this.actual = new BooleanType();
1322            this.actual.setValue(value);
1323          return this;
1324        }
1325
1326        /**
1327         * @return {@link #period} (When the status started and/or ended.)
1328         */
1329        public Period getPeriod() { 
1330          if (this.period == null)
1331            if (Configuration.errorOnAutoCreate())
1332              throw new Error("Attempt to auto-create CitationStatusDateComponent.period");
1333            else if (Configuration.doAutoCreate())
1334              this.period = new Period(); // cc
1335          return this.period;
1336        }
1337
1338        public boolean hasPeriod() { 
1339          return this.period != null && !this.period.isEmpty();
1340        }
1341
1342        /**
1343         * @param value {@link #period} (When the status started and/or ended.)
1344         */
1345        public CitationStatusDateComponent setPeriod(Period value) { 
1346          this.period = value;
1347          return this;
1348        }
1349
1350        protected void listChildren(List<Property> children) {
1351          super.listChildren(children);
1352          children.add(new Property("activity", "CodeableConcept", "The state or status of the citation record (that will be paired with the period).", 0, 1, activity));
1353          children.add(new Property("actual", "boolean", "Whether the status date is actual (has occurred) or expected (estimated or anticipated).", 0, 1, actual));
1354          children.add(new Property("period", "Period", "When the status started and/or ended.", 0, 1, period));
1355        }
1356
1357        @Override
1358        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1359          switch (_hash) {
1360          case -1655966961: /*activity*/  return new Property("activity", "CodeableConcept", "The state or status of the citation record (that will be paired with the period).", 0, 1, activity);
1361          case -1422939762: /*actual*/  return new Property("actual", "boolean", "Whether the status date is actual (has occurred) or expected (estimated or anticipated).", 0, 1, actual);
1362          case -991726143: /*period*/  return new Property("period", "Period", "When the status started and/or ended.", 0, 1, period);
1363          default: return super.getNamedProperty(_hash, _name, _checkValid);
1364          }
1365
1366        }
1367
1368      @Override
1369      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1370        switch (hash) {
1371        case -1655966961: /*activity*/ return this.activity == null ? new Base[0] : new Base[] {this.activity}; // CodeableConcept
1372        case -1422939762: /*actual*/ return this.actual == null ? new Base[0] : new Base[] {this.actual}; // BooleanType
1373        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
1374        default: return super.getProperty(hash, name, checkValid);
1375        }
1376
1377      }
1378
1379      @Override
1380      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1381        switch (hash) {
1382        case -1655966961: // activity
1383          this.activity = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1384          return value;
1385        case -1422939762: // actual
1386          this.actual = TypeConvertor.castToBoolean(value); // BooleanType
1387          return value;
1388        case -991726143: // period
1389          this.period = TypeConvertor.castToPeriod(value); // Period
1390          return value;
1391        default: return super.setProperty(hash, name, value);
1392        }
1393
1394      }
1395
1396      @Override
1397      public Base setProperty(String name, Base value) throws FHIRException {
1398        if (name.equals("activity")) {
1399          this.activity = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1400        } else if (name.equals("actual")) {
1401          this.actual = TypeConvertor.castToBoolean(value); // BooleanType
1402        } else if (name.equals("period")) {
1403          this.period = TypeConvertor.castToPeriod(value); // Period
1404        } else
1405          return super.setProperty(name, value);
1406        return value;
1407      }
1408
1409  @Override
1410  public void removeChild(String name, Base value) throws FHIRException {
1411        if (name.equals("activity")) {
1412          this.activity = null;
1413        } else if (name.equals("actual")) {
1414          this.actual = null;
1415        } else if (name.equals("period")) {
1416          this.period = null;
1417        } else
1418          super.removeChild(name, value);
1419        
1420      }
1421
1422      @Override
1423      public Base makeProperty(int hash, String name) throws FHIRException {
1424        switch (hash) {
1425        case -1655966961:  return getActivity();
1426        case -1422939762:  return getActualElement();
1427        case -991726143:  return getPeriod();
1428        default: return super.makeProperty(hash, name);
1429        }
1430
1431      }
1432
1433      @Override
1434      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1435        switch (hash) {
1436        case -1655966961: /*activity*/ return new String[] {"CodeableConcept"};
1437        case -1422939762: /*actual*/ return new String[] {"boolean"};
1438        case -991726143: /*period*/ return new String[] {"Period"};
1439        default: return super.getTypesForProperty(hash, name);
1440        }
1441
1442      }
1443
1444      @Override
1445      public Base addChild(String name) throws FHIRException {
1446        if (name.equals("activity")) {
1447          this.activity = new CodeableConcept();
1448          return this.activity;
1449        }
1450        else if (name.equals("actual")) {
1451          throw new FHIRException("Cannot call addChild on a singleton property Citation.statusDate.actual");
1452        }
1453        else if (name.equals("period")) {
1454          this.period = new Period();
1455          return this.period;
1456        }
1457        else
1458          return super.addChild(name);
1459      }
1460
1461      public CitationStatusDateComponent copy() {
1462        CitationStatusDateComponent dst = new CitationStatusDateComponent();
1463        copyValues(dst);
1464        return dst;
1465      }
1466
1467      public void copyValues(CitationStatusDateComponent dst) {
1468        super.copyValues(dst);
1469        dst.activity = activity == null ? null : activity.copy();
1470        dst.actual = actual == null ? null : actual.copy();
1471        dst.period = period == null ? null : period.copy();
1472      }
1473
1474      @Override
1475      public boolean equalsDeep(Base other_) {
1476        if (!super.equalsDeep(other_))
1477          return false;
1478        if (!(other_ instanceof CitationStatusDateComponent))
1479          return false;
1480        CitationStatusDateComponent o = (CitationStatusDateComponent) other_;
1481        return compareDeep(activity, o.activity, true) && compareDeep(actual, o.actual, true) && compareDeep(period, o.period, true)
1482          ;
1483      }
1484
1485      @Override
1486      public boolean equalsShallow(Base other_) {
1487        if (!super.equalsShallow(other_))
1488          return false;
1489        if (!(other_ instanceof CitationStatusDateComponent))
1490          return false;
1491        CitationStatusDateComponent o = (CitationStatusDateComponent) other_;
1492        return compareValues(actual, o.actual, true);
1493      }
1494
1495      public boolean isEmpty() {
1496        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(activity, actual, period
1497          );
1498      }
1499
1500  public String fhirType() {
1501    return "Citation.statusDate";
1502
1503  }
1504
1505  }
1506
1507    @Block()
1508    public static class CitationCitedArtifactComponent extends BackboneElement implements IBaseBackboneElement {
1509        /**
1510         * A formal identifier that is used to identify the cited artifact when it is represented in other formats, or referenced in a specification, model, design or an instance.
1511         */
1512        @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1513        @Description(shortDefinition="Unique identifier. May include DOI, PMID, PMCID, etc", formalDefinition="A formal identifier that is used to identify the cited artifact when it is represented in other formats, or referenced in a specification, model, design or an instance." )
1514        protected List<Identifier> identifier;
1515
1516        /**
1517         * A formal identifier that is used to identify things closely related to the cited artifact.
1518         */
1519        @Child(name = "relatedIdentifier", type = {Identifier.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1520        @Description(shortDefinition="Identifier not unique to the cited artifact. May include trial registry identifiers", formalDefinition="A formal identifier that is used to identify things closely related to the cited artifact." )
1521        protected List<Identifier> relatedIdentifier;
1522
1523        /**
1524         * When the cited artifact was accessed.
1525         */
1526        @Child(name = "dateAccessed", type = {DateTimeType.class}, order=3, min=0, max=1, modifier=false, summary=true)
1527        @Description(shortDefinition="When the cited artifact was accessed", formalDefinition="When the cited artifact was accessed." )
1528        protected DateTimeType dateAccessed;
1529
1530        /**
1531         * The defined version of the cited artifact.
1532         */
1533        @Child(name = "version", type = {}, order=4, min=0, max=1, modifier=false, summary=false)
1534        @Description(shortDefinition="The defined version of the cited artifact", formalDefinition="The defined version of the cited artifact." )
1535        protected CitationCitedArtifactVersionComponent version;
1536
1537        /**
1538         * The status of the cited artifact.
1539         */
1540        @Child(name = "currentState", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1541        @Description(shortDefinition="The status of the cited artifact", formalDefinition="The status of the cited artifact." )
1542        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/cited-artifact-status-type")
1543        protected List<CodeableConcept> currentState;
1544
1545        /**
1546         * An effective date or period, historical or future, actual or expected, for a status of the cited artifact.
1547         */
1548        @Child(name = "statusDate", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1549        @Description(shortDefinition="An effective date or period for a status of the cited artifact", formalDefinition="An effective date or period, historical or future, actual or expected, for a status of the cited artifact." )
1550        protected List<CitationCitedArtifactStatusDateComponent> statusDate;
1551
1552        /**
1553         * The title details of the article or artifact.
1554         */
1555        @Child(name = "title", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1556        @Description(shortDefinition="The title details of the article or artifact", formalDefinition="The title details of the article or artifact." )
1557        protected List<CitationCitedArtifactTitleComponent> title;
1558
1559        /**
1560         * The abstract may be used to convey article-contained abstracts, externally-created abstracts, or other descriptive summaries.
1561         */
1562        @Child(name = "abstract", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1563        @Description(shortDefinition="Summary of the article or artifact", formalDefinition="The abstract may be used to convey article-contained abstracts, externally-created abstracts, or other descriptive summaries." )
1564        protected List<CitationCitedArtifactAbstractComponent> abstract_;
1565
1566        /**
1567         * The component of the article or artifact.
1568         */
1569        @Child(name = "part", type = {}, order=9, min=0, max=1, modifier=false, summary=false)
1570        @Description(shortDefinition="The component of the article or artifact", formalDefinition="The component of the article or artifact." )
1571        protected CitationCitedArtifactPartComponent part;
1572
1573        /**
1574         * The artifact related to the cited artifact.
1575         */
1576        @Child(name = "relatesTo", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1577        @Description(shortDefinition="The artifact related to the cited artifact", formalDefinition="The artifact related to the cited artifact." )
1578        protected List<CitationCitedArtifactRelatesToComponent> relatesTo;
1579
1580        /**
1581         * If multiple, used to represent alternative forms of the article that are not separate citations.
1582         */
1583        @Child(name = "publicationForm", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1584        @Description(shortDefinition="If multiple, used to represent alternative forms of the article that are not separate citations", formalDefinition="If multiple, used to represent alternative forms of the article that are not separate citations." )
1585        protected List<CitationCitedArtifactPublicationFormComponent> publicationForm;
1586
1587        /**
1588         * Used for any URL for the article or artifact cited.
1589         */
1590        @Child(name = "webLocation", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1591        @Description(shortDefinition="Used for any URL for the article or artifact cited", formalDefinition="Used for any URL for the article or artifact cited." )
1592        protected List<CitationCitedArtifactWebLocationComponent> webLocation;
1593
1594        /**
1595         * The assignment to an organizing scheme.
1596         */
1597        @Child(name = "classification", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1598        @Description(shortDefinition="The assignment to an organizing scheme", formalDefinition="The assignment to an organizing scheme." )
1599        protected List<CitationCitedArtifactClassificationComponent> classification;
1600
1601        /**
1602         * This element is used to list authors and other contributors, their contact information, specific contributions, and summary statements.
1603         */
1604        @Child(name = "contributorship", type = {}, order=14, min=0, max=1, modifier=false, summary=false)
1605        @Description(shortDefinition="Attribution of authors and other contributors", formalDefinition="This element is used to list authors and other contributors, their contact information, specific contributions, and summary statements." )
1606        protected CitationCitedArtifactContributorshipComponent contributorship;
1607
1608        /**
1609         * Any additional information or content for the article or artifact.
1610         */
1611        @Child(name = "note", type = {Annotation.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1612        @Description(shortDefinition="Any additional information or content for the article or artifact", formalDefinition="Any additional information or content for the article or artifact." )
1613        protected List<Annotation> note;
1614
1615        private static final long serialVersionUID = -1685890486L;
1616
1617    /**
1618     * Constructor
1619     */
1620      public CitationCitedArtifactComponent() {
1621        super();
1622      }
1623
1624        /**
1625         * @return {@link #identifier} (A formal identifier that is used to identify the cited artifact when it is represented in other formats, or referenced in a specification, model, design or an instance.)
1626         */
1627        public List<Identifier> getIdentifier() { 
1628          if (this.identifier == null)
1629            this.identifier = new ArrayList<Identifier>();
1630          return this.identifier;
1631        }
1632
1633        /**
1634         * @return Returns a reference to <code>this</code> for easy method chaining
1635         */
1636        public CitationCitedArtifactComponent setIdentifier(List<Identifier> theIdentifier) { 
1637          this.identifier = theIdentifier;
1638          return this;
1639        }
1640
1641        public boolean hasIdentifier() { 
1642          if (this.identifier == null)
1643            return false;
1644          for (Identifier item : this.identifier)
1645            if (!item.isEmpty())
1646              return true;
1647          return false;
1648        }
1649
1650        public Identifier addIdentifier() { //3
1651          Identifier t = new Identifier();
1652          if (this.identifier == null)
1653            this.identifier = new ArrayList<Identifier>();
1654          this.identifier.add(t);
1655          return t;
1656        }
1657
1658        public CitationCitedArtifactComponent addIdentifier(Identifier t) { //3
1659          if (t == null)
1660            return this;
1661          if (this.identifier == null)
1662            this.identifier = new ArrayList<Identifier>();
1663          this.identifier.add(t);
1664          return this;
1665        }
1666
1667        /**
1668         * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
1669         */
1670        public Identifier getIdentifierFirstRep() { 
1671          if (getIdentifier().isEmpty()) {
1672            addIdentifier();
1673          }
1674          return getIdentifier().get(0);
1675        }
1676
1677        /**
1678         * @return {@link #relatedIdentifier} (A formal identifier that is used to identify things closely related to the cited artifact.)
1679         */
1680        public List<Identifier> getRelatedIdentifier() { 
1681          if (this.relatedIdentifier == null)
1682            this.relatedIdentifier = new ArrayList<Identifier>();
1683          return this.relatedIdentifier;
1684        }
1685
1686        /**
1687         * @return Returns a reference to <code>this</code> for easy method chaining
1688         */
1689        public CitationCitedArtifactComponent setRelatedIdentifier(List<Identifier> theRelatedIdentifier) { 
1690          this.relatedIdentifier = theRelatedIdentifier;
1691          return this;
1692        }
1693
1694        public boolean hasRelatedIdentifier() { 
1695          if (this.relatedIdentifier == null)
1696            return false;
1697          for (Identifier item : this.relatedIdentifier)
1698            if (!item.isEmpty())
1699              return true;
1700          return false;
1701        }
1702
1703        public Identifier addRelatedIdentifier() { //3
1704          Identifier t = new Identifier();
1705          if (this.relatedIdentifier == null)
1706            this.relatedIdentifier = new ArrayList<Identifier>();
1707          this.relatedIdentifier.add(t);
1708          return t;
1709        }
1710
1711        public CitationCitedArtifactComponent addRelatedIdentifier(Identifier t) { //3
1712          if (t == null)
1713            return this;
1714          if (this.relatedIdentifier == null)
1715            this.relatedIdentifier = new ArrayList<Identifier>();
1716          this.relatedIdentifier.add(t);
1717          return this;
1718        }
1719
1720        /**
1721         * @return The first repetition of repeating field {@link #relatedIdentifier}, creating it if it does not already exist {3}
1722         */
1723        public Identifier getRelatedIdentifierFirstRep() { 
1724          if (getRelatedIdentifier().isEmpty()) {
1725            addRelatedIdentifier();
1726          }
1727          return getRelatedIdentifier().get(0);
1728        }
1729
1730        /**
1731         * @return {@link #dateAccessed} (When the cited artifact was accessed.). This is the underlying object with id, value and extensions. The accessor "getDateAccessed" gives direct access to the value
1732         */
1733        public DateTimeType getDateAccessedElement() { 
1734          if (this.dateAccessed == null)
1735            if (Configuration.errorOnAutoCreate())
1736              throw new Error("Attempt to auto-create CitationCitedArtifactComponent.dateAccessed");
1737            else if (Configuration.doAutoCreate())
1738              this.dateAccessed = new DateTimeType(); // bb
1739          return this.dateAccessed;
1740        }
1741
1742        public boolean hasDateAccessedElement() { 
1743          return this.dateAccessed != null && !this.dateAccessed.isEmpty();
1744        }
1745
1746        public boolean hasDateAccessed() { 
1747          return this.dateAccessed != null && !this.dateAccessed.isEmpty();
1748        }
1749
1750        /**
1751         * @param value {@link #dateAccessed} (When the cited artifact was accessed.). This is the underlying object with id, value and extensions. The accessor "getDateAccessed" gives direct access to the value
1752         */
1753        public CitationCitedArtifactComponent setDateAccessedElement(DateTimeType value) { 
1754          this.dateAccessed = value;
1755          return this;
1756        }
1757
1758        /**
1759         * @return When the cited artifact was accessed.
1760         */
1761        public Date getDateAccessed() { 
1762          return this.dateAccessed == null ? null : this.dateAccessed.getValue();
1763        }
1764
1765        /**
1766         * @param value When the cited artifact was accessed.
1767         */
1768        public CitationCitedArtifactComponent setDateAccessed(Date value) { 
1769          if (value == null)
1770            this.dateAccessed = null;
1771          else {
1772            if (this.dateAccessed == null)
1773              this.dateAccessed = new DateTimeType();
1774            this.dateAccessed.setValue(value);
1775          }
1776          return this;
1777        }
1778
1779        /**
1780         * @return {@link #version} (The defined version of the cited artifact.)
1781         */
1782        public CitationCitedArtifactVersionComponent getVersion() { 
1783          if (this.version == null)
1784            if (Configuration.errorOnAutoCreate())
1785              throw new Error("Attempt to auto-create CitationCitedArtifactComponent.version");
1786            else if (Configuration.doAutoCreate())
1787              this.version = new CitationCitedArtifactVersionComponent(); // cc
1788          return this.version;
1789        }
1790
1791        public boolean hasVersion() { 
1792          return this.version != null && !this.version.isEmpty();
1793        }
1794
1795        /**
1796         * @param value {@link #version} (The defined version of the cited artifact.)
1797         */
1798        public CitationCitedArtifactComponent setVersion(CitationCitedArtifactVersionComponent value) { 
1799          this.version = value;
1800          return this;
1801        }
1802
1803        /**
1804         * @return {@link #currentState} (The status of the cited artifact.)
1805         */
1806        public List<CodeableConcept> getCurrentState() { 
1807          if (this.currentState == null)
1808            this.currentState = new ArrayList<CodeableConcept>();
1809          return this.currentState;
1810        }
1811
1812        /**
1813         * @return Returns a reference to <code>this</code> for easy method chaining
1814         */
1815        public CitationCitedArtifactComponent setCurrentState(List<CodeableConcept> theCurrentState) { 
1816          this.currentState = theCurrentState;
1817          return this;
1818        }
1819
1820        public boolean hasCurrentState() { 
1821          if (this.currentState == null)
1822            return false;
1823          for (CodeableConcept item : this.currentState)
1824            if (!item.isEmpty())
1825              return true;
1826          return false;
1827        }
1828
1829        public CodeableConcept addCurrentState() { //3
1830          CodeableConcept t = new CodeableConcept();
1831          if (this.currentState == null)
1832            this.currentState = new ArrayList<CodeableConcept>();
1833          this.currentState.add(t);
1834          return t;
1835        }
1836
1837        public CitationCitedArtifactComponent addCurrentState(CodeableConcept t) { //3
1838          if (t == null)
1839            return this;
1840          if (this.currentState == null)
1841            this.currentState = new ArrayList<CodeableConcept>();
1842          this.currentState.add(t);
1843          return this;
1844        }
1845
1846        /**
1847         * @return The first repetition of repeating field {@link #currentState}, creating it if it does not already exist {3}
1848         */
1849        public CodeableConcept getCurrentStateFirstRep() { 
1850          if (getCurrentState().isEmpty()) {
1851            addCurrentState();
1852          }
1853          return getCurrentState().get(0);
1854        }
1855
1856        /**
1857         * @return {@link #statusDate} (An effective date or period, historical or future, actual or expected, for a status of the cited artifact.)
1858         */
1859        public List<CitationCitedArtifactStatusDateComponent> getStatusDate() { 
1860          if (this.statusDate == null)
1861            this.statusDate = new ArrayList<CitationCitedArtifactStatusDateComponent>();
1862          return this.statusDate;
1863        }
1864
1865        /**
1866         * @return Returns a reference to <code>this</code> for easy method chaining
1867         */
1868        public CitationCitedArtifactComponent setStatusDate(List<CitationCitedArtifactStatusDateComponent> theStatusDate) { 
1869          this.statusDate = theStatusDate;
1870          return this;
1871        }
1872
1873        public boolean hasStatusDate() { 
1874          if (this.statusDate == null)
1875            return false;
1876          for (CitationCitedArtifactStatusDateComponent item : this.statusDate)
1877            if (!item.isEmpty())
1878              return true;
1879          return false;
1880        }
1881
1882        public CitationCitedArtifactStatusDateComponent addStatusDate() { //3
1883          CitationCitedArtifactStatusDateComponent t = new CitationCitedArtifactStatusDateComponent();
1884          if (this.statusDate == null)
1885            this.statusDate = new ArrayList<CitationCitedArtifactStatusDateComponent>();
1886          this.statusDate.add(t);
1887          return t;
1888        }
1889
1890        public CitationCitedArtifactComponent addStatusDate(CitationCitedArtifactStatusDateComponent t) { //3
1891          if (t == null)
1892            return this;
1893          if (this.statusDate == null)
1894            this.statusDate = new ArrayList<CitationCitedArtifactStatusDateComponent>();
1895          this.statusDate.add(t);
1896          return this;
1897        }
1898
1899        /**
1900         * @return The first repetition of repeating field {@link #statusDate}, creating it if it does not already exist {3}
1901         */
1902        public CitationCitedArtifactStatusDateComponent getStatusDateFirstRep() { 
1903          if (getStatusDate().isEmpty()) {
1904            addStatusDate();
1905          }
1906          return getStatusDate().get(0);
1907        }
1908
1909        /**
1910         * @return {@link #title} (The title details of the article or artifact.)
1911         */
1912        public List<CitationCitedArtifactTitleComponent> getTitle() { 
1913          if (this.title == null)
1914            this.title = new ArrayList<CitationCitedArtifactTitleComponent>();
1915          return this.title;
1916        }
1917
1918        /**
1919         * @return Returns a reference to <code>this</code> for easy method chaining
1920         */
1921        public CitationCitedArtifactComponent setTitle(List<CitationCitedArtifactTitleComponent> theTitle) { 
1922          this.title = theTitle;
1923          return this;
1924        }
1925
1926        public boolean hasTitle() { 
1927          if (this.title == null)
1928            return false;
1929          for (CitationCitedArtifactTitleComponent item : this.title)
1930            if (!item.isEmpty())
1931              return true;
1932          return false;
1933        }
1934
1935        public CitationCitedArtifactTitleComponent addTitle() { //3
1936          CitationCitedArtifactTitleComponent t = new CitationCitedArtifactTitleComponent();
1937          if (this.title == null)
1938            this.title = new ArrayList<CitationCitedArtifactTitleComponent>();
1939          this.title.add(t);
1940          return t;
1941        }
1942
1943        public CitationCitedArtifactComponent addTitle(CitationCitedArtifactTitleComponent t) { //3
1944          if (t == null)
1945            return this;
1946          if (this.title == null)
1947            this.title = new ArrayList<CitationCitedArtifactTitleComponent>();
1948          this.title.add(t);
1949          return this;
1950        }
1951
1952        /**
1953         * @return The first repetition of repeating field {@link #title}, creating it if it does not already exist {3}
1954         */
1955        public CitationCitedArtifactTitleComponent getTitleFirstRep() { 
1956          if (getTitle().isEmpty()) {
1957            addTitle();
1958          }
1959          return getTitle().get(0);
1960        }
1961
1962        /**
1963         * @return {@link #abstract_} (The abstract may be used to convey article-contained abstracts, externally-created abstracts, or other descriptive summaries.)
1964         */
1965        public List<CitationCitedArtifactAbstractComponent> getAbstract() { 
1966          if (this.abstract_ == null)
1967            this.abstract_ = new ArrayList<CitationCitedArtifactAbstractComponent>();
1968          return this.abstract_;
1969        }
1970
1971        /**
1972         * @return Returns a reference to <code>this</code> for easy method chaining
1973         */
1974        public CitationCitedArtifactComponent setAbstract(List<CitationCitedArtifactAbstractComponent> theAbstract) { 
1975          this.abstract_ = theAbstract;
1976          return this;
1977        }
1978
1979        public boolean hasAbstract() { 
1980          if (this.abstract_ == null)
1981            return false;
1982          for (CitationCitedArtifactAbstractComponent item : this.abstract_)
1983            if (!item.isEmpty())
1984              return true;
1985          return false;
1986        }
1987
1988        public CitationCitedArtifactAbstractComponent addAbstract() { //3
1989          CitationCitedArtifactAbstractComponent t = new CitationCitedArtifactAbstractComponent();
1990          if (this.abstract_ == null)
1991            this.abstract_ = new ArrayList<CitationCitedArtifactAbstractComponent>();
1992          this.abstract_.add(t);
1993          return t;
1994        }
1995
1996        public CitationCitedArtifactComponent addAbstract(CitationCitedArtifactAbstractComponent t) { //3
1997          if (t == null)
1998            return this;
1999          if (this.abstract_ == null)
2000            this.abstract_ = new ArrayList<CitationCitedArtifactAbstractComponent>();
2001          this.abstract_.add(t);
2002          return this;
2003        }
2004
2005        /**
2006         * @return The first repetition of repeating field {@link #abstract_}, creating it if it does not already exist {3}
2007         */
2008        public CitationCitedArtifactAbstractComponent getAbstractFirstRep() { 
2009          if (getAbstract().isEmpty()) {
2010            addAbstract();
2011          }
2012          return getAbstract().get(0);
2013        }
2014
2015        /**
2016         * @return {@link #part} (The component of the article or artifact.)
2017         */
2018        public CitationCitedArtifactPartComponent getPart() { 
2019          if (this.part == null)
2020            if (Configuration.errorOnAutoCreate())
2021              throw new Error("Attempt to auto-create CitationCitedArtifactComponent.part");
2022            else if (Configuration.doAutoCreate())
2023              this.part = new CitationCitedArtifactPartComponent(); // cc
2024          return this.part;
2025        }
2026
2027        public boolean hasPart() { 
2028          return this.part != null && !this.part.isEmpty();
2029        }
2030
2031        /**
2032         * @param value {@link #part} (The component of the article or artifact.)
2033         */
2034        public CitationCitedArtifactComponent setPart(CitationCitedArtifactPartComponent value) { 
2035          this.part = value;
2036          return this;
2037        }
2038
2039        /**
2040         * @return {@link #relatesTo} (The artifact related to the cited artifact.)
2041         */
2042        public List<CitationCitedArtifactRelatesToComponent> getRelatesTo() { 
2043          if (this.relatesTo == null)
2044            this.relatesTo = new ArrayList<CitationCitedArtifactRelatesToComponent>();
2045          return this.relatesTo;
2046        }
2047
2048        /**
2049         * @return Returns a reference to <code>this</code> for easy method chaining
2050         */
2051        public CitationCitedArtifactComponent setRelatesTo(List<CitationCitedArtifactRelatesToComponent> theRelatesTo) { 
2052          this.relatesTo = theRelatesTo;
2053          return this;
2054        }
2055
2056        public boolean hasRelatesTo() { 
2057          if (this.relatesTo == null)
2058            return false;
2059          for (CitationCitedArtifactRelatesToComponent item : this.relatesTo)
2060            if (!item.isEmpty())
2061              return true;
2062          return false;
2063        }
2064
2065        public CitationCitedArtifactRelatesToComponent addRelatesTo() { //3
2066          CitationCitedArtifactRelatesToComponent t = new CitationCitedArtifactRelatesToComponent();
2067          if (this.relatesTo == null)
2068            this.relatesTo = new ArrayList<CitationCitedArtifactRelatesToComponent>();
2069          this.relatesTo.add(t);
2070          return t;
2071        }
2072
2073        public CitationCitedArtifactComponent addRelatesTo(CitationCitedArtifactRelatesToComponent t) { //3
2074          if (t == null)
2075            return this;
2076          if (this.relatesTo == null)
2077            this.relatesTo = new ArrayList<CitationCitedArtifactRelatesToComponent>();
2078          this.relatesTo.add(t);
2079          return this;
2080        }
2081
2082        /**
2083         * @return The first repetition of repeating field {@link #relatesTo}, creating it if it does not already exist {3}
2084         */
2085        public CitationCitedArtifactRelatesToComponent getRelatesToFirstRep() { 
2086          if (getRelatesTo().isEmpty()) {
2087            addRelatesTo();
2088          }
2089          return getRelatesTo().get(0);
2090        }
2091
2092        /**
2093         * @return {@link #publicationForm} (If multiple, used to represent alternative forms of the article that are not separate citations.)
2094         */
2095        public List<CitationCitedArtifactPublicationFormComponent> getPublicationForm() { 
2096          if (this.publicationForm == null)
2097            this.publicationForm = new ArrayList<CitationCitedArtifactPublicationFormComponent>();
2098          return this.publicationForm;
2099        }
2100
2101        /**
2102         * @return Returns a reference to <code>this</code> for easy method chaining
2103         */
2104        public CitationCitedArtifactComponent setPublicationForm(List<CitationCitedArtifactPublicationFormComponent> thePublicationForm) { 
2105          this.publicationForm = thePublicationForm;
2106          return this;
2107        }
2108
2109        public boolean hasPublicationForm() { 
2110          if (this.publicationForm == null)
2111            return false;
2112          for (CitationCitedArtifactPublicationFormComponent item : this.publicationForm)
2113            if (!item.isEmpty())
2114              return true;
2115          return false;
2116        }
2117
2118        public CitationCitedArtifactPublicationFormComponent addPublicationForm() { //3
2119          CitationCitedArtifactPublicationFormComponent t = new CitationCitedArtifactPublicationFormComponent();
2120          if (this.publicationForm == null)
2121            this.publicationForm = new ArrayList<CitationCitedArtifactPublicationFormComponent>();
2122          this.publicationForm.add(t);
2123          return t;
2124        }
2125
2126        public CitationCitedArtifactComponent addPublicationForm(CitationCitedArtifactPublicationFormComponent t) { //3
2127          if (t == null)
2128            return this;
2129          if (this.publicationForm == null)
2130            this.publicationForm = new ArrayList<CitationCitedArtifactPublicationFormComponent>();
2131          this.publicationForm.add(t);
2132          return this;
2133        }
2134
2135        /**
2136         * @return The first repetition of repeating field {@link #publicationForm}, creating it if it does not already exist {3}
2137         */
2138        public CitationCitedArtifactPublicationFormComponent getPublicationFormFirstRep() { 
2139          if (getPublicationForm().isEmpty()) {
2140            addPublicationForm();
2141          }
2142          return getPublicationForm().get(0);
2143        }
2144
2145        /**
2146         * @return {@link #webLocation} (Used for any URL for the article or artifact cited.)
2147         */
2148        public List<CitationCitedArtifactWebLocationComponent> getWebLocation() { 
2149          if (this.webLocation == null)
2150            this.webLocation = new ArrayList<CitationCitedArtifactWebLocationComponent>();
2151          return this.webLocation;
2152        }
2153
2154        /**
2155         * @return Returns a reference to <code>this</code> for easy method chaining
2156         */
2157        public CitationCitedArtifactComponent setWebLocation(List<CitationCitedArtifactWebLocationComponent> theWebLocation) { 
2158          this.webLocation = theWebLocation;
2159          return this;
2160        }
2161
2162        public boolean hasWebLocation() { 
2163          if (this.webLocation == null)
2164            return false;
2165          for (CitationCitedArtifactWebLocationComponent item : this.webLocation)
2166            if (!item.isEmpty())
2167              return true;
2168          return false;
2169        }
2170
2171        public CitationCitedArtifactWebLocationComponent addWebLocation() { //3
2172          CitationCitedArtifactWebLocationComponent t = new CitationCitedArtifactWebLocationComponent();
2173          if (this.webLocation == null)
2174            this.webLocation = new ArrayList<CitationCitedArtifactWebLocationComponent>();
2175          this.webLocation.add(t);
2176          return t;
2177        }
2178
2179        public CitationCitedArtifactComponent addWebLocation(CitationCitedArtifactWebLocationComponent t) { //3
2180          if (t == null)
2181            return this;
2182          if (this.webLocation == null)
2183            this.webLocation = new ArrayList<CitationCitedArtifactWebLocationComponent>();
2184          this.webLocation.add(t);
2185          return this;
2186        }
2187
2188        /**
2189         * @return The first repetition of repeating field {@link #webLocation}, creating it if it does not already exist {3}
2190         */
2191        public CitationCitedArtifactWebLocationComponent getWebLocationFirstRep() { 
2192          if (getWebLocation().isEmpty()) {
2193            addWebLocation();
2194          }
2195          return getWebLocation().get(0);
2196        }
2197
2198        /**
2199         * @return {@link #classification} (The assignment to an organizing scheme.)
2200         */
2201        public List<CitationCitedArtifactClassificationComponent> getClassification() { 
2202          if (this.classification == null)
2203            this.classification = new ArrayList<CitationCitedArtifactClassificationComponent>();
2204          return this.classification;
2205        }
2206
2207        /**
2208         * @return Returns a reference to <code>this</code> for easy method chaining
2209         */
2210        public CitationCitedArtifactComponent setClassification(List<CitationCitedArtifactClassificationComponent> theClassification) { 
2211          this.classification = theClassification;
2212          return this;
2213        }
2214
2215        public boolean hasClassification() { 
2216          if (this.classification == null)
2217            return false;
2218          for (CitationCitedArtifactClassificationComponent item : this.classification)
2219            if (!item.isEmpty())
2220              return true;
2221          return false;
2222        }
2223
2224        public CitationCitedArtifactClassificationComponent addClassification() { //3
2225          CitationCitedArtifactClassificationComponent t = new CitationCitedArtifactClassificationComponent();
2226          if (this.classification == null)
2227            this.classification = new ArrayList<CitationCitedArtifactClassificationComponent>();
2228          this.classification.add(t);
2229          return t;
2230        }
2231
2232        public CitationCitedArtifactComponent addClassification(CitationCitedArtifactClassificationComponent t) { //3
2233          if (t == null)
2234            return this;
2235          if (this.classification == null)
2236            this.classification = new ArrayList<CitationCitedArtifactClassificationComponent>();
2237          this.classification.add(t);
2238          return this;
2239        }
2240
2241        /**
2242         * @return The first repetition of repeating field {@link #classification}, creating it if it does not already exist {3}
2243         */
2244        public CitationCitedArtifactClassificationComponent getClassificationFirstRep() { 
2245          if (getClassification().isEmpty()) {
2246            addClassification();
2247          }
2248          return getClassification().get(0);
2249        }
2250
2251        /**
2252         * @return {@link #contributorship} (This element is used to list authors and other contributors, their contact information, specific contributions, and summary statements.)
2253         */
2254        public CitationCitedArtifactContributorshipComponent getContributorship() { 
2255          if (this.contributorship == null)
2256            if (Configuration.errorOnAutoCreate())
2257              throw new Error("Attempt to auto-create CitationCitedArtifactComponent.contributorship");
2258            else if (Configuration.doAutoCreate())
2259              this.contributorship = new CitationCitedArtifactContributorshipComponent(); // cc
2260          return this.contributorship;
2261        }
2262
2263        public boolean hasContributorship() { 
2264          return this.contributorship != null && !this.contributorship.isEmpty();
2265        }
2266
2267        /**
2268         * @param value {@link #contributorship} (This element is used to list authors and other contributors, their contact information, specific contributions, and summary statements.)
2269         */
2270        public CitationCitedArtifactComponent setContributorship(CitationCitedArtifactContributorshipComponent value) { 
2271          this.contributorship = value;
2272          return this;
2273        }
2274
2275        /**
2276         * @return {@link #note} (Any additional information or content for the article or artifact.)
2277         */
2278        public List<Annotation> getNote() { 
2279          if (this.note == null)
2280            this.note = new ArrayList<Annotation>();
2281          return this.note;
2282        }
2283
2284        /**
2285         * @return Returns a reference to <code>this</code> for easy method chaining
2286         */
2287        public CitationCitedArtifactComponent setNote(List<Annotation> theNote) { 
2288          this.note = theNote;
2289          return this;
2290        }
2291
2292        public boolean hasNote() { 
2293          if (this.note == null)
2294            return false;
2295          for (Annotation item : this.note)
2296            if (!item.isEmpty())
2297              return true;
2298          return false;
2299        }
2300
2301        public Annotation addNote() { //3
2302          Annotation t = new Annotation();
2303          if (this.note == null)
2304            this.note = new ArrayList<Annotation>();
2305          this.note.add(t);
2306          return t;
2307        }
2308
2309        public CitationCitedArtifactComponent addNote(Annotation t) { //3
2310          if (t == null)
2311            return this;
2312          if (this.note == null)
2313            this.note = new ArrayList<Annotation>();
2314          this.note.add(t);
2315          return this;
2316        }
2317
2318        /**
2319         * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
2320         */
2321        public Annotation getNoteFirstRep() { 
2322          if (getNote().isEmpty()) {
2323            addNote();
2324          }
2325          return getNote().get(0);
2326        }
2327
2328        protected void listChildren(List<Property> children) {
2329          super.listChildren(children);
2330          children.add(new Property("identifier", "Identifier", "A formal identifier that is used to identify the cited artifact when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier));
2331          children.add(new Property("relatedIdentifier", "Identifier", "A formal identifier that is used to identify things closely related to the cited artifact.", 0, java.lang.Integer.MAX_VALUE, relatedIdentifier));
2332          children.add(new Property("dateAccessed", "dateTime", "When the cited artifact was accessed.", 0, 1, dateAccessed));
2333          children.add(new Property("version", "", "The defined version of the cited artifact.", 0, 1, version));
2334          children.add(new Property("currentState", "CodeableConcept", "The status of the cited artifact.", 0, java.lang.Integer.MAX_VALUE, currentState));
2335          children.add(new Property("statusDate", "", "An effective date or period, historical or future, actual or expected, for a status of the cited artifact.", 0, java.lang.Integer.MAX_VALUE, statusDate));
2336          children.add(new Property("title", "", "The title details of the article or artifact.", 0, java.lang.Integer.MAX_VALUE, title));
2337          children.add(new Property("abstract", "", "The abstract may be used to convey article-contained abstracts, externally-created abstracts, or other descriptive summaries.", 0, java.lang.Integer.MAX_VALUE, abstract_));
2338          children.add(new Property("part", "", "The component of the article or artifact.", 0, 1, part));
2339          children.add(new Property("relatesTo", "", "The artifact related to the cited artifact.", 0, java.lang.Integer.MAX_VALUE, relatesTo));
2340          children.add(new Property("publicationForm", "", "If multiple, used to represent alternative forms of the article that are not separate citations.", 0, java.lang.Integer.MAX_VALUE, publicationForm));
2341          children.add(new Property("webLocation", "", "Used for any URL for the article or artifact cited.", 0, java.lang.Integer.MAX_VALUE, webLocation));
2342          children.add(new Property("classification", "", "The assignment to an organizing scheme.", 0, java.lang.Integer.MAX_VALUE, classification));
2343          children.add(new Property("contributorship", "", "This element is used to list authors and other contributors, their contact information, specific contributions, and summary statements.", 0, 1, contributorship));
2344          children.add(new Property("note", "Annotation", "Any additional information or content for the article or artifact.", 0, java.lang.Integer.MAX_VALUE, note));
2345        }
2346
2347        @Override
2348        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2349          switch (_hash) {
2350          case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A formal identifier that is used to identify the cited artifact when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier);
2351          case -1007604940: /*relatedIdentifier*/  return new Property("relatedIdentifier", "Identifier", "A formal identifier that is used to identify things closely related to the cited artifact.", 0, java.lang.Integer.MAX_VALUE, relatedIdentifier);
2352          case 540917457: /*dateAccessed*/  return new Property("dateAccessed", "dateTime", "When the cited artifact was accessed.", 0, 1, dateAccessed);
2353          case 351608024: /*version*/  return new Property("version", "", "The defined version of the cited artifact.", 0, 1, version);
2354          case 1457822360: /*currentState*/  return new Property("currentState", "CodeableConcept", "The status of the cited artifact.", 0, java.lang.Integer.MAX_VALUE, currentState);
2355          case 247524032: /*statusDate*/  return new Property("statusDate", "", "An effective date or period, historical or future, actual or expected, for a status of the cited artifact.", 0, java.lang.Integer.MAX_VALUE, statusDate);
2356          case 110371416: /*title*/  return new Property("title", "", "The title details of the article or artifact.", 0, java.lang.Integer.MAX_VALUE, title);
2357          case 1732898850: /*abstract*/  return new Property("abstract", "", "The abstract may be used to convey article-contained abstracts, externally-created abstracts, or other descriptive summaries.", 0, java.lang.Integer.MAX_VALUE, abstract_);
2358          case 3433459: /*part*/  return new Property("part", "", "The component of the article or artifact.", 0, 1, part);
2359          case -7765931: /*relatesTo*/  return new Property("relatesTo", "", "The artifact related to the cited artifact.", 0, java.lang.Integer.MAX_VALUE, relatesTo);
2360          case 1470639376: /*publicationForm*/  return new Property("publicationForm", "", "If multiple, used to represent alternative forms of the article that are not separate citations.", 0, java.lang.Integer.MAX_VALUE, publicationForm);
2361          case -828032215: /*webLocation*/  return new Property("webLocation", "", "Used for any URL for the article or artifact cited.", 0, java.lang.Integer.MAX_VALUE, webLocation);
2362          case 382350310: /*classification*/  return new Property("classification", "", "The assignment to an organizing scheme.", 0, java.lang.Integer.MAX_VALUE, classification);
2363          case 538727831: /*contributorship*/  return new Property("contributorship", "", "This element is used to list authors and other contributors, their contact information, specific contributions, and summary statements.", 0, 1, contributorship);
2364          case 3387378: /*note*/  return new Property("note", "Annotation", "Any additional information or content for the article or artifact.", 0, java.lang.Integer.MAX_VALUE, note);
2365          default: return super.getNamedProperty(_hash, _name, _checkValid);
2366          }
2367
2368        }
2369
2370      @Override
2371      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2372        switch (hash) {
2373        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
2374        case -1007604940: /*relatedIdentifier*/ return this.relatedIdentifier == null ? new Base[0] : this.relatedIdentifier.toArray(new Base[this.relatedIdentifier.size()]); // Identifier
2375        case 540917457: /*dateAccessed*/ return this.dateAccessed == null ? new Base[0] : new Base[] {this.dateAccessed}; // DateTimeType
2376        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // CitationCitedArtifactVersionComponent
2377        case 1457822360: /*currentState*/ return this.currentState == null ? new Base[0] : this.currentState.toArray(new Base[this.currentState.size()]); // CodeableConcept
2378        case 247524032: /*statusDate*/ return this.statusDate == null ? new Base[0] : this.statusDate.toArray(new Base[this.statusDate.size()]); // CitationCitedArtifactStatusDateComponent
2379        case 110371416: /*title*/ return this.title == null ? new Base[0] : this.title.toArray(new Base[this.title.size()]); // CitationCitedArtifactTitleComponent
2380        case 1732898850: /*abstract*/ return this.abstract_ == null ? new Base[0] : this.abstract_.toArray(new Base[this.abstract_.size()]); // CitationCitedArtifactAbstractComponent
2381        case 3433459: /*part*/ return this.part == null ? new Base[0] : new Base[] {this.part}; // CitationCitedArtifactPartComponent
2382        case -7765931: /*relatesTo*/ return this.relatesTo == null ? new Base[0] : this.relatesTo.toArray(new Base[this.relatesTo.size()]); // CitationCitedArtifactRelatesToComponent
2383        case 1470639376: /*publicationForm*/ return this.publicationForm == null ? new Base[0] : this.publicationForm.toArray(new Base[this.publicationForm.size()]); // CitationCitedArtifactPublicationFormComponent
2384        case -828032215: /*webLocation*/ return this.webLocation == null ? new Base[0] : this.webLocation.toArray(new Base[this.webLocation.size()]); // CitationCitedArtifactWebLocationComponent
2385        case 382350310: /*classification*/ return this.classification == null ? new Base[0] : this.classification.toArray(new Base[this.classification.size()]); // CitationCitedArtifactClassificationComponent
2386        case 538727831: /*contributorship*/ return this.contributorship == null ? new Base[0] : new Base[] {this.contributorship}; // CitationCitedArtifactContributorshipComponent
2387        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
2388        default: return super.getProperty(hash, name, checkValid);
2389        }
2390
2391      }
2392
2393      @Override
2394      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2395        switch (hash) {
2396        case -1618432855: // identifier
2397          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
2398          return value;
2399        case -1007604940: // relatedIdentifier
2400          this.getRelatedIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
2401          return value;
2402        case 540917457: // dateAccessed
2403          this.dateAccessed = TypeConvertor.castToDateTime(value); // DateTimeType
2404          return value;
2405        case 351608024: // version
2406          this.version = (CitationCitedArtifactVersionComponent) value; // CitationCitedArtifactVersionComponent
2407          return value;
2408        case 1457822360: // currentState
2409          this.getCurrentState().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2410          return value;
2411        case 247524032: // statusDate
2412          this.getStatusDate().add((CitationCitedArtifactStatusDateComponent) value); // CitationCitedArtifactStatusDateComponent
2413          return value;
2414        case 110371416: // title
2415          this.getTitle().add((CitationCitedArtifactTitleComponent) value); // CitationCitedArtifactTitleComponent
2416          return value;
2417        case 1732898850: // abstract
2418          this.getAbstract().add((CitationCitedArtifactAbstractComponent) value); // CitationCitedArtifactAbstractComponent
2419          return value;
2420        case 3433459: // part
2421          this.part = (CitationCitedArtifactPartComponent) value; // CitationCitedArtifactPartComponent
2422          return value;
2423        case -7765931: // relatesTo
2424          this.getRelatesTo().add((CitationCitedArtifactRelatesToComponent) value); // CitationCitedArtifactRelatesToComponent
2425          return value;
2426        case 1470639376: // publicationForm
2427          this.getPublicationForm().add((CitationCitedArtifactPublicationFormComponent) value); // CitationCitedArtifactPublicationFormComponent
2428          return value;
2429        case -828032215: // webLocation
2430          this.getWebLocation().add((CitationCitedArtifactWebLocationComponent) value); // CitationCitedArtifactWebLocationComponent
2431          return value;
2432        case 382350310: // classification
2433          this.getClassification().add((CitationCitedArtifactClassificationComponent) value); // CitationCitedArtifactClassificationComponent
2434          return value;
2435        case 538727831: // contributorship
2436          this.contributorship = (CitationCitedArtifactContributorshipComponent) value; // CitationCitedArtifactContributorshipComponent
2437          return value;
2438        case 3387378: // note
2439          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
2440          return value;
2441        default: return super.setProperty(hash, name, value);
2442        }
2443
2444      }
2445
2446      @Override
2447      public Base setProperty(String name, Base value) throws FHIRException {
2448        if (name.equals("identifier")) {
2449          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
2450        } else if (name.equals("relatedIdentifier")) {
2451          this.getRelatedIdentifier().add(TypeConvertor.castToIdentifier(value));
2452        } else if (name.equals("dateAccessed")) {
2453          this.dateAccessed = TypeConvertor.castToDateTime(value); // DateTimeType
2454        } else if (name.equals("version")) {
2455          this.version = (CitationCitedArtifactVersionComponent) value; // CitationCitedArtifactVersionComponent
2456        } else if (name.equals("currentState")) {
2457          this.getCurrentState().add(TypeConvertor.castToCodeableConcept(value));
2458        } else if (name.equals("statusDate")) {
2459          this.getStatusDate().add((CitationCitedArtifactStatusDateComponent) value);
2460        } else if (name.equals("title")) {
2461          this.getTitle().add((CitationCitedArtifactTitleComponent) value);
2462        } else if (name.equals("abstract")) {
2463          this.getAbstract().add((CitationCitedArtifactAbstractComponent) value);
2464        } else if (name.equals("part")) {
2465          this.part = (CitationCitedArtifactPartComponent) value; // CitationCitedArtifactPartComponent
2466        } else if (name.equals("relatesTo")) {
2467          this.getRelatesTo().add((CitationCitedArtifactRelatesToComponent) value);
2468        } else if (name.equals("publicationForm")) {
2469          this.getPublicationForm().add((CitationCitedArtifactPublicationFormComponent) value);
2470        } else if (name.equals("webLocation")) {
2471          this.getWebLocation().add((CitationCitedArtifactWebLocationComponent) value);
2472        } else if (name.equals("classification")) {
2473          this.getClassification().add((CitationCitedArtifactClassificationComponent) value);
2474        } else if (name.equals("contributorship")) {
2475          this.contributorship = (CitationCitedArtifactContributorshipComponent) value; // CitationCitedArtifactContributorshipComponent
2476        } else if (name.equals("note")) {
2477          this.getNote().add(TypeConvertor.castToAnnotation(value));
2478        } else
2479          return super.setProperty(name, value);
2480        return value;
2481      }
2482
2483  @Override
2484  public void removeChild(String name, Base value) throws FHIRException {
2485        if (name.equals("identifier")) {
2486          this.getIdentifier().remove(value);
2487        } else if (name.equals("relatedIdentifier")) {
2488          this.getRelatedIdentifier().remove(value);
2489        } else if (name.equals("dateAccessed")) {
2490          this.dateAccessed = null;
2491        } else if (name.equals("version")) {
2492          this.version = (CitationCitedArtifactVersionComponent) value; // CitationCitedArtifactVersionComponent
2493        } else if (name.equals("currentState")) {
2494          this.getCurrentState().remove(value);
2495        } else if (name.equals("statusDate")) {
2496          this.getStatusDate().remove((CitationCitedArtifactStatusDateComponent) value);
2497        } else if (name.equals("title")) {
2498          this.getTitle().remove((CitationCitedArtifactTitleComponent) value);
2499        } else if (name.equals("abstract")) {
2500          this.getAbstract().remove((CitationCitedArtifactAbstractComponent) value);
2501        } else if (name.equals("part")) {
2502          this.part = (CitationCitedArtifactPartComponent) value; // CitationCitedArtifactPartComponent
2503        } else if (name.equals("relatesTo")) {
2504          this.getRelatesTo().remove((CitationCitedArtifactRelatesToComponent) value);
2505        } else if (name.equals("publicationForm")) {
2506          this.getPublicationForm().remove((CitationCitedArtifactPublicationFormComponent) value);
2507        } else if (name.equals("webLocation")) {
2508          this.getWebLocation().remove((CitationCitedArtifactWebLocationComponent) value);
2509        } else if (name.equals("classification")) {
2510          this.getClassification().remove((CitationCitedArtifactClassificationComponent) value);
2511        } else if (name.equals("contributorship")) {
2512          this.contributorship = (CitationCitedArtifactContributorshipComponent) value; // CitationCitedArtifactContributorshipComponent
2513        } else if (name.equals("note")) {
2514          this.getNote().remove(value);
2515        } else
2516          super.removeChild(name, value);
2517        
2518      }
2519
2520      @Override
2521      public Base makeProperty(int hash, String name) throws FHIRException {
2522        switch (hash) {
2523        case -1618432855:  return addIdentifier(); 
2524        case -1007604940:  return addRelatedIdentifier(); 
2525        case 540917457:  return getDateAccessedElement();
2526        case 351608024:  return getVersion();
2527        case 1457822360:  return addCurrentState(); 
2528        case 247524032:  return addStatusDate(); 
2529        case 110371416:  return addTitle(); 
2530        case 1732898850:  return addAbstract(); 
2531        case 3433459:  return getPart();
2532        case -7765931:  return addRelatesTo(); 
2533        case 1470639376:  return addPublicationForm(); 
2534        case -828032215:  return addWebLocation(); 
2535        case 382350310:  return addClassification(); 
2536        case 538727831:  return getContributorship();
2537        case 3387378:  return addNote(); 
2538        default: return super.makeProperty(hash, name);
2539        }
2540
2541      }
2542
2543      @Override
2544      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2545        switch (hash) {
2546        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2547        case -1007604940: /*relatedIdentifier*/ return new String[] {"Identifier"};
2548        case 540917457: /*dateAccessed*/ return new String[] {"dateTime"};
2549        case 351608024: /*version*/ return new String[] {};
2550        case 1457822360: /*currentState*/ return new String[] {"CodeableConcept"};
2551        case 247524032: /*statusDate*/ return new String[] {};
2552        case 110371416: /*title*/ return new String[] {};
2553        case 1732898850: /*abstract*/ return new String[] {};
2554        case 3433459: /*part*/ return new String[] {};
2555        case -7765931: /*relatesTo*/ return new String[] {};
2556        case 1470639376: /*publicationForm*/ return new String[] {};
2557        case -828032215: /*webLocation*/ return new String[] {};
2558        case 382350310: /*classification*/ return new String[] {};
2559        case 538727831: /*contributorship*/ return new String[] {};
2560        case 3387378: /*note*/ return new String[] {"Annotation"};
2561        default: return super.getTypesForProperty(hash, name);
2562        }
2563
2564      }
2565
2566      @Override
2567      public Base addChild(String name) throws FHIRException {
2568        if (name.equals("identifier")) {
2569          return addIdentifier();
2570        }
2571        else if (name.equals("relatedIdentifier")) {
2572          return addRelatedIdentifier();
2573        }
2574        else if (name.equals("dateAccessed")) {
2575          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.dateAccessed");
2576        }
2577        else if (name.equals("version")) {
2578          this.version = new CitationCitedArtifactVersionComponent();
2579          return this.version;
2580        }
2581        else if (name.equals("currentState")) {
2582          return addCurrentState();
2583        }
2584        else if (name.equals("statusDate")) {
2585          return addStatusDate();
2586        }
2587        else if (name.equals("title")) {
2588          return addTitle();
2589        }
2590        else if (name.equals("abstract")) {
2591          return addAbstract();
2592        }
2593        else if (name.equals("part")) {
2594          this.part = new CitationCitedArtifactPartComponent();
2595          return this.part;
2596        }
2597        else if (name.equals("relatesTo")) {
2598          return addRelatesTo();
2599        }
2600        else if (name.equals("publicationForm")) {
2601          return addPublicationForm();
2602        }
2603        else if (name.equals("webLocation")) {
2604          return addWebLocation();
2605        }
2606        else if (name.equals("classification")) {
2607          return addClassification();
2608        }
2609        else if (name.equals("contributorship")) {
2610          this.contributorship = new CitationCitedArtifactContributorshipComponent();
2611          return this.contributorship;
2612        }
2613        else if (name.equals("note")) {
2614          return addNote();
2615        }
2616        else
2617          return super.addChild(name);
2618      }
2619
2620      public CitationCitedArtifactComponent copy() {
2621        CitationCitedArtifactComponent dst = new CitationCitedArtifactComponent();
2622        copyValues(dst);
2623        return dst;
2624      }
2625
2626      public void copyValues(CitationCitedArtifactComponent dst) {
2627        super.copyValues(dst);
2628        if (identifier != null) {
2629          dst.identifier = new ArrayList<Identifier>();
2630          for (Identifier i : identifier)
2631            dst.identifier.add(i.copy());
2632        };
2633        if (relatedIdentifier != null) {
2634          dst.relatedIdentifier = new ArrayList<Identifier>();
2635          for (Identifier i : relatedIdentifier)
2636            dst.relatedIdentifier.add(i.copy());
2637        };
2638        dst.dateAccessed = dateAccessed == null ? null : dateAccessed.copy();
2639        dst.version = version == null ? null : version.copy();
2640        if (currentState != null) {
2641          dst.currentState = new ArrayList<CodeableConcept>();
2642          for (CodeableConcept i : currentState)
2643            dst.currentState.add(i.copy());
2644        };
2645        if (statusDate != null) {
2646          dst.statusDate = new ArrayList<CitationCitedArtifactStatusDateComponent>();
2647          for (CitationCitedArtifactStatusDateComponent i : statusDate)
2648            dst.statusDate.add(i.copy());
2649        };
2650        if (title != null) {
2651          dst.title = new ArrayList<CitationCitedArtifactTitleComponent>();
2652          for (CitationCitedArtifactTitleComponent i : title)
2653            dst.title.add(i.copy());
2654        };
2655        if (abstract_ != null) {
2656          dst.abstract_ = new ArrayList<CitationCitedArtifactAbstractComponent>();
2657          for (CitationCitedArtifactAbstractComponent i : abstract_)
2658            dst.abstract_.add(i.copy());
2659        };
2660        dst.part = part == null ? null : part.copy();
2661        if (relatesTo != null) {
2662          dst.relatesTo = new ArrayList<CitationCitedArtifactRelatesToComponent>();
2663          for (CitationCitedArtifactRelatesToComponent i : relatesTo)
2664            dst.relatesTo.add(i.copy());
2665        };
2666        if (publicationForm != null) {
2667          dst.publicationForm = new ArrayList<CitationCitedArtifactPublicationFormComponent>();
2668          for (CitationCitedArtifactPublicationFormComponent i : publicationForm)
2669            dst.publicationForm.add(i.copy());
2670        };
2671        if (webLocation != null) {
2672          dst.webLocation = new ArrayList<CitationCitedArtifactWebLocationComponent>();
2673          for (CitationCitedArtifactWebLocationComponent i : webLocation)
2674            dst.webLocation.add(i.copy());
2675        };
2676        if (classification != null) {
2677          dst.classification = new ArrayList<CitationCitedArtifactClassificationComponent>();
2678          for (CitationCitedArtifactClassificationComponent i : classification)
2679            dst.classification.add(i.copy());
2680        };
2681        dst.contributorship = contributorship == null ? null : contributorship.copy();
2682        if (note != null) {
2683          dst.note = new ArrayList<Annotation>();
2684          for (Annotation i : note)
2685            dst.note.add(i.copy());
2686        };
2687      }
2688
2689      @Override
2690      public boolean equalsDeep(Base other_) {
2691        if (!super.equalsDeep(other_))
2692          return false;
2693        if (!(other_ instanceof CitationCitedArtifactComponent))
2694          return false;
2695        CitationCitedArtifactComponent o = (CitationCitedArtifactComponent) other_;
2696        return compareDeep(identifier, o.identifier, true) && compareDeep(relatedIdentifier, o.relatedIdentifier, true)
2697           && compareDeep(dateAccessed, o.dateAccessed, true) && compareDeep(version, o.version, true) && compareDeep(currentState, o.currentState, true)
2698           && compareDeep(statusDate, o.statusDate, true) && compareDeep(title, o.title, true) && compareDeep(abstract_, o.abstract_, true)
2699           && compareDeep(part, o.part, true) && compareDeep(relatesTo, o.relatesTo, true) && compareDeep(publicationForm, o.publicationForm, true)
2700           && compareDeep(webLocation, o.webLocation, true) && compareDeep(classification, o.classification, true)
2701           && compareDeep(contributorship, o.contributorship, true) && compareDeep(note, o.note, true);
2702      }
2703
2704      @Override
2705      public boolean equalsShallow(Base other_) {
2706        if (!super.equalsShallow(other_))
2707          return false;
2708        if (!(other_ instanceof CitationCitedArtifactComponent))
2709          return false;
2710        CitationCitedArtifactComponent o = (CitationCitedArtifactComponent) other_;
2711        return compareValues(dateAccessed, o.dateAccessed, true);
2712      }
2713
2714      public boolean isEmpty() {
2715        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, relatedIdentifier
2716          , dateAccessed, version, currentState, statusDate, title, abstract_, part, relatesTo
2717          , publicationForm, webLocation, classification, contributorship, note);
2718      }
2719
2720  public String fhirType() {
2721    return "Citation.citedArtifact";
2722
2723  }
2724
2725  }
2726
2727    @Block()
2728    public static class CitationCitedArtifactVersionComponent extends BackboneElement implements IBaseBackboneElement {
2729        /**
2730         * The version number or other version identifier.
2731         */
2732        @Child(name = "value", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
2733        @Description(shortDefinition="The version number or other version identifier", formalDefinition="The version number or other version identifier." )
2734        protected StringType value;
2735
2736        /**
2737         * Citation for the main version of the cited artifact.
2738         */
2739        @Child(name = "baseCitation", type = {Citation.class}, order=2, min=0, max=1, modifier=false, summary=false)
2740        @Description(shortDefinition="Citation for the main version of the cited artifact", formalDefinition="Citation for the main version of the cited artifact." )
2741        protected Reference baseCitation;
2742
2743        private static final long serialVersionUID = 1437090319L;
2744
2745    /**
2746     * Constructor
2747     */
2748      public CitationCitedArtifactVersionComponent() {
2749        super();
2750      }
2751
2752    /**
2753     * Constructor
2754     */
2755      public CitationCitedArtifactVersionComponent(String value) {
2756        super();
2757        this.setValue(value);
2758      }
2759
2760        /**
2761         * @return {@link #value} (The version number or other version identifier.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
2762         */
2763        public StringType getValueElement() { 
2764          if (this.value == null)
2765            if (Configuration.errorOnAutoCreate())
2766              throw new Error("Attempt to auto-create CitationCitedArtifactVersionComponent.value");
2767            else if (Configuration.doAutoCreate())
2768              this.value = new StringType(); // bb
2769          return this.value;
2770        }
2771
2772        public boolean hasValueElement() { 
2773          return this.value != null && !this.value.isEmpty();
2774        }
2775
2776        public boolean hasValue() { 
2777          return this.value != null && !this.value.isEmpty();
2778        }
2779
2780        /**
2781         * @param value {@link #value} (The version number or other version identifier.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
2782         */
2783        public CitationCitedArtifactVersionComponent setValueElement(StringType value) { 
2784          this.value = value;
2785          return this;
2786        }
2787
2788        /**
2789         * @return The version number or other version identifier.
2790         */
2791        public String getValue() { 
2792          return this.value == null ? null : this.value.getValue();
2793        }
2794
2795        /**
2796         * @param value The version number or other version identifier.
2797         */
2798        public CitationCitedArtifactVersionComponent setValue(String value) { 
2799            if (this.value == null)
2800              this.value = new StringType();
2801            this.value.setValue(value);
2802          return this;
2803        }
2804
2805        /**
2806         * @return {@link #baseCitation} (Citation for the main version of the cited artifact.)
2807         */
2808        public Reference getBaseCitation() { 
2809          if (this.baseCitation == null)
2810            if (Configuration.errorOnAutoCreate())
2811              throw new Error("Attempt to auto-create CitationCitedArtifactVersionComponent.baseCitation");
2812            else if (Configuration.doAutoCreate())
2813              this.baseCitation = new Reference(); // cc
2814          return this.baseCitation;
2815        }
2816
2817        public boolean hasBaseCitation() { 
2818          return this.baseCitation != null && !this.baseCitation.isEmpty();
2819        }
2820
2821        /**
2822         * @param value {@link #baseCitation} (Citation for the main version of the cited artifact.)
2823         */
2824        public CitationCitedArtifactVersionComponent setBaseCitation(Reference value) { 
2825          this.baseCitation = value;
2826          return this;
2827        }
2828
2829        protected void listChildren(List<Property> children) {
2830          super.listChildren(children);
2831          children.add(new Property("value", "string", "The version number or other version identifier.", 0, 1, value));
2832          children.add(new Property("baseCitation", "Reference(Citation)", "Citation for the main version of the cited artifact.", 0, 1, baseCitation));
2833        }
2834
2835        @Override
2836        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2837          switch (_hash) {
2838          case 111972721: /*value*/  return new Property("value", "string", "The version number or other version identifier.", 0, 1, value);
2839          case 1182995672: /*baseCitation*/  return new Property("baseCitation", "Reference(Citation)", "Citation for the main version of the cited artifact.", 0, 1, baseCitation);
2840          default: return super.getNamedProperty(_hash, _name, _checkValid);
2841          }
2842
2843        }
2844
2845      @Override
2846      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2847        switch (hash) {
2848        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
2849        case 1182995672: /*baseCitation*/ return this.baseCitation == null ? new Base[0] : new Base[] {this.baseCitation}; // Reference
2850        default: return super.getProperty(hash, name, checkValid);
2851        }
2852
2853      }
2854
2855      @Override
2856      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2857        switch (hash) {
2858        case 111972721: // value
2859          this.value = TypeConvertor.castToString(value); // StringType
2860          return value;
2861        case 1182995672: // baseCitation
2862          this.baseCitation = TypeConvertor.castToReference(value); // Reference
2863          return value;
2864        default: return super.setProperty(hash, name, value);
2865        }
2866
2867      }
2868
2869      @Override
2870      public Base setProperty(String name, Base value) throws FHIRException {
2871        if (name.equals("value")) {
2872          this.value = TypeConvertor.castToString(value); // StringType
2873        } else if (name.equals("baseCitation")) {
2874          this.baseCitation = TypeConvertor.castToReference(value); // Reference
2875        } else
2876          return super.setProperty(name, value);
2877        return value;
2878      }
2879
2880  @Override
2881  public void removeChild(String name, Base value) throws FHIRException {
2882        if (name.equals("value")) {
2883          this.value = null;
2884        } else if (name.equals("baseCitation")) {
2885          this.baseCitation = null;
2886        } else
2887          super.removeChild(name, value);
2888        
2889      }
2890
2891      @Override
2892      public Base makeProperty(int hash, String name) throws FHIRException {
2893        switch (hash) {
2894        case 111972721:  return getValueElement();
2895        case 1182995672:  return getBaseCitation();
2896        default: return super.makeProperty(hash, name);
2897        }
2898
2899      }
2900
2901      @Override
2902      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2903        switch (hash) {
2904        case 111972721: /*value*/ return new String[] {"string"};
2905        case 1182995672: /*baseCitation*/ return new String[] {"Reference"};
2906        default: return super.getTypesForProperty(hash, name);
2907        }
2908
2909      }
2910
2911      @Override
2912      public Base addChild(String name) throws FHIRException {
2913        if (name.equals("value")) {
2914          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.version.value");
2915        }
2916        else if (name.equals("baseCitation")) {
2917          this.baseCitation = new Reference();
2918          return this.baseCitation;
2919        }
2920        else
2921          return super.addChild(name);
2922      }
2923
2924      public CitationCitedArtifactVersionComponent copy() {
2925        CitationCitedArtifactVersionComponent dst = new CitationCitedArtifactVersionComponent();
2926        copyValues(dst);
2927        return dst;
2928      }
2929
2930      public void copyValues(CitationCitedArtifactVersionComponent dst) {
2931        super.copyValues(dst);
2932        dst.value = value == null ? null : value.copy();
2933        dst.baseCitation = baseCitation == null ? null : baseCitation.copy();
2934      }
2935
2936      @Override
2937      public boolean equalsDeep(Base other_) {
2938        if (!super.equalsDeep(other_))
2939          return false;
2940        if (!(other_ instanceof CitationCitedArtifactVersionComponent))
2941          return false;
2942        CitationCitedArtifactVersionComponent o = (CitationCitedArtifactVersionComponent) other_;
2943        return compareDeep(value, o.value, true) && compareDeep(baseCitation, o.baseCitation, true);
2944      }
2945
2946      @Override
2947      public boolean equalsShallow(Base other_) {
2948        if (!super.equalsShallow(other_))
2949          return false;
2950        if (!(other_ instanceof CitationCitedArtifactVersionComponent))
2951          return false;
2952        CitationCitedArtifactVersionComponent o = (CitationCitedArtifactVersionComponent) other_;
2953        return compareValues(value, o.value, true);
2954      }
2955
2956      public boolean isEmpty() {
2957        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(value, baseCitation);
2958      }
2959
2960  public String fhirType() {
2961    return "Citation.citedArtifact.version";
2962
2963  }
2964
2965  }
2966
2967    @Block()
2968    public static class CitationCitedArtifactStatusDateComponent extends BackboneElement implements IBaseBackboneElement {
2969        /**
2970         * A definition of the status associated with a date or period.
2971         */
2972        @Child(name = "activity", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
2973        @Description(shortDefinition="Classification of the status", formalDefinition="A definition of the status associated with a date or period." )
2974        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/cited-artifact-status-type")
2975        protected CodeableConcept activity;
2976
2977        /**
2978         * Either occurred or expected.
2979         */
2980        @Child(name = "actual", type = {BooleanType.class}, order=2, min=0, max=1, modifier=false, summary=false)
2981        @Description(shortDefinition="Either occurred or expected", formalDefinition="Either occurred or expected." )
2982        protected BooleanType actual;
2983
2984        /**
2985         * When the status started and/or ended.
2986         */
2987        @Child(name = "period", type = {Period.class}, order=3, min=1, max=1, modifier=false, summary=false)
2988        @Description(shortDefinition="When the status started and/or ended", formalDefinition="When the status started and/or ended." )
2989        protected Period period;
2990
2991        private static final long serialVersionUID = 1123586924L;
2992
2993    /**
2994     * Constructor
2995     */
2996      public CitationCitedArtifactStatusDateComponent() {
2997        super();
2998      }
2999
3000    /**
3001     * Constructor
3002     */
3003      public CitationCitedArtifactStatusDateComponent(CodeableConcept activity, Period period) {
3004        super();
3005        this.setActivity(activity);
3006        this.setPeriod(period);
3007      }
3008
3009        /**
3010         * @return {@link #activity} (A definition of the status associated with a date or period.)
3011         */
3012        public CodeableConcept getActivity() { 
3013          if (this.activity == null)
3014            if (Configuration.errorOnAutoCreate())
3015              throw new Error("Attempt to auto-create CitationCitedArtifactStatusDateComponent.activity");
3016            else if (Configuration.doAutoCreate())
3017              this.activity = new CodeableConcept(); // cc
3018          return this.activity;
3019        }
3020
3021        public boolean hasActivity() { 
3022          return this.activity != null && !this.activity.isEmpty();
3023        }
3024
3025        /**
3026         * @param value {@link #activity} (A definition of the status associated with a date or period.)
3027         */
3028        public CitationCitedArtifactStatusDateComponent setActivity(CodeableConcept value) { 
3029          this.activity = value;
3030          return this;
3031        }
3032
3033        /**
3034         * @return {@link #actual} (Either occurred or expected.). This is the underlying object with id, value and extensions. The accessor "getActual" gives direct access to the value
3035         */
3036        public BooleanType getActualElement() { 
3037          if (this.actual == null)
3038            if (Configuration.errorOnAutoCreate())
3039              throw new Error("Attempt to auto-create CitationCitedArtifactStatusDateComponent.actual");
3040            else if (Configuration.doAutoCreate())
3041              this.actual = new BooleanType(); // bb
3042          return this.actual;
3043        }
3044
3045        public boolean hasActualElement() { 
3046          return this.actual != null && !this.actual.isEmpty();
3047        }
3048
3049        public boolean hasActual() { 
3050          return this.actual != null && !this.actual.isEmpty();
3051        }
3052
3053        /**
3054         * @param value {@link #actual} (Either occurred or expected.). This is the underlying object with id, value and extensions. The accessor "getActual" gives direct access to the value
3055         */
3056        public CitationCitedArtifactStatusDateComponent setActualElement(BooleanType value) { 
3057          this.actual = value;
3058          return this;
3059        }
3060
3061        /**
3062         * @return Either occurred or expected.
3063         */
3064        public boolean getActual() { 
3065          return this.actual == null || this.actual.isEmpty() ? false : this.actual.getValue();
3066        }
3067
3068        /**
3069         * @param value Either occurred or expected.
3070         */
3071        public CitationCitedArtifactStatusDateComponent setActual(boolean value) { 
3072            if (this.actual == null)
3073              this.actual = new BooleanType();
3074            this.actual.setValue(value);
3075          return this;
3076        }
3077
3078        /**
3079         * @return {@link #period} (When the status started and/or ended.)
3080         */
3081        public Period getPeriod() { 
3082          if (this.period == null)
3083            if (Configuration.errorOnAutoCreate())
3084              throw new Error("Attempt to auto-create CitationCitedArtifactStatusDateComponent.period");
3085            else if (Configuration.doAutoCreate())
3086              this.period = new Period(); // cc
3087          return this.period;
3088        }
3089
3090        public boolean hasPeriod() { 
3091          return this.period != null && !this.period.isEmpty();
3092        }
3093
3094        /**
3095         * @param value {@link #period} (When the status started and/or ended.)
3096         */
3097        public CitationCitedArtifactStatusDateComponent setPeriod(Period value) { 
3098          this.period = value;
3099          return this;
3100        }
3101
3102        protected void listChildren(List<Property> children) {
3103          super.listChildren(children);
3104          children.add(new Property("activity", "CodeableConcept", "A definition of the status associated with a date or period.", 0, 1, activity));
3105          children.add(new Property("actual", "boolean", "Either occurred or expected.", 0, 1, actual));
3106          children.add(new Property("period", "Period", "When the status started and/or ended.", 0, 1, period));
3107        }
3108
3109        @Override
3110        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3111          switch (_hash) {
3112          case -1655966961: /*activity*/  return new Property("activity", "CodeableConcept", "A definition of the status associated with a date or period.", 0, 1, activity);
3113          case -1422939762: /*actual*/  return new Property("actual", "boolean", "Either occurred or expected.", 0, 1, actual);
3114          case -991726143: /*period*/  return new Property("period", "Period", "When the status started and/or ended.", 0, 1, period);
3115          default: return super.getNamedProperty(_hash, _name, _checkValid);
3116          }
3117
3118        }
3119
3120      @Override
3121      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3122        switch (hash) {
3123        case -1655966961: /*activity*/ return this.activity == null ? new Base[0] : new Base[] {this.activity}; // CodeableConcept
3124        case -1422939762: /*actual*/ return this.actual == null ? new Base[0] : new Base[] {this.actual}; // BooleanType
3125        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
3126        default: return super.getProperty(hash, name, checkValid);
3127        }
3128
3129      }
3130
3131      @Override
3132      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3133        switch (hash) {
3134        case -1655966961: // activity
3135          this.activity = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3136          return value;
3137        case -1422939762: // actual
3138          this.actual = TypeConvertor.castToBoolean(value); // BooleanType
3139          return value;
3140        case -991726143: // period
3141          this.period = TypeConvertor.castToPeriod(value); // Period
3142          return value;
3143        default: return super.setProperty(hash, name, value);
3144        }
3145
3146      }
3147
3148      @Override
3149      public Base setProperty(String name, Base value) throws FHIRException {
3150        if (name.equals("activity")) {
3151          this.activity = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3152        } else if (name.equals("actual")) {
3153          this.actual = TypeConvertor.castToBoolean(value); // BooleanType
3154        } else if (name.equals("period")) {
3155          this.period = TypeConvertor.castToPeriod(value); // Period
3156        } else
3157          return super.setProperty(name, value);
3158        return value;
3159      }
3160
3161  @Override
3162  public void removeChild(String name, Base value) throws FHIRException {
3163        if (name.equals("activity")) {
3164          this.activity = null;
3165        } else if (name.equals("actual")) {
3166          this.actual = null;
3167        } else if (name.equals("period")) {
3168          this.period = null;
3169        } else
3170          super.removeChild(name, value);
3171        
3172      }
3173
3174      @Override
3175      public Base makeProperty(int hash, String name) throws FHIRException {
3176        switch (hash) {
3177        case -1655966961:  return getActivity();
3178        case -1422939762:  return getActualElement();
3179        case -991726143:  return getPeriod();
3180        default: return super.makeProperty(hash, name);
3181        }
3182
3183      }
3184
3185      @Override
3186      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3187        switch (hash) {
3188        case -1655966961: /*activity*/ return new String[] {"CodeableConcept"};
3189        case -1422939762: /*actual*/ return new String[] {"boolean"};
3190        case -991726143: /*period*/ return new String[] {"Period"};
3191        default: return super.getTypesForProperty(hash, name);
3192        }
3193
3194      }
3195
3196      @Override
3197      public Base addChild(String name) throws FHIRException {
3198        if (name.equals("activity")) {
3199          this.activity = new CodeableConcept();
3200          return this.activity;
3201        }
3202        else if (name.equals("actual")) {
3203          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.statusDate.actual");
3204        }
3205        else if (name.equals("period")) {
3206          this.period = new Period();
3207          return this.period;
3208        }
3209        else
3210          return super.addChild(name);
3211      }
3212
3213      public CitationCitedArtifactStatusDateComponent copy() {
3214        CitationCitedArtifactStatusDateComponent dst = new CitationCitedArtifactStatusDateComponent();
3215        copyValues(dst);
3216        return dst;
3217      }
3218
3219      public void copyValues(CitationCitedArtifactStatusDateComponent dst) {
3220        super.copyValues(dst);
3221        dst.activity = activity == null ? null : activity.copy();
3222        dst.actual = actual == null ? null : actual.copy();
3223        dst.period = period == null ? null : period.copy();
3224      }
3225
3226      @Override
3227      public boolean equalsDeep(Base other_) {
3228        if (!super.equalsDeep(other_))
3229          return false;
3230        if (!(other_ instanceof CitationCitedArtifactStatusDateComponent))
3231          return false;
3232        CitationCitedArtifactStatusDateComponent o = (CitationCitedArtifactStatusDateComponent) other_;
3233        return compareDeep(activity, o.activity, true) && compareDeep(actual, o.actual, true) && compareDeep(period, o.period, true)
3234          ;
3235      }
3236
3237      @Override
3238      public boolean equalsShallow(Base other_) {
3239        if (!super.equalsShallow(other_))
3240          return false;
3241        if (!(other_ instanceof CitationCitedArtifactStatusDateComponent))
3242          return false;
3243        CitationCitedArtifactStatusDateComponent o = (CitationCitedArtifactStatusDateComponent) other_;
3244        return compareValues(actual, o.actual, true);
3245      }
3246
3247      public boolean isEmpty() {
3248        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(activity, actual, period
3249          );
3250      }
3251
3252  public String fhirType() {
3253    return "Citation.citedArtifact.statusDate";
3254
3255  }
3256
3257  }
3258
3259    @Block()
3260    public static class CitationCitedArtifactTitleComponent extends BackboneElement implements IBaseBackboneElement {
3261        /**
3262         * Used to express the reason for or classification of the title.
3263         */
3264        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3265        @Description(shortDefinition="The kind of title", formalDefinition="Used to express the reason for or classification of the title." )
3266        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/title-type")
3267        protected List<CodeableConcept> type;
3268
3269        /**
3270         * Used to express the specific language of the title.
3271         */
3272        @Child(name = "language", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
3273        @Description(shortDefinition="Used to express the specific language", formalDefinition="Used to express the specific language of the title." )
3274        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/languages")
3275        protected CodeableConcept language;
3276
3277        /**
3278         * The title of the article or artifact.
3279         */
3280        @Child(name = "text", type = {MarkdownType.class}, order=3, min=1, max=1, modifier=false, summary=false)
3281        @Description(shortDefinition="The title of the article or artifact", formalDefinition="The title of the article or artifact." )
3282        protected MarkdownType text;
3283
3284        private static final long serialVersionUID = 1526221998L;
3285
3286    /**
3287     * Constructor
3288     */
3289      public CitationCitedArtifactTitleComponent() {
3290        super();
3291      }
3292
3293    /**
3294     * Constructor
3295     */
3296      public CitationCitedArtifactTitleComponent(String text) {
3297        super();
3298        this.setText(text);
3299      }
3300
3301        /**
3302         * @return {@link #type} (Used to express the reason for or classification of the title.)
3303         */
3304        public List<CodeableConcept> getType() { 
3305          if (this.type == null)
3306            this.type = new ArrayList<CodeableConcept>();
3307          return this.type;
3308        }
3309
3310        /**
3311         * @return Returns a reference to <code>this</code> for easy method chaining
3312         */
3313        public CitationCitedArtifactTitleComponent setType(List<CodeableConcept> theType) { 
3314          this.type = theType;
3315          return this;
3316        }
3317
3318        public boolean hasType() { 
3319          if (this.type == null)
3320            return false;
3321          for (CodeableConcept item : this.type)
3322            if (!item.isEmpty())
3323              return true;
3324          return false;
3325        }
3326
3327        public CodeableConcept addType() { //3
3328          CodeableConcept t = new CodeableConcept();
3329          if (this.type == null)
3330            this.type = new ArrayList<CodeableConcept>();
3331          this.type.add(t);
3332          return t;
3333        }
3334
3335        public CitationCitedArtifactTitleComponent addType(CodeableConcept t) { //3
3336          if (t == null)
3337            return this;
3338          if (this.type == null)
3339            this.type = new ArrayList<CodeableConcept>();
3340          this.type.add(t);
3341          return this;
3342        }
3343
3344        /**
3345         * @return The first repetition of repeating field {@link #type}, creating it if it does not already exist {3}
3346         */
3347        public CodeableConcept getTypeFirstRep() { 
3348          if (getType().isEmpty()) {
3349            addType();
3350          }
3351          return getType().get(0);
3352        }
3353
3354        /**
3355         * @return {@link #language} (Used to express the specific language of the title.)
3356         */
3357        public CodeableConcept getLanguage() { 
3358          if (this.language == null)
3359            if (Configuration.errorOnAutoCreate())
3360              throw new Error("Attempt to auto-create CitationCitedArtifactTitleComponent.language");
3361            else if (Configuration.doAutoCreate())
3362              this.language = new CodeableConcept(); // cc
3363          return this.language;
3364        }
3365
3366        public boolean hasLanguage() { 
3367          return this.language != null && !this.language.isEmpty();
3368        }
3369
3370        /**
3371         * @param value {@link #language} (Used to express the specific language of the title.)
3372         */
3373        public CitationCitedArtifactTitleComponent setLanguage(CodeableConcept value) { 
3374          this.language = value;
3375          return this;
3376        }
3377
3378        /**
3379         * @return {@link #text} (The title of the article or artifact.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
3380         */
3381        public MarkdownType getTextElement() { 
3382          if (this.text == null)
3383            if (Configuration.errorOnAutoCreate())
3384              throw new Error("Attempt to auto-create CitationCitedArtifactTitleComponent.text");
3385            else if (Configuration.doAutoCreate())
3386              this.text = new MarkdownType(); // bb
3387          return this.text;
3388        }
3389
3390        public boolean hasTextElement() { 
3391          return this.text != null && !this.text.isEmpty();
3392        }
3393
3394        public boolean hasText() { 
3395          return this.text != null && !this.text.isEmpty();
3396        }
3397
3398        /**
3399         * @param value {@link #text} (The title of the article or artifact.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
3400         */
3401        public CitationCitedArtifactTitleComponent setTextElement(MarkdownType value) { 
3402          this.text = value;
3403          return this;
3404        }
3405
3406        /**
3407         * @return The title of the article or artifact.
3408         */
3409        public String getText() { 
3410          return this.text == null ? null : this.text.getValue();
3411        }
3412
3413        /**
3414         * @param value The title of the article or artifact.
3415         */
3416        public CitationCitedArtifactTitleComponent setText(String value) { 
3417            if (this.text == null)
3418              this.text = new MarkdownType();
3419            this.text.setValue(value);
3420          return this;
3421        }
3422
3423        protected void listChildren(List<Property> children) {
3424          super.listChildren(children);
3425          children.add(new Property("type", "CodeableConcept", "Used to express the reason for or classification of the title.", 0, java.lang.Integer.MAX_VALUE, type));
3426          children.add(new Property("language", "CodeableConcept", "Used to express the specific language of the title.", 0, 1, language));
3427          children.add(new Property("text", "markdown", "The title of the article or artifact.", 0, 1, text));
3428        }
3429
3430        @Override
3431        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3432          switch (_hash) {
3433          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Used to express the reason for or classification of the title.", 0, java.lang.Integer.MAX_VALUE, type);
3434          case -1613589672: /*language*/  return new Property("language", "CodeableConcept", "Used to express the specific language of the title.", 0, 1, language);
3435          case 3556653: /*text*/  return new Property("text", "markdown", "The title of the article or artifact.", 0, 1, text);
3436          default: return super.getNamedProperty(_hash, _name, _checkValid);
3437          }
3438
3439        }
3440
3441      @Override
3442      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3443        switch (hash) {
3444        case 3575610: /*type*/ return this.type == null ? new Base[0] : this.type.toArray(new Base[this.type.size()]); // CodeableConcept
3445        case -1613589672: /*language*/ return this.language == null ? new Base[0] : new Base[] {this.language}; // CodeableConcept
3446        case 3556653: /*text*/ return this.text == null ? new Base[0] : new Base[] {this.text}; // MarkdownType
3447        default: return super.getProperty(hash, name, checkValid);
3448        }
3449
3450      }
3451
3452      @Override
3453      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3454        switch (hash) {
3455        case 3575610: // type
3456          this.getType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
3457          return value;
3458        case -1613589672: // language
3459          this.language = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3460          return value;
3461        case 3556653: // text
3462          this.text = TypeConvertor.castToMarkdown(value); // MarkdownType
3463          return value;
3464        default: return super.setProperty(hash, name, value);
3465        }
3466
3467      }
3468
3469      @Override
3470      public Base setProperty(String name, Base value) throws FHIRException {
3471        if (name.equals("type")) {
3472          this.getType().add(TypeConvertor.castToCodeableConcept(value));
3473        } else if (name.equals("language")) {
3474          this.language = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3475        } else if (name.equals("text")) {
3476          this.text = TypeConvertor.castToMarkdown(value); // MarkdownType
3477        } else
3478          return super.setProperty(name, value);
3479        return value;
3480      }
3481
3482  @Override
3483  public void removeChild(String name, Base value) throws FHIRException {
3484        if (name.equals("type")) {
3485          this.getType().remove(value);
3486        } else if (name.equals("language")) {
3487          this.language = null;
3488        } else if (name.equals("text")) {
3489          this.text = null;
3490        } else
3491          super.removeChild(name, value);
3492        
3493      }
3494
3495      @Override
3496      public Base makeProperty(int hash, String name) throws FHIRException {
3497        switch (hash) {
3498        case 3575610:  return addType(); 
3499        case -1613589672:  return getLanguage();
3500        case 3556653:  return getTextElement();
3501        default: return super.makeProperty(hash, name);
3502        }
3503
3504      }
3505
3506      @Override
3507      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3508        switch (hash) {
3509        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
3510        case -1613589672: /*language*/ return new String[] {"CodeableConcept"};
3511        case 3556653: /*text*/ return new String[] {"markdown"};
3512        default: return super.getTypesForProperty(hash, name);
3513        }
3514
3515      }
3516
3517      @Override
3518      public Base addChild(String name) throws FHIRException {
3519        if (name.equals("type")) {
3520          return addType();
3521        }
3522        else if (name.equals("language")) {
3523          this.language = new CodeableConcept();
3524          return this.language;
3525        }
3526        else if (name.equals("text")) {
3527          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.title.text");
3528        }
3529        else
3530          return super.addChild(name);
3531      }
3532
3533      public CitationCitedArtifactTitleComponent copy() {
3534        CitationCitedArtifactTitleComponent dst = new CitationCitedArtifactTitleComponent();
3535        copyValues(dst);
3536        return dst;
3537      }
3538
3539      public void copyValues(CitationCitedArtifactTitleComponent dst) {
3540        super.copyValues(dst);
3541        if (type != null) {
3542          dst.type = new ArrayList<CodeableConcept>();
3543          for (CodeableConcept i : type)
3544            dst.type.add(i.copy());
3545        };
3546        dst.language = language == null ? null : language.copy();
3547        dst.text = text == null ? null : text.copy();
3548      }
3549
3550      @Override
3551      public boolean equalsDeep(Base other_) {
3552        if (!super.equalsDeep(other_))
3553          return false;
3554        if (!(other_ instanceof CitationCitedArtifactTitleComponent))
3555          return false;
3556        CitationCitedArtifactTitleComponent o = (CitationCitedArtifactTitleComponent) other_;
3557        return compareDeep(type, o.type, true) && compareDeep(language, o.language, true) && compareDeep(text, o.text, true)
3558          ;
3559      }
3560
3561      @Override
3562      public boolean equalsShallow(Base other_) {
3563        if (!super.equalsShallow(other_))
3564          return false;
3565        if (!(other_ instanceof CitationCitedArtifactTitleComponent))
3566          return false;
3567        CitationCitedArtifactTitleComponent o = (CitationCitedArtifactTitleComponent) other_;
3568        return compareValues(text, o.text, true);
3569      }
3570
3571      public boolean isEmpty() {
3572        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, language, text);
3573      }
3574
3575  public String fhirType() {
3576    return "Citation.citedArtifact.title";
3577
3578  }
3579
3580  }
3581
3582    @Block()
3583    public static class CitationCitedArtifactAbstractComponent extends BackboneElement implements IBaseBackboneElement {
3584        /**
3585         * Used to express the reason for or classification of the abstract.
3586         */
3587        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
3588        @Description(shortDefinition="The kind of abstract", formalDefinition="Used to express the reason for or classification of the abstract." )
3589        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/cited-artifact-abstract-type")
3590        protected CodeableConcept type;
3591
3592        /**
3593         * Used to express the specific language of the abstract.
3594         */
3595        @Child(name = "language", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
3596        @Description(shortDefinition="Used to express the specific language", formalDefinition="Used to express the specific language of the abstract." )
3597        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/languages")
3598        protected CodeableConcept language;
3599
3600        /**
3601         * Abstract content.
3602         */
3603        @Child(name = "text", type = {MarkdownType.class}, order=3, min=1, max=1, modifier=false, summary=false)
3604        @Description(shortDefinition="Abstract content", formalDefinition="Abstract content." )
3605        protected MarkdownType text;
3606
3607        /**
3608         * Copyright notice for the abstract.
3609         */
3610        @Child(name = "copyright", type = {MarkdownType.class}, order=4, min=0, max=1, modifier=false, summary=false)
3611        @Description(shortDefinition="Copyright notice for the abstract", formalDefinition="Copyright notice for the abstract." )
3612        protected MarkdownType copyright;
3613
3614        private static final long serialVersionUID = -1882363442L;
3615
3616    /**
3617     * Constructor
3618     */
3619      public CitationCitedArtifactAbstractComponent() {
3620        super();
3621      }
3622
3623    /**
3624     * Constructor
3625     */
3626      public CitationCitedArtifactAbstractComponent(String text) {
3627        super();
3628        this.setText(text);
3629      }
3630
3631        /**
3632         * @return {@link #type} (Used to express the reason for or classification of the abstract.)
3633         */
3634        public CodeableConcept getType() { 
3635          if (this.type == null)
3636            if (Configuration.errorOnAutoCreate())
3637              throw new Error("Attempt to auto-create CitationCitedArtifactAbstractComponent.type");
3638            else if (Configuration.doAutoCreate())
3639              this.type = new CodeableConcept(); // cc
3640          return this.type;
3641        }
3642
3643        public boolean hasType() { 
3644          return this.type != null && !this.type.isEmpty();
3645        }
3646
3647        /**
3648         * @param value {@link #type} (Used to express the reason for or classification of the abstract.)
3649         */
3650        public CitationCitedArtifactAbstractComponent setType(CodeableConcept value) { 
3651          this.type = value;
3652          return this;
3653        }
3654
3655        /**
3656         * @return {@link #language} (Used to express the specific language of the abstract.)
3657         */
3658        public CodeableConcept getLanguage() { 
3659          if (this.language == null)
3660            if (Configuration.errorOnAutoCreate())
3661              throw new Error("Attempt to auto-create CitationCitedArtifactAbstractComponent.language");
3662            else if (Configuration.doAutoCreate())
3663              this.language = new CodeableConcept(); // cc
3664          return this.language;
3665        }
3666
3667        public boolean hasLanguage() { 
3668          return this.language != null && !this.language.isEmpty();
3669        }
3670
3671        /**
3672         * @param value {@link #language} (Used to express the specific language of the abstract.)
3673         */
3674        public CitationCitedArtifactAbstractComponent setLanguage(CodeableConcept value) { 
3675          this.language = value;
3676          return this;
3677        }
3678
3679        /**
3680         * @return {@link #text} (Abstract content.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
3681         */
3682        public MarkdownType getTextElement() { 
3683          if (this.text == null)
3684            if (Configuration.errorOnAutoCreate())
3685              throw new Error("Attempt to auto-create CitationCitedArtifactAbstractComponent.text");
3686            else if (Configuration.doAutoCreate())
3687              this.text = new MarkdownType(); // bb
3688          return this.text;
3689        }
3690
3691        public boolean hasTextElement() { 
3692          return this.text != null && !this.text.isEmpty();
3693        }
3694
3695        public boolean hasText() { 
3696          return this.text != null && !this.text.isEmpty();
3697        }
3698
3699        /**
3700         * @param value {@link #text} (Abstract content.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
3701         */
3702        public CitationCitedArtifactAbstractComponent setTextElement(MarkdownType value) { 
3703          this.text = value;
3704          return this;
3705        }
3706
3707        /**
3708         * @return Abstract content.
3709         */
3710        public String getText() { 
3711          return this.text == null ? null : this.text.getValue();
3712        }
3713
3714        /**
3715         * @param value Abstract content.
3716         */
3717        public CitationCitedArtifactAbstractComponent setText(String value) { 
3718            if (this.text == null)
3719              this.text = new MarkdownType();
3720            this.text.setValue(value);
3721          return this;
3722        }
3723
3724        /**
3725         * @return {@link #copyright} (Copyright notice for the abstract.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
3726         */
3727        public MarkdownType getCopyrightElement() { 
3728          if (this.copyright == null)
3729            if (Configuration.errorOnAutoCreate())
3730              throw new Error("Attempt to auto-create CitationCitedArtifactAbstractComponent.copyright");
3731            else if (Configuration.doAutoCreate())
3732              this.copyright = new MarkdownType(); // bb
3733          return this.copyright;
3734        }
3735
3736        public boolean hasCopyrightElement() { 
3737          return this.copyright != null && !this.copyright.isEmpty();
3738        }
3739
3740        public boolean hasCopyright() { 
3741          return this.copyright != null && !this.copyright.isEmpty();
3742        }
3743
3744        /**
3745         * @param value {@link #copyright} (Copyright notice for the abstract.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
3746         */
3747        public CitationCitedArtifactAbstractComponent setCopyrightElement(MarkdownType value) { 
3748          this.copyright = value;
3749          return this;
3750        }
3751
3752        /**
3753         * @return Copyright notice for the abstract.
3754         */
3755        public String getCopyright() { 
3756          return this.copyright == null ? null : this.copyright.getValue();
3757        }
3758
3759        /**
3760         * @param value Copyright notice for the abstract.
3761         */
3762        public CitationCitedArtifactAbstractComponent setCopyright(String value) { 
3763          if (Utilities.noString(value))
3764            this.copyright = null;
3765          else {
3766            if (this.copyright == null)
3767              this.copyright = new MarkdownType();
3768            this.copyright.setValue(value);
3769          }
3770          return this;
3771        }
3772
3773        protected void listChildren(List<Property> children) {
3774          super.listChildren(children);
3775          children.add(new Property("type", "CodeableConcept", "Used to express the reason for or classification of the abstract.", 0, 1, type));
3776          children.add(new Property("language", "CodeableConcept", "Used to express the specific language of the abstract.", 0, 1, language));
3777          children.add(new Property("text", "markdown", "Abstract content.", 0, 1, text));
3778          children.add(new Property("copyright", "markdown", "Copyright notice for the abstract.", 0, 1, copyright));
3779        }
3780
3781        @Override
3782        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3783          switch (_hash) {
3784          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Used to express the reason for or classification of the abstract.", 0, 1, type);
3785          case -1613589672: /*language*/  return new Property("language", "CodeableConcept", "Used to express the specific language of the abstract.", 0, 1, language);
3786          case 3556653: /*text*/  return new Property("text", "markdown", "Abstract content.", 0, 1, text);
3787          case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "Copyright notice for the abstract.", 0, 1, copyright);
3788          default: return super.getNamedProperty(_hash, _name, _checkValid);
3789          }
3790
3791        }
3792
3793      @Override
3794      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3795        switch (hash) {
3796        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
3797        case -1613589672: /*language*/ return this.language == null ? new Base[0] : new Base[] {this.language}; // CodeableConcept
3798        case 3556653: /*text*/ return this.text == null ? new Base[0] : new Base[] {this.text}; // MarkdownType
3799        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
3800        default: return super.getProperty(hash, name, checkValid);
3801        }
3802
3803      }
3804
3805      @Override
3806      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3807        switch (hash) {
3808        case 3575610: // type
3809          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3810          return value;
3811        case -1613589672: // language
3812          this.language = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3813          return value;
3814        case 3556653: // text
3815          this.text = TypeConvertor.castToMarkdown(value); // MarkdownType
3816          return value;
3817        case 1522889671: // copyright
3818          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
3819          return value;
3820        default: return super.setProperty(hash, name, value);
3821        }
3822
3823      }
3824
3825      @Override
3826      public Base setProperty(String name, Base value) throws FHIRException {
3827        if (name.equals("type")) {
3828          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3829        } else if (name.equals("language")) {
3830          this.language = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3831        } else if (name.equals("text")) {
3832          this.text = TypeConvertor.castToMarkdown(value); // MarkdownType
3833        } else if (name.equals("copyright")) {
3834          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
3835        } else
3836          return super.setProperty(name, value);
3837        return value;
3838      }
3839
3840  @Override
3841  public void removeChild(String name, Base value) throws FHIRException {
3842        if (name.equals("type")) {
3843          this.type = null;
3844        } else if (name.equals("language")) {
3845          this.language = null;
3846        } else if (name.equals("text")) {
3847          this.text = null;
3848        } else if (name.equals("copyright")) {
3849          this.copyright = null;
3850        } else
3851          super.removeChild(name, value);
3852        
3853      }
3854
3855      @Override
3856      public Base makeProperty(int hash, String name) throws FHIRException {
3857        switch (hash) {
3858        case 3575610:  return getType();
3859        case -1613589672:  return getLanguage();
3860        case 3556653:  return getTextElement();
3861        case 1522889671:  return getCopyrightElement();
3862        default: return super.makeProperty(hash, name);
3863        }
3864
3865      }
3866
3867      @Override
3868      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3869        switch (hash) {
3870        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
3871        case -1613589672: /*language*/ return new String[] {"CodeableConcept"};
3872        case 3556653: /*text*/ return new String[] {"markdown"};
3873        case 1522889671: /*copyright*/ return new String[] {"markdown"};
3874        default: return super.getTypesForProperty(hash, name);
3875        }
3876
3877      }
3878
3879      @Override
3880      public Base addChild(String name) throws FHIRException {
3881        if (name.equals("type")) {
3882          this.type = new CodeableConcept();
3883          return this.type;
3884        }
3885        else if (name.equals("language")) {
3886          this.language = new CodeableConcept();
3887          return this.language;
3888        }
3889        else if (name.equals("text")) {
3890          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.abstract.text");
3891        }
3892        else if (name.equals("copyright")) {
3893          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.abstract.copyright");
3894        }
3895        else
3896          return super.addChild(name);
3897      }
3898
3899      public CitationCitedArtifactAbstractComponent copy() {
3900        CitationCitedArtifactAbstractComponent dst = new CitationCitedArtifactAbstractComponent();
3901        copyValues(dst);
3902        return dst;
3903      }
3904
3905      public void copyValues(CitationCitedArtifactAbstractComponent dst) {
3906        super.copyValues(dst);
3907        dst.type = type == null ? null : type.copy();
3908        dst.language = language == null ? null : language.copy();
3909        dst.text = text == null ? null : text.copy();
3910        dst.copyright = copyright == null ? null : copyright.copy();
3911      }
3912
3913      @Override
3914      public boolean equalsDeep(Base other_) {
3915        if (!super.equalsDeep(other_))
3916          return false;
3917        if (!(other_ instanceof CitationCitedArtifactAbstractComponent))
3918          return false;
3919        CitationCitedArtifactAbstractComponent o = (CitationCitedArtifactAbstractComponent) other_;
3920        return compareDeep(type, o.type, true) && compareDeep(language, o.language, true) && compareDeep(text, o.text, true)
3921           && compareDeep(copyright, o.copyright, true);
3922      }
3923
3924      @Override
3925      public boolean equalsShallow(Base other_) {
3926        if (!super.equalsShallow(other_))
3927          return false;
3928        if (!(other_ instanceof CitationCitedArtifactAbstractComponent))
3929          return false;
3930        CitationCitedArtifactAbstractComponent o = (CitationCitedArtifactAbstractComponent) other_;
3931        return compareValues(text, o.text, true) && compareValues(copyright, o.copyright, true);
3932      }
3933
3934      public boolean isEmpty() {
3935        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, language, text, copyright
3936          );
3937      }
3938
3939  public String fhirType() {
3940    return "Citation.citedArtifact.abstract";
3941
3942  }
3943
3944  }
3945
3946    @Block()
3947    public static class CitationCitedArtifactPartComponent extends BackboneElement implements IBaseBackboneElement {
3948        /**
3949         * The kind of component.
3950         */
3951        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
3952        @Description(shortDefinition="The kind of component", formalDefinition="The kind of component." )
3953        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/cited-artifact-part-type")
3954        protected CodeableConcept type;
3955
3956        /**
3957         * The specification of the component.
3958         */
3959        @Child(name = "value", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
3960        @Description(shortDefinition="The specification of the component", formalDefinition="The specification of the component." )
3961        protected StringType value;
3962
3963        /**
3964         * The citation for the full article or artifact.
3965         */
3966        @Child(name = "baseCitation", type = {Citation.class}, order=3, min=0, max=1, modifier=false, summary=false)
3967        @Description(shortDefinition="The citation for the full article or artifact", formalDefinition="The citation for the full article or artifact." )
3968        protected Reference baseCitation;
3969
3970        private static final long serialVersionUID = -765350500L;
3971
3972    /**
3973     * Constructor
3974     */
3975      public CitationCitedArtifactPartComponent() {
3976        super();
3977      }
3978
3979        /**
3980         * @return {@link #type} (The kind of component.)
3981         */
3982        public CodeableConcept getType() { 
3983          if (this.type == null)
3984            if (Configuration.errorOnAutoCreate())
3985              throw new Error("Attempt to auto-create CitationCitedArtifactPartComponent.type");
3986            else if (Configuration.doAutoCreate())
3987              this.type = new CodeableConcept(); // cc
3988          return this.type;
3989        }
3990
3991        public boolean hasType() { 
3992          return this.type != null && !this.type.isEmpty();
3993        }
3994
3995        /**
3996         * @param value {@link #type} (The kind of component.)
3997         */
3998        public CitationCitedArtifactPartComponent setType(CodeableConcept value) { 
3999          this.type = value;
4000          return this;
4001        }
4002
4003        /**
4004         * @return {@link #value} (The specification of the component.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
4005         */
4006        public StringType getValueElement() { 
4007          if (this.value == null)
4008            if (Configuration.errorOnAutoCreate())
4009              throw new Error("Attempt to auto-create CitationCitedArtifactPartComponent.value");
4010            else if (Configuration.doAutoCreate())
4011              this.value = new StringType(); // bb
4012          return this.value;
4013        }
4014
4015        public boolean hasValueElement() { 
4016          return this.value != null && !this.value.isEmpty();
4017        }
4018
4019        public boolean hasValue() { 
4020          return this.value != null && !this.value.isEmpty();
4021        }
4022
4023        /**
4024         * @param value {@link #value} (The specification of the component.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
4025         */
4026        public CitationCitedArtifactPartComponent setValueElement(StringType value) { 
4027          this.value = value;
4028          return this;
4029        }
4030
4031        /**
4032         * @return The specification of the component.
4033         */
4034        public String getValue() { 
4035          return this.value == null ? null : this.value.getValue();
4036        }
4037
4038        /**
4039         * @param value The specification of the component.
4040         */
4041        public CitationCitedArtifactPartComponent setValue(String value) { 
4042          if (Utilities.noString(value))
4043            this.value = null;
4044          else {
4045            if (this.value == null)
4046              this.value = new StringType();
4047            this.value.setValue(value);
4048          }
4049          return this;
4050        }
4051
4052        /**
4053         * @return {@link #baseCitation} (The citation for the full article or artifact.)
4054         */
4055        public Reference getBaseCitation() { 
4056          if (this.baseCitation == null)
4057            if (Configuration.errorOnAutoCreate())
4058              throw new Error("Attempt to auto-create CitationCitedArtifactPartComponent.baseCitation");
4059            else if (Configuration.doAutoCreate())
4060              this.baseCitation = new Reference(); // cc
4061          return this.baseCitation;
4062        }
4063
4064        public boolean hasBaseCitation() { 
4065          return this.baseCitation != null && !this.baseCitation.isEmpty();
4066        }
4067
4068        /**
4069         * @param value {@link #baseCitation} (The citation for the full article or artifact.)
4070         */
4071        public CitationCitedArtifactPartComponent setBaseCitation(Reference value) { 
4072          this.baseCitation = value;
4073          return this;
4074        }
4075
4076        protected void listChildren(List<Property> children) {
4077          super.listChildren(children);
4078          children.add(new Property("type", "CodeableConcept", "The kind of component.", 0, 1, type));
4079          children.add(new Property("value", "string", "The specification of the component.", 0, 1, value));
4080          children.add(new Property("baseCitation", "Reference(Citation)", "The citation for the full article or artifact.", 0, 1, baseCitation));
4081        }
4082
4083        @Override
4084        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4085          switch (_hash) {
4086          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "The kind of component.", 0, 1, type);
4087          case 111972721: /*value*/  return new Property("value", "string", "The specification of the component.", 0, 1, value);
4088          case 1182995672: /*baseCitation*/  return new Property("baseCitation", "Reference(Citation)", "The citation for the full article or artifact.", 0, 1, baseCitation);
4089          default: return super.getNamedProperty(_hash, _name, _checkValid);
4090          }
4091
4092        }
4093
4094      @Override
4095      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4096        switch (hash) {
4097        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
4098        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
4099        case 1182995672: /*baseCitation*/ return this.baseCitation == null ? new Base[0] : new Base[] {this.baseCitation}; // Reference
4100        default: return super.getProperty(hash, name, checkValid);
4101        }
4102
4103      }
4104
4105      @Override
4106      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4107        switch (hash) {
4108        case 3575610: // type
4109          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
4110          return value;
4111        case 111972721: // value
4112          this.value = TypeConvertor.castToString(value); // StringType
4113          return value;
4114        case 1182995672: // baseCitation
4115          this.baseCitation = TypeConvertor.castToReference(value); // Reference
4116          return value;
4117        default: return super.setProperty(hash, name, value);
4118        }
4119
4120      }
4121
4122      @Override
4123      public Base setProperty(String name, Base value) throws FHIRException {
4124        if (name.equals("type")) {
4125          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
4126        } else if (name.equals("value")) {
4127          this.value = TypeConvertor.castToString(value); // StringType
4128        } else if (name.equals("baseCitation")) {
4129          this.baseCitation = TypeConvertor.castToReference(value); // Reference
4130        } else
4131          return super.setProperty(name, value);
4132        return value;
4133      }
4134
4135  @Override
4136  public void removeChild(String name, Base value) throws FHIRException {
4137        if (name.equals("type")) {
4138          this.type = null;
4139        } else if (name.equals("value")) {
4140          this.value = null;
4141        } else if (name.equals("baseCitation")) {
4142          this.baseCitation = null;
4143        } else
4144          super.removeChild(name, value);
4145        
4146      }
4147
4148      @Override
4149      public Base makeProperty(int hash, String name) throws FHIRException {
4150        switch (hash) {
4151        case 3575610:  return getType();
4152        case 111972721:  return getValueElement();
4153        case 1182995672:  return getBaseCitation();
4154        default: return super.makeProperty(hash, name);
4155        }
4156
4157      }
4158
4159      @Override
4160      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4161        switch (hash) {
4162        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
4163        case 111972721: /*value*/ return new String[] {"string"};
4164        case 1182995672: /*baseCitation*/ return new String[] {"Reference"};
4165        default: return super.getTypesForProperty(hash, name);
4166        }
4167
4168      }
4169
4170      @Override
4171      public Base addChild(String name) throws FHIRException {
4172        if (name.equals("type")) {
4173          this.type = new CodeableConcept();
4174          return this.type;
4175        }
4176        else if (name.equals("value")) {
4177          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.part.value");
4178        }
4179        else if (name.equals("baseCitation")) {
4180          this.baseCitation = new Reference();
4181          return this.baseCitation;
4182        }
4183        else
4184          return super.addChild(name);
4185      }
4186
4187      public CitationCitedArtifactPartComponent copy() {
4188        CitationCitedArtifactPartComponent dst = new CitationCitedArtifactPartComponent();
4189        copyValues(dst);
4190        return dst;
4191      }
4192
4193      public void copyValues(CitationCitedArtifactPartComponent dst) {
4194        super.copyValues(dst);
4195        dst.type = type == null ? null : type.copy();
4196        dst.value = value == null ? null : value.copy();
4197        dst.baseCitation = baseCitation == null ? null : baseCitation.copy();
4198      }
4199
4200      @Override
4201      public boolean equalsDeep(Base other_) {
4202        if (!super.equalsDeep(other_))
4203          return false;
4204        if (!(other_ instanceof CitationCitedArtifactPartComponent))
4205          return false;
4206        CitationCitedArtifactPartComponent o = (CitationCitedArtifactPartComponent) other_;
4207        return compareDeep(type, o.type, true) && compareDeep(value, o.value, true) && compareDeep(baseCitation, o.baseCitation, true)
4208          ;
4209      }
4210
4211      @Override
4212      public boolean equalsShallow(Base other_) {
4213        if (!super.equalsShallow(other_))
4214          return false;
4215        if (!(other_ instanceof CitationCitedArtifactPartComponent))
4216          return false;
4217        CitationCitedArtifactPartComponent o = (CitationCitedArtifactPartComponent) other_;
4218        return compareValues(value, o.value, true);
4219      }
4220
4221      public boolean isEmpty() {
4222        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, value, baseCitation
4223          );
4224      }
4225
4226  public String fhirType() {
4227    return "Citation.citedArtifact.part";
4228
4229  }
4230
4231  }
4232
4233    @Block()
4234    public static class CitationCitedArtifactRelatesToComponent extends BackboneElement implements IBaseBackboneElement {
4235        /**
4236         * The type of relationship to the related artifact.
4237         */
4238        @Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
4239        @Description(shortDefinition="documentation | justification | citation | predecessor | successor | derived-from | depends-on | composed-of | part-of | amends | amended-with | appends | appended-with | cites | cited-by | comments-on | comment-in | contains | contained-in | corrects | correction-in | replaces | replaced-with | retracts | retracted-by | signs | similar-to | supports | supported-with | transforms | transformed-into | transformed-with | documents | specification-of | created-with | cite-as | reprint | reprint-of", formalDefinition="The type of relationship to the related artifact." )
4240        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/related-artifact-type-all")
4241        protected Enumeration<RelatedArtifactTypeExpanded> type;
4242
4243        /**
4244         * Provides additional classifiers of the related artifact.
4245         */
4246        @Child(name = "classifier", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4247        @Description(shortDefinition="Additional classifiers", formalDefinition="Provides additional classifiers of the related artifact." )
4248        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/citation-artifact-classifier")
4249        protected List<CodeableConcept> classifier;
4250
4251        /**
4252         * A short label that can be used to reference the related artifact from elsewhere in the containing artifact, such as a footnote index.
4253         */
4254        @Child(name = "label", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
4255        @Description(shortDefinition="Short label", formalDefinition="A short label that can be used to reference the related artifact from elsewhere in the containing artifact, such as a footnote index." )
4256        protected StringType label;
4257
4258        /**
4259         * A brief description of the document or knowledge resource being referenced, suitable for display to a consumer.
4260         */
4261        @Child(name = "display", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
4262        @Description(shortDefinition="Brief description of the related artifact", formalDefinition="A brief description of the document or knowledge resource being referenced, suitable for display to a consumer." )
4263        protected StringType display;
4264
4265        /**
4266         * A bibliographic citation for the related artifact. This text SHOULD be formatted according to an accepted citation format.
4267         */
4268        @Child(name = "citation", type = {MarkdownType.class}, order=5, min=0, max=1, modifier=false, summary=false)
4269        @Description(shortDefinition="Bibliographic citation for the artifact", formalDefinition="A bibliographic citation for the related artifact. This text SHOULD be formatted according to an accepted citation format." )
4270        protected MarkdownType citation;
4271
4272        /**
4273         * The document being referenced, represented as an attachment. Do not use this element if using the resource element to provide the canonical to the related artifact.
4274         */
4275        @Child(name = "document", type = {Attachment.class}, order=6, min=0, max=1, modifier=false, summary=false)
4276        @Description(shortDefinition="What document is being referenced", formalDefinition="The document being referenced, represented as an attachment. Do not use this element if using the resource element to provide the canonical to the related artifact." )
4277        protected Attachment document;
4278
4279        /**
4280         * The related artifact, such as a library, value set, profile, or other knowledge resource.
4281         */
4282        @Child(name = "resource", type = {CanonicalType.class}, order=7, min=0, max=1, modifier=false, summary=false)
4283        @Description(shortDefinition="What artifact is being referenced", formalDefinition="The related artifact, such as a library, value set, profile, or other knowledge resource." )
4284        protected CanonicalType resource;
4285
4286        /**
4287         * The related artifact, if the artifact is not a canonical resource, or a resource reference to a canonical resource.
4288         */
4289        @Child(name = "resourceReference", type = {Reference.class}, order=8, min=0, max=1, modifier=false, summary=false)
4290        @Description(shortDefinition="What artifact, if not a conformance resource", formalDefinition="The related artifact, if the artifact is not a canonical resource, or a resource reference to a canonical resource." )
4291        protected Reference resourceReference;
4292
4293        private static final long serialVersionUID = 1537406923L;
4294
4295    /**
4296     * Constructor
4297     */
4298      public CitationCitedArtifactRelatesToComponent() {
4299        super();
4300      }
4301
4302    /**
4303     * Constructor
4304     */
4305      public CitationCitedArtifactRelatesToComponent(RelatedArtifactTypeExpanded type) {
4306        super();
4307        this.setType(type);
4308      }
4309
4310        /**
4311         * @return {@link #type} (The type of relationship to the related artifact.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
4312         */
4313        public Enumeration<RelatedArtifactTypeExpanded> getTypeElement() { 
4314          if (this.type == null)
4315            if (Configuration.errorOnAutoCreate())
4316              throw new Error("Attempt to auto-create CitationCitedArtifactRelatesToComponent.type");
4317            else if (Configuration.doAutoCreate())
4318              this.type = new Enumeration<RelatedArtifactTypeExpanded>(new RelatedArtifactTypeExpandedEnumFactory()); // bb
4319          return this.type;
4320        }
4321
4322        public boolean hasTypeElement() { 
4323          return this.type != null && !this.type.isEmpty();
4324        }
4325
4326        public boolean hasType() { 
4327          return this.type != null && !this.type.isEmpty();
4328        }
4329
4330        /**
4331         * @param value {@link #type} (The type of relationship to the related artifact.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
4332         */
4333        public CitationCitedArtifactRelatesToComponent setTypeElement(Enumeration<RelatedArtifactTypeExpanded> value) { 
4334          this.type = value;
4335          return this;
4336        }
4337
4338        /**
4339         * @return The type of relationship to the related artifact.
4340         */
4341        public RelatedArtifactTypeExpanded getType() { 
4342          return this.type == null ? null : this.type.getValue();
4343        }
4344
4345        /**
4346         * @param value The type of relationship to the related artifact.
4347         */
4348        public CitationCitedArtifactRelatesToComponent setType(RelatedArtifactTypeExpanded value) { 
4349            if (this.type == null)
4350              this.type = new Enumeration<RelatedArtifactTypeExpanded>(new RelatedArtifactTypeExpandedEnumFactory());
4351            this.type.setValue(value);
4352          return this;
4353        }
4354
4355        /**
4356         * @return {@link #classifier} (Provides additional classifiers of the related artifact.)
4357         */
4358        public List<CodeableConcept> getClassifier() { 
4359          if (this.classifier == null)
4360            this.classifier = new ArrayList<CodeableConcept>();
4361          return this.classifier;
4362        }
4363
4364        /**
4365         * @return Returns a reference to <code>this</code> for easy method chaining
4366         */
4367        public CitationCitedArtifactRelatesToComponent setClassifier(List<CodeableConcept> theClassifier) { 
4368          this.classifier = theClassifier;
4369          return this;
4370        }
4371
4372        public boolean hasClassifier() { 
4373          if (this.classifier == null)
4374            return false;
4375          for (CodeableConcept item : this.classifier)
4376            if (!item.isEmpty())
4377              return true;
4378          return false;
4379        }
4380
4381        public CodeableConcept addClassifier() { //3
4382          CodeableConcept t = new CodeableConcept();
4383          if (this.classifier == null)
4384            this.classifier = new ArrayList<CodeableConcept>();
4385          this.classifier.add(t);
4386          return t;
4387        }
4388
4389        public CitationCitedArtifactRelatesToComponent addClassifier(CodeableConcept t) { //3
4390          if (t == null)
4391            return this;
4392          if (this.classifier == null)
4393            this.classifier = new ArrayList<CodeableConcept>();
4394          this.classifier.add(t);
4395          return this;
4396        }
4397
4398        /**
4399         * @return The first repetition of repeating field {@link #classifier}, creating it if it does not already exist {3}
4400         */
4401        public CodeableConcept getClassifierFirstRep() { 
4402          if (getClassifier().isEmpty()) {
4403            addClassifier();
4404          }
4405          return getClassifier().get(0);
4406        }
4407
4408        /**
4409         * @return {@link #label} (A short label that can be used to reference the related artifact from elsewhere in the containing artifact, such as a footnote index.). This is the underlying object with id, value and extensions. The accessor "getLabel" gives direct access to the value
4410         */
4411        public StringType getLabelElement() { 
4412          if (this.label == null)
4413            if (Configuration.errorOnAutoCreate())
4414              throw new Error("Attempt to auto-create CitationCitedArtifactRelatesToComponent.label");
4415            else if (Configuration.doAutoCreate())
4416              this.label = new StringType(); // bb
4417          return this.label;
4418        }
4419
4420        public boolean hasLabelElement() { 
4421          return this.label != null && !this.label.isEmpty();
4422        }
4423
4424        public boolean hasLabel() { 
4425          return this.label != null && !this.label.isEmpty();
4426        }
4427
4428        /**
4429         * @param value {@link #label} (A short label that can be used to reference the related artifact from elsewhere in the containing artifact, such as a footnote index.). This is the underlying object with id, value and extensions. The accessor "getLabel" gives direct access to the value
4430         */
4431        public CitationCitedArtifactRelatesToComponent setLabelElement(StringType value) { 
4432          this.label = value;
4433          return this;
4434        }
4435
4436        /**
4437         * @return A short label that can be used to reference the related artifact from elsewhere in the containing artifact, such as a footnote index.
4438         */
4439        public String getLabel() { 
4440          return this.label == null ? null : this.label.getValue();
4441        }
4442
4443        /**
4444         * @param value A short label that can be used to reference the related artifact from elsewhere in the containing artifact, such as a footnote index.
4445         */
4446        public CitationCitedArtifactRelatesToComponent setLabel(String value) { 
4447          if (Utilities.noString(value))
4448            this.label = null;
4449          else {
4450            if (this.label == null)
4451              this.label = new StringType();
4452            this.label.setValue(value);
4453          }
4454          return this;
4455        }
4456
4457        /**
4458         * @return {@link #display} (A brief description of the document or knowledge resource being referenced, suitable for display to a consumer.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
4459         */
4460        public StringType getDisplayElement() { 
4461          if (this.display == null)
4462            if (Configuration.errorOnAutoCreate())
4463              throw new Error("Attempt to auto-create CitationCitedArtifactRelatesToComponent.display");
4464            else if (Configuration.doAutoCreate())
4465              this.display = new StringType(); // bb
4466          return this.display;
4467        }
4468
4469        public boolean hasDisplayElement() { 
4470          return this.display != null && !this.display.isEmpty();
4471        }
4472
4473        public boolean hasDisplay() { 
4474          return this.display != null && !this.display.isEmpty();
4475        }
4476
4477        /**
4478         * @param value {@link #display} (A brief description of the document or knowledge resource being referenced, suitable for display to a consumer.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
4479         */
4480        public CitationCitedArtifactRelatesToComponent setDisplayElement(StringType value) { 
4481          this.display = value;
4482          return this;
4483        }
4484
4485        /**
4486         * @return A brief description of the document or knowledge resource being referenced, suitable for display to a consumer.
4487         */
4488        public String getDisplay() { 
4489          return this.display == null ? null : this.display.getValue();
4490        }
4491
4492        /**
4493         * @param value A brief description of the document or knowledge resource being referenced, suitable for display to a consumer.
4494         */
4495        public CitationCitedArtifactRelatesToComponent setDisplay(String value) { 
4496          if (Utilities.noString(value))
4497            this.display = null;
4498          else {
4499            if (this.display == null)
4500              this.display = new StringType();
4501            this.display.setValue(value);
4502          }
4503          return this;
4504        }
4505
4506        /**
4507         * @return {@link #citation} (A bibliographic citation for the related artifact. This text SHOULD be formatted according to an accepted citation format.). This is the underlying object with id, value and extensions. The accessor "getCitation" gives direct access to the value
4508         */
4509        public MarkdownType getCitationElement() { 
4510          if (this.citation == null)
4511            if (Configuration.errorOnAutoCreate())
4512              throw new Error("Attempt to auto-create CitationCitedArtifactRelatesToComponent.citation");
4513            else if (Configuration.doAutoCreate())
4514              this.citation = new MarkdownType(); // bb
4515          return this.citation;
4516        }
4517
4518        public boolean hasCitationElement() { 
4519          return this.citation != null && !this.citation.isEmpty();
4520        }
4521
4522        public boolean hasCitation() { 
4523          return this.citation != null && !this.citation.isEmpty();
4524        }
4525
4526        /**
4527         * @param value {@link #citation} (A bibliographic citation for the related artifact. This text SHOULD be formatted according to an accepted citation format.). This is the underlying object with id, value and extensions. The accessor "getCitation" gives direct access to the value
4528         */
4529        public CitationCitedArtifactRelatesToComponent setCitationElement(MarkdownType value) { 
4530          this.citation = value;
4531          return this;
4532        }
4533
4534        /**
4535         * @return A bibliographic citation for the related artifact. This text SHOULD be formatted according to an accepted citation format.
4536         */
4537        public String getCitation() { 
4538          return this.citation == null ? null : this.citation.getValue();
4539        }
4540
4541        /**
4542         * @param value A bibliographic citation for the related artifact. This text SHOULD be formatted according to an accepted citation format.
4543         */
4544        public CitationCitedArtifactRelatesToComponent setCitation(String value) { 
4545          if (Utilities.noString(value))
4546            this.citation = null;
4547          else {
4548            if (this.citation == null)
4549              this.citation = new MarkdownType();
4550            this.citation.setValue(value);
4551          }
4552          return this;
4553        }
4554
4555        /**
4556         * @return {@link #document} (The document being referenced, represented as an attachment. Do not use this element if using the resource element to provide the canonical to the related artifact.)
4557         */
4558        public Attachment getDocument() { 
4559          if (this.document == null)
4560            if (Configuration.errorOnAutoCreate())
4561              throw new Error("Attempt to auto-create CitationCitedArtifactRelatesToComponent.document");
4562            else if (Configuration.doAutoCreate())
4563              this.document = new Attachment(); // cc
4564          return this.document;
4565        }
4566
4567        public boolean hasDocument() { 
4568          return this.document != null && !this.document.isEmpty();
4569        }
4570
4571        /**
4572         * @param value {@link #document} (The document being referenced, represented as an attachment. Do not use this element if using the resource element to provide the canonical to the related artifact.)
4573         */
4574        public CitationCitedArtifactRelatesToComponent setDocument(Attachment value) { 
4575          this.document = value;
4576          return this;
4577        }
4578
4579        /**
4580         * @return {@link #resource} (The related artifact, such as a library, value set, profile, or other knowledge resource.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
4581         */
4582        public CanonicalType getResourceElement() { 
4583          if (this.resource == null)
4584            if (Configuration.errorOnAutoCreate())
4585              throw new Error("Attempt to auto-create CitationCitedArtifactRelatesToComponent.resource");
4586            else if (Configuration.doAutoCreate())
4587              this.resource = new CanonicalType(); // bb
4588          return this.resource;
4589        }
4590
4591        public boolean hasResourceElement() { 
4592          return this.resource != null && !this.resource.isEmpty();
4593        }
4594
4595        public boolean hasResource() { 
4596          return this.resource != null && !this.resource.isEmpty();
4597        }
4598
4599        /**
4600         * @param value {@link #resource} (The related artifact, such as a library, value set, profile, or other knowledge resource.). This is the underlying object with id, value and extensions. The accessor "getResource" gives direct access to the value
4601         */
4602        public CitationCitedArtifactRelatesToComponent setResourceElement(CanonicalType value) { 
4603          this.resource = value;
4604          return this;
4605        }
4606
4607        /**
4608         * @return The related artifact, such as a library, value set, profile, or other knowledge resource.
4609         */
4610        public String getResource() { 
4611          return this.resource == null ? null : this.resource.getValue();
4612        }
4613
4614        /**
4615         * @param value The related artifact, such as a library, value set, profile, or other knowledge resource.
4616         */
4617        public CitationCitedArtifactRelatesToComponent setResource(String value) { 
4618          if (Utilities.noString(value))
4619            this.resource = null;
4620          else {
4621            if (this.resource == null)
4622              this.resource = new CanonicalType();
4623            this.resource.setValue(value);
4624          }
4625          return this;
4626        }
4627
4628        /**
4629         * @return {@link #resourceReference} (The related artifact, if the artifact is not a canonical resource, or a resource reference to a canonical resource.)
4630         */
4631        public Reference getResourceReference() { 
4632          if (this.resourceReference == null)
4633            if (Configuration.errorOnAutoCreate())
4634              throw new Error("Attempt to auto-create CitationCitedArtifactRelatesToComponent.resourceReference");
4635            else if (Configuration.doAutoCreate())
4636              this.resourceReference = new Reference(); // cc
4637          return this.resourceReference;
4638        }
4639
4640        public boolean hasResourceReference() { 
4641          return this.resourceReference != null && !this.resourceReference.isEmpty();
4642        }
4643
4644        /**
4645         * @param value {@link #resourceReference} (The related artifact, if the artifact is not a canonical resource, or a resource reference to a canonical resource.)
4646         */
4647        public CitationCitedArtifactRelatesToComponent setResourceReference(Reference value) { 
4648          this.resourceReference = value;
4649          return this;
4650        }
4651
4652        protected void listChildren(List<Property> children) {
4653          super.listChildren(children);
4654          children.add(new Property("type", "code", "The type of relationship to the related artifact.", 0, 1, type));
4655          children.add(new Property("classifier", "CodeableConcept", "Provides additional classifiers of the related artifact.", 0, java.lang.Integer.MAX_VALUE, classifier));
4656          children.add(new Property("label", "string", "A short label that can be used to reference the related artifact from elsewhere in the containing artifact, such as a footnote index.", 0, 1, label));
4657          children.add(new Property("display", "string", "A brief description of the document or knowledge resource being referenced, suitable for display to a consumer.", 0, 1, display));
4658          children.add(new Property("citation", "markdown", "A bibliographic citation for the related artifact. This text SHOULD be formatted according to an accepted citation format.", 0, 1, citation));
4659          children.add(new Property("document", "Attachment", "The document being referenced, represented as an attachment. Do not use this element if using the resource element to provide the canonical to the related artifact.", 0, 1, document));
4660          children.add(new Property("resource", "canonical", "The related artifact, such as a library, value set, profile, or other knowledge resource.", 0, 1, resource));
4661          children.add(new Property("resourceReference", "Reference", "The related artifact, if the artifact is not a canonical resource, or a resource reference to a canonical resource.", 0, 1, resourceReference));
4662        }
4663
4664        @Override
4665        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4666          switch (_hash) {
4667          case 3575610: /*type*/  return new Property("type", "code", "The type of relationship to the related artifact.", 0, 1, type);
4668          case -281470431: /*classifier*/  return new Property("classifier", "CodeableConcept", "Provides additional classifiers of the related artifact.", 0, java.lang.Integer.MAX_VALUE, classifier);
4669          case 102727412: /*label*/  return new Property("label", "string", "A short label that can be used to reference the related artifact from elsewhere in the containing artifact, such as a footnote index.", 0, 1, label);
4670          case 1671764162: /*display*/  return new Property("display", "string", "A brief description of the document or knowledge resource being referenced, suitable for display to a consumer.", 0, 1, display);
4671          case -1442706713: /*citation*/  return new Property("citation", "markdown", "A bibliographic citation for the related artifact. This text SHOULD be formatted according to an accepted citation format.", 0, 1, citation);
4672          case 861720859: /*document*/  return new Property("document", "Attachment", "The document being referenced, represented as an attachment. Do not use this element if using the resource element to provide the canonical to the related artifact.", 0, 1, document);
4673          case -341064690: /*resource*/  return new Property("resource", "canonical", "The related artifact, such as a library, value set, profile, or other knowledge resource.", 0, 1, resource);
4674          case -610120995: /*resourceReference*/  return new Property("resourceReference", "Reference", "The related artifact, if the artifact is not a canonical resource, or a resource reference to a canonical resource.", 0, 1, resourceReference);
4675          default: return super.getNamedProperty(_hash, _name, _checkValid);
4676          }
4677
4678        }
4679
4680      @Override
4681      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4682        switch (hash) {
4683        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Enumeration<RelatedArtifactTypeExpanded>
4684        case -281470431: /*classifier*/ return this.classifier == null ? new Base[0] : this.classifier.toArray(new Base[this.classifier.size()]); // CodeableConcept
4685        case 102727412: /*label*/ return this.label == null ? new Base[0] : new Base[] {this.label}; // StringType
4686        case 1671764162: /*display*/ return this.display == null ? new Base[0] : new Base[] {this.display}; // StringType
4687        case -1442706713: /*citation*/ return this.citation == null ? new Base[0] : new Base[] {this.citation}; // MarkdownType
4688        case 861720859: /*document*/ return this.document == null ? new Base[0] : new Base[] {this.document}; // Attachment
4689        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : new Base[] {this.resource}; // CanonicalType
4690        case -610120995: /*resourceReference*/ return this.resourceReference == null ? new Base[0] : new Base[] {this.resourceReference}; // Reference
4691        default: return super.getProperty(hash, name, checkValid);
4692        }
4693
4694      }
4695
4696      @Override
4697      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4698        switch (hash) {
4699        case 3575610: // type
4700          value = new RelatedArtifactTypeExpandedEnumFactory().fromType(TypeConvertor.castToCode(value));
4701          this.type = (Enumeration) value; // Enumeration<RelatedArtifactTypeExpanded>
4702          return value;
4703        case -281470431: // classifier
4704          this.getClassifier().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
4705          return value;
4706        case 102727412: // label
4707          this.label = TypeConvertor.castToString(value); // StringType
4708          return value;
4709        case 1671764162: // display
4710          this.display = TypeConvertor.castToString(value); // StringType
4711          return value;
4712        case -1442706713: // citation
4713          this.citation = TypeConvertor.castToMarkdown(value); // MarkdownType
4714          return value;
4715        case 861720859: // document
4716          this.document = TypeConvertor.castToAttachment(value); // Attachment
4717          return value;
4718        case -341064690: // resource
4719          this.resource = TypeConvertor.castToCanonical(value); // CanonicalType
4720          return value;
4721        case -610120995: // resourceReference
4722          this.resourceReference = TypeConvertor.castToReference(value); // Reference
4723          return value;
4724        default: return super.setProperty(hash, name, value);
4725        }
4726
4727      }
4728
4729      @Override
4730      public Base setProperty(String name, Base value) throws FHIRException {
4731        if (name.equals("type")) {
4732          value = new RelatedArtifactTypeExpandedEnumFactory().fromType(TypeConvertor.castToCode(value));
4733          this.type = (Enumeration) value; // Enumeration<RelatedArtifactTypeExpanded>
4734        } else if (name.equals("classifier")) {
4735          this.getClassifier().add(TypeConvertor.castToCodeableConcept(value));
4736        } else if (name.equals("label")) {
4737          this.label = TypeConvertor.castToString(value); // StringType
4738        } else if (name.equals("display")) {
4739          this.display = TypeConvertor.castToString(value); // StringType
4740        } else if (name.equals("citation")) {
4741          this.citation = TypeConvertor.castToMarkdown(value); // MarkdownType
4742        } else if (name.equals("document")) {
4743          this.document = TypeConvertor.castToAttachment(value); // Attachment
4744        } else if (name.equals("resource")) {
4745          this.resource = TypeConvertor.castToCanonical(value); // CanonicalType
4746        } else if (name.equals("resourceReference")) {
4747          this.resourceReference = TypeConvertor.castToReference(value); // Reference
4748        } else
4749          return super.setProperty(name, value);
4750        return value;
4751      }
4752
4753  @Override
4754  public void removeChild(String name, Base value) throws FHIRException {
4755        if (name.equals("type")) {
4756          value = new RelatedArtifactTypeExpandedEnumFactory().fromType(TypeConvertor.castToCode(value));
4757          this.type = (Enumeration) value; // Enumeration<RelatedArtifactTypeExpanded>
4758        } else if (name.equals("classifier")) {
4759          this.getClassifier().remove(value);
4760        } else if (name.equals("label")) {
4761          this.label = null;
4762        } else if (name.equals("display")) {
4763          this.display = null;
4764        } else if (name.equals("citation")) {
4765          this.citation = null;
4766        } else if (name.equals("document")) {
4767          this.document = null;
4768        } else if (name.equals("resource")) {
4769          this.resource = null;
4770        } else if (name.equals("resourceReference")) {
4771          this.resourceReference = null;
4772        } else
4773          super.removeChild(name, value);
4774        
4775      }
4776
4777      @Override
4778      public Base makeProperty(int hash, String name) throws FHIRException {
4779        switch (hash) {
4780        case 3575610:  return getTypeElement();
4781        case -281470431:  return addClassifier(); 
4782        case 102727412:  return getLabelElement();
4783        case 1671764162:  return getDisplayElement();
4784        case -1442706713:  return getCitationElement();
4785        case 861720859:  return getDocument();
4786        case -341064690:  return getResourceElement();
4787        case -610120995:  return getResourceReference();
4788        default: return super.makeProperty(hash, name);
4789        }
4790
4791      }
4792
4793      @Override
4794      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4795        switch (hash) {
4796        case 3575610: /*type*/ return new String[] {"code"};
4797        case -281470431: /*classifier*/ return new String[] {"CodeableConcept"};
4798        case 102727412: /*label*/ return new String[] {"string"};
4799        case 1671764162: /*display*/ return new String[] {"string"};
4800        case -1442706713: /*citation*/ return new String[] {"markdown"};
4801        case 861720859: /*document*/ return new String[] {"Attachment"};
4802        case -341064690: /*resource*/ return new String[] {"canonical"};
4803        case -610120995: /*resourceReference*/ return new String[] {"Reference"};
4804        default: return super.getTypesForProperty(hash, name);
4805        }
4806
4807      }
4808
4809      @Override
4810      public Base addChild(String name) throws FHIRException {
4811        if (name.equals("type")) {
4812          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.relatesTo.type");
4813        }
4814        else if (name.equals("classifier")) {
4815          return addClassifier();
4816        }
4817        else if (name.equals("label")) {
4818          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.relatesTo.label");
4819        }
4820        else if (name.equals("display")) {
4821          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.relatesTo.display");
4822        }
4823        else if (name.equals("citation")) {
4824          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.relatesTo.citation");
4825        }
4826        else if (name.equals("document")) {
4827          this.document = new Attachment();
4828          return this.document;
4829        }
4830        else if (name.equals("resource")) {
4831          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.relatesTo.resource");
4832        }
4833        else if (name.equals("resourceReference")) {
4834          this.resourceReference = new Reference();
4835          return this.resourceReference;
4836        }
4837        else
4838          return super.addChild(name);
4839      }
4840
4841      public CitationCitedArtifactRelatesToComponent copy() {
4842        CitationCitedArtifactRelatesToComponent dst = new CitationCitedArtifactRelatesToComponent();
4843        copyValues(dst);
4844        return dst;
4845      }
4846
4847      public void copyValues(CitationCitedArtifactRelatesToComponent dst) {
4848        super.copyValues(dst);
4849        dst.type = type == null ? null : type.copy();
4850        if (classifier != null) {
4851          dst.classifier = new ArrayList<CodeableConcept>();
4852          for (CodeableConcept i : classifier)
4853            dst.classifier.add(i.copy());
4854        };
4855        dst.label = label == null ? null : label.copy();
4856        dst.display = display == null ? null : display.copy();
4857        dst.citation = citation == null ? null : citation.copy();
4858        dst.document = document == null ? null : document.copy();
4859        dst.resource = resource == null ? null : resource.copy();
4860        dst.resourceReference = resourceReference == null ? null : resourceReference.copy();
4861      }
4862
4863      @Override
4864      public boolean equalsDeep(Base other_) {
4865        if (!super.equalsDeep(other_))
4866          return false;
4867        if (!(other_ instanceof CitationCitedArtifactRelatesToComponent))
4868          return false;
4869        CitationCitedArtifactRelatesToComponent o = (CitationCitedArtifactRelatesToComponent) other_;
4870        return compareDeep(type, o.type, true) && compareDeep(classifier, o.classifier, true) && compareDeep(label, o.label, true)
4871           && compareDeep(display, o.display, true) && compareDeep(citation, o.citation, true) && compareDeep(document, o.document, true)
4872           && compareDeep(resource, o.resource, true) && compareDeep(resourceReference, o.resourceReference, true)
4873          ;
4874      }
4875
4876      @Override
4877      public boolean equalsShallow(Base other_) {
4878        if (!super.equalsShallow(other_))
4879          return false;
4880        if (!(other_ instanceof CitationCitedArtifactRelatesToComponent))
4881          return false;
4882        CitationCitedArtifactRelatesToComponent o = (CitationCitedArtifactRelatesToComponent) other_;
4883        return compareValues(type, o.type, true) && compareValues(label, o.label, true) && compareValues(display, o.display, true)
4884           && compareValues(citation, o.citation, true) && compareValues(resource, o.resource, true);
4885      }
4886
4887      public boolean isEmpty() {
4888        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, classifier, label
4889          , display, citation, document, resource, resourceReference);
4890      }
4891
4892  public String fhirType() {
4893    return "Citation.citedArtifact.relatesTo";
4894
4895  }
4896
4897  }
4898
4899    @Block()
4900    public static class CitationCitedArtifactPublicationFormComponent extends BackboneElement implements IBaseBackboneElement {
4901        /**
4902         * The collection the cited article or artifact is published in.
4903         */
4904        @Child(name = "publishedIn", type = {}, order=1, min=0, max=1, modifier=false, summary=false)
4905        @Description(shortDefinition="The collection the cited article or artifact is published in", formalDefinition="The collection the cited article or artifact is published in." )
4906        protected CitationCitedArtifactPublicationFormPublishedInComponent publishedIn;
4907
4908        /**
4909         * Describes the form of the medium cited. Common codes are "Internet" or "Print". The CitedMedium value set has 6 codes. The codes internet, print, and offline-digital-storage are the common codes for a typical publication form, though internet and print are more common for study citations. Three additional codes (each appending one of the primary codes with "-without-issue" are used for situations when a study is published both within an issue (of a periodical release as commonly done for journals) AND is published separately from the issue (as commonly done with early online publication), to represent specific identification of the publication form not associated with the issue.
4910         */
4911        @Child(name = "citedMedium", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
4912        @Description(shortDefinition="Internet or Print", formalDefinition="Describes the form of the medium cited. Common codes are \"Internet\" or \"Print\". The CitedMedium value set has 6 codes. The codes internet, print, and offline-digital-storage are the common codes for a typical publication form, though internet and print are more common for study citations. Three additional codes (each appending one of the primary codes with \"-without-issue\" are used for situations when a study is published both within an issue (of a periodical release as commonly done for journals) AND is published separately from the issue (as commonly done with early online publication), to represent specific identification of the publication form not associated with the issue." )
4913        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/cited-medium")
4914        protected CodeableConcept citedMedium;
4915
4916        /**
4917         * Volume number of journal or other collection in which the article is published.
4918         */
4919        @Child(name = "volume", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
4920        @Description(shortDefinition="Volume number of journal or other collection in which the article is published", formalDefinition="Volume number of journal or other collection in which the article is published." )
4921        protected StringType volume;
4922
4923        /**
4924         * Issue, part or supplement of journal or other collection in which the article is published.
4925         */
4926        @Child(name = "issue", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
4927        @Description(shortDefinition="Issue, part or supplement of journal or other collection in which the article is published", formalDefinition="Issue, part or supplement of journal or other collection in which the article is published." )
4928        protected StringType issue;
4929
4930        /**
4931         * The date the article was added to the database, or the date the article was released.
4932         */
4933        @Child(name = "articleDate", type = {DateTimeType.class}, order=5, min=0, max=1, modifier=false, summary=false)
4934        @Description(shortDefinition="The date the article was added to the database, or the date the article was released", formalDefinition="The date the article was added to the database, or the date the article was released." )
4935        protected DateTimeType articleDate;
4936
4937        /**
4938         * Text representation of the date on which the issue of the cited artifact was published.
4939         */
4940        @Child(name = "publicationDateText", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
4941        @Description(shortDefinition="Text representation of the date on which the issue of the cited artifact was published", formalDefinition="Text representation of the date on which the issue of the cited artifact was published." )
4942        protected StringType publicationDateText;
4943
4944        /**
4945         * Spring, Summer, Fall/Autumn, Winter.
4946         */
4947        @Child(name = "publicationDateSeason", type = {StringType.class}, order=7, min=0, max=1, modifier=false, summary=false)
4948        @Description(shortDefinition="Season in which the cited artifact was published", formalDefinition="Spring, Summer, Fall/Autumn, Winter." )
4949        protected StringType publicationDateSeason;
4950
4951        /**
4952         * The date the article was last revised or updated in the database.
4953         */
4954        @Child(name = "lastRevisionDate", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=false)
4955        @Description(shortDefinition="The date the article was last revised or updated in the database", formalDefinition="The date the article was last revised or updated in the database." )
4956        protected DateTimeType lastRevisionDate;
4957
4958        /**
4959         * The language or languages in which this form of the article is published.
4960         */
4961        @Child(name = "language", type = {CodeableConcept.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4962        @Description(shortDefinition="Language(s) in which this form of the article is published", formalDefinition="The language or languages in which this form of the article is published." )
4963        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/languages")
4964        protected List<CodeableConcept> language;
4965
4966        /**
4967         * Entry number or identifier for inclusion in a database.
4968         */
4969        @Child(name = "accessionNumber", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=false)
4970        @Description(shortDefinition="Entry number or identifier for inclusion in a database", formalDefinition="Entry number or identifier for inclusion in a database." )
4971        protected StringType accessionNumber;
4972
4973        /**
4974         * Used for full display of pagination.
4975         */
4976        @Child(name = "pageString", type = {StringType.class}, order=11, min=0, max=1, modifier=false, summary=false)
4977        @Description(shortDefinition="Used for full display of pagination", formalDefinition="Used for full display of pagination." )
4978        protected StringType pageString;
4979
4980        /**
4981         * Used for isolated representation of first page.
4982         */
4983        @Child(name = "firstPage", type = {StringType.class}, order=12, min=0, max=1, modifier=false, summary=false)
4984        @Description(shortDefinition="Used for isolated representation of first page", formalDefinition="Used for isolated representation of first page." )
4985        protected StringType firstPage;
4986
4987        /**
4988         * Used for isolated representation of last page.
4989         */
4990        @Child(name = "lastPage", type = {StringType.class}, order=13, min=0, max=1, modifier=false, summary=false)
4991        @Description(shortDefinition="Used for isolated representation of last page", formalDefinition="Used for isolated representation of last page." )
4992        protected StringType lastPage;
4993
4994        /**
4995         * Actual or approximate number of pages or screens. Distinct from reporting the page numbers.
4996         */
4997        @Child(name = "pageCount", type = {StringType.class}, order=14, min=0, max=1, modifier=false, summary=false)
4998        @Description(shortDefinition="Number of pages or screens", formalDefinition="Actual or approximate number of pages or screens. Distinct from reporting the page numbers." )
4999        protected StringType pageCount;
5000
5001        /**
5002         * Copyright notice for the full article or artifact.
5003         */
5004        @Child(name = "copyright", type = {MarkdownType.class}, order=15, min=0, max=1, modifier=false, summary=false)
5005        @Description(shortDefinition="Copyright notice for the full article or artifact", formalDefinition="Copyright notice for the full article or artifact." )
5006        protected MarkdownType copyright;
5007
5008        private static final long serialVersionUID = 1791622597L;
5009
5010    /**
5011     * Constructor
5012     */
5013      public CitationCitedArtifactPublicationFormComponent() {
5014        super();
5015      }
5016
5017        /**
5018         * @return {@link #publishedIn} (The collection the cited article or artifact is published in.)
5019         */
5020        public CitationCitedArtifactPublicationFormPublishedInComponent getPublishedIn() { 
5021          if (this.publishedIn == null)
5022            if (Configuration.errorOnAutoCreate())
5023              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormComponent.publishedIn");
5024            else if (Configuration.doAutoCreate())
5025              this.publishedIn = new CitationCitedArtifactPublicationFormPublishedInComponent(); // cc
5026          return this.publishedIn;
5027        }
5028
5029        public boolean hasPublishedIn() { 
5030          return this.publishedIn != null && !this.publishedIn.isEmpty();
5031        }
5032
5033        /**
5034         * @param value {@link #publishedIn} (The collection the cited article or artifact is published in.)
5035         */
5036        public CitationCitedArtifactPublicationFormComponent setPublishedIn(CitationCitedArtifactPublicationFormPublishedInComponent value) { 
5037          this.publishedIn = value;
5038          return this;
5039        }
5040
5041        /**
5042         * @return {@link #citedMedium} (Describes the form of the medium cited. Common codes are "Internet" or "Print". The CitedMedium value set has 6 codes. The codes internet, print, and offline-digital-storage are the common codes for a typical publication form, though internet and print are more common for study citations. Three additional codes (each appending one of the primary codes with "-without-issue" are used for situations when a study is published both within an issue (of a periodical release as commonly done for journals) AND is published separately from the issue (as commonly done with early online publication), to represent specific identification of the publication form not associated with the issue.)
5043         */
5044        public CodeableConcept getCitedMedium() { 
5045          if (this.citedMedium == null)
5046            if (Configuration.errorOnAutoCreate())
5047              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormComponent.citedMedium");
5048            else if (Configuration.doAutoCreate())
5049              this.citedMedium = new CodeableConcept(); // cc
5050          return this.citedMedium;
5051        }
5052
5053        public boolean hasCitedMedium() { 
5054          return this.citedMedium != null && !this.citedMedium.isEmpty();
5055        }
5056
5057        /**
5058         * @param value {@link #citedMedium} (Describes the form of the medium cited. Common codes are "Internet" or "Print". The CitedMedium value set has 6 codes. The codes internet, print, and offline-digital-storage are the common codes for a typical publication form, though internet and print are more common for study citations. Three additional codes (each appending one of the primary codes with "-without-issue" are used for situations when a study is published both within an issue (of a periodical release as commonly done for journals) AND is published separately from the issue (as commonly done with early online publication), to represent specific identification of the publication form not associated with the issue.)
5059         */
5060        public CitationCitedArtifactPublicationFormComponent setCitedMedium(CodeableConcept value) { 
5061          this.citedMedium = value;
5062          return this;
5063        }
5064
5065        /**
5066         * @return {@link #volume} (Volume number of journal or other collection in which the article is published.). This is the underlying object with id, value and extensions. The accessor "getVolume" gives direct access to the value
5067         */
5068        public StringType getVolumeElement() { 
5069          if (this.volume == null)
5070            if (Configuration.errorOnAutoCreate())
5071              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormComponent.volume");
5072            else if (Configuration.doAutoCreate())
5073              this.volume = new StringType(); // bb
5074          return this.volume;
5075        }
5076
5077        public boolean hasVolumeElement() { 
5078          return this.volume != null && !this.volume.isEmpty();
5079        }
5080
5081        public boolean hasVolume() { 
5082          return this.volume != null && !this.volume.isEmpty();
5083        }
5084
5085        /**
5086         * @param value {@link #volume} (Volume number of journal or other collection in which the article is published.). This is the underlying object with id, value and extensions. The accessor "getVolume" gives direct access to the value
5087         */
5088        public CitationCitedArtifactPublicationFormComponent setVolumeElement(StringType value) { 
5089          this.volume = value;
5090          return this;
5091        }
5092
5093        /**
5094         * @return Volume number of journal or other collection in which the article is published.
5095         */
5096        public String getVolume() { 
5097          return this.volume == null ? null : this.volume.getValue();
5098        }
5099
5100        /**
5101         * @param value Volume number of journal or other collection in which the article is published.
5102         */
5103        public CitationCitedArtifactPublicationFormComponent setVolume(String value) { 
5104          if (Utilities.noString(value))
5105            this.volume = null;
5106          else {
5107            if (this.volume == null)
5108              this.volume = new StringType();
5109            this.volume.setValue(value);
5110          }
5111          return this;
5112        }
5113
5114        /**
5115         * @return {@link #issue} (Issue, part or supplement of journal or other collection in which the article is published.). This is the underlying object with id, value and extensions. The accessor "getIssue" gives direct access to the value
5116         */
5117        public StringType getIssueElement() { 
5118          if (this.issue == null)
5119            if (Configuration.errorOnAutoCreate())
5120              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormComponent.issue");
5121            else if (Configuration.doAutoCreate())
5122              this.issue = new StringType(); // bb
5123          return this.issue;
5124        }
5125
5126        public boolean hasIssueElement() { 
5127          return this.issue != null && !this.issue.isEmpty();
5128        }
5129
5130        public boolean hasIssue() { 
5131          return this.issue != null && !this.issue.isEmpty();
5132        }
5133
5134        /**
5135         * @param value {@link #issue} (Issue, part or supplement of journal or other collection in which the article is published.). This is the underlying object with id, value and extensions. The accessor "getIssue" gives direct access to the value
5136         */
5137        public CitationCitedArtifactPublicationFormComponent setIssueElement(StringType value) { 
5138          this.issue = value;
5139          return this;
5140        }
5141
5142        /**
5143         * @return Issue, part or supplement of journal or other collection in which the article is published.
5144         */
5145        public String getIssue() { 
5146          return this.issue == null ? null : this.issue.getValue();
5147        }
5148
5149        /**
5150         * @param value Issue, part or supplement of journal or other collection in which the article is published.
5151         */
5152        public CitationCitedArtifactPublicationFormComponent setIssue(String value) { 
5153          if (Utilities.noString(value))
5154            this.issue = null;
5155          else {
5156            if (this.issue == null)
5157              this.issue = new StringType();
5158            this.issue.setValue(value);
5159          }
5160          return this;
5161        }
5162
5163        /**
5164         * @return {@link #articleDate} (The date the article was added to the database, or the date the article was released.). This is the underlying object with id, value and extensions. The accessor "getArticleDate" gives direct access to the value
5165         */
5166        public DateTimeType getArticleDateElement() { 
5167          if (this.articleDate == null)
5168            if (Configuration.errorOnAutoCreate())
5169              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormComponent.articleDate");
5170            else if (Configuration.doAutoCreate())
5171              this.articleDate = new DateTimeType(); // bb
5172          return this.articleDate;
5173        }
5174
5175        public boolean hasArticleDateElement() { 
5176          return this.articleDate != null && !this.articleDate.isEmpty();
5177        }
5178
5179        public boolean hasArticleDate() { 
5180          return this.articleDate != null && !this.articleDate.isEmpty();
5181        }
5182
5183        /**
5184         * @param value {@link #articleDate} (The date the article was added to the database, or the date the article was released.). This is the underlying object with id, value and extensions. The accessor "getArticleDate" gives direct access to the value
5185         */
5186        public CitationCitedArtifactPublicationFormComponent setArticleDateElement(DateTimeType value) { 
5187          this.articleDate = value;
5188          return this;
5189        }
5190
5191        /**
5192         * @return The date the article was added to the database, or the date the article was released.
5193         */
5194        public Date getArticleDate() { 
5195          return this.articleDate == null ? null : this.articleDate.getValue();
5196        }
5197
5198        /**
5199         * @param value The date the article was added to the database, or the date the article was released.
5200         */
5201        public CitationCitedArtifactPublicationFormComponent setArticleDate(Date value) { 
5202          if (value == null)
5203            this.articleDate = null;
5204          else {
5205            if (this.articleDate == null)
5206              this.articleDate = new DateTimeType();
5207            this.articleDate.setValue(value);
5208          }
5209          return this;
5210        }
5211
5212        /**
5213         * @return {@link #publicationDateText} (Text representation of the date on which the issue of the cited artifact was published.). This is the underlying object with id, value and extensions. The accessor "getPublicationDateText" gives direct access to the value
5214         */
5215        public StringType getPublicationDateTextElement() { 
5216          if (this.publicationDateText == null)
5217            if (Configuration.errorOnAutoCreate())
5218              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormComponent.publicationDateText");
5219            else if (Configuration.doAutoCreate())
5220              this.publicationDateText = new StringType(); // bb
5221          return this.publicationDateText;
5222        }
5223
5224        public boolean hasPublicationDateTextElement() { 
5225          return this.publicationDateText != null && !this.publicationDateText.isEmpty();
5226        }
5227
5228        public boolean hasPublicationDateText() { 
5229          return this.publicationDateText != null && !this.publicationDateText.isEmpty();
5230        }
5231
5232        /**
5233         * @param value {@link #publicationDateText} (Text representation of the date on which the issue of the cited artifact was published.). This is the underlying object with id, value and extensions. The accessor "getPublicationDateText" gives direct access to the value
5234         */
5235        public CitationCitedArtifactPublicationFormComponent setPublicationDateTextElement(StringType value) { 
5236          this.publicationDateText = value;
5237          return this;
5238        }
5239
5240        /**
5241         * @return Text representation of the date on which the issue of the cited artifact was published.
5242         */
5243        public String getPublicationDateText() { 
5244          return this.publicationDateText == null ? null : this.publicationDateText.getValue();
5245        }
5246
5247        /**
5248         * @param value Text representation of the date on which the issue of the cited artifact was published.
5249         */
5250        public CitationCitedArtifactPublicationFormComponent setPublicationDateText(String value) { 
5251          if (Utilities.noString(value))
5252            this.publicationDateText = null;
5253          else {
5254            if (this.publicationDateText == null)
5255              this.publicationDateText = new StringType();
5256            this.publicationDateText.setValue(value);
5257          }
5258          return this;
5259        }
5260
5261        /**
5262         * @return {@link #publicationDateSeason} (Spring, Summer, Fall/Autumn, Winter.). This is the underlying object with id, value and extensions. The accessor "getPublicationDateSeason" gives direct access to the value
5263         */
5264        public StringType getPublicationDateSeasonElement() { 
5265          if (this.publicationDateSeason == null)
5266            if (Configuration.errorOnAutoCreate())
5267              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormComponent.publicationDateSeason");
5268            else if (Configuration.doAutoCreate())
5269              this.publicationDateSeason = new StringType(); // bb
5270          return this.publicationDateSeason;
5271        }
5272
5273        public boolean hasPublicationDateSeasonElement() { 
5274          return this.publicationDateSeason != null && !this.publicationDateSeason.isEmpty();
5275        }
5276
5277        public boolean hasPublicationDateSeason() { 
5278          return this.publicationDateSeason != null && !this.publicationDateSeason.isEmpty();
5279        }
5280
5281        /**
5282         * @param value {@link #publicationDateSeason} (Spring, Summer, Fall/Autumn, Winter.). This is the underlying object with id, value and extensions. The accessor "getPublicationDateSeason" gives direct access to the value
5283         */
5284        public CitationCitedArtifactPublicationFormComponent setPublicationDateSeasonElement(StringType value) { 
5285          this.publicationDateSeason = value;
5286          return this;
5287        }
5288
5289        /**
5290         * @return Spring, Summer, Fall/Autumn, Winter.
5291         */
5292        public String getPublicationDateSeason() { 
5293          return this.publicationDateSeason == null ? null : this.publicationDateSeason.getValue();
5294        }
5295
5296        /**
5297         * @param value Spring, Summer, Fall/Autumn, Winter.
5298         */
5299        public CitationCitedArtifactPublicationFormComponent setPublicationDateSeason(String value) { 
5300          if (Utilities.noString(value))
5301            this.publicationDateSeason = null;
5302          else {
5303            if (this.publicationDateSeason == null)
5304              this.publicationDateSeason = new StringType();
5305            this.publicationDateSeason.setValue(value);
5306          }
5307          return this;
5308        }
5309
5310        /**
5311         * @return {@link #lastRevisionDate} (The date the article was last revised or updated in the database.). This is the underlying object with id, value and extensions. The accessor "getLastRevisionDate" gives direct access to the value
5312         */
5313        public DateTimeType getLastRevisionDateElement() { 
5314          if (this.lastRevisionDate == null)
5315            if (Configuration.errorOnAutoCreate())
5316              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormComponent.lastRevisionDate");
5317            else if (Configuration.doAutoCreate())
5318              this.lastRevisionDate = new DateTimeType(); // bb
5319          return this.lastRevisionDate;
5320        }
5321
5322        public boolean hasLastRevisionDateElement() { 
5323          return this.lastRevisionDate != null && !this.lastRevisionDate.isEmpty();
5324        }
5325
5326        public boolean hasLastRevisionDate() { 
5327          return this.lastRevisionDate != null && !this.lastRevisionDate.isEmpty();
5328        }
5329
5330        /**
5331         * @param value {@link #lastRevisionDate} (The date the article was last revised or updated in the database.). This is the underlying object with id, value and extensions. The accessor "getLastRevisionDate" gives direct access to the value
5332         */
5333        public CitationCitedArtifactPublicationFormComponent setLastRevisionDateElement(DateTimeType value) { 
5334          this.lastRevisionDate = value;
5335          return this;
5336        }
5337
5338        /**
5339         * @return The date the article was last revised or updated in the database.
5340         */
5341        public Date getLastRevisionDate() { 
5342          return this.lastRevisionDate == null ? null : this.lastRevisionDate.getValue();
5343        }
5344
5345        /**
5346         * @param value The date the article was last revised or updated in the database.
5347         */
5348        public CitationCitedArtifactPublicationFormComponent setLastRevisionDate(Date value) { 
5349          if (value == null)
5350            this.lastRevisionDate = null;
5351          else {
5352            if (this.lastRevisionDate == null)
5353              this.lastRevisionDate = new DateTimeType();
5354            this.lastRevisionDate.setValue(value);
5355          }
5356          return this;
5357        }
5358
5359        /**
5360         * @return {@link #language} (The language or languages in which this form of the article is published.)
5361         */
5362        public List<CodeableConcept> getLanguage() { 
5363          if (this.language == null)
5364            this.language = new ArrayList<CodeableConcept>();
5365          return this.language;
5366        }
5367
5368        /**
5369         * @return Returns a reference to <code>this</code> for easy method chaining
5370         */
5371        public CitationCitedArtifactPublicationFormComponent setLanguage(List<CodeableConcept> theLanguage) { 
5372          this.language = theLanguage;
5373          return this;
5374        }
5375
5376        public boolean hasLanguage() { 
5377          if (this.language == null)
5378            return false;
5379          for (CodeableConcept item : this.language)
5380            if (!item.isEmpty())
5381              return true;
5382          return false;
5383        }
5384
5385        public CodeableConcept addLanguage() { //3
5386          CodeableConcept t = new CodeableConcept();
5387          if (this.language == null)
5388            this.language = new ArrayList<CodeableConcept>();
5389          this.language.add(t);
5390          return t;
5391        }
5392
5393        public CitationCitedArtifactPublicationFormComponent addLanguage(CodeableConcept t) { //3
5394          if (t == null)
5395            return this;
5396          if (this.language == null)
5397            this.language = new ArrayList<CodeableConcept>();
5398          this.language.add(t);
5399          return this;
5400        }
5401
5402        /**
5403         * @return The first repetition of repeating field {@link #language}, creating it if it does not already exist {3}
5404         */
5405        public CodeableConcept getLanguageFirstRep() { 
5406          if (getLanguage().isEmpty()) {
5407            addLanguage();
5408          }
5409          return getLanguage().get(0);
5410        }
5411
5412        /**
5413         * @return {@link #accessionNumber} (Entry number or identifier for inclusion in a database.). This is the underlying object with id, value and extensions. The accessor "getAccessionNumber" gives direct access to the value
5414         */
5415        public StringType getAccessionNumberElement() { 
5416          if (this.accessionNumber == null)
5417            if (Configuration.errorOnAutoCreate())
5418              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormComponent.accessionNumber");
5419            else if (Configuration.doAutoCreate())
5420              this.accessionNumber = new StringType(); // bb
5421          return this.accessionNumber;
5422        }
5423
5424        public boolean hasAccessionNumberElement() { 
5425          return this.accessionNumber != null && !this.accessionNumber.isEmpty();
5426        }
5427
5428        public boolean hasAccessionNumber() { 
5429          return this.accessionNumber != null && !this.accessionNumber.isEmpty();
5430        }
5431
5432        /**
5433         * @param value {@link #accessionNumber} (Entry number or identifier for inclusion in a database.). This is the underlying object with id, value and extensions. The accessor "getAccessionNumber" gives direct access to the value
5434         */
5435        public CitationCitedArtifactPublicationFormComponent setAccessionNumberElement(StringType value) { 
5436          this.accessionNumber = value;
5437          return this;
5438        }
5439
5440        /**
5441         * @return Entry number or identifier for inclusion in a database.
5442         */
5443        public String getAccessionNumber() { 
5444          return this.accessionNumber == null ? null : this.accessionNumber.getValue();
5445        }
5446
5447        /**
5448         * @param value Entry number or identifier for inclusion in a database.
5449         */
5450        public CitationCitedArtifactPublicationFormComponent setAccessionNumber(String value) { 
5451          if (Utilities.noString(value))
5452            this.accessionNumber = null;
5453          else {
5454            if (this.accessionNumber == null)
5455              this.accessionNumber = new StringType();
5456            this.accessionNumber.setValue(value);
5457          }
5458          return this;
5459        }
5460
5461        /**
5462         * @return {@link #pageString} (Used for full display of pagination.). This is the underlying object with id, value and extensions. The accessor "getPageString" gives direct access to the value
5463         */
5464        public StringType getPageStringElement() { 
5465          if (this.pageString == null)
5466            if (Configuration.errorOnAutoCreate())
5467              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormComponent.pageString");
5468            else if (Configuration.doAutoCreate())
5469              this.pageString = new StringType(); // bb
5470          return this.pageString;
5471        }
5472
5473        public boolean hasPageStringElement() { 
5474          return this.pageString != null && !this.pageString.isEmpty();
5475        }
5476
5477        public boolean hasPageString() { 
5478          return this.pageString != null && !this.pageString.isEmpty();
5479        }
5480
5481        /**
5482         * @param value {@link #pageString} (Used for full display of pagination.). This is the underlying object with id, value and extensions. The accessor "getPageString" gives direct access to the value
5483         */
5484        public CitationCitedArtifactPublicationFormComponent setPageStringElement(StringType value) { 
5485          this.pageString = value;
5486          return this;
5487        }
5488
5489        /**
5490         * @return Used for full display of pagination.
5491         */
5492        public String getPageString() { 
5493          return this.pageString == null ? null : this.pageString.getValue();
5494        }
5495
5496        /**
5497         * @param value Used for full display of pagination.
5498         */
5499        public CitationCitedArtifactPublicationFormComponent setPageString(String value) { 
5500          if (Utilities.noString(value))
5501            this.pageString = null;
5502          else {
5503            if (this.pageString == null)
5504              this.pageString = new StringType();
5505            this.pageString.setValue(value);
5506          }
5507          return this;
5508        }
5509
5510        /**
5511         * @return {@link #firstPage} (Used for isolated representation of first page.). This is the underlying object with id, value and extensions. The accessor "getFirstPage" gives direct access to the value
5512         */
5513        public StringType getFirstPageElement() { 
5514          if (this.firstPage == null)
5515            if (Configuration.errorOnAutoCreate())
5516              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormComponent.firstPage");
5517            else if (Configuration.doAutoCreate())
5518              this.firstPage = new StringType(); // bb
5519          return this.firstPage;
5520        }
5521
5522        public boolean hasFirstPageElement() { 
5523          return this.firstPage != null && !this.firstPage.isEmpty();
5524        }
5525
5526        public boolean hasFirstPage() { 
5527          return this.firstPage != null && !this.firstPage.isEmpty();
5528        }
5529
5530        /**
5531         * @param value {@link #firstPage} (Used for isolated representation of first page.). This is the underlying object with id, value and extensions. The accessor "getFirstPage" gives direct access to the value
5532         */
5533        public CitationCitedArtifactPublicationFormComponent setFirstPageElement(StringType value) { 
5534          this.firstPage = value;
5535          return this;
5536        }
5537
5538        /**
5539         * @return Used for isolated representation of first page.
5540         */
5541        public String getFirstPage() { 
5542          return this.firstPage == null ? null : this.firstPage.getValue();
5543        }
5544
5545        /**
5546         * @param value Used for isolated representation of first page.
5547         */
5548        public CitationCitedArtifactPublicationFormComponent setFirstPage(String value) { 
5549          if (Utilities.noString(value))
5550            this.firstPage = null;
5551          else {
5552            if (this.firstPage == null)
5553              this.firstPage = new StringType();
5554            this.firstPage.setValue(value);
5555          }
5556          return this;
5557        }
5558
5559        /**
5560         * @return {@link #lastPage} (Used for isolated representation of last page.). This is the underlying object with id, value and extensions. The accessor "getLastPage" gives direct access to the value
5561         */
5562        public StringType getLastPageElement() { 
5563          if (this.lastPage == null)
5564            if (Configuration.errorOnAutoCreate())
5565              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormComponent.lastPage");
5566            else if (Configuration.doAutoCreate())
5567              this.lastPage = new StringType(); // bb
5568          return this.lastPage;
5569        }
5570
5571        public boolean hasLastPageElement() { 
5572          return this.lastPage != null && !this.lastPage.isEmpty();
5573        }
5574
5575        public boolean hasLastPage() { 
5576          return this.lastPage != null && !this.lastPage.isEmpty();
5577        }
5578
5579        /**
5580         * @param value {@link #lastPage} (Used for isolated representation of last page.). This is the underlying object with id, value and extensions. The accessor "getLastPage" gives direct access to the value
5581         */
5582        public CitationCitedArtifactPublicationFormComponent setLastPageElement(StringType value) { 
5583          this.lastPage = value;
5584          return this;
5585        }
5586
5587        /**
5588         * @return Used for isolated representation of last page.
5589         */
5590        public String getLastPage() { 
5591          return this.lastPage == null ? null : this.lastPage.getValue();
5592        }
5593
5594        /**
5595         * @param value Used for isolated representation of last page.
5596         */
5597        public CitationCitedArtifactPublicationFormComponent setLastPage(String value) { 
5598          if (Utilities.noString(value))
5599            this.lastPage = null;
5600          else {
5601            if (this.lastPage == null)
5602              this.lastPage = new StringType();
5603            this.lastPage.setValue(value);
5604          }
5605          return this;
5606        }
5607
5608        /**
5609         * @return {@link #pageCount} (Actual or approximate number of pages or screens. Distinct from reporting the page numbers.). This is the underlying object with id, value and extensions. The accessor "getPageCount" gives direct access to the value
5610         */
5611        public StringType getPageCountElement() { 
5612          if (this.pageCount == null)
5613            if (Configuration.errorOnAutoCreate())
5614              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormComponent.pageCount");
5615            else if (Configuration.doAutoCreate())
5616              this.pageCount = new StringType(); // bb
5617          return this.pageCount;
5618        }
5619
5620        public boolean hasPageCountElement() { 
5621          return this.pageCount != null && !this.pageCount.isEmpty();
5622        }
5623
5624        public boolean hasPageCount() { 
5625          return this.pageCount != null && !this.pageCount.isEmpty();
5626        }
5627
5628        /**
5629         * @param value {@link #pageCount} (Actual or approximate number of pages or screens. Distinct from reporting the page numbers.). This is the underlying object with id, value and extensions. The accessor "getPageCount" gives direct access to the value
5630         */
5631        public CitationCitedArtifactPublicationFormComponent setPageCountElement(StringType value) { 
5632          this.pageCount = value;
5633          return this;
5634        }
5635
5636        /**
5637         * @return Actual or approximate number of pages or screens. Distinct from reporting the page numbers.
5638         */
5639        public String getPageCount() { 
5640          return this.pageCount == null ? null : this.pageCount.getValue();
5641        }
5642
5643        /**
5644         * @param value Actual or approximate number of pages or screens. Distinct from reporting the page numbers.
5645         */
5646        public CitationCitedArtifactPublicationFormComponent setPageCount(String value) { 
5647          if (Utilities.noString(value))
5648            this.pageCount = null;
5649          else {
5650            if (this.pageCount == null)
5651              this.pageCount = new StringType();
5652            this.pageCount.setValue(value);
5653          }
5654          return this;
5655        }
5656
5657        /**
5658         * @return {@link #copyright} (Copyright notice for the full article or artifact.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
5659         */
5660        public MarkdownType getCopyrightElement() { 
5661          if (this.copyright == null)
5662            if (Configuration.errorOnAutoCreate())
5663              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormComponent.copyright");
5664            else if (Configuration.doAutoCreate())
5665              this.copyright = new MarkdownType(); // bb
5666          return this.copyright;
5667        }
5668
5669        public boolean hasCopyrightElement() { 
5670          return this.copyright != null && !this.copyright.isEmpty();
5671        }
5672
5673        public boolean hasCopyright() { 
5674          return this.copyright != null && !this.copyright.isEmpty();
5675        }
5676
5677        /**
5678         * @param value {@link #copyright} (Copyright notice for the full article or artifact.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
5679         */
5680        public CitationCitedArtifactPublicationFormComponent setCopyrightElement(MarkdownType value) { 
5681          this.copyright = value;
5682          return this;
5683        }
5684
5685        /**
5686         * @return Copyright notice for the full article or artifact.
5687         */
5688        public String getCopyright() { 
5689          return this.copyright == null ? null : this.copyright.getValue();
5690        }
5691
5692        /**
5693         * @param value Copyright notice for the full article or artifact.
5694         */
5695        public CitationCitedArtifactPublicationFormComponent setCopyright(String value) { 
5696          if (Utilities.noString(value))
5697            this.copyright = null;
5698          else {
5699            if (this.copyright == null)
5700              this.copyright = new MarkdownType();
5701            this.copyright.setValue(value);
5702          }
5703          return this;
5704        }
5705
5706        protected void listChildren(List<Property> children) {
5707          super.listChildren(children);
5708          children.add(new Property("publishedIn", "", "The collection the cited article or artifact is published in.", 0, 1, publishedIn));
5709          children.add(new Property("citedMedium", "CodeableConcept", "Describes the form of the medium cited. Common codes are \"Internet\" or \"Print\". The CitedMedium value set has 6 codes. The codes internet, print, and offline-digital-storage are the common codes for a typical publication form, though internet and print are more common for study citations. Three additional codes (each appending one of the primary codes with \"-without-issue\" are used for situations when a study is published both within an issue (of a periodical release as commonly done for journals) AND is published separately from the issue (as commonly done with early online publication), to represent specific identification of the publication form not associated with the issue.", 0, 1, citedMedium));
5710          children.add(new Property("volume", "string", "Volume number of journal or other collection in which the article is published.", 0, 1, volume));
5711          children.add(new Property("issue", "string", "Issue, part or supplement of journal or other collection in which the article is published.", 0, 1, issue));
5712          children.add(new Property("articleDate", "dateTime", "The date the article was added to the database, or the date the article was released.", 0, 1, articleDate));
5713          children.add(new Property("publicationDateText", "string", "Text representation of the date on which the issue of the cited artifact was published.", 0, 1, publicationDateText));
5714          children.add(new Property("publicationDateSeason", "string", "Spring, Summer, Fall/Autumn, Winter.", 0, 1, publicationDateSeason));
5715          children.add(new Property("lastRevisionDate", "dateTime", "The date the article was last revised or updated in the database.", 0, 1, lastRevisionDate));
5716          children.add(new Property("language", "CodeableConcept", "The language or languages in which this form of the article is published.", 0, java.lang.Integer.MAX_VALUE, language));
5717          children.add(new Property("accessionNumber", "string", "Entry number or identifier for inclusion in a database.", 0, 1, accessionNumber));
5718          children.add(new Property("pageString", "string", "Used for full display of pagination.", 0, 1, pageString));
5719          children.add(new Property("firstPage", "string", "Used for isolated representation of first page.", 0, 1, firstPage));
5720          children.add(new Property("lastPage", "string", "Used for isolated representation of last page.", 0, 1, lastPage));
5721          children.add(new Property("pageCount", "string", "Actual or approximate number of pages or screens. Distinct from reporting the page numbers.", 0, 1, pageCount));
5722          children.add(new Property("copyright", "markdown", "Copyright notice for the full article or artifact.", 0, 1, copyright));
5723        }
5724
5725        @Override
5726        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5727          switch (_hash) {
5728          case -614144077: /*publishedIn*/  return new Property("publishedIn", "", "The collection the cited article or artifact is published in.", 0, 1, publishedIn);
5729          case 612116418: /*citedMedium*/  return new Property("citedMedium", "CodeableConcept", "Describes the form of the medium cited. Common codes are \"Internet\" or \"Print\". The CitedMedium value set has 6 codes. The codes internet, print, and offline-digital-storage are the common codes for a typical publication form, though internet and print are more common for study citations. Three additional codes (each appending one of the primary codes with \"-without-issue\" are used for situations when a study is published both within an issue (of a periodical release as commonly done for journals) AND is published separately from the issue (as commonly done with early online publication), to represent specific identification of the publication form not associated with the issue.", 0, 1, citedMedium);
5730          case -810883302: /*volume*/  return new Property("volume", "string", "Volume number of journal or other collection in which the article is published.", 0, 1, volume);
5731          case 100509913: /*issue*/  return new Property("issue", "string", "Issue, part or supplement of journal or other collection in which the article is published.", 0, 1, issue);
5732          case 817743300: /*articleDate*/  return new Property("articleDate", "dateTime", "The date the article was added to the database, or the date the article was released.", 0, 1, articleDate);
5733          case 225590343: /*publicationDateText*/  return new Property("publicationDateText", "string", "Text representation of the date on which the issue of the cited artifact was published.", 0, 1, publicationDateText);
5734          case 2014643069: /*publicationDateSeason*/  return new Property("publicationDateSeason", "string", "Spring, Summer, Fall/Autumn, Winter.", 0, 1, publicationDateSeason);
5735          case 2129161183: /*lastRevisionDate*/  return new Property("lastRevisionDate", "dateTime", "The date the article was last revised or updated in the database.", 0, 1, lastRevisionDate);
5736          case -1613589672: /*language*/  return new Property("language", "CodeableConcept", "The language or languages in which this form of the article is published.", 0, java.lang.Integer.MAX_VALUE, language);
5737          case 1807963277: /*accessionNumber*/  return new Property("accessionNumber", "string", "Entry number or identifier for inclusion in a database.", 0, 1, accessionNumber);
5738          case 1287145344: /*pageString*/  return new Property("pageString", "string", "Used for full display of pagination.", 0, 1, pageString);
5739          case 132895071: /*firstPage*/  return new Property("firstPage", "string", "Used for isolated representation of first page.", 0, 1, firstPage);
5740          case -1459540411: /*lastPage*/  return new Property("lastPage", "string", "Used for isolated representation of last page.", 0, 1, lastPage);
5741          case 857882560: /*pageCount*/  return new Property("pageCount", "string", "Actual or approximate number of pages or screens. Distinct from reporting the page numbers.", 0, 1, pageCount);
5742          case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "Copyright notice for the full article or artifact.", 0, 1, copyright);
5743          default: return super.getNamedProperty(_hash, _name, _checkValid);
5744          }
5745
5746        }
5747
5748      @Override
5749      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5750        switch (hash) {
5751        case -614144077: /*publishedIn*/ return this.publishedIn == null ? new Base[0] : new Base[] {this.publishedIn}; // CitationCitedArtifactPublicationFormPublishedInComponent
5752        case 612116418: /*citedMedium*/ return this.citedMedium == null ? new Base[0] : new Base[] {this.citedMedium}; // CodeableConcept
5753        case -810883302: /*volume*/ return this.volume == null ? new Base[0] : new Base[] {this.volume}; // StringType
5754        case 100509913: /*issue*/ return this.issue == null ? new Base[0] : new Base[] {this.issue}; // StringType
5755        case 817743300: /*articleDate*/ return this.articleDate == null ? new Base[0] : new Base[] {this.articleDate}; // DateTimeType
5756        case 225590343: /*publicationDateText*/ return this.publicationDateText == null ? new Base[0] : new Base[] {this.publicationDateText}; // StringType
5757        case 2014643069: /*publicationDateSeason*/ return this.publicationDateSeason == null ? new Base[0] : new Base[] {this.publicationDateSeason}; // StringType
5758        case 2129161183: /*lastRevisionDate*/ return this.lastRevisionDate == null ? new Base[0] : new Base[] {this.lastRevisionDate}; // DateTimeType
5759        case -1613589672: /*language*/ return this.language == null ? new Base[0] : this.language.toArray(new Base[this.language.size()]); // CodeableConcept
5760        case 1807963277: /*accessionNumber*/ return this.accessionNumber == null ? new Base[0] : new Base[] {this.accessionNumber}; // StringType
5761        case 1287145344: /*pageString*/ return this.pageString == null ? new Base[0] : new Base[] {this.pageString}; // StringType
5762        case 132895071: /*firstPage*/ return this.firstPage == null ? new Base[0] : new Base[] {this.firstPage}; // StringType
5763        case -1459540411: /*lastPage*/ return this.lastPage == null ? new Base[0] : new Base[] {this.lastPage}; // StringType
5764        case 857882560: /*pageCount*/ return this.pageCount == null ? new Base[0] : new Base[] {this.pageCount}; // StringType
5765        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
5766        default: return super.getProperty(hash, name, checkValid);
5767        }
5768
5769      }
5770
5771      @Override
5772      public Base setProperty(int hash, String name, Base value) throws FHIRException {
5773        switch (hash) {
5774        case -614144077: // publishedIn
5775          this.publishedIn = (CitationCitedArtifactPublicationFormPublishedInComponent) value; // CitationCitedArtifactPublicationFormPublishedInComponent
5776          return value;
5777        case 612116418: // citedMedium
5778          this.citedMedium = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
5779          return value;
5780        case -810883302: // volume
5781          this.volume = TypeConvertor.castToString(value); // StringType
5782          return value;
5783        case 100509913: // issue
5784          this.issue = TypeConvertor.castToString(value); // StringType
5785          return value;
5786        case 817743300: // articleDate
5787          this.articleDate = TypeConvertor.castToDateTime(value); // DateTimeType
5788          return value;
5789        case 225590343: // publicationDateText
5790          this.publicationDateText = TypeConvertor.castToString(value); // StringType
5791          return value;
5792        case 2014643069: // publicationDateSeason
5793          this.publicationDateSeason = TypeConvertor.castToString(value); // StringType
5794          return value;
5795        case 2129161183: // lastRevisionDate
5796          this.lastRevisionDate = TypeConvertor.castToDateTime(value); // DateTimeType
5797          return value;
5798        case -1613589672: // language
5799          this.getLanguage().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
5800          return value;
5801        case 1807963277: // accessionNumber
5802          this.accessionNumber = TypeConvertor.castToString(value); // StringType
5803          return value;
5804        case 1287145344: // pageString
5805          this.pageString = TypeConvertor.castToString(value); // StringType
5806          return value;
5807        case 132895071: // firstPage
5808          this.firstPage = TypeConvertor.castToString(value); // StringType
5809          return value;
5810        case -1459540411: // lastPage
5811          this.lastPage = TypeConvertor.castToString(value); // StringType
5812          return value;
5813        case 857882560: // pageCount
5814          this.pageCount = TypeConvertor.castToString(value); // StringType
5815          return value;
5816        case 1522889671: // copyright
5817          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
5818          return value;
5819        default: return super.setProperty(hash, name, value);
5820        }
5821
5822      }
5823
5824      @Override
5825      public Base setProperty(String name, Base value) throws FHIRException {
5826        if (name.equals("publishedIn")) {
5827          this.publishedIn = (CitationCitedArtifactPublicationFormPublishedInComponent) value; // CitationCitedArtifactPublicationFormPublishedInComponent
5828        } else if (name.equals("citedMedium")) {
5829          this.citedMedium = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
5830        } else if (name.equals("volume")) {
5831          this.volume = TypeConvertor.castToString(value); // StringType
5832        } else if (name.equals("issue")) {
5833          this.issue = TypeConvertor.castToString(value); // StringType
5834        } else if (name.equals("articleDate")) {
5835          this.articleDate = TypeConvertor.castToDateTime(value); // DateTimeType
5836        } else if (name.equals("publicationDateText")) {
5837          this.publicationDateText = TypeConvertor.castToString(value); // StringType
5838        } else if (name.equals("publicationDateSeason")) {
5839          this.publicationDateSeason = TypeConvertor.castToString(value); // StringType
5840        } else if (name.equals("lastRevisionDate")) {
5841          this.lastRevisionDate = TypeConvertor.castToDateTime(value); // DateTimeType
5842        } else if (name.equals("language")) {
5843          this.getLanguage().add(TypeConvertor.castToCodeableConcept(value));
5844        } else if (name.equals("accessionNumber")) {
5845          this.accessionNumber = TypeConvertor.castToString(value); // StringType
5846        } else if (name.equals("pageString")) {
5847          this.pageString = TypeConvertor.castToString(value); // StringType
5848        } else if (name.equals("firstPage")) {
5849          this.firstPage = TypeConvertor.castToString(value); // StringType
5850        } else if (name.equals("lastPage")) {
5851          this.lastPage = TypeConvertor.castToString(value); // StringType
5852        } else if (name.equals("pageCount")) {
5853          this.pageCount = TypeConvertor.castToString(value); // StringType
5854        } else if (name.equals("copyright")) {
5855          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
5856        } else
5857          return super.setProperty(name, value);
5858        return value;
5859      }
5860
5861  @Override
5862  public void removeChild(String name, Base value) throws FHIRException {
5863        if (name.equals("publishedIn")) {
5864          this.publishedIn = (CitationCitedArtifactPublicationFormPublishedInComponent) value; // CitationCitedArtifactPublicationFormPublishedInComponent
5865        } else if (name.equals("citedMedium")) {
5866          this.citedMedium = null;
5867        } else if (name.equals("volume")) {
5868          this.volume = null;
5869        } else if (name.equals("issue")) {
5870          this.issue = null;
5871        } else if (name.equals("articleDate")) {
5872          this.articleDate = null;
5873        } else if (name.equals("publicationDateText")) {
5874          this.publicationDateText = null;
5875        } else if (name.equals("publicationDateSeason")) {
5876          this.publicationDateSeason = null;
5877        } else if (name.equals("lastRevisionDate")) {
5878          this.lastRevisionDate = null;
5879        } else if (name.equals("language")) {
5880          this.getLanguage().remove(value);
5881        } else if (name.equals("accessionNumber")) {
5882          this.accessionNumber = null;
5883        } else if (name.equals("pageString")) {
5884          this.pageString = null;
5885        } else if (name.equals("firstPage")) {
5886          this.firstPage = null;
5887        } else if (name.equals("lastPage")) {
5888          this.lastPage = null;
5889        } else if (name.equals("pageCount")) {
5890          this.pageCount = null;
5891        } else if (name.equals("copyright")) {
5892          this.copyright = null;
5893        } else
5894          super.removeChild(name, value);
5895        
5896      }
5897
5898      @Override
5899      public Base makeProperty(int hash, String name) throws FHIRException {
5900        switch (hash) {
5901        case -614144077:  return getPublishedIn();
5902        case 612116418:  return getCitedMedium();
5903        case -810883302:  return getVolumeElement();
5904        case 100509913:  return getIssueElement();
5905        case 817743300:  return getArticleDateElement();
5906        case 225590343:  return getPublicationDateTextElement();
5907        case 2014643069:  return getPublicationDateSeasonElement();
5908        case 2129161183:  return getLastRevisionDateElement();
5909        case -1613589672:  return addLanguage(); 
5910        case 1807963277:  return getAccessionNumberElement();
5911        case 1287145344:  return getPageStringElement();
5912        case 132895071:  return getFirstPageElement();
5913        case -1459540411:  return getLastPageElement();
5914        case 857882560:  return getPageCountElement();
5915        case 1522889671:  return getCopyrightElement();
5916        default: return super.makeProperty(hash, name);
5917        }
5918
5919      }
5920
5921      @Override
5922      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5923        switch (hash) {
5924        case -614144077: /*publishedIn*/ return new String[] {};
5925        case 612116418: /*citedMedium*/ return new String[] {"CodeableConcept"};
5926        case -810883302: /*volume*/ return new String[] {"string"};
5927        case 100509913: /*issue*/ return new String[] {"string"};
5928        case 817743300: /*articleDate*/ return new String[] {"dateTime"};
5929        case 225590343: /*publicationDateText*/ return new String[] {"string"};
5930        case 2014643069: /*publicationDateSeason*/ return new String[] {"string"};
5931        case 2129161183: /*lastRevisionDate*/ return new String[] {"dateTime"};
5932        case -1613589672: /*language*/ return new String[] {"CodeableConcept"};
5933        case 1807963277: /*accessionNumber*/ return new String[] {"string"};
5934        case 1287145344: /*pageString*/ return new String[] {"string"};
5935        case 132895071: /*firstPage*/ return new String[] {"string"};
5936        case -1459540411: /*lastPage*/ return new String[] {"string"};
5937        case 857882560: /*pageCount*/ return new String[] {"string"};
5938        case 1522889671: /*copyright*/ return new String[] {"markdown"};
5939        default: return super.getTypesForProperty(hash, name);
5940        }
5941
5942      }
5943
5944      @Override
5945      public Base addChild(String name) throws FHIRException {
5946        if (name.equals("publishedIn")) {
5947          this.publishedIn = new CitationCitedArtifactPublicationFormPublishedInComponent();
5948          return this.publishedIn;
5949        }
5950        else if (name.equals("citedMedium")) {
5951          this.citedMedium = new CodeableConcept();
5952          return this.citedMedium;
5953        }
5954        else if (name.equals("volume")) {
5955          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.publicationForm.volume");
5956        }
5957        else if (name.equals("issue")) {
5958          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.publicationForm.issue");
5959        }
5960        else if (name.equals("articleDate")) {
5961          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.publicationForm.articleDate");
5962        }
5963        else if (name.equals("publicationDateText")) {
5964          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.publicationForm.publicationDateText");
5965        }
5966        else if (name.equals("publicationDateSeason")) {
5967          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.publicationForm.publicationDateSeason");
5968        }
5969        else if (name.equals("lastRevisionDate")) {
5970          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.publicationForm.lastRevisionDate");
5971        }
5972        else if (name.equals("language")) {
5973          return addLanguage();
5974        }
5975        else if (name.equals("accessionNumber")) {
5976          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.publicationForm.accessionNumber");
5977        }
5978        else if (name.equals("pageString")) {
5979          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.publicationForm.pageString");
5980        }
5981        else if (name.equals("firstPage")) {
5982          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.publicationForm.firstPage");
5983        }
5984        else if (name.equals("lastPage")) {
5985          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.publicationForm.lastPage");
5986        }
5987        else if (name.equals("pageCount")) {
5988          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.publicationForm.pageCount");
5989        }
5990        else if (name.equals("copyright")) {
5991          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.publicationForm.copyright");
5992        }
5993        else
5994          return super.addChild(name);
5995      }
5996
5997      public CitationCitedArtifactPublicationFormComponent copy() {
5998        CitationCitedArtifactPublicationFormComponent dst = new CitationCitedArtifactPublicationFormComponent();
5999        copyValues(dst);
6000        return dst;
6001      }
6002
6003      public void copyValues(CitationCitedArtifactPublicationFormComponent dst) {
6004        super.copyValues(dst);
6005        dst.publishedIn = publishedIn == null ? null : publishedIn.copy();
6006        dst.citedMedium = citedMedium == null ? null : citedMedium.copy();
6007        dst.volume = volume == null ? null : volume.copy();
6008        dst.issue = issue == null ? null : issue.copy();
6009        dst.articleDate = articleDate == null ? null : articleDate.copy();
6010        dst.publicationDateText = publicationDateText == null ? null : publicationDateText.copy();
6011        dst.publicationDateSeason = publicationDateSeason == null ? null : publicationDateSeason.copy();
6012        dst.lastRevisionDate = lastRevisionDate == null ? null : lastRevisionDate.copy();
6013        if (language != null) {
6014          dst.language = new ArrayList<CodeableConcept>();
6015          for (CodeableConcept i : language)
6016            dst.language.add(i.copy());
6017        };
6018        dst.accessionNumber = accessionNumber == null ? null : accessionNumber.copy();
6019        dst.pageString = pageString == null ? null : pageString.copy();
6020        dst.firstPage = firstPage == null ? null : firstPage.copy();
6021        dst.lastPage = lastPage == null ? null : lastPage.copy();
6022        dst.pageCount = pageCount == null ? null : pageCount.copy();
6023        dst.copyright = copyright == null ? null : copyright.copy();
6024      }
6025
6026      @Override
6027      public boolean equalsDeep(Base other_) {
6028        if (!super.equalsDeep(other_))
6029          return false;
6030        if (!(other_ instanceof CitationCitedArtifactPublicationFormComponent))
6031          return false;
6032        CitationCitedArtifactPublicationFormComponent o = (CitationCitedArtifactPublicationFormComponent) other_;
6033        return compareDeep(publishedIn, o.publishedIn, true) && compareDeep(citedMedium, o.citedMedium, true)
6034           && compareDeep(volume, o.volume, true) && compareDeep(issue, o.issue, true) && compareDeep(articleDate, o.articleDate, true)
6035           && compareDeep(publicationDateText, o.publicationDateText, true) && compareDeep(publicationDateSeason, o.publicationDateSeason, true)
6036           && compareDeep(lastRevisionDate, o.lastRevisionDate, true) && compareDeep(language, o.language, true)
6037           && compareDeep(accessionNumber, o.accessionNumber, true) && compareDeep(pageString, o.pageString, true)
6038           && compareDeep(firstPage, o.firstPage, true) && compareDeep(lastPage, o.lastPage, true) && compareDeep(pageCount, o.pageCount, true)
6039           && compareDeep(copyright, o.copyright, true);
6040      }
6041
6042      @Override
6043      public boolean equalsShallow(Base other_) {
6044        if (!super.equalsShallow(other_))
6045          return false;
6046        if (!(other_ instanceof CitationCitedArtifactPublicationFormComponent))
6047          return false;
6048        CitationCitedArtifactPublicationFormComponent o = (CitationCitedArtifactPublicationFormComponent) other_;
6049        return compareValues(volume, o.volume, true) && compareValues(issue, o.issue, true) && compareValues(articleDate, o.articleDate, true)
6050           && compareValues(publicationDateText, o.publicationDateText, true) && compareValues(publicationDateSeason, o.publicationDateSeason, true)
6051           && compareValues(lastRevisionDate, o.lastRevisionDate, true) && compareValues(accessionNumber, o.accessionNumber, true)
6052           && compareValues(pageString, o.pageString, true) && compareValues(firstPage, o.firstPage, true) && compareValues(lastPage, o.lastPage, true)
6053           && compareValues(pageCount, o.pageCount, true) && compareValues(copyright, o.copyright, true);
6054      }
6055
6056      public boolean isEmpty() {
6057        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(publishedIn, citedMedium, volume
6058          , issue, articleDate, publicationDateText, publicationDateSeason, lastRevisionDate
6059          , language, accessionNumber, pageString, firstPage, lastPage, pageCount, copyright
6060          );
6061      }
6062
6063  public String fhirType() {
6064    return "Citation.citedArtifact.publicationForm";
6065
6066  }
6067
6068  }
6069
6070    @Block()
6071    public static class CitationCitedArtifactPublicationFormPublishedInComponent extends BackboneElement implements IBaseBackboneElement {
6072        /**
6073         * Kind of container (e.g. Periodical, database, or book).
6074         */
6075        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
6076        @Description(shortDefinition="Kind of container (e.g. Periodical, database, or book)", formalDefinition="Kind of container (e.g. Periodical, database, or book)." )
6077        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/published-in-type")
6078        protected CodeableConcept type;
6079
6080        /**
6081         * Journal identifiers include ISSN, ISO Abbreviation and NLMuniqueID; Book identifiers include ISBN.
6082         */
6083        @Child(name = "identifier", type = {Identifier.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6084        @Description(shortDefinition="Journal identifiers include ISSN, ISO Abbreviation and NLMuniqueID; Book identifiers include ISBN", formalDefinition="Journal identifiers include ISSN, ISO Abbreviation and NLMuniqueID; Book identifiers include ISBN." )
6085        protected List<Identifier> identifier;
6086
6087        /**
6088         * Name of the database or title of the book or journal.
6089         */
6090        @Child(name = "title", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
6091        @Description(shortDefinition="Name of the database or title of the book or journal", formalDefinition="Name of the database or title of the book or journal." )
6092        protected StringType title;
6093
6094        /**
6095         * Name of or resource describing the publisher.
6096         */
6097        @Child(name = "publisher", type = {Organization.class}, order=4, min=0, max=1, modifier=false, summary=false)
6098        @Description(shortDefinition="Name of or resource describing the publisher", formalDefinition="Name of or resource describing the publisher." )
6099        protected Reference publisher;
6100
6101        /**
6102         * Geographic location of the publisher.
6103         */
6104        @Child(name = "publisherLocation", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
6105        @Description(shortDefinition="Geographic location of the publisher", formalDefinition="Geographic location of the publisher." )
6106        protected StringType publisherLocation;
6107
6108        private static final long serialVersionUID = 1440066953L;
6109
6110    /**
6111     * Constructor
6112     */
6113      public CitationCitedArtifactPublicationFormPublishedInComponent() {
6114        super();
6115      }
6116
6117        /**
6118         * @return {@link #type} (Kind of container (e.g. Periodical, database, or book).)
6119         */
6120        public CodeableConcept getType() { 
6121          if (this.type == null)
6122            if (Configuration.errorOnAutoCreate())
6123              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormPublishedInComponent.type");
6124            else if (Configuration.doAutoCreate())
6125              this.type = new CodeableConcept(); // cc
6126          return this.type;
6127        }
6128
6129        public boolean hasType() { 
6130          return this.type != null && !this.type.isEmpty();
6131        }
6132
6133        /**
6134         * @param value {@link #type} (Kind of container (e.g. Periodical, database, or book).)
6135         */
6136        public CitationCitedArtifactPublicationFormPublishedInComponent setType(CodeableConcept value) { 
6137          this.type = value;
6138          return this;
6139        }
6140
6141        /**
6142         * @return {@link #identifier} (Journal identifiers include ISSN, ISO Abbreviation and NLMuniqueID; Book identifiers include ISBN.)
6143         */
6144        public List<Identifier> getIdentifier() { 
6145          if (this.identifier == null)
6146            this.identifier = new ArrayList<Identifier>();
6147          return this.identifier;
6148        }
6149
6150        /**
6151         * @return Returns a reference to <code>this</code> for easy method chaining
6152         */
6153        public CitationCitedArtifactPublicationFormPublishedInComponent setIdentifier(List<Identifier> theIdentifier) { 
6154          this.identifier = theIdentifier;
6155          return this;
6156        }
6157
6158        public boolean hasIdentifier() { 
6159          if (this.identifier == null)
6160            return false;
6161          for (Identifier item : this.identifier)
6162            if (!item.isEmpty())
6163              return true;
6164          return false;
6165        }
6166
6167        public Identifier addIdentifier() { //3
6168          Identifier t = new Identifier();
6169          if (this.identifier == null)
6170            this.identifier = new ArrayList<Identifier>();
6171          this.identifier.add(t);
6172          return t;
6173        }
6174
6175        public CitationCitedArtifactPublicationFormPublishedInComponent addIdentifier(Identifier t) { //3
6176          if (t == null)
6177            return this;
6178          if (this.identifier == null)
6179            this.identifier = new ArrayList<Identifier>();
6180          this.identifier.add(t);
6181          return this;
6182        }
6183
6184        /**
6185         * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
6186         */
6187        public Identifier getIdentifierFirstRep() { 
6188          if (getIdentifier().isEmpty()) {
6189            addIdentifier();
6190          }
6191          return getIdentifier().get(0);
6192        }
6193
6194        /**
6195         * @return {@link #title} (Name of the database or title of the book or journal.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
6196         */
6197        public StringType getTitleElement() { 
6198          if (this.title == null)
6199            if (Configuration.errorOnAutoCreate())
6200              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormPublishedInComponent.title");
6201            else if (Configuration.doAutoCreate())
6202              this.title = new StringType(); // bb
6203          return this.title;
6204        }
6205
6206        public boolean hasTitleElement() { 
6207          return this.title != null && !this.title.isEmpty();
6208        }
6209
6210        public boolean hasTitle() { 
6211          return this.title != null && !this.title.isEmpty();
6212        }
6213
6214        /**
6215         * @param value {@link #title} (Name of the database or title of the book or journal.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
6216         */
6217        public CitationCitedArtifactPublicationFormPublishedInComponent setTitleElement(StringType value) { 
6218          this.title = value;
6219          return this;
6220        }
6221
6222        /**
6223         * @return Name of the database or title of the book or journal.
6224         */
6225        public String getTitle() { 
6226          return this.title == null ? null : this.title.getValue();
6227        }
6228
6229        /**
6230         * @param value Name of the database or title of the book or journal.
6231         */
6232        public CitationCitedArtifactPublicationFormPublishedInComponent setTitle(String value) { 
6233          if (Utilities.noString(value))
6234            this.title = null;
6235          else {
6236            if (this.title == null)
6237              this.title = new StringType();
6238            this.title.setValue(value);
6239          }
6240          return this;
6241        }
6242
6243        /**
6244         * @return {@link #publisher} (Name of or resource describing the publisher.)
6245         */
6246        public Reference getPublisher() { 
6247          if (this.publisher == null)
6248            if (Configuration.errorOnAutoCreate())
6249              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormPublishedInComponent.publisher");
6250            else if (Configuration.doAutoCreate())
6251              this.publisher = new Reference(); // cc
6252          return this.publisher;
6253        }
6254
6255        public boolean hasPublisher() { 
6256          return this.publisher != null && !this.publisher.isEmpty();
6257        }
6258
6259        /**
6260         * @param value {@link #publisher} (Name of or resource describing the publisher.)
6261         */
6262        public CitationCitedArtifactPublicationFormPublishedInComponent setPublisher(Reference value) { 
6263          this.publisher = value;
6264          return this;
6265        }
6266
6267        /**
6268         * @return {@link #publisherLocation} (Geographic location of the publisher.). This is the underlying object with id, value and extensions. The accessor "getPublisherLocation" gives direct access to the value
6269         */
6270        public StringType getPublisherLocationElement() { 
6271          if (this.publisherLocation == null)
6272            if (Configuration.errorOnAutoCreate())
6273              throw new Error("Attempt to auto-create CitationCitedArtifactPublicationFormPublishedInComponent.publisherLocation");
6274            else if (Configuration.doAutoCreate())
6275              this.publisherLocation = new StringType(); // bb
6276          return this.publisherLocation;
6277        }
6278
6279        public boolean hasPublisherLocationElement() { 
6280          return this.publisherLocation != null && !this.publisherLocation.isEmpty();
6281        }
6282
6283        public boolean hasPublisherLocation() { 
6284          return this.publisherLocation != null && !this.publisherLocation.isEmpty();
6285        }
6286
6287        /**
6288         * @param value {@link #publisherLocation} (Geographic location of the publisher.). This is the underlying object with id, value and extensions. The accessor "getPublisherLocation" gives direct access to the value
6289         */
6290        public CitationCitedArtifactPublicationFormPublishedInComponent setPublisherLocationElement(StringType value) { 
6291          this.publisherLocation = value;
6292          return this;
6293        }
6294
6295        /**
6296         * @return Geographic location of the publisher.
6297         */
6298        public String getPublisherLocation() { 
6299          return this.publisherLocation == null ? null : this.publisherLocation.getValue();
6300        }
6301
6302        /**
6303         * @param value Geographic location of the publisher.
6304         */
6305        public CitationCitedArtifactPublicationFormPublishedInComponent setPublisherLocation(String value) { 
6306          if (Utilities.noString(value))
6307            this.publisherLocation = null;
6308          else {
6309            if (this.publisherLocation == null)
6310              this.publisherLocation = new StringType();
6311            this.publisherLocation.setValue(value);
6312          }
6313          return this;
6314        }
6315
6316        protected void listChildren(List<Property> children) {
6317          super.listChildren(children);
6318          children.add(new Property("type", "CodeableConcept", "Kind of container (e.g. Periodical, database, or book).", 0, 1, type));
6319          children.add(new Property("identifier", "Identifier", "Journal identifiers include ISSN, ISO Abbreviation and NLMuniqueID; Book identifiers include ISBN.", 0, java.lang.Integer.MAX_VALUE, identifier));
6320          children.add(new Property("title", "string", "Name of the database or title of the book or journal.", 0, 1, title));
6321          children.add(new Property("publisher", "Reference(Organization)", "Name of or resource describing the publisher.", 0, 1, publisher));
6322          children.add(new Property("publisherLocation", "string", "Geographic location of the publisher.", 0, 1, publisherLocation));
6323        }
6324
6325        @Override
6326        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6327          switch (_hash) {
6328          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Kind of container (e.g. Periodical, database, or book).", 0, 1, type);
6329          case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Journal identifiers include ISSN, ISO Abbreviation and NLMuniqueID; Book identifiers include ISBN.", 0, java.lang.Integer.MAX_VALUE, identifier);
6330          case 110371416: /*title*/  return new Property("title", "string", "Name of the database or title of the book or journal.", 0, 1, title);
6331          case 1447404028: /*publisher*/  return new Property("publisher", "Reference(Organization)", "Name of or resource describing the publisher.", 0, 1, publisher);
6332          case -1281627695: /*publisherLocation*/  return new Property("publisherLocation", "string", "Geographic location of the publisher.", 0, 1, publisherLocation);
6333          default: return super.getNamedProperty(_hash, _name, _checkValid);
6334          }
6335
6336        }
6337
6338      @Override
6339      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6340        switch (hash) {
6341        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
6342        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
6343        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
6344        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // Reference
6345        case -1281627695: /*publisherLocation*/ return this.publisherLocation == null ? new Base[0] : new Base[] {this.publisherLocation}; // StringType
6346        default: return super.getProperty(hash, name, checkValid);
6347        }
6348
6349      }
6350
6351      @Override
6352      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6353        switch (hash) {
6354        case 3575610: // type
6355          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
6356          return value;
6357        case -1618432855: // identifier
6358          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
6359          return value;
6360        case 110371416: // title
6361          this.title = TypeConvertor.castToString(value); // StringType
6362          return value;
6363        case 1447404028: // publisher
6364          this.publisher = TypeConvertor.castToReference(value); // Reference
6365          return value;
6366        case -1281627695: // publisherLocation
6367          this.publisherLocation = TypeConvertor.castToString(value); // StringType
6368          return value;
6369        default: return super.setProperty(hash, name, value);
6370        }
6371
6372      }
6373
6374      @Override
6375      public Base setProperty(String name, Base value) throws FHIRException {
6376        if (name.equals("type")) {
6377          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
6378        } else if (name.equals("identifier")) {
6379          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
6380        } else if (name.equals("title")) {
6381          this.title = TypeConvertor.castToString(value); // StringType
6382        } else if (name.equals("publisher")) {
6383          this.publisher = TypeConvertor.castToReference(value); // Reference
6384        } else if (name.equals("publisherLocation")) {
6385          this.publisherLocation = TypeConvertor.castToString(value); // StringType
6386        } else
6387          return super.setProperty(name, value);
6388        return value;
6389      }
6390
6391  @Override
6392  public void removeChild(String name, Base value) throws FHIRException {
6393        if (name.equals("type")) {
6394          this.type = null;
6395        } else if (name.equals("identifier")) {
6396          this.getIdentifier().remove(value);
6397        } else if (name.equals("title")) {
6398          this.title = null;
6399        } else if (name.equals("publisher")) {
6400          this.publisher = null;
6401        } else if (name.equals("publisherLocation")) {
6402          this.publisherLocation = null;
6403        } else
6404          super.removeChild(name, value);
6405        
6406      }
6407
6408      @Override
6409      public Base makeProperty(int hash, String name) throws FHIRException {
6410        switch (hash) {
6411        case 3575610:  return getType();
6412        case -1618432855:  return addIdentifier(); 
6413        case 110371416:  return getTitleElement();
6414        case 1447404028:  return getPublisher();
6415        case -1281627695:  return getPublisherLocationElement();
6416        default: return super.makeProperty(hash, name);
6417        }
6418
6419      }
6420
6421      @Override
6422      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6423        switch (hash) {
6424        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
6425        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
6426        case 110371416: /*title*/ return new String[] {"string"};
6427        case 1447404028: /*publisher*/ return new String[] {"Reference"};
6428        case -1281627695: /*publisherLocation*/ return new String[] {"string"};
6429        default: return super.getTypesForProperty(hash, name);
6430        }
6431
6432      }
6433
6434      @Override
6435      public Base addChild(String name) throws FHIRException {
6436        if (name.equals("type")) {
6437          this.type = new CodeableConcept();
6438          return this.type;
6439        }
6440        else if (name.equals("identifier")) {
6441          return addIdentifier();
6442        }
6443        else if (name.equals("title")) {
6444          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.publicationForm.publishedIn.title");
6445        }
6446        else if (name.equals("publisher")) {
6447          this.publisher = new Reference();
6448          return this.publisher;
6449        }
6450        else if (name.equals("publisherLocation")) {
6451          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.publicationForm.publishedIn.publisherLocation");
6452        }
6453        else
6454          return super.addChild(name);
6455      }
6456
6457      public CitationCitedArtifactPublicationFormPublishedInComponent copy() {
6458        CitationCitedArtifactPublicationFormPublishedInComponent dst = new CitationCitedArtifactPublicationFormPublishedInComponent();
6459        copyValues(dst);
6460        return dst;
6461      }
6462
6463      public void copyValues(CitationCitedArtifactPublicationFormPublishedInComponent dst) {
6464        super.copyValues(dst);
6465        dst.type = type == null ? null : type.copy();
6466        if (identifier != null) {
6467          dst.identifier = new ArrayList<Identifier>();
6468          for (Identifier i : identifier)
6469            dst.identifier.add(i.copy());
6470        };
6471        dst.title = title == null ? null : title.copy();
6472        dst.publisher = publisher == null ? null : publisher.copy();
6473        dst.publisherLocation = publisherLocation == null ? null : publisherLocation.copy();
6474      }
6475
6476      @Override
6477      public boolean equalsDeep(Base other_) {
6478        if (!super.equalsDeep(other_))
6479          return false;
6480        if (!(other_ instanceof CitationCitedArtifactPublicationFormPublishedInComponent))
6481          return false;
6482        CitationCitedArtifactPublicationFormPublishedInComponent o = (CitationCitedArtifactPublicationFormPublishedInComponent) other_;
6483        return compareDeep(type, o.type, true) && compareDeep(identifier, o.identifier, true) && compareDeep(title, o.title, true)
6484           && compareDeep(publisher, o.publisher, true) && compareDeep(publisherLocation, o.publisherLocation, true)
6485          ;
6486      }
6487
6488      @Override
6489      public boolean equalsShallow(Base other_) {
6490        if (!super.equalsShallow(other_))
6491          return false;
6492        if (!(other_ instanceof CitationCitedArtifactPublicationFormPublishedInComponent))
6493          return false;
6494        CitationCitedArtifactPublicationFormPublishedInComponent o = (CitationCitedArtifactPublicationFormPublishedInComponent) other_;
6495        return compareValues(title, o.title, true) && compareValues(publisherLocation, o.publisherLocation, true)
6496          ;
6497      }
6498
6499      public boolean isEmpty() {
6500        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, identifier, title
6501          , publisher, publisherLocation);
6502      }
6503
6504  public String fhirType() {
6505    return "Citation.citedArtifact.publicationForm.publishedIn";
6506
6507  }
6508
6509  }
6510
6511    @Block()
6512    public static class CitationCitedArtifactWebLocationComponent extends BackboneElement implements IBaseBackboneElement {
6513        /**
6514         * A characterization of the object expected at the web location.
6515         */
6516        @Child(name = "classifier", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6517        @Description(shortDefinition="Code the reason for different URLs, e.g. abstract and full-text", formalDefinition="A characterization of the object expected at the web location." )
6518        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/artifact-url-classifier")
6519        protected List<CodeableConcept> classifier;
6520
6521        /**
6522         * The specific URL.
6523         */
6524        @Child(name = "url", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=false)
6525        @Description(shortDefinition="The specific URL", formalDefinition="The specific URL." )
6526        protected UriType url;
6527
6528        private static final long serialVersionUID = -1300703403L;
6529
6530    /**
6531     * Constructor
6532     */
6533      public CitationCitedArtifactWebLocationComponent() {
6534        super();
6535      }
6536
6537        /**
6538         * @return {@link #classifier} (A characterization of the object expected at the web location.)
6539         */
6540        public List<CodeableConcept> getClassifier() { 
6541          if (this.classifier == null)
6542            this.classifier = new ArrayList<CodeableConcept>();
6543          return this.classifier;
6544        }
6545
6546        /**
6547         * @return Returns a reference to <code>this</code> for easy method chaining
6548         */
6549        public CitationCitedArtifactWebLocationComponent setClassifier(List<CodeableConcept> theClassifier) { 
6550          this.classifier = theClassifier;
6551          return this;
6552        }
6553
6554        public boolean hasClassifier() { 
6555          if (this.classifier == null)
6556            return false;
6557          for (CodeableConcept item : this.classifier)
6558            if (!item.isEmpty())
6559              return true;
6560          return false;
6561        }
6562
6563        public CodeableConcept addClassifier() { //3
6564          CodeableConcept t = new CodeableConcept();
6565          if (this.classifier == null)
6566            this.classifier = new ArrayList<CodeableConcept>();
6567          this.classifier.add(t);
6568          return t;
6569        }
6570
6571        public CitationCitedArtifactWebLocationComponent addClassifier(CodeableConcept t) { //3
6572          if (t == null)
6573            return this;
6574          if (this.classifier == null)
6575            this.classifier = new ArrayList<CodeableConcept>();
6576          this.classifier.add(t);
6577          return this;
6578        }
6579
6580        /**
6581         * @return The first repetition of repeating field {@link #classifier}, creating it if it does not already exist {3}
6582         */
6583        public CodeableConcept getClassifierFirstRep() { 
6584          if (getClassifier().isEmpty()) {
6585            addClassifier();
6586          }
6587          return getClassifier().get(0);
6588        }
6589
6590        /**
6591         * @return {@link #url} (The specific URL.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
6592         */
6593        public UriType getUrlElement() { 
6594          if (this.url == null)
6595            if (Configuration.errorOnAutoCreate())
6596              throw new Error("Attempt to auto-create CitationCitedArtifactWebLocationComponent.url");
6597            else if (Configuration.doAutoCreate())
6598              this.url = new UriType(); // bb
6599          return this.url;
6600        }
6601
6602        public boolean hasUrlElement() { 
6603          return this.url != null && !this.url.isEmpty();
6604        }
6605
6606        public boolean hasUrl() { 
6607          return this.url != null && !this.url.isEmpty();
6608        }
6609
6610        /**
6611         * @param value {@link #url} (The specific URL.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
6612         */
6613        public CitationCitedArtifactWebLocationComponent setUrlElement(UriType value) { 
6614          this.url = value;
6615          return this;
6616        }
6617
6618        /**
6619         * @return The specific URL.
6620         */
6621        public String getUrl() { 
6622          return this.url == null ? null : this.url.getValue();
6623        }
6624
6625        /**
6626         * @param value The specific URL.
6627         */
6628        public CitationCitedArtifactWebLocationComponent setUrl(String value) { 
6629          if (Utilities.noString(value))
6630            this.url = null;
6631          else {
6632            if (this.url == null)
6633              this.url = new UriType();
6634            this.url.setValue(value);
6635          }
6636          return this;
6637        }
6638
6639        protected void listChildren(List<Property> children) {
6640          super.listChildren(children);
6641          children.add(new Property("classifier", "CodeableConcept", "A characterization of the object expected at the web location.", 0, java.lang.Integer.MAX_VALUE, classifier));
6642          children.add(new Property("url", "uri", "The specific URL.", 0, 1, url));
6643        }
6644
6645        @Override
6646        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6647          switch (_hash) {
6648          case -281470431: /*classifier*/  return new Property("classifier", "CodeableConcept", "A characterization of the object expected at the web location.", 0, java.lang.Integer.MAX_VALUE, classifier);
6649          case 116079: /*url*/  return new Property("url", "uri", "The specific URL.", 0, 1, url);
6650          default: return super.getNamedProperty(_hash, _name, _checkValid);
6651          }
6652
6653        }
6654
6655      @Override
6656      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6657        switch (hash) {
6658        case -281470431: /*classifier*/ return this.classifier == null ? new Base[0] : this.classifier.toArray(new Base[this.classifier.size()]); // CodeableConcept
6659        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
6660        default: return super.getProperty(hash, name, checkValid);
6661        }
6662
6663      }
6664
6665      @Override
6666      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6667        switch (hash) {
6668        case -281470431: // classifier
6669          this.getClassifier().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
6670          return value;
6671        case 116079: // url
6672          this.url = TypeConvertor.castToUri(value); // UriType
6673          return value;
6674        default: return super.setProperty(hash, name, value);
6675        }
6676
6677      }
6678
6679      @Override
6680      public Base setProperty(String name, Base value) throws FHIRException {
6681        if (name.equals("classifier")) {
6682          this.getClassifier().add(TypeConvertor.castToCodeableConcept(value));
6683        } else if (name.equals("url")) {
6684          this.url = TypeConvertor.castToUri(value); // UriType
6685        } else
6686          return super.setProperty(name, value);
6687        return value;
6688      }
6689
6690  @Override
6691  public void removeChild(String name, Base value) throws FHIRException {
6692        if (name.equals("classifier")) {
6693          this.getClassifier().remove(value);
6694        } else if (name.equals("url")) {
6695          this.url = null;
6696        } else
6697          super.removeChild(name, value);
6698        
6699      }
6700
6701      @Override
6702      public Base makeProperty(int hash, String name) throws FHIRException {
6703        switch (hash) {
6704        case -281470431:  return addClassifier(); 
6705        case 116079:  return getUrlElement();
6706        default: return super.makeProperty(hash, name);
6707        }
6708
6709      }
6710
6711      @Override
6712      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6713        switch (hash) {
6714        case -281470431: /*classifier*/ return new String[] {"CodeableConcept"};
6715        case 116079: /*url*/ return new String[] {"uri"};
6716        default: return super.getTypesForProperty(hash, name);
6717        }
6718
6719      }
6720
6721      @Override
6722      public Base addChild(String name) throws FHIRException {
6723        if (name.equals("classifier")) {
6724          return addClassifier();
6725        }
6726        else if (name.equals("url")) {
6727          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.webLocation.url");
6728        }
6729        else
6730          return super.addChild(name);
6731      }
6732
6733      public CitationCitedArtifactWebLocationComponent copy() {
6734        CitationCitedArtifactWebLocationComponent dst = new CitationCitedArtifactWebLocationComponent();
6735        copyValues(dst);
6736        return dst;
6737      }
6738
6739      public void copyValues(CitationCitedArtifactWebLocationComponent dst) {
6740        super.copyValues(dst);
6741        if (classifier != null) {
6742          dst.classifier = new ArrayList<CodeableConcept>();
6743          for (CodeableConcept i : classifier)
6744            dst.classifier.add(i.copy());
6745        };
6746        dst.url = url == null ? null : url.copy();
6747      }
6748
6749      @Override
6750      public boolean equalsDeep(Base other_) {
6751        if (!super.equalsDeep(other_))
6752          return false;
6753        if (!(other_ instanceof CitationCitedArtifactWebLocationComponent))
6754          return false;
6755        CitationCitedArtifactWebLocationComponent o = (CitationCitedArtifactWebLocationComponent) other_;
6756        return compareDeep(classifier, o.classifier, true) && compareDeep(url, o.url, true);
6757      }
6758
6759      @Override
6760      public boolean equalsShallow(Base other_) {
6761        if (!super.equalsShallow(other_))
6762          return false;
6763        if (!(other_ instanceof CitationCitedArtifactWebLocationComponent))
6764          return false;
6765        CitationCitedArtifactWebLocationComponent o = (CitationCitedArtifactWebLocationComponent) other_;
6766        return compareValues(url, o.url, true);
6767      }
6768
6769      public boolean isEmpty() {
6770        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(classifier, url);
6771      }
6772
6773  public String fhirType() {
6774    return "Citation.citedArtifact.webLocation";
6775
6776  }
6777
6778  }
6779
6780    @Block()
6781    public static class CitationCitedArtifactClassificationComponent extends BackboneElement implements IBaseBackboneElement {
6782        /**
6783         * The kind of classifier (e.g. publication type, keyword).
6784         */
6785        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
6786        @Description(shortDefinition="The kind of classifier (e.g. publication type, keyword)", formalDefinition="The kind of classifier (e.g. publication type, keyword)." )
6787        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/cited-artifact-classification-type")
6788        protected CodeableConcept type;
6789
6790        /**
6791         * The specific classification value.
6792         */
6793        @Child(name = "classifier", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6794        @Description(shortDefinition="The specific classification value", formalDefinition="The specific classification value." )
6795        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/citation-artifact-classifier")
6796        protected List<CodeableConcept> classifier;
6797
6798        /**
6799         * Complex or externally created classification.
6800         */
6801        @Child(name = "artifactAssessment", type = {ArtifactAssessment.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6802        @Description(shortDefinition="Complex or externally created classification", formalDefinition="Complex or externally created classification." )
6803        protected List<Reference> artifactAssessment;
6804
6805        private static final long serialVersionUID = 394554928L;
6806
6807    /**
6808     * Constructor
6809     */
6810      public CitationCitedArtifactClassificationComponent() {
6811        super();
6812      }
6813
6814        /**
6815         * @return {@link #type} (The kind of classifier (e.g. publication type, keyword).)
6816         */
6817        public CodeableConcept getType() { 
6818          if (this.type == null)
6819            if (Configuration.errorOnAutoCreate())
6820              throw new Error("Attempt to auto-create CitationCitedArtifactClassificationComponent.type");
6821            else if (Configuration.doAutoCreate())
6822              this.type = new CodeableConcept(); // cc
6823          return this.type;
6824        }
6825
6826        public boolean hasType() { 
6827          return this.type != null && !this.type.isEmpty();
6828        }
6829
6830        /**
6831         * @param value {@link #type} (The kind of classifier (e.g. publication type, keyword).)
6832         */
6833        public CitationCitedArtifactClassificationComponent setType(CodeableConcept value) { 
6834          this.type = value;
6835          return this;
6836        }
6837
6838        /**
6839         * @return {@link #classifier} (The specific classification value.)
6840         */
6841        public List<CodeableConcept> getClassifier() { 
6842          if (this.classifier == null)
6843            this.classifier = new ArrayList<CodeableConcept>();
6844          return this.classifier;
6845        }
6846
6847        /**
6848         * @return Returns a reference to <code>this</code> for easy method chaining
6849         */
6850        public CitationCitedArtifactClassificationComponent setClassifier(List<CodeableConcept> theClassifier) { 
6851          this.classifier = theClassifier;
6852          return this;
6853        }
6854
6855        public boolean hasClassifier() { 
6856          if (this.classifier == null)
6857            return false;
6858          for (CodeableConcept item : this.classifier)
6859            if (!item.isEmpty())
6860              return true;
6861          return false;
6862        }
6863
6864        public CodeableConcept addClassifier() { //3
6865          CodeableConcept t = new CodeableConcept();
6866          if (this.classifier == null)
6867            this.classifier = new ArrayList<CodeableConcept>();
6868          this.classifier.add(t);
6869          return t;
6870        }
6871
6872        public CitationCitedArtifactClassificationComponent addClassifier(CodeableConcept t) { //3
6873          if (t == null)
6874            return this;
6875          if (this.classifier == null)
6876            this.classifier = new ArrayList<CodeableConcept>();
6877          this.classifier.add(t);
6878          return this;
6879        }
6880
6881        /**
6882         * @return The first repetition of repeating field {@link #classifier}, creating it if it does not already exist {3}
6883         */
6884        public CodeableConcept getClassifierFirstRep() { 
6885          if (getClassifier().isEmpty()) {
6886            addClassifier();
6887          }
6888          return getClassifier().get(0);
6889        }
6890
6891        /**
6892         * @return {@link #artifactAssessment} (Complex or externally created classification.)
6893         */
6894        public List<Reference> getArtifactAssessment() { 
6895          if (this.artifactAssessment == null)
6896            this.artifactAssessment = new ArrayList<Reference>();
6897          return this.artifactAssessment;
6898        }
6899
6900        /**
6901         * @return Returns a reference to <code>this</code> for easy method chaining
6902         */
6903        public CitationCitedArtifactClassificationComponent setArtifactAssessment(List<Reference> theArtifactAssessment) { 
6904          this.artifactAssessment = theArtifactAssessment;
6905          return this;
6906        }
6907
6908        public boolean hasArtifactAssessment() { 
6909          if (this.artifactAssessment == null)
6910            return false;
6911          for (Reference item : this.artifactAssessment)
6912            if (!item.isEmpty())
6913              return true;
6914          return false;
6915        }
6916
6917        public Reference addArtifactAssessment() { //3
6918          Reference t = new Reference();
6919          if (this.artifactAssessment == null)
6920            this.artifactAssessment = new ArrayList<Reference>();
6921          this.artifactAssessment.add(t);
6922          return t;
6923        }
6924
6925        public CitationCitedArtifactClassificationComponent addArtifactAssessment(Reference t) { //3
6926          if (t == null)
6927            return this;
6928          if (this.artifactAssessment == null)
6929            this.artifactAssessment = new ArrayList<Reference>();
6930          this.artifactAssessment.add(t);
6931          return this;
6932        }
6933
6934        /**
6935         * @return The first repetition of repeating field {@link #artifactAssessment}, creating it if it does not already exist {3}
6936         */
6937        public Reference getArtifactAssessmentFirstRep() { 
6938          if (getArtifactAssessment().isEmpty()) {
6939            addArtifactAssessment();
6940          }
6941          return getArtifactAssessment().get(0);
6942        }
6943
6944        protected void listChildren(List<Property> children) {
6945          super.listChildren(children);
6946          children.add(new Property("type", "CodeableConcept", "The kind of classifier (e.g. publication type, keyword).", 0, 1, type));
6947          children.add(new Property("classifier", "CodeableConcept", "The specific classification value.", 0, java.lang.Integer.MAX_VALUE, classifier));
6948          children.add(new Property("artifactAssessment", "Reference(ArtifactAssessment)", "Complex or externally created classification.", 0, java.lang.Integer.MAX_VALUE, artifactAssessment));
6949        }
6950
6951        @Override
6952        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6953          switch (_hash) {
6954          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "The kind of classifier (e.g. publication type, keyword).", 0, 1, type);
6955          case -281470431: /*classifier*/  return new Property("classifier", "CodeableConcept", "The specific classification value.", 0, java.lang.Integer.MAX_VALUE, classifier);
6956          case 1014987316: /*artifactAssessment*/  return new Property("artifactAssessment", "Reference(ArtifactAssessment)", "Complex or externally created classification.", 0, java.lang.Integer.MAX_VALUE, artifactAssessment);
6957          default: return super.getNamedProperty(_hash, _name, _checkValid);
6958          }
6959
6960        }
6961
6962      @Override
6963      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6964        switch (hash) {
6965        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
6966        case -281470431: /*classifier*/ return this.classifier == null ? new Base[0] : this.classifier.toArray(new Base[this.classifier.size()]); // CodeableConcept
6967        case 1014987316: /*artifactAssessment*/ return this.artifactAssessment == null ? new Base[0] : this.artifactAssessment.toArray(new Base[this.artifactAssessment.size()]); // Reference
6968        default: return super.getProperty(hash, name, checkValid);
6969        }
6970
6971      }
6972
6973      @Override
6974      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6975        switch (hash) {
6976        case 3575610: // type
6977          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
6978          return value;
6979        case -281470431: // classifier
6980          this.getClassifier().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
6981          return value;
6982        case 1014987316: // artifactAssessment
6983          this.getArtifactAssessment().add(TypeConvertor.castToReference(value)); // Reference
6984          return value;
6985        default: return super.setProperty(hash, name, value);
6986        }
6987
6988      }
6989
6990      @Override
6991      public Base setProperty(String name, Base value) throws FHIRException {
6992        if (name.equals("type")) {
6993          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
6994        } else if (name.equals("classifier")) {
6995          this.getClassifier().add(TypeConvertor.castToCodeableConcept(value));
6996        } else if (name.equals("artifactAssessment")) {
6997          this.getArtifactAssessment().add(TypeConvertor.castToReference(value));
6998        } else
6999          return super.setProperty(name, value);
7000        return value;
7001      }
7002
7003  @Override
7004  public void removeChild(String name, Base value) throws FHIRException {
7005        if (name.equals("type")) {
7006          this.type = null;
7007        } else if (name.equals("classifier")) {
7008          this.getClassifier().remove(value);
7009        } else if (name.equals("artifactAssessment")) {
7010          this.getArtifactAssessment().remove(value);
7011        } else
7012          super.removeChild(name, value);
7013        
7014      }
7015
7016      @Override
7017      public Base makeProperty(int hash, String name) throws FHIRException {
7018        switch (hash) {
7019        case 3575610:  return getType();
7020        case -281470431:  return addClassifier(); 
7021        case 1014987316:  return addArtifactAssessment(); 
7022        default: return super.makeProperty(hash, name);
7023        }
7024
7025      }
7026
7027      @Override
7028      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7029        switch (hash) {
7030        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
7031        case -281470431: /*classifier*/ return new String[] {"CodeableConcept"};
7032        case 1014987316: /*artifactAssessment*/ return new String[] {"Reference"};
7033        default: return super.getTypesForProperty(hash, name);
7034        }
7035
7036      }
7037
7038      @Override
7039      public Base addChild(String name) throws FHIRException {
7040        if (name.equals("type")) {
7041          this.type = new CodeableConcept();
7042          return this.type;
7043        }
7044        else if (name.equals("classifier")) {
7045          return addClassifier();
7046        }
7047        else if (name.equals("artifactAssessment")) {
7048          return addArtifactAssessment();
7049        }
7050        else
7051          return super.addChild(name);
7052      }
7053
7054      public CitationCitedArtifactClassificationComponent copy() {
7055        CitationCitedArtifactClassificationComponent dst = new CitationCitedArtifactClassificationComponent();
7056        copyValues(dst);
7057        return dst;
7058      }
7059
7060      public void copyValues(CitationCitedArtifactClassificationComponent dst) {
7061        super.copyValues(dst);
7062        dst.type = type == null ? null : type.copy();
7063        if (classifier != null) {
7064          dst.classifier = new ArrayList<CodeableConcept>();
7065          for (CodeableConcept i : classifier)
7066            dst.classifier.add(i.copy());
7067        };
7068        if (artifactAssessment != null) {
7069          dst.artifactAssessment = new ArrayList<Reference>();
7070          for (Reference i : artifactAssessment)
7071            dst.artifactAssessment.add(i.copy());
7072        };
7073      }
7074
7075      @Override
7076      public boolean equalsDeep(Base other_) {
7077        if (!super.equalsDeep(other_))
7078          return false;
7079        if (!(other_ instanceof CitationCitedArtifactClassificationComponent))
7080          return false;
7081        CitationCitedArtifactClassificationComponent o = (CitationCitedArtifactClassificationComponent) other_;
7082        return compareDeep(type, o.type, true) && compareDeep(classifier, o.classifier, true) && compareDeep(artifactAssessment, o.artifactAssessment, true)
7083          ;
7084      }
7085
7086      @Override
7087      public boolean equalsShallow(Base other_) {
7088        if (!super.equalsShallow(other_))
7089          return false;
7090        if (!(other_ instanceof CitationCitedArtifactClassificationComponent))
7091          return false;
7092        CitationCitedArtifactClassificationComponent o = (CitationCitedArtifactClassificationComponent) other_;
7093        return true;
7094      }
7095
7096      public boolean isEmpty() {
7097        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, classifier, artifactAssessment
7098          );
7099      }
7100
7101  public String fhirType() {
7102    return "Citation.citedArtifact.classification";
7103
7104  }
7105
7106  }
7107
7108    @Block()
7109    public static class CitationCitedArtifactContributorshipComponent extends BackboneElement implements IBaseBackboneElement {
7110        /**
7111         * Indicates if the list includes all authors and/or contributors.
7112         */
7113        @Child(name = "complete", type = {BooleanType.class}, order=1, min=0, max=1, modifier=false, summary=false)
7114        @Description(shortDefinition="Indicates if the list includes all authors and/or contributors", formalDefinition="Indicates if the list includes all authors and/or contributors." )
7115        protected BooleanType complete;
7116
7117        /**
7118         * An individual entity named as a contributor, for example in the author list or contributor list.
7119         */
7120        @Child(name = "entry", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
7121        @Description(shortDefinition="An individual entity named as a contributor", formalDefinition="An individual entity named as a contributor, for example in the author list or contributor list." )
7122        protected List<CitationCitedArtifactContributorshipEntryComponent> entry;
7123
7124        /**
7125         * Used to record a display of the author/contributor list without separate data element for each list member.
7126         */
7127        @Child(name = "summary", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
7128        @Description(shortDefinition="Used to record a display of the author/contributor list without separate data element for each list member", formalDefinition="Used to record a display of the author/contributor list without separate data element for each list member." )
7129        protected List<ContributorshipSummaryComponent> summary;
7130
7131        private static final long serialVersionUID = 662810405L;
7132
7133    /**
7134     * Constructor
7135     */
7136      public CitationCitedArtifactContributorshipComponent() {
7137        super();
7138      }
7139
7140        /**
7141         * @return {@link #complete} (Indicates if the list includes all authors and/or contributors.). This is the underlying object with id, value and extensions. The accessor "getComplete" gives direct access to the value
7142         */
7143        public BooleanType getCompleteElement() { 
7144          if (this.complete == null)
7145            if (Configuration.errorOnAutoCreate())
7146              throw new Error("Attempt to auto-create CitationCitedArtifactContributorshipComponent.complete");
7147            else if (Configuration.doAutoCreate())
7148              this.complete = new BooleanType(); // bb
7149          return this.complete;
7150        }
7151
7152        public boolean hasCompleteElement() { 
7153          return this.complete != null && !this.complete.isEmpty();
7154        }
7155
7156        public boolean hasComplete() { 
7157          return this.complete != null && !this.complete.isEmpty();
7158        }
7159
7160        /**
7161         * @param value {@link #complete} (Indicates if the list includes all authors and/or contributors.). This is the underlying object with id, value and extensions. The accessor "getComplete" gives direct access to the value
7162         */
7163        public CitationCitedArtifactContributorshipComponent setCompleteElement(BooleanType value) { 
7164          this.complete = value;
7165          return this;
7166        }
7167
7168        /**
7169         * @return Indicates if the list includes all authors and/or contributors.
7170         */
7171        public boolean getComplete() { 
7172          return this.complete == null || this.complete.isEmpty() ? false : this.complete.getValue();
7173        }
7174
7175        /**
7176         * @param value Indicates if the list includes all authors and/or contributors.
7177         */
7178        public CitationCitedArtifactContributorshipComponent setComplete(boolean value) { 
7179            if (this.complete == null)
7180              this.complete = new BooleanType();
7181            this.complete.setValue(value);
7182          return this;
7183        }
7184
7185        /**
7186         * @return {@link #entry} (An individual entity named as a contributor, for example in the author list or contributor list.)
7187         */
7188        public List<CitationCitedArtifactContributorshipEntryComponent> getEntry() { 
7189          if (this.entry == null)
7190            this.entry = new ArrayList<CitationCitedArtifactContributorshipEntryComponent>();
7191          return this.entry;
7192        }
7193
7194        /**
7195         * @return Returns a reference to <code>this</code> for easy method chaining
7196         */
7197        public CitationCitedArtifactContributorshipComponent setEntry(List<CitationCitedArtifactContributorshipEntryComponent> theEntry) { 
7198          this.entry = theEntry;
7199          return this;
7200        }
7201
7202        public boolean hasEntry() { 
7203          if (this.entry == null)
7204            return false;
7205          for (CitationCitedArtifactContributorshipEntryComponent item : this.entry)
7206            if (!item.isEmpty())
7207              return true;
7208          return false;
7209        }
7210
7211        public CitationCitedArtifactContributorshipEntryComponent addEntry() { //3
7212          CitationCitedArtifactContributorshipEntryComponent t = new CitationCitedArtifactContributorshipEntryComponent();
7213          if (this.entry == null)
7214            this.entry = new ArrayList<CitationCitedArtifactContributorshipEntryComponent>();
7215          this.entry.add(t);
7216          return t;
7217        }
7218
7219        public CitationCitedArtifactContributorshipComponent addEntry(CitationCitedArtifactContributorshipEntryComponent t) { //3
7220          if (t == null)
7221            return this;
7222          if (this.entry == null)
7223            this.entry = new ArrayList<CitationCitedArtifactContributorshipEntryComponent>();
7224          this.entry.add(t);
7225          return this;
7226        }
7227
7228        /**
7229         * @return The first repetition of repeating field {@link #entry}, creating it if it does not already exist {3}
7230         */
7231        public CitationCitedArtifactContributorshipEntryComponent getEntryFirstRep() { 
7232          if (getEntry().isEmpty()) {
7233            addEntry();
7234          }
7235          return getEntry().get(0);
7236        }
7237
7238        /**
7239         * @return {@link #summary} (Used to record a display of the author/contributor list without separate data element for each list member.)
7240         */
7241        public List<ContributorshipSummaryComponent> getSummary() { 
7242          if (this.summary == null)
7243            this.summary = new ArrayList<ContributorshipSummaryComponent>();
7244          return this.summary;
7245        }
7246
7247        /**
7248         * @return Returns a reference to <code>this</code> for easy method chaining
7249         */
7250        public CitationCitedArtifactContributorshipComponent setSummary(List<ContributorshipSummaryComponent> theSummary) { 
7251          this.summary = theSummary;
7252          return this;
7253        }
7254
7255        public boolean hasSummary() { 
7256          if (this.summary == null)
7257            return false;
7258          for (ContributorshipSummaryComponent item : this.summary)
7259            if (!item.isEmpty())
7260              return true;
7261          return false;
7262        }
7263
7264        public ContributorshipSummaryComponent addSummary() { //3
7265          ContributorshipSummaryComponent t = new ContributorshipSummaryComponent();
7266          if (this.summary == null)
7267            this.summary = new ArrayList<ContributorshipSummaryComponent>();
7268          this.summary.add(t);
7269          return t;
7270        }
7271
7272        public CitationCitedArtifactContributorshipComponent addSummary(ContributorshipSummaryComponent t) { //3
7273          if (t == null)
7274            return this;
7275          if (this.summary == null)
7276            this.summary = new ArrayList<ContributorshipSummaryComponent>();
7277          this.summary.add(t);
7278          return this;
7279        }
7280
7281        /**
7282         * @return The first repetition of repeating field {@link #summary}, creating it if it does not already exist {3}
7283         */
7284        public ContributorshipSummaryComponent getSummaryFirstRep() { 
7285          if (getSummary().isEmpty()) {
7286            addSummary();
7287          }
7288          return getSummary().get(0);
7289        }
7290
7291        protected void listChildren(List<Property> children) {
7292          super.listChildren(children);
7293          children.add(new Property("complete", "boolean", "Indicates if the list includes all authors and/or contributors.", 0, 1, complete));
7294          children.add(new Property("entry", "", "An individual entity named as a contributor, for example in the author list or contributor list.", 0, java.lang.Integer.MAX_VALUE, entry));
7295          children.add(new Property("summary", "", "Used to record a display of the author/contributor list without separate data element for each list member.", 0, java.lang.Integer.MAX_VALUE, summary));
7296        }
7297
7298        @Override
7299        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7300          switch (_hash) {
7301          case -599445191: /*complete*/  return new Property("complete", "boolean", "Indicates if the list includes all authors and/or contributors.", 0, 1, complete);
7302          case 96667762: /*entry*/  return new Property("entry", "", "An individual entity named as a contributor, for example in the author list or contributor list.", 0, java.lang.Integer.MAX_VALUE, entry);
7303          case -1857640538: /*summary*/  return new Property("summary", "", "Used to record a display of the author/contributor list without separate data element for each list member.", 0, java.lang.Integer.MAX_VALUE, summary);
7304          default: return super.getNamedProperty(_hash, _name, _checkValid);
7305          }
7306
7307        }
7308
7309      @Override
7310      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7311        switch (hash) {
7312        case -599445191: /*complete*/ return this.complete == null ? new Base[0] : new Base[] {this.complete}; // BooleanType
7313        case 96667762: /*entry*/ return this.entry == null ? new Base[0] : this.entry.toArray(new Base[this.entry.size()]); // CitationCitedArtifactContributorshipEntryComponent
7314        case -1857640538: /*summary*/ return this.summary == null ? new Base[0] : this.summary.toArray(new Base[this.summary.size()]); // ContributorshipSummaryComponent
7315        default: return super.getProperty(hash, name, checkValid);
7316        }
7317
7318      }
7319
7320      @Override
7321      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7322        switch (hash) {
7323        case -599445191: // complete
7324          this.complete = TypeConvertor.castToBoolean(value); // BooleanType
7325          return value;
7326        case 96667762: // entry
7327          this.getEntry().add((CitationCitedArtifactContributorshipEntryComponent) value); // CitationCitedArtifactContributorshipEntryComponent
7328          return value;
7329        case -1857640538: // summary
7330          this.getSummary().add((ContributorshipSummaryComponent) value); // ContributorshipSummaryComponent
7331          return value;
7332        default: return super.setProperty(hash, name, value);
7333        }
7334
7335      }
7336
7337      @Override
7338      public Base setProperty(String name, Base value) throws FHIRException {
7339        if (name.equals("complete")) {
7340          this.complete = TypeConvertor.castToBoolean(value); // BooleanType
7341        } else if (name.equals("entry")) {
7342          this.getEntry().add((CitationCitedArtifactContributorshipEntryComponent) value);
7343        } else if (name.equals("summary")) {
7344          this.getSummary().add((ContributorshipSummaryComponent) value);
7345        } else
7346          return super.setProperty(name, value);
7347        return value;
7348      }
7349
7350  @Override
7351  public void removeChild(String name, Base value) throws FHIRException {
7352        if (name.equals("complete")) {
7353          this.complete = null;
7354        } else if (name.equals("entry")) {
7355          this.getEntry().remove((CitationCitedArtifactContributorshipEntryComponent) value);
7356        } else if (name.equals("summary")) {
7357          this.getSummary().remove((ContributorshipSummaryComponent) value);
7358        } else
7359          super.removeChild(name, value);
7360        
7361      }
7362
7363      @Override
7364      public Base makeProperty(int hash, String name) throws FHIRException {
7365        switch (hash) {
7366        case -599445191:  return getCompleteElement();
7367        case 96667762:  return addEntry(); 
7368        case -1857640538:  return addSummary(); 
7369        default: return super.makeProperty(hash, name);
7370        }
7371
7372      }
7373
7374      @Override
7375      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7376        switch (hash) {
7377        case -599445191: /*complete*/ return new String[] {"boolean"};
7378        case 96667762: /*entry*/ return new String[] {};
7379        case -1857640538: /*summary*/ return new String[] {};
7380        default: return super.getTypesForProperty(hash, name);
7381        }
7382
7383      }
7384
7385      @Override
7386      public Base addChild(String name) throws FHIRException {
7387        if (name.equals("complete")) {
7388          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.contributorship.complete");
7389        }
7390        else if (name.equals("entry")) {
7391          return addEntry();
7392        }
7393        else if (name.equals("summary")) {
7394          return addSummary();
7395        }
7396        else
7397          return super.addChild(name);
7398      }
7399
7400      public CitationCitedArtifactContributorshipComponent copy() {
7401        CitationCitedArtifactContributorshipComponent dst = new CitationCitedArtifactContributorshipComponent();
7402        copyValues(dst);
7403        return dst;
7404      }
7405
7406      public void copyValues(CitationCitedArtifactContributorshipComponent dst) {
7407        super.copyValues(dst);
7408        dst.complete = complete == null ? null : complete.copy();
7409        if (entry != null) {
7410          dst.entry = new ArrayList<CitationCitedArtifactContributorshipEntryComponent>();
7411          for (CitationCitedArtifactContributorshipEntryComponent i : entry)
7412            dst.entry.add(i.copy());
7413        };
7414        if (summary != null) {
7415          dst.summary = new ArrayList<ContributorshipSummaryComponent>();
7416          for (ContributorshipSummaryComponent i : summary)
7417            dst.summary.add(i.copy());
7418        };
7419      }
7420
7421      @Override
7422      public boolean equalsDeep(Base other_) {
7423        if (!super.equalsDeep(other_))
7424          return false;
7425        if (!(other_ instanceof CitationCitedArtifactContributorshipComponent))
7426          return false;
7427        CitationCitedArtifactContributorshipComponent o = (CitationCitedArtifactContributorshipComponent) other_;
7428        return compareDeep(complete, o.complete, true) && compareDeep(entry, o.entry, true) && compareDeep(summary, o.summary, true)
7429          ;
7430      }
7431
7432      @Override
7433      public boolean equalsShallow(Base other_) {
7434        if (!super.equalsShallow(other_))
7435          return false;
7436        if (!(other_ instanceof CitationCitedArtifactContributorshipComponent))
7437          return false;
7438        CitationCitedArtifactContributorshipComponent o = (CitationCitedArtifactContributorshipComponent) other_;
7439        return compareValues(complete, o.complete, true);
7440      }
7441
7442      public boolean isEmpty() {
7443        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(complete, entry, summary
7444          );
7445      }
7446
7447  public String fhirType() {
7448    return "Citation.citedArtifact.contributorship";
7449
7450  }
7451
7452  }
7453
7454    @Block()
7455    public static class CitationCitedArtifactContributorshipEntryComponent extends BackboneElement implements IBaseBackboneElement {
7456        /**
7457         * The identity of the individual contributor.
7458         */
7459        @Child(name = "contributor", type = {Practitioner.class, Organization.class}, order=1, min=1, max=1, modifier=false, summary=false)
7460        @Description(shortDefinition="The identity of the individual contributor", formalDefinition="The identity of the individual contributor." )
7461        protected Reference contributor;
7462
7463        /**
7464         * For citation styles that use initials.
7465         */
7466        @Child(name = "forenameInitials", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
7467        @Description(shortDefinition="For citation styles that use initials", formalDefinition="For citation styles that use initials." )
7468        protected StringType forenameInitials;
7469
7470        /**
7471         * Organization affiliated with the contributor.
7472         */
7473        @Child(name = "affiliation", type = {Organization.class, PractitionerRole.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
7474        @Description(shortDefinition="Organizational affiliation", formalDefinition="Organization affiliated with the contributor." )
7475        protected List<Reference> affiliation;
7476
7477        /**
7478         * This element identifies the specific nature of an individual?s contribution with respect to the cited work.
7479         */
7480        @Child(name = "contributionType", type = {CodeableConcept.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
7481        @Description(shortDefinition="The specific contribution", formalDefinition="This element identifies the specific nature of an individual?s contribution with respect to the cited work." )
7482        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/artifact-contribution-type")
7483        protected List<CodeableConcept> contributionType;
7484
7485        /**
7486         * The role of the contributor (e.g. author, editor, reviewer, funder).
7487         */
7488        @Child(name = "role", type = {CodeableConcept.class}, order=5, min=0, max=1, modifier=false, summary=false)
7489        @Description(shortDefinition="The role of the contributor (e.g. author, editor, reviewer, funder)", formalDefinition="The role of the contributor (e.g. author, editor, reviewer, funder)." )
7490        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contributor-role")
7491        protected CodeableConcept role;
7492
7493        /**
7494         * Contributions with accounting for time or number.
7495         */
7496        @Child(name = "contributionInstance", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
7497        @Description(shortDefinition="Contributions with accounting for time or number", formalDefinition="Contributions with accounting for time or number." )
7498        protected List<CitationCitedArtifactContributorshipEntryContributionInstanceComponent> contributionInstance;
7499
7500        /**
7501         * Whether the contributor is the corresponding contributor for the role.
7502         */
7503        @Child(name = "correspondingContact", type = {BooleanType.class}, order=7, min=0, max=1, modifier=false, summary=false)
7504        @Description(shortDefinition="Whether the contributor is the corresponding contributor for the role", formalDefinition="Whether the contributor is the corresponding contributor for the role." )
7505        protected BooleanType correspondingContact;
7506
7507        /**
7508         * Provides a numerical ranking to represent the degree of contributorship relative to other contributors, such as 1 for first author and 2 for second author.
7509         */
7510        @Child(name = "rankingOrder", type = {PositiveIntType.class}, order=8, min=0, max=1, modifier=false, summary=false)
7511        @Description(shortDefinition="Ranked order of contribution", formalDefinition="Provides a numerical ranking to represent the degree of contributorship relative to other contributors, such as 1 for first author and 2 for second author." )
7512        protected PositiveIntType rankingOrder;
7513
7514        private static final long serialVersionUID = 1654594857L;
7515
7516    /**
7517     * Constructor
7518     */
7519      public CitationCitedArtifactContributorshipEntryComponent() {
7520        super();
7521      }
7522
7523    /**
7524     * Constructor
7525     */
7526      public CitationCitedArtifactContributorshipEntryComponent(Reference contributor) {
7527        super();
7528        this.setContributor(contributor);
7529      }
7530
7531        /**
7532         * @return {@link #contributor} (The identity of the individual contributor.)
7533         */
7534        public Reference getContributor() { 
7535          if (this.contributor == null)
7536            if (Configuration.errorOnAutoCreate())
7537              throw new Error("Attempt to auto-create CitationCitedArtifactContributorshipEntryComponent.contributor");
7538            else if (Configuration.doAutoCreate())
7539              this.contributor = new Reference(); // cc
7540          return this.contributor;
7541        }
7542
7543        public boolean hasContributor() { 
7544          return this.contributor != null && !this.contributor.isEmpty();
7545        }
7546
7547        /**
7548         * @param value {@link #contributor} (The identity of the individual contributor.)
7549         */
7550        public CitationCitedArtifactContributorshipEntryComponent setContributor(Reference value) { 
7551          this.contributor = value;
7552          return this;
7553        }
7554
7555        /**
7556         * @return {@link #forenameInitials} (For citation styles that use initials.). This is the underlying object with id, value and extensions. The accessor "getForenameInitials" gives direct access to the value
7557         */
7558        public StringType getForenameInitialsElement() { 
7559          if (this.forenameInitials == null)
7560            if (Configuration.errorOnAutoCreate())
7561              throw new Error("Attempt to auto-create CitationCitedArtifactContributorshipEntryComponent.forenameInitials");
7562            else if (Configuration.doAutoCreate())
7563              this.forenameInitials = new StringType(); // bb
7564          return this.forenameInitials;
7565        }
7566
7567        public boolean hasForenameInitialsElement() { 
7568          return this.forenameInitials != null && !this.forenameInitials.isEmpty();
7569        }
7570
7571        public boolean hasForenameInitials() { 
7572          return this.forenameInitials != null && !this.forenameInitials.isEmpty();
7573        }
7574
7575        /**
7576         * @param value {@link #forenameInitials} (For citation styles that use initials.). This is the underlying object with id, value and extensions. The accessor "getForenameInitials" gives direct access to the value
7577         */
7578        public CitationCitedArtifactContributorshipEntryComponent setForenameInitialsElement(StringType value) { 
7579          this.forenameInitials = value;
7580          return this;
7581        }
7582
7583        /**
7584         * @return For citation styles that use initials.
7585         */
7586        public String getForenameInitials() { 
7587          return this.forenameInitials == null ? null : this.forenameInitials.getValue();
7588        }
7589
7590        /**
7591         * @param value For citation styles that use initials.
7592         */
7593        public CitationCitedArtifactContributorshipEntryComponent setForenameInitials(String value) { 
7594          if (Utilities.noString(value))
7595            this.forenameInitials = null;
7596          else {
7597            if (this.forenameInitials == null)
7598              this.forenameInitials = new StringType();
7599            this.forenameInitials.setValue(value);
7600          }
7601          return this;
7602        }
7603
7604        /**
7605         * @return {@link #affiliation} (Organization affiliated with the contributor.)
7606         */
7607        public List<Reference> getAffiliation() { 
7608          if (this.affiliation == null)
7609            this.affiliation = new ArrayList<Reference>();
7610          return this.affiliation;
7611        }
7612
7613        /**
7614         * @return Returns a reference to <code>this</code> for easy method chaining
7615         */
7616        public CitationCitedArtifactContributorshipEntryComponent setAffiliation(List<Reference> theAffiliation) { 
7617          this.affiliation = theAffiliation;
7618          return this;
7619        }
7620
7621        public boolean hasAffiliation() { 
7622          if (this.affiliation == null)
7623            return false;
7624          for (Reference item : this.affiliation)
7625            if (!item.isEmpty())
7626              return true;
7627          return false;
7628        }
7629
7630        public Reference addAffiliation() { //3
7631          Reference t = new Reference();
7632          if (this.affiliation == null)
7633            this.affiliation = new ArrayList<Reference>();
7634          this.affiliation.add(t);
7635          return t;
7636        }
7637
7638        public CitationCitedArtifactContributorshipEntryComponent addAffiliation(Reference t) { //3
7639          if (t == null)
7640            return this;
7641          if (this.affiliation == null)
7642            this.affiliation = new ArrayList<Reference>();
7643          this.affiliation.add(t);
7644          return this;
7645        }
7646
7647        /**
7648         * @return The first repetition of repeating field {@link #affiliation}, creating it if it does not already exist {3}
7649         */
7650        public Reference getAffiliationFirstRep() { 
7651          if (getAffiliation().isEmpty()) {
7652            addAffiliation();
7653          }
7654          return getAffiliation().get(0);
7655        }
7656
7657        /**
7658         * @return {@link #contributionType} (This element identifies the specific nature of an individual?s contribution with respect to the cited work.)
7659         */
7660        public List<CodeableConcept> getContributionType() { 
7661          if (this.contributionType == null)
7662            this.contributionType = new ArrayList<CodeableConcept>();
7663          return this.contributionType;
7664        }
7665
7666        /**
7667         * @return Returns a reference to <code>this</code> for easy method chaining
7668         */
7669        public CitationCitedArtifactContributorshipEntryComponent setContributionType(List<CodeableConcept> theContributionType) { 
7670          this.contributionType = theContributionType;
7671          return this;
7672        }
7673
7674        public boolean hasContributionType() { 
7675          if (this.contributionType == null)
7676            return false;
7677          for (CodeableConcept item : this.contributionType)
7678            if (!item.isEmpty())
7679              return true;
7680          return false;
7681        }
7682
7683        public CodeableConcept addContributionType() { //3
7684          CodeableConcept t = new CodeableConcept();
7685          if (this.contributionType == null)
7686            this.contributionType = new ArrayList<CodeableConcept>();
7687          this.contributionType.add(t);
7688          return t;
7689        }
7690
7691        public CitationCitedArtifactContributorshipEntryComponent addContributionType(CodeableConcept t) { //3
7692          if (t == null)
7693            return this;
7694          if (this.contributionType == null)
7695            this.contributionType = new ArrayList<CodeableConcept>();
7696          this.contributionType.add(t);
7697          return this;
7698        }
7699
7700        /**
7701         * @return The first repetition of repeating field {@link #contributionType}, creating it if it does not already exist {3}
7702         */
7703        public CodeableConcept getContributionTypeFirstRep() { 
7704          if (getContributionType().isEmpty()) {
7705            addContributionType();
7706          }
7707          return getContributionType().get(0);
7708        }
7709
7710        /**
7711         * @return {@link #role} (The role of the contributor (e.g. author, editor, reviewer, funder).)
7712         */
7713        public CodeableConcept getRole() { 
7714          if (this.role == null)
7715            if (Configuration.errorOnAutoCreate())
7716              throw new Error("Attempt to auto-create CitationCitedArtifactContributorshipEntryComponent.role");
7717            else if (Configuration.doAutoCreate())
7718              this.role = new CodeableConcept(); // cc
7719          return this.role;
7720        }
7721
7722        public boolean hasRole() { 
7723          return this.role != null && !this.role.isEmpty();
7724        }
7725
7726        /**
7727         * @param value {@link #role} (The role of the contributor (e.g. author, editor, reviewer, funder).)
7728         */
7729        public CitationCitedArtifactContributorshipEntryComponent setRole(CodeableConcept value) { 
7730          this.role = value;
7731          return this;
7732        }
7733
7734        /**
7735         * @return {@link #contributionInstance} (Contributions with accounting for time or number.)
7736         */
7737        public List<CitationCitedArtifactContributorshipEntryContributionInstanceComponent> getContributionInstance() { 
7738          if (this.contributionInstance == null)
7739            this.contributionInstance = new ArrayList<CitationCitedArtifactContributorshipEntryContributionInstanceComponent>();
7740          return this.contributionInstance;
7741        }
7742
7743        /**
7744         * @return Returns a reference to <code>this</code> for easy method chaining
7745         */
7746        public CitationCitedArtifactContributorshipEntryComponent setContributionInstance(List<CitationCitedArtifactContributorshipEntryContributionInstanceComponent> theContributionInstance) { 
7747          this.contributionInstance = theContributionInstance;
7748          return this;
7749        }
7750
7751        public boolean hasContributionInstance() { 
7752          if (this.contributionInstance == null)
7753            return false;
7754          for (CitationCitedArtifactContributorshipEntryContributionInstanceComponent item : this.contributionInstance)
7755            if (!item.isEmpty())
7756              return true;
7757          return false;
7758        }
7759
7760        public CitationCitedArtifactContributorshipEntryContributionInstanceComponent addContributionInstance() { //3
7761          CitationCitedArtifactContributorshipEntryContributionInstanceComponent t = new CitationCitedArtifactContributorshipEntryContributionInstanceComponent();
7762          if (this.contributionInstance == null)
7763            this.contributionInstance = new ArrayList<CitationCitedArtifactContributorshipEntryContributionInstanceComponent>();
7764          this.contributionInstance.add(t);
7765          return t;
7766        }
7767
7768        public CitationCitedArtifactContributorshipEntryComponent addContributionInstance(CitationCitedArtifactContributorshipEntryContributionInstanceComponent t) { //3
7769          if (t == null)
7770            return this;
7771          if (this.contributionInstance == null)
7772            this.contributionInstance = new ArrayList<CitationCitedArtifactContributorshipEntryContributionInstanceComponent>();
7773          this.contributionInstance.add(t);
7774          return this;
7775        }
7776
7777        /**
7778         * @return The first repetition of repeating field {@link #contributionInstance}, creating it if it does not already exist {3}
7779         */
7780        public CitationCitedArtifactContributorshipEntryContributionInstanceComponent getContributionInstanceFirstRep() { 
7781          if (getContributionInstance().isEmpty()) {
7782            addContributionInstance();
7783          }
7784          return getContributionInstance().get(0);
7785        }
7786
7787        /**
7788         * @return {@link #correspondingContact} (Whether the contributor is the corresponding contributor for the role.). This is the underlying object with id, value and extensions. The accessor "getCorrespondingContact" gives direct access to the value
7789         */
7790        public BooleanType getCorrespondingContactElement() { 
7791          if (this.correspondingContact == null)
7792            if (Configuration.errorOnAutoCreate())
7793              throw new Error("Attempt to auto-create CitationCitedArtifactContributorshipEntryComponent.correspondingContact");
7794            else if (Configuration.doAutoCreate())
7795              this.correspondingContact = new BooleanType(); // bb
7796          return this.correspondingContact;
7797        }
7798
7799        public boolean hasCorrespondingContactElement() { 
7800          return this.correspondingContact != null && !this.correspondingContact.isEmpty();
7801        }
7802
7803        public boolean hasCorrespondingContact() { 
7804          return this.correspondingContact != null && !this.correspondingContact.isEmpty();
7805        }
7806
7807        /**
7808         * @param value {@link #correspondingContact} (Whether the contributor is the corresponding contributor for the role.). This is the underlying object with id, value and extensions. The accessor "getCorrespondingContact" gives direct access to the value
7809         */
7810        public CitationCitedArtifactContributorshipEntryComponent setCorrespondingContactElement(BooleanType value) { 
7811          this.correspondingContact = value;
7812          return this;
7813        }
7814
7815        /**
7816         * @return Whether the contributor is the corresponding contributor for the role.
7817         */
7818        public boolean getCorrespondingContact() { 
7819          return this.correspondingContact == null || this.correspondingContact.isEmpty() ? false : this.correspondingContact.getValue();
7820        }
7821
7822        /**
7823         * @param value Whether the contributor is the corresponding contributor for the role.
7824         */
7825        public CitationCitedArtifactContributorshipEntryComponent setCorrespondingContact(boolean value) { 
7826            if (this.correspondingContact == null)
7827              this.correspondingContact = new BooleanType();
7828            this.correspondingContact.setValue(value);
7829          return this;
7830        }
7831
7832        /**
7833         * @return {@link #rankingOrder} (Provides a numerical ranking to represent the degree of contributorship relative to other contributors, such as 1 for first author and 2 for second author.). This is the underlying object with id, value and extensions. The accessor "getRankingOrder" gives direct access to the value
7834         */
7835        public PositiveIntType getRankingOrderElement() { 
7836          if (this.rankingOrder == null)
7837            if (Configuration.errorOnAutoCreate())
7838              throw new Error("Attempt to auto-create CitationCitedArtifactContributorshipEntryComponent.rankingOrder");
7839            else if (Configuration.doAutoCreate())
7840              this.rankingOrder = new PositiveIntType(); // bb
7841          return this.rankingOrder;
7842        }
7843
7844        public boolean hasRankingOrderElement() { 
7845          return this.rankingOrder != null && !this.rankingOrder.isEmpty();
7846        }
7847
7848        public boolean hasRankingOrder() { 
7849          return this.rankingOrder != null && !this.rankingOrder.isEmpty();
7850        }
7851
7852        /**
7853         * @param value {@link #rankingOrder} (Provides a numerical ranking to represent the degree of contributorship relative to other contributors, such as 1 for first author and 2 for second author.). This is the underlying object with id, value and extensions. The accessor "getRankingOrder" gives direct access to the value
7854         */
7855        public CitationCitedArtifactContributorshipEntryComponent setRankingOrderElement(PositiveIntType value) { 
7856          this.rankingOrder = value;
7857          return this;
7858        }
7859
7860        /**
7861         * @return Provides a numerical ranking to represent the degree of contributorship relative to other contributors, such as 1 for first author and 2 for second author.
7862         */
7863        public int getRankingOrder() { 
7864          return this.rankingOrder == null || this.rankingOrder.isEmpty() ? 0 : this.rankingOrder.getValue();
7865        }
7866
7867        /**
7868         * @param value Provides a numerical ranking to represent the degree of contributorship relative to other contributors, such as 1 for first author and 2 for second author.
7869         */
7870        public CitationCitedArtifactContributorshipEntryComponent setRankingOrder(int value) { 
7871            if (this.rankingOrder == null)
7872              this.rankingOrder = new PositiveIntType();
7873            this.rankingOrder.setValue(value);
7874          return this;
7875        }
7876
7877        protected void listChildren(List<Property> children) {
7878          super.listChildren(children);
7879          children.add(new Property("contributor", "Reference(Practitioner|Organization)", "The identity of the individual contributor.", 0, 1, contributor));
7880          children.add(new Property("forenameInitials", "string", "For citation styles that use initials.", 0, 1, forenameInitials));
7881          children.add(new Property("affiliation", "Reference(Organization|PractitionerRole)", "Organization affiliated with the contributor.", 0, java.lang.Integer.MAX_VALUE, affiliation));
7882          children.add(new Property("contributionType", "CodeableConcept", "This element identifies the specific nature of an individual?s contribution with respect to the cited work.", 0, java.lang.Integer.MAX_VALUE, contributionType));
7883          children.add(new Property("role", "CodeableConcept", "The role of the contributor (e.g. author, editor, reviewer, funder).", 0, 1, role));
7884          children.add(new Property("contributionInstance", "", "Contributions with accounting for time or number.", 0, java.lang.Integer.MAX_VALUE, contributionInstance));
7885          children.add(new Property("correspondingContact", "boolean", "Whether the contributor is the corresponding contributor for the role.", 0, 1, correspondingContact));
7886          children.add(new Property("rankingOrder", "positiveInt", "Provides a numerical ranking to represent the degree of contributorship relative to other contributors, such as 1 for first author and 2 for second author.", 0, 1, rankingOrder));
7887        }
7888
7889        @Override
7890        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7891          switch (_hash) {
7892          case -1895276325: /*contributor*/  return new Property("contributor", "Reference(Practitioner|Organization)", "The identity of the individual contributor.", 0, 1, contributor);
7893          case -740521962: /*forenameInitials*/  return new Property("forenameInitials", "string", "For citation styles that use initials.", 0, 1, forenameInitials);
7894          case 2019918576: /*affiliation*/  return new Property("affiliation", "Reference(Organization|PractitionerRole)", "Organization affiliated with the contributor.", 0, java.lang.Integer.MAX_VALUE, affiliation);
7895          case -1600446614: /*contributionType*/  return new Property("contributionType", "CodeableConcept", "This element identifies the specific nature of an individual?s contribution with respect to the cited work.", 0, java.lang.Integer.MAX_VALUE, contributionType);
7896          case 3506294: /*role*/  return new Property("role", "CodeableConcept", "The role of the contributor (e.g. author, editor, reviewer, funder).", 0, 1, role);
7897          case -547910459: /*contributionInstance*/  return new Property("contributionInstance", "", "Contributions with accounting for time or number.", 0, java.lang.Integer.MAX_VALUE, contributionInstance);
7898          case -1816008851: /*correspondingContact*/  return new Property("correspondingContact", "boolean", "Whether the contributor is the corresponding contributor for the role.", 0, 1, correspondingContact);
7899          case -762905416: /*rankingOrder*/  return new Property("rankingOrder", "positiveInt", "Provides a numerical ranking to represent the degree of contributorship relative to other contributors, such as 1 for first author and 2 for second author.", 0, 1, rankingOrder);
7900          default: return super.getNamedProperty(_hash, _name, _checkValid);
7901          }
7902
7903        }
7904
7905      @Override
7906      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7907        switch (hash) {
7908        case -1895276325: /*contributor*/ return this.contributor == null ? new Base[0] : new Base[] {this.contributor}; // Reference
7909        case -740521962: /*forenameInitials*/ return this.forenameInitials == null ? new Base[0] : new Base[] {this.forenameInitials}; // StringType
7910        case 2019918576: /*affiliation*/ return this.affiliation == null ? new Base[0] : this.affiliation.toArray(new Base[this.affiliation.size()]); // Reference
7911        case -1600446614: /*contributionType*/ return this.contributionType == null ? new Base[0] : this.contributionType.toArray(new Base[this.contributionType.size()]); // CodeableConcept
7912        case 3506294: /*role*/ return this.role == null ? new Base[0] : new Base[] {this.role}; // CodeableConcept
7913        case -547910459: /*contributionInstance*/ return this.contributionInstance == null ? new Base[0] : this.contributionInstance.toArray(new Base[this.contributionInstance.size()]); // CitationCitedArtifactContributorshipEntryContributionInstanceComponent
7914        case -1816008851: /*correspondingContact*/ return this.correspondingContact == null ? new Base[0] : new Base[] {this.correspondingContact}; // BooleanType
7915        case -762905416: /*rankingOrder*/ return this.rankingOrder == null ? new Base[0] : new Base[] {this.rankingOrder}; // PositiveIntType
7916        default: return super.getProperty(hash, name, checkValid);
7917        }
7918
7919      }
7920
7921      @Override
7922      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7923        switch (hash) {
7924        case -1895276325: // contributor
7925          this.contributor = TypeConvertor.castToReference(value); // Reference
7926          return value;
7927        case -740521962: // forenameInitials
7928          this.forenameInitials = TypeConvertor.castToString(value); // StringType
7929          return value;
7930        case 2019918576: // affiliation
7931          this.getAffiliation().add(TypeConvertor.castToReference(value)); // Reference
7932          return value;
7933        case -1600446614: // contributionType
7934          this.getContributionType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
7935          return value;
7936        case 3506294: // role
7937          this.role = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
7938          return value;
7939        case -547910459: // contributionInstance
7940          this.getContributionInstance().add((CitationCitedArtifactContributorshipEntryContributionInstanceComponent) value); // CitationCitedArtifactContributorshipEntryContributionInstanceComponent
7941          return value;
7942        case -1816008851: // correspondingContact
7943          this.correspondingContact = TypeConvertor.castToBoolean(value); // BooleanType
7944          return value;
7945        case -762905416: // rankingOrder
7946          this.rankingOrder = TypeConvertor.castToPositiveInt(value); // PositiveIntType
7947          return value;
7948        default: return super.setProperty(hash, name, value);
7949        }
7950
7951      }
7952
7953      @Override
7954      public Base setProperty(String name, Base value) throws FHIRException {
7955        if (name.equals("contributor")) {
7956          this.contributor = TypeConvertor.castToReference(value); // Reference
7957        } else if (name.equals("forenameInitials")) {
7958          this.forenameInitials = TypeConvertor.castToString(value); // StringType
7959        } else if (name.equals("affiliation")) {
7960          this.getAffiliation().add(TypeConvertor.castToReference(value));
7961        } else if (name.equals("contributionType")) {
7962          this.getContributionType().add(TypeConvertor.castToCodeableConcept(value));
7963        } else if (name.equals("role")) {
7964          this.role = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
7965        } else if (name.equals("contributionInstance")) {
7966          this.getContributionInstance().add((CitationCitedArtifactContributorshipEntryContributionInstanceComponent) value);
7967        } else if (name.equals("correspondingContact")) {
7968          this.correspondingContact = TypeConvertor.castToBoolean(value); // BooleanType
7969        } else if (name.equals("rankingOrder")) {
7970          this.rankingOrder = TypeConvertor.castToPositiveInt(value); // PositiveIntType
7971        } else
7972          return super.setProperty(name, value);
7973        return value;
7974      }
7975
7976  @Override
7977  public void removeChild(String name, Base value) throws FHIRException {
7978        if (name.equals("contributor")) {
7979          this.contributor = null;
7980        } else if (name.equals("forenameInitials")) {
7981          this.forenameInitials = null;
7982        } else if (name.equals("affiliation")) {
7983          this.getAffiliation().remove(value);
7984        } else if (name.equals("contributionType")) {
7985          this.getContributionType().remove(value);
7986        } else if (name.equals("role")) {
7987          this.role = null;
7988        } else if (name.equals("contributionInstance")) {
7989          this.getContributionInstance().remove((CitationCitedArtifactContributorshipEntryContributionInstanceComponent) value);
7990        } else if (name.equals("correspondingContact")) {
7991          this.correspondingContact = null;
7992        } else if (name.equals("rankingOrder")) {
7993          this.rankingOrder = null;
7994        } else
7995          super.removeChild(name, value);
7996        
7997      }
7998
7999      @Override
8000      public Base makeProperty(int hash, String name) throws FHIRException {
8001        switch (hash) {
8002        case -1895276325:  return getContributor();
8003        case -740521962:  return getForenameInitialsElement();
8004        case 2019918576:  return addAffiliation(); 
8005        case -1600446614:  return addContributionType(); 
8006        case 3506294:  return getRole();
8007        case -547910459:  return addContributionInstance(); 
8008        case -1816008851:  return getCorrespondingContactElement();
8009        case -762905416:  return getRankingOrderElement();
8010        default: return super.makeProperty(hash, name);
8011        }
8012
8013      }
8014
8015      @Override
8016      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8017        switch (hash) {
8018        case -1895276325: /*contributor*/ return new String[] {"Reference"};
8019        case -740521962: /*forenameInitials*/ return new String[] {"string"};
8020        case 2019918576: /*affiliation*/ return new String[] {"Reference"};
8021        case -1600446614: /*contributionType*/ return new String[] {"CodeableConcept"};
8022        case 3506294: /*role*/ return new String[] {"CodeableConcept"};
8023        case -547910459: /*contributionInstance*/ return new String[] {};
8024        case -1816008851: /*correspondingContact*/ return new String[] {"boolean"};
8025        case -762905416: /*rankingOrder*/ return new String[] {"positiveInt"};
8026        default: return super.getTypesForProperty(hash, name);
8027        }
8028
8029      }
8030
8031      @Override
8032      public Base addChild(String name) throws FHIRException {
8033        if (name.equals("contributor")) {
8034          this.contributor = new Reference();
8035          return this.contributor;
8036        }
8037        else if (name.equals("forenameInitials")) {
8038          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.contributorship.entry.forenameInitials");
8039        }
8040        else if (name.equals("affiliation")) {
8041          return addAffiliation();
8042        }
8043        else if (name.equals("contributionType")) {
8044          return addContributionType();
8045        }
8046        else if (name.equals("role")) {
8047          this.role = new CodeableConcept();
8048          return this.role;
8049        }
8050        else if (name.equals("contributionInstance")) {
8051          return addContributionInstance();
8052        }
8053        else if (name.equals("correspondingContact")) {
8054          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.contributorship.entry.correspondingContact");
8055        }
8056        else if (name.equals("rankingOrder")) {
8057          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.contributorship.entry.rankingOrder");
8058        }
8059        else
8060          return super.addChild(name);
8061      }
8062
8063      public CitationCitedArtifactContributorshipEntryComponent copy() {
8064        CitationCitedArtifactContributorshipEntryComponent dst = new CitationCitedArtifactContributorshipEntryComponent();
8065        copyValues(dst);
8066        return dst;
8067      }
8068
8069      public void copyValues(CitationCitedArtifactContributorshipEntryComponent dst) {
8070        super.copyValues(dst);
8071        dst.contributor = contributor == null ? null : contributor.copy();
8072        dst.forenameInitials = forenameInitials == null ? null : forenameInitials.copy();
8073        if (affiliation != null) {
8074          dst.affiliation = new ArrayList<Reference>();
8075          for (Reference i : affiliation)
8076            dst.affiliation.add(i.copy());
8077        };
8078        if (contributionType != null) {
8079          dst.contributionType = new ArrayList<CodeableConcept>();
8080          for (CodeableConcept i : contributionType)
8081            dst.contributionType.add(i.copy());
8082        };
8083        dst.role = role == null ? null : role.copy();
8084        if (contributionInstance != null) {
8085          dst.contributionInstance = new ArrayList<CitationCitedArtifactContributorshipEntryContributionInstanceComponent>();
8086          for (CitationCitedArtifactContributorshipEntryContributionInstanceComponent i : contributionInstance)
8087            dst.contributionInstance.add(i.copy());
8088        };
8089        dst.correspondingContact = correspondingContact == null ? null : correspondingContact.copy();
8090        dst.rankingOrder = rankingOrder == null ? null : rankingOrder.copy();
8091      }
8092
8093      @Override
8094      public boolean equalsDeep(Base other_) {
8095        if (!super.equalsDeep(other_))
8096          return false;
8097        if (!(other_ instanceof CitationCitedArtifactContributorshipEntryComponent))
8098          return false;
8099        CitationCitedArtifactContributorshipEntryComponent o = (CitationCitedArtifactContributorshipEntryComponent) other_;
8100        return compareDeep(contributor, o.contributor, true) && compareDeep(forenameInitials, o.forenameInitials, true)
8101           && compareDeep(affiliation, o.affiliation, true) && compareDeep(contributionType, o.contributionType, true)
8102           && compareDeep(role, o.role, true) && compareDeep(contributionInstance, o.contributionInstance, true)
8103           && compareDeep(correspondingContact, o.correspondingContact, true) && compareDeep(rankingOrder, o.rankingOrder, true)
8104          ;
8105      }
8106
8107      @Override
8108      public boolean equalsShallow(Base other_) {
8109        if (!super.equalsShallow(other_))
8110          return false;
8111        if (!(other_ instanceof CitationCitedArtifactContributorshipEntryComponent))
8112          return false;
8113        CitationCitedArtifactContributorshipEntryComponent o = (CitationCitedArtifactContributorshipEntryComponent) other_;
8114        return compareValues(forenameInitials, o.forenameInitials, true) && compareValues(correspondingContact, o.correspondingContact, true)
8115           && compareValues(rankingOrder, o.rankingOrder, true);
8116      }
8117
8118      public boolean isEmpty() {
8119        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(contributor, forenameInitials
8120          , affiliation, contributionType, role, contributionInstance, correspondingContact
8121          , rankingOrder);
8122      }
8123
8124  public String fhirType() {
8125    return "Citation.citedArtifact.contributorship.entry";
8126
8127  }
8128
8129  }
8130
8131    @Block()
8132    public static class CitationCitedArtifactContributorshipEntryContributionInstanceComponent extends BackboneElement implements IBaseBackboneElement {
8133        /**
8134         * The specific contribution.
8135         */
8136        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
8137        @Description(shortDefinition="The specific contribution", formalDefinition="The specific contribution." )
8138        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/artifact-contribution-instance-type")
8139        protected CodeableConcept type;
8140
8141        /**
8142         * The time that the contribution was made.
8143         */
8144        @Child(name = "time", type = {DateTimeType.class}, order=2, min=0, max=1, modifier=false, summary=false)
8145        @Description(shortDefinition="The time that the contribution was made", formalDefinition="The time that the contribution was made." )
8146        protected DateTimeType time;
8147
8148        private static final long serialVersionUID = -196837729L;
8149
8150    /**
8151     * Constructor
8152     */
8153      public CitationCitedArtifactContributorshipEntryContributionInstanceComponent() {
8154        super();
8155      }
8156
8157    /**
8158     * Constructor
8159     */
8160      public CitationCitedArtifactContributorshipEntryContributionInstanceComponent(CodeableConcept type) {
8161        super();
8162        this.setType(type);
8163      }
8164
8165        /**
8166         * @return {@link #type} (The specific contribution.)
8167         */
8168        public CodeableConcept getType() { 
8169          if (this.type == null)
8170            if (Configuration.errorOnAutoCreate())
8171              throw new Error("Attempt to auto-create CitationCitedArtifactContributorshipEntryContributionInstanceComponent.type");
8172            else if (Configuration.doAutoCreate())
8173              this.type = new CodeableConcept(); // cc
8174          return this.type;
8175        }
8176
8177        public boolean hasType() { 
8178          return this.type != null && !this.type.isEmpty();
8179        }
8180
8181        /**
8182         * @param value {@link #type} (The specific contribution.)
8183         */
8184        public CitationCitedArtifactContributorshipEntryContributionInstanceComponent setType(CodeableConcept value) { 
8185          this.type = value;
8186          return this;
8187        }
8188
8189        /**
8190         * @return {@link #time} (The time that the contribution was made.). This is the underlying object with id, value and extensions. The accessor "getTime" gives direct access to the value
8191         */
8192        public DateTimeType getTimeElement() { 
8193          if (this.time == null)
8194            if (Configuration.errorOnAutoCreate())
8195              throw new Error("Attempt to auto-create CitationCitedArtifactContributorshipEntryContributionInstanceComponent.time");
8196            else if (Configuration.doAutoCreate())
8197              this.time = new DateTimeType(); // bb
8198          return this.time;
8199        }
8200
8201        public boolean hasTimeElement() { 
8202          return this.time != null && !this.time.isEmpty();
8203        }
8204
8205        public boolean hasTime() { 
8206          return this.time != null && !this.time.isEmpty();
8207        }
8208
8209        /**
8210         * @param value {@link #time} (The time that the contribution was made.). This is the underlying object with id, value and extensions. The accessor "getTime" gives direct access to the value
8211         */
8212        public CitationCitedArtifactContributorshipEntryContributionInstanceComponent setTimeElement(DateTimeType value) { 
8213          this.time = value;
8214          return this;
8215        }
8216
8217        /**
8218         * @return The time that the contribution was made.
8219         */
8220        public Date getTime() { 
8221          return this.time == null ? null : this.time.getValue();
8222        }
8223
8224        /**
8225         * @param value The time that the contribution was made.
8226         */
8227        public CitationCitedArtifactContributorshipEntryContributionInstanceComponent setTime(Date value) { 
8228          if (value == null)
8229            this.time = null;
8230          else {
8231            if (this.time == null)
8232              this.time = new DateTimeType();
8233            this.time.setValue(value);
8234          }
8235          return this;
8236        }
8237
8238        protected void listChildren(List<Property> children) {
8239          super.listChildren(children);
8240          children.add(new Property("type", "CodeableConcept", "The specific contribution.", 0, 1, type));
8241          children.add(new Property("time", "dateTime", "The time that the contribution was made.", 0, 1, time));
8242        }
8243
8244        @Override
8245        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8246          switch (_hash) {
8247          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "The specific contribution.", 0, 1, type);
8248          case 3560141: /*time*/  return new Property("time", "dateTime", "The time that the contribution was made.", 0, 1, time);
8249          default: return super.getNamedProperty(_hash, _name, _checkValid);
8250          }
8251
8252        }
8253
8254      @Override
8255      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8256        switch (hash) {
8257        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
8258        case 3560141: /*time*/ return this.time == null ? new Base[0] : new Base[] {this.time}; // DateTimeType
8259        default: return super.getProperty(hash, name, checkValid);
8260        }
8261
8262      }
8263
8264      @Override
8265      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8266        switch (hash) {
8267        case 3575610: // type
8268          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
8269          return value;
8270        case 3560141: // time
8271          this.time = TypeConvertor.castToDateTime(value); // DateTimeType
8272          return value;
8273        default: return super.setProperty(hash, name, value);
8274        }
8275
8276      }
8277
8278      @Override
8279      public Base setProperty(String name, Base value) throws FHIRException {
8280        if (name.equals("type")) {
8281          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
8282        } else if (name.equals("time")) {
8283          this.time = TypeConvertor.castToDateTime(value); // DateTimeType
8284        } else
8285          return super.setProperty(name, value);
8286        return value;
8287      }
8288
8289  @Override
8290  public void removeChild(String name, Base value) throws FHIRException {
8291        if (name.equals("type")) {
8292          this.type = null;
8293        } else if (name.equals("time")) {
8294          this.time = null;
8295        } else
8296          super.removeChild(name, value);
8297        
8298      }
8299
8300      @Override
8301      public Base makeProperty(int hash, String name) throws FHIRException {
8302        switch (hash) {
8303        case 3575610:  return getType();
8304        case 3560141:  return getTimeElement();
8305        default: return super.makeProperty(hash, name);
8306        }
8307
8308      }
8309
8310      @Override
8311      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8312        switch (hash) {
8313        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
8314        case 3560141: /*time*/ return new String[] {"dateTime"};
8315        default: return super.getTypesForProperty(hash, name);
8316        }
8317
8318      }
8319
8320      @Override
8321      public Base addChild(String name) throws FHIRException {
8322        if (name.equals("type")) {
8323          this.type = new CodeableConcept();
8324          return this.type;
8325        }
8326        else if (name.equals("time")) {
8327          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.contributorship.entry.contributionInstance.time");
8328        }
8329        else
8330          return super.addChild(name);
8331      }
8332
8333      public CitationCitedArtifactContributorshipEntryContributionInstanceComponent copy() {
8334        CitationCitedArtifactContributorshipEntryContributionInstanceComponent dst = new CitationCitedArtifactContributorshipEntryContributionInstanceComponent();
8335        copyValues(dst);
8336        return dst;
8337      }
8338
8339      public void copyValues(CitationCitedArtifactContributorshipEntryContributionInstanceComponent dst) {
8340        super.copyValues(dst);
8341        dst.type = type == null ? null : type.copy();
8342        dst.time = time == null ? null : time.copy();
8343      }
8344
8345      @Override
8346      public boolean equalsDeep(Base other_) {
8347        if (!super.equalsDeep(other_))
8348          return false;
8349        if (!(other_ instanceof CitationCitedArtifactContributorshipEntryContributionInstanceComponent))
8350          return false;
8351        CitationCitedArtifactContributorshipEntryContributionInstanceComponent o = (CitationCitedArtifactContributorshipEntryContributionInstanceComponent) other_;
8352        return compareDeep(type, o.type, true) && compareDeep(time, o.time, true);
8353      }
8354
8355      @Override
8356      public boolean equalsShallow(Base other_) {
8357        if (!super.equalsShallow(other_))
8358          return false;
8359        if (!(other_ instanceof CitationCitedArtifactContributorshipEntryContributionInstanceComponent))
8360          return false;
8361        CitationCitedArtifactContributorshipEntryContributionInstanceComponent o = (CitationCitedArtifactContributorshipEntryContributionInstanceComponent) other_;
8362        return compareValues(time, o.time, true);
8363      }
8364
8365      public boolean isEmpty() {
8366        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, time);
8367      }
8368
8369  public String fhirType() {
8370    return "Citation.citedArtifact.contributorship.entry.contributionInstance";
8371
8372  }
8373
8374  }
8375
8376    @Block()
8377    public static class ContributorshipSummaryComponent extends BackboneElement implements IBaseBackboneElement {
8378        /**
8379         * Used most commonly to express an author list or a contributorship statement.
8380         */
8381        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
8382        @Description(shortDefinition="Such as author list, contributorship statement, funding statement, acknowledgements statement, or conflicts of interest statement", formalDefinition="Used most commonly to express an author list or a contributorship statement." )
8383        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contributor-summary-type")
8384        protected CodeableConcept type;
8385
8386        /**
8387         * The format for the display string, such as author last name with first letter capitalized followed by forename initials.
8388         */
8389        @Child(name = "style", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
8390        @Description(shortDefinition="The format for the display string", formalDefinition="The format for the display string, such as author last name with first letter capitalized followed by forename initials." )
8391        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contributor-summary-style")
8392        protected CodeableConcept style;
8393
8394        /**
8395         * Used to code the producer or rule for creating the display string.
8396         */
8397        @Child(name = "source", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
8398        @Description(shortDefinition="Used to code the producer or rule for creating the display string", formalDefinition="Used to code the producer or rule for creating the display string." )
8399        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/contributor-summary-source")
8400        protected CodeableConcept source;
8401
8402        /**
8403         * The display string for the author list, contributor list, or contributorship statement.
8404         */
8405        @Child(name = "value", type = {MarkdownType.class}, order=4, min=1, max=1, modifier=false, summary=false)
8406        @Description(shortDefinition="The display string for the author list, contributor list, or contributorship statement", formalDefinition="The display string for the author list, contributor list, or contributorship statement." )
8407        protected MarkdownType value;
8408
8409        private static final long serialVersionUID = 1353383781L;
8410
8411    /**
8412     * Constructor
8413     */
8414      public ContributorshipSummaryComponent() {
8415        super();
8416      }
8417
8418    /**
8419     * Constructor
8420     */
8421      public ContributorshipSummaryComponent(String value) {
8422        super();
8423        this.setValue(value);
8424      }
8425
8426        /**
8427         * @return {@link #type} (Used most commonly to express an author list or a contributorship statement.)
8428         */
8429        public CodeableConcept getType() { 
8430          if (this.type == null)
8431            if (Configuration.errorOnAutoCreate())
8432              throw new Error("Attempt to auto-create ContributorshipSummaryComponent.type");
8433            else if (Configuration.doAutoCreate())
8434              this.type = new CodeableConcept(); // cc
8435          return this.type;
8436        }
8437
8438        public boolean hasType() { 
8439          return this.type != null && !this.type.isEmpty();
8440        }
8441
8442        /**
8443         * @param value {@link #type} (Used most commonly to express an author list or a contributorship statement.)
8444         */
8445        public ContributorshipSummaryComponent setType(CodeableConcept value) { 
8446          this.type = value;
8447          return this;
8448        }
8449
8450        /**
8451         * @return {@link #style} (The format for the display string, such as author last name with first letter capitalized followed by forename initials.)
8452         */
8453        public CodeableConcept getStyle() { 
8454          if (this.style == null)
8455            if (Configuration.errorOnAutoCreate())
8456              throw new Error("Attempt to auto-create ContributorshipSummaryComponent.style");
8457            else if (Configuration.doAutoCreate())
8458              this.style = new CodeableConcept(); // cc
8459          return this.style;
8460        }
8461
8462        public boolean hasStyle() { 
8463          return this.style != null && !this.style.isEmpty();
8464        }
8465
8466        /**
8467         * @param value {@link #style} (The format for the display string, such as author last name with first letter capitalized followed by forename initials.)
8468         */
8469        public ContributorshipSummaryComponent setStyle(CodeableConcept value) { 
8470          this.style = value;
8471          return this;
8472        }
8473
8474        /**
8475         * @return {@link #source} (Used to code the producer or rule for creating the display string.)
8476         */
8477        public CodeableConcept getSource() { 
8478          if (this.source == null)
8479            if (Configuration.errorOnAutoCreate())
8480              throw new Error("Attempt to auto-create ContributorshipSummaryComponent.source");
8481            else if (Configuration.doAutoCreate())
8482              this.source = new CodeableConcept(); // cc
8483          return this.source;
8484        }
8485
8486        public boolean hasSource() { 
8487          return this.source != null && !this.source.isEmpty();
8488        }
8489
8490        /**
8491         * @param value {@link #source} (Used to code the producer or rule for creating the display string.)
8492         */
8493        public ContributorshipSummaryComponent setSource(CodeableConcept value) { 
8494          this.source = value;
8495          return this;
8496        }
8497
8498        /**
8499         * @return {@link #value} (The display string for the author list, contributor list, or contributorship statement.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
8500         */
8501        public MarkdownType getValueElement() { 
8502          if (this.value == null)
8503            if (Configuration.errorOnAutoCreate())
8504              throw new Error("Attempt to auto-create ContributorshipSummaryComponent.value");
8505            else if (Configuration.doAutoCreate())
8506              this.value = new MarkdownType(); // bb
8507          return this.value;
8508        }
8509
8510        public boolean hasValueElement() { 
8511          return this.value != null && !this.value.isEmpty();
8512        }
8513
8514        public boolean hasValue() { 
8515          return this.value != null && !this.value.isEmpty();
8516        }
8517
8518        /**
8519         * @param value {@link #value} (The display string for the author list, contributor list, or contributorship statement.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
8520         */
8521        public ContributorshipSummaryComponent setValueElement(MarkdownType value) { 
8522          this.value = value;
8523          return this;
8524        }
8525
8526        /**
8527         * @return The display string for the author list, contributor list, or contributorship statement.
8528         */
8529        public String getValue() { 
8530          return this.value == null ? null : this.value.getValue();
8531        }
8532
8533        /**
8534         * @param value The display string for the author list, contributor list, or contributorship statement.
8535         */
8536        public ContributorshipSummaryComponent setValue(String value) { 
8537            if (this.value == null)
8538              this.value = new MarkdownType();
8539            this.value.setValue(value);
8540          return this;
8541        }
8542
8543        protected void listChildren(List<Property> children) {
8544          super.listChildren(children);
8545          children.add(new Property("type", "CodeableConcept", "Used most commonly to express an author list or a contributorship statement.", 0, 1, type));
8546          children.add(new Property("style", "CodeableConcept", "The format for the display string, such as author last name with first letter capitalized followed by forename initials.", 0, 1, style));
8547          children.add(new Property("source", "CodeableConcept", "Used to code the producer or rule for creating the display string.", 0, 1, source));
8548          children.add(new Property("value", "markdown", "The display string for the author list, contributor list, or contributorship statement.", 0, 1, value));
8549        }
8550
8551        @Override
8552        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8553          switch (_hash) {
8554          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Used most commonly to express an author list or a contributorship statement.", 0, 1, type);
8555          case 109780401: /*style*/  return new Property("style", "CodeableConcept", "The format for the display string, such as author last name with first letter capitalized followed by forename initials.", 0, 1, style);
8556          case -896505829: /*source*/  return new Property("source", "CodeableConcept", "Used to code the producer or rule for creating the display string.", 0, 1, source);
8557          case 111972721: /*value*/  return new Property("value", "markdown", "The display string for the author list, contributor list, or contributorship statement.", 0, 1, value);
8558          default: return super.getNamedProperty(_hash, _name, _checkValid);
8559          }
8560
8561        }
8562
8563      @Override
8564      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8565        switch (hash) {
8566        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
8567        case 109780401: /*style*/ return this.style == null ? new Base[0] : new Base[] {this.style}; // CodeableConcept
8568        case -896505829: /*source*/ return this.source == null ? new Base[0] : new Base[] {this.source}; // CodeableConcept
8569        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // MarkdownType
8570        default: return super.getProperty(hash, name, checkValid);
8571        }
8572
8573      }
8574
8575      @Override
8576      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8577        switch (hash) {
8578        case 3575610: // type
8579          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
8580          return value;
8581        case 109780401: // style
8582          this.style = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
8583          return value;
8584        case -896505829: // source
8585          this.source = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
8586          return value;
8587        case 111972721: // value
8588          this.value = TypeConvertor.castToMarkdown(value); // MarkdownType
8589          return value;
8590        default: return super.setProperty(hash, name, value);
8591        }
8592
8593      }
8594
8595      @Override
8596      public Base setProperty(String name, Base value) throws FHIRException {
8597        if (name.equals("type")) {
8598          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
8599        } else if (name.equals("style")) {
8600          this.style = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
8601        } else if (name.equals("source")) {
8602          this.source = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
8603        } else if (name.equals("value")) {
8604          this.value = TypeConvertor.castToMarkdown(value); // MarkdownType
8605        } else
8606          return super.setProperty(name, value);
8607        return value;
8608      }
8609
8610  @Override
8611  public void removeChild(String name, Base value) throws FHIRException {
8612        if (name.equals("type")) {
8613          this.type = null;
8614        } else if (name.equals("style")) {
8615          this.style = null;
8616        } else if (name.equals("source")) {
8617          this.source = null;
8618        } else if (name.equals("value")) {
8619          this.value = null;
8620        } else
8621          super.removeChild(name, value);
8622        
8623      }
8624
8625      @Override
8626      public Base makeProperty(int hash, String name) throws FHIRException {
8627        switch (hash) {
8628        case 3575610:  return getType();
8629        case 109780401:  return getStyle();
8630        case -896505829:  return getSource();
8631        case 111972721:  return getValueElement();
8632        default: return super.makeProperty(hash, name);
8633        }
8634
8635      }
8636
8637      @Override
8638      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8639        switch (hash) {
8640        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
8641        case 109780401: /*style*/ return new String[] {"CodeableConcept"};
8642        case -896505829: /*source*/ return new String[] {"CodeableConcept"};
8643        case 111972721: /*value*/ return new String[] {"markdown"};
8644        default: return super.getTypesForProperty(hash, name);
8645        }
8646
8647      }
8648
8649      @Override
8650      public Base addChild(String name) throws FHIRException {
8651        if (name.equals("type")) {
8652          this.type = new CodeableConcept();
8653          return this.type;
8654        }
8655        else if (name.equals("style")) {
8656          this.style = new CodeableConcept();
8657          return this.style;
8658        }
8659        else if (name.equals("source")) {
8660          this.source = new CodeableConcept();
8661          return this.source;
8662        }
8663        else if (name.equals("value")) {
8664          throw new FHIRException("Cannot call addChild on a singleton property Citation.citedArtifact.contributorship.summary.value");
8665        }
8666        else
8667          return super.addChild(name);
8668      }
8669
8670      public ContributorshipSummaryComponent copy() {
8671        ContributorshipSummaryComponent dst = new ContributorshipSummaryComponent();
8672        copyValues(dst);
8673        return dst;
8674      }
8675
8676      public void copyValues(ContributorshipSummaryComponent dst) {
8677        super.copyValues(dst);
8678        dst.type = type == null ? null : type.copy();
8679        dst.style = style == null ? null : style.copy();
8680        dst.source = source == null ? null : source.copy();
8681        dst.value = value == null ? null : value.copy();
8682      }
8683
8684      @Override
8685      public boolean equalsDeep(Base other_) {
8686        if (!super.equalsDeep(other_))
8687          return false;
8688        if (!(other_ instanceof ContributorshipSummaryComponent))
8689          return false;
8690        ContributorshipSummaryComponent o = (ContributorshipSummaryComponent) other_;
8691        return compareDeep(type, o.type, true) && compareDeep(style, o.style, true) && compareDeep(source, o.source, true)
8692           && compareDeep(value, o.value, true);
8693      }
8694
8695      @Override
8696      public boolean equalsShallow(Base other_) {
8697        if (!super.equalsShallow(other_))
8698          return false;
8699        if (!(other_ instanceof ContributorshipSummaryComponent))
8700          return false;
8701        ContributorshipSummaryComponent o = (ContributorshipSummaryComponent) other_;
8702        return compareValues(value, o.value, true);
8703      }
8704
8705      public boolean isEmpty() {
8706        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, style, source, value
8707          );
8708      }
8709
8710  public String fhirType() {
8711    return "Citation.citedArtifact.contributorship.summary";
8712
8713  }
8714
8715  }
8716
8717    /**
8718     * An absolute URI that is used to identify this citation record when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this summary is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the summary is stored on different servers.
8719     */
8720    @Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
8721    @Description(shortDefinition="Canonical identifier for this citation record, represented as a globally unique URI", formalDefinition="An absolute URI that is used to identify this citation record when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this summary is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the summary is stored on different servers." )
8722    protected UriType url;
8723
8724    /**
8725     * A formal identifier that is used to identify this citation record when it is represented in other formats, or referenced in a specification, model, design or an instance.
8726     */
8727    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
8728    @Description(shortDefinition="Identifier for the citation record itself", formalDefinition="A formal identifier that is used to identify this citation record when it is represented in other formats, or referenced in a specification, model, design or an instance." )
8729    protected List<Identifier> identifier;
8730
8731    /**
8732     * The identifier that is used to identify this version of the citation record when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the citation record author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
8733     */
8734    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
8735    @Description(shortDefinition="Business version of the citation record", formalDefinition="The identifier that is used to identify this version of the citation record when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the citation record author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence." )
8736    protected StringType version;
8737
8738    /**
8739     * Indicates the mechanism used to compare versions to determine which is more current.
8740     */
8741    @Child(name = "versionAlgorithm", type = {StringType.class, Coding.class}, order=3, min=0, max=1, modifier=false, summary=true)
8742    @Description(shortDefinition="How to compare versions", formalDefinition="Indicates the mechanism used to compare versions to determine which is more current." )
8743    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/version-algorithm")
8744    protected DataType versionAlgorithm;
8745
8746    /**
8747     * A natural language name identifying the citation record. This name should be usable as an identifier for the module by machine processing applications such as code generation.
8748     */
8749    @Child(name = "name", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
8750    @Description(shortDefinition="Name for this citation record (computer friendly)", formalDefinition="A natural language name identifying the citation record. This name should be usable as an identifier for the module by machine processing applications such as code generation." )
8751    protected StringType name;
8752
8753    /**
8754     * A short, descriptive, user-friendly title for the citation record.
8755     */
8756    @Child(name = "title", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=true)
8757    @Description(shortDefinition="Name for this citation record (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the citation record." )
8758    protected StringType title;
8759
8760    /**
8761     * The status of this summary. Enables tracking the life-cycle of the content.
8762     */
8763    @Child(name = "status", type = {CodeType.class}, order=6, min=1, max=1, modifier=true, summary=true)
8764    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this summary. Enables tracking the life-cycle of the content." )
8765    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
8766    protected Enumeration<PublicationStatus> status;
8767
8768    /**
8769     * A Boolean value to indicate that this citation record is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
8770     */
8771    @Child(name = "experimental", type = {BooleanType.class}, order=7, min=0, max=1, modifier=false, summary=true)
8772    @Description(shortDefinition="For testing purposes, not real usage", formalDefinition="A Boolean value to indicate that this citation record is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage." )
8773    protected BooleanType experimental;
8774
8775    /**
8776     * The date (and optionally time) when the citation record was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the citation record changes.
8777     */
8778    @Child(name = "date", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
8779    @Description(shortDefinition="Date last changed", formalDefinition="The date (and optionally time) when the citation record was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the citation record changes." )
8780    protected DateTimeType date;
8781
8782    /**
8783     * The name of the organization or individual that published the citation record.
8784     */
8785    @Child(name = "publisher", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=true)
8786    @Description(shortDefinition="The publisher of the citation record, not the publisher of the article or artifact being cited", formalDefinition="The name of the organization or individual that published the citation record." )
8787    protected StringType publisher;
8788
8789    /**
8790     * Contact details to assist a user in finding and communicating with the publisher.
8791     */
8792    @Child(name = "contact", type = {ContactDetail.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
8793    @Description(shortDefinition="Contact details for the publisher of the citation record", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
8794    protected List<ContactDetail> contact;
8795
8796    /**
8797     * A free text natural language description of the citation from a consumer's perspective.
8798     */
8799    @Child(name = "description", type = {MarkdownType.class}, order=11, min=0, max=1, modifier=false, summary=false)
8800    @Description(shortDefinition="Natural language description of the citation", formalDefinition="A free text natural language description of the citation from a consumer's perspective." )
8801    protected MarkdownType description;
8802
8803    /**
8804     * The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate citation record instances.
8805     */
8806    @Child(name = "useContext", type = {UsageContext.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
8807    @Description(shortDefinition="The context that the citation record content is intended to support", formalDefinition="The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate citation record instances." )
8808    protected List<UsageContext> useContext;
8809
8810    /**
8811     * A legal or geographic region in which the citation record is intended to be used.
8812     */
8813    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
8814    @Description(shortDefinition="Intended jurisdiction for citation record (if applicable)", formalDefinition="A legal or geographic region in which the citation record is intended to be used." )
8815    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
8816    protected List<CodeableConcept> jurisdiction;
8817
8818    /**
8819     * Explanation of why this citation is needed and why it has been designed as it has.
8820     */
8821    @Child(name = "purpose", type = {MarkdownType.class}, order=14, min=0, max=1, modifier=false, summary=false)
8822    @Description(shortDefinition="Why this citation is defined", formalDefinition="Explanation of why this citation is needed and why it has been designed as it has." )
8823    protected MarkdownType purpose;
8824
8825    /**
8826     * Use and/or publishing restrictions for the citation record, not for the cited artifact.
8827     */
8828    @Child(name = "copyright", type = {MarkdownType.class}, order=15, min=0, max=1, modifier=false, summary=false)
8829    @Description(shortDefinition="Use and/or publishing restrictions for the citation record, not for the cited artifact", formalDefinition="Use and/or publishing restrictions for the citation record, not for the cited artifact." )
8830    protected MarkdownType copyright;
8831
8832    /**
8833     * A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').
8834     */
8835    @Child(name = "copyrightLabel", type = {StringType.class}, order=16, min=0, max=1, modifier=false, summary=false)
8836    @Description(shortDefinition="Copyright holder and year(s) for the ciation record, not for the cited artifact", formalDefinition="A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved')." )
8837    protected StringType copyrightLabel;
8838
8839    /**
8840     * The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
8841     */
8842    @Child(name = "approvalDate", type = {DateType.class}, order=17, min=0, max=1, modifier=false, summary=false)
8843    @Description(shortDefinition="When the citation record was approved by publisher", formalDefinition="The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage." )
8844    protected DateType approvalDate;
8845
8846    /**
8847     * The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
8848     */
8849    @Child(name = "lastReviewDate", type = {DateType.class}, order=18, min=0, max=1, modifier=false, summary=false)
8850    @Description(shortDefinition="When the citation record was last reviewed by the publisher", formalDefinition="The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date." )
8851    protected DateType lastReviewDate;
8852
8853    /**
8854     * The period during which the citation record content was or is planned to be in active use.
8855     */
8856    @Child(name = "effectivePeriod", type = {Period.class}, order=19, min=0, max=1, modifier=false, summary=true)
8857    @Description(shortDefinition="When the citation record is expected to be used", formalDefinition="The period during which the citation record content was or is planned to be in active use." )
8858    protected Period effectivePeriod;
8859
8860    /**
8861     * Who authored or created the citation record.
8862     */
8863    @Child(name = "author", type = {ContactDetail.class}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8864    @Description(shortDefinition="Who authored the citation record", formalDefinition="Who authored or created the citation record." )
8865    protected List<ContactDetail> author;
8866
8867    /**
8868     * Who edited or revised the citation record.
8869     */
8870    @Child(name = "editor", type = {ContactDetail.class}, order=21, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8871    @Description(shortDefinition="Who edited the citation record", formalDefinition="Who edited or revised the citation record." )
8872    protected List<ContactDetail> editor;
8873
8874    /**
8875     * Who reviewed the citation record.
8876     */
8877    @Child(name = "reviewer", type = {ContactDetail.class}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8878    @Description(shortDefinition="Who reviewed the citation record", formalDefinition="Who reviewed the citation record." )
8879    protected List<ContactDetail> reviewer;
8880
8881    /**
8882     * Who endorsed the citation record.
8883     */
8884    @Child(name = "endorser", type = {ContactDetail.class}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8885    @Description(shortDefinition="Who endorsed the citation record", formalDefinition="Who endorsed the citation record." )
8886    protected List<ContactDetail> endorser;
8887
8888    /**
8889     * A human-readable display of key concepts to represent the citation.
8890     */
8891    @Child(name = "summary", type = {}, order=24, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8892    @Description(shortDefinition="A human-readable display of key concepts to represent the citation", formalDefinition="A human-readable display of key concepts to represent the citation." )
8893    protected List<CitationSummaryComponent> summary;
8894
8895    /**
8896     * The assignment to an organizing scheme.
8897     */
8898    @Child(name = "classification", type = {}, order=25, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8899    @Description(shortDefinition="The assignment to an organizing scheme", formalDefinition="The assignment to an organizing scheme." )
8900    protected List<CitationClassificationComponent> classification;
8901
8902    /**
8903     * Used for general notes and annotations not coded elsewhere.
8904     */
8905    @Child(name = "note", type = {Annotation.class}, order=26, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8906    @Description(shortDefinition="Used for general notes and annotations not coded elsewhere", formalDefinition="Used for general notes and annotations not coded elsewhere." )
8907    protected List<Annotation> note;
8908
8909    /**
8910     * The status of the citation record.
8911     */
8912    @Child(name = "currentState", type = {CodeableConcept.class}, order=27, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8913    @Description(shortDefinition="The status of the citation record", formalDefinition="The status of the citation record." )
8914    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/citation-status-type")
8915    protected List<CodeableConcept> currentState;
8916
8917    /**
8918     * The state or status of the citation record paired with an effective date or period for that state.
8919     */
8920    @Child(name = "statusDate", type = {}, order=28, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8921    @Description(shortDefinition="An effective date or period for a status of the citation record", formalDefinition="The state or status of the citation record paired with an effective date or period for that state." )
8922    protected List<CitationStatusDateComponent> statusDate;
8923
8924    /**
8925     * Artifact related to the citation record.
8926     */
8927    @Child(name = "relatedArtifact", type = {RelatedArtifact.class}, order=29, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8928    @Description(shortDefinition="Artifact related to the citation record", formalDefinition="Artifact related to the citation record." )
8929    protected List<RelatedArtifact> relatedArtifact;
8930
8931    /**
8932     * The article or artifact being described.
8933     */
8934    @Child(name = "citedArtifact", type = {}, order=30, min=0, max=1, modifier=false, summary=false)
8935    @Description(shortDefinition="The article or artifact being described", formalDefinition="The article or artifact being described." )
8936    protected CitationCitedArtifactComponent citedArtifact;
8937
8938    private static final long serialVersionUID = 717016163L;
8939
8940  /**
8941   * Constructor
8942   */
8943    public Citation() {
8944      super();
8945    }
8946
8947  /**
8948   * Constructor
8949   */
8950    public Citation(PublicationStatus status) {
8951      super();
8952      this.setStatus(status);
8953    }
8954
8955    /**
8956     * @return {@link #url} (An absolute URI that is used to identify this citation record when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this summary is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the summary is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
8957     */
8958    public UriType getUrlElement() { 
8959      if (this.url == null)
8960        if (Configuration.errorOnAutoCreate())
8961          throw new Error("Attempt to auto-create Citation.url");
8962        else if (Configuration.doAutoCreate())
8963          this.url = new UriType(); // bb
8964      return this.url;
8965    }
8966
8967    public boolean hasUrlElement() { 
8968      return this.url != null && !this.url.isEmpty();
8969    }
8970
8971    public boolean hasUrl() { 
8972      return this.url != null && !this.url.isEmpty();
8973    }
8974
8975    /**
8976     * @param value {@link #url} (An absolute URI that is used to identify this citation record when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this summary is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the summary is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
8977     */
8978    public Citation setUrlElement(UriType value) { 
8979      this.url = value;
8980      return this;
8981    }
8982
8983    /**
8984     * @return An absolute URI that is used to identify this citation record when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this summary is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the summary is stored on different servers.
8985     */
8986    public String getUrl() { 
8987      return this.url == null ? null : this.url.getValue();
8988    }
8989
8990    /**
8991     * @param value An absolute URI that is used to identify this citation record when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this summary is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the summary is stored on different servers.
8992     */
8993    public Citation setUrl(String value) { 
8994      if (Utilities.noString(value))
8995        this.url = null;
8996      else {
8997        if (this.url == null)
8998          this.url = new UriType();
8999        this.url.setValue(value);
9000      }
9001      return this;
9002    }
9003
9004    /**
9005     * @return {@link #identifier} (A formal identifier that is used to identify this citation record when it is represented in other formats, or referenced in a specification, model, design or an instance.)
9006     */
9007    public List<Identifier> getIdentifier() { 
9008      if (this.identifier == null)
9009        this.identifier = new ArrayList<Identifier>();
9010      return this.identifier;
9011    }
9012
9013    /**
9014     * @return Returns a reference to <code>this</code> for easy method chaining
9015     */
9016    public Citation setIdentifier(List<Identifier> theIdentifier) { 
9017      this.identifier = theIdentifier;
9018      return this;
9019    }
9020
9021    public boolean hasIdentifier() { 
9022      if (this.identifier == null)
9023        return false;
9024      for (Identifier item : this.identifier)
9025        if (!item.isEmpty())
9026          return true;
9027      return false;
9028    }
9029
9030    public Identifier addIdentifier() { //3
9031      Identifier t = new Identifier();
9032      if (this.identifier == null)
9033        this.identifier = new ArrayList<Identifier>();
9034      this.identifier.add(t);
9035      return t;
9036    }
9037
9038    public Citation addIdentifier(Identifier t) { //3
9039      if (t == null)
9040        return this;
9041      if (this.identifier == null)
9042        this.identifier = new ArrayList<Identifier>();
9043      this.identifier.add(t);
9044      return this;
9045    }
9046
9047    /**
9048     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
9049     */
9050    public Identifier getIdentifierFirstRep() { 
9051      if (getIdentifier().isEmpty()) {
9052        addIdentifier();
9053      }
9054      return getIdentifier().get(0);
9055    }
9056
9057    /**
9058     * @return {@link #version} (The identifier that is used to identify this version of the citation record when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the citation record author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
9059     */
9060    public StringType getVersionElement() { 
9061      if (this.version == null)
9062        if (Configuration.errorOnAutoCreate())
9063          throw new Error("Attempt to auto-create Citation.version");
9064        else if (Configuration.doAutoCreate())
9065          this.version = new StringType(); // bb
9066      return this.version;
9067    }
9068
9069    public boolean hasVersionElement() { 
9070      return this.version != null && !this.version.isEmpty();
9071    }
9072
9073    public boolean hasVersion() { 
9074      return this.version != null && !this.version.isEmpty();
9075    }
9076
9077    /**
9078     * @param value {@link #version} (The identifier that is used to identify this version of the citation record when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the citation record author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
9079     */
9080    public Citation setVersionElement(StringType value) { 
9081      this.version = value;
9082      return this;
9083    }
9084
9085    /**
9086     * @return The identifier that is used to identify this version of the citation record when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the citation record author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
9087     */
9088    public String getVersion() { 
9089      return this.version == null ? null : this.version.getValue();
9090    }
9091
9092    /**
9093     * @param value The identifier that is used to identify this version of the citation record when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the citation record author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
9094     */
9095    public Citation setVersion(String value) { 
9096      if (Utilities.noString(value))
9097        this.version = null;
9098      else {
9099        if (this.version == null)
9100          this.version = new StringType();
9101        this.version.setValue(value);
9102      }
9103      return this;
9104    }
9105
9106    /**
9107     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
9108     */
9109    public DataType getVersionAlgorithm() { 
9110      return this.versionAlgorithm;
9111    }
9112
9113    /**
9114     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
9115     */
9116    public StringType getVersionAlgorithmStringType() throws FHIRException { 
9117      if (this.versionAlgorithm == null)
9118        this.versionAlgorithm = new StringType();
9119      if (!(this.versionAlgorithm instanceof StringType))
9120        throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.versionAlgorithm.getClass().getName()+" was encountered");
9121      return (StringType) this.versionAlgorithm;
9122    }
9123
9124    public boolean hasVersionAlgorithmStringType() { 
9125      return this != null && this.versionAlgorithm instanceof StringType;
9126    }
9127
9128    /**
9129     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
9130     */
9131    public Coding getVersionAlgorithmCoding() throws FHIRException { 
9132      if (this.versionAlgorithm == null)
9133        this.versionAlgorithm = new Coding();
9134      if (!(this.versionAlgorithm instanceof Coding))
9135        throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.versionAlgorithm.getClass().getName()+" was encountered");
9136      return (Coding) this.versionAlgorithm;
9137    }
9138
9139    public boolean hasVersionAlgorithmCoding() { 
9140      return this != null && this.versionAlgorithm instanceof Coding;
9141    }
9142
9143    public boolean hasVersionAlgorithm() { 
9144      return this.versionAlgorithm != null && !this.versionAlgorithm.isEmpty();
9145    }
9146
9147    /**
9148     * @param value {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
9149     */
9150    public Citation setVersionAlgorithm(DataType value) { 
9151      if (value != null && !(value instanceof StringType || value instanceof Coding))
9152        throw new FHIRException("Not the right type for Citation.versionAlgorithm[x]: "+value.fhirType());
9153      this.versionAlgorithm = value;
9154      return this;
9155    }
9156
9157    /**
9158     * @return {@link #name} (A natural language name identifying the citation record. This name should be usable as an identifier for the module by machine processing applications such as code generation.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
9159     */
9160    public StringType getNameElement() { 
9161      if (this.name == null)
9162        if (Configuration.errorOnAutoCreate())
9163          throw new Error("Attempt to auto-create Citation.name");
9164        else if (Configuration.doAutoCreate())
9165          this.name = new StringType(); // bb
9166      return this.name;
9167    }
9168
9169    public boolean hasNameElement() { 
9170      return this.name != null && !this.name.isEmpty();
9171    }
9172
9173    public boolean hasName() { 
9174      return this.name != null && !this.name.isEmpty();
9175    }
9176
9177    /**
9178     * @param value {@link #name} (A natural language name identifying the citation record. This name should be usable as an identifier for the module by machine processing applications such as code generation.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
9179     */
9180    public Citation setNameElement(StringType value) { 
9181      this.name = value;
9182      return this;
9183    }
9184
9185    /**
9186     * @return A natural language name identifying the citation record. This name should be usable as an identifier for the module by machine processing applications such as code generation.
9187     */
9188    public String getName() { 
9189      return this.name == null ? null : this.name.getValue();
9190    }
9191
9192    /**
9193     * @param value A natural language name identifying the citation record. This name should be usable as an identifier for the module by machine processing applications such as code generation.
9194     */
9195    public Citation setName(String value) { 
9196      if (Utilities.noString(value))
9197        this.name = null;
9198      else {
9199        if (this.name == null)
9200          this.name = new StringType();
9201        this.name.setValue(value);
9202      }
9203      return this;
9204    }
9205
9206    /**
9207     * @return {@link #title} (A short, descriptive, user-friendly title for the citation record.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
9208     */
9209    public StringType getTitleElement() { 
9210      if (this.title == null)
9211        if (Configuration.errorOnAutoCreate())
9212          throw new Error("Attempt to auto-create Citation.title");
9213        else if (Configuration.doAutoCreate())
9214          this.title = new StringType(); // bb
9215      return this.title;
9216    }
9217
9218    public boolean hasTitleElement() { 
9219      return this.title != null && !this.title.isEmpty();
9220    }
9221
9222    public boolean hasTitle() { 
9223      return this.title != null && !this.title.isEmpty();
9224    }
9225
9226    /**
9227     * @param value {@link #title} (A short, descriptive, user-friendly title for the citation record.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
9228     */
9229    public Citation setTitleElement(StringType value) { 
9230      this.title = value;
9231      return this;
9232    }
9233
9234    /**
9235     * @return A short, descriptive, user-friendly title for the citation record.
9236     */
9237    public String getTitle() { 
9238      return this.title == null ? null : this.title.getValue();
9239    }
9240
9241    /**
9242     * @param value A short, descriptive, user-friendly title for the citation record.
9243     */
9244    public Citation setTitle(String value) { 
9245      if (Utilities.noString(value))
9246        this.title = null;
9247      else {
9248        if (this.title == null)
9249          this.title = new StringType();
9250        this.title.setValue(value);
9251      }
9252      return this;
9253    }
9254
9255    /**
9256     * @return {@link #status} (The status of this summary. Enables tracking the life-cycle of the content.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
9257     */
9258    public Enumeration<PublicationStatus> getStatusElement() { 
9259      if (this.status == null)
9260        if (Configuration.errorOnAutoCreate())
9261          throw new Error("Attempt to auto-create Citation.status");
9262        else if (Configuration.doAutoCreate())
9263          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
9264      return this.status;
9265    }
9266
9267    public boolean hasStatusElement() { 
9268      return this.status != null && !this.status.isEmpty();
9269    }
9270
9271    public boolean hasStatus() { 
9272      return this.status != null && !this.status.isEmpty();
9273    }
9274
9275    /**
9276     * @param value {@link #status} (The status of this summary. Enables tracking the life-cycle of the content.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
9277     */
9278    public Citation setStatusElement(Enumeration<PublicationStatus> value) { 
9279      this.status = value;
9280      return this;
9281    }
9282
9283    /**
9284     * @return The status of this summary. Enables tracking the life-cycle of the content.
9285     */
9286    public PublicationStatus getStatus() { 
9287      return this.status == null ? null : this.status.getValue();
9288    }
9289
9290    /**
9291     * @param value The status of this summary. Enables tracking the life-cycle of the content.
9292     */
9293    public Citation setStatus(PublicationStatus value) { 
9294        if (this.status == null)
9295          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
9296        this.status.setValue(value);
9297      return this;
9298    }
9299
9300    /**
9301     * @return {@link #experimental} (A Boolean value to indicate that this citation record is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
9302     */
9303    public BooleanType getExperimentalElement() { 
9304      if (this.experimental == null)
9305        if (Configuration.errorOnAutoCreate())
9306          throw new Error("Attempt to auto-create Citation.experimental");
9307        else if (Configuration.doAutoCreate())
9308          this.experimental = new BooleanType(); // bb
9309      return this.experimental;
9310    }
9311
9312    public boolean hasExperimentalElement() { 
9313      return this.experimental != null && !this.experimental.isEmpty();
9314    }
9315
9316    public boolean hasExperimental() { 
9317      return this.experimental != null && !this.experimental.isEmpty();
9318    }
9319
9320    /**
9321     * @param value {@link #experimental} (A Boolean value to indicate that this citation record is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
9322     */
9323    public Citation setExperimentalElement(BooleanType value) { 
9324      this.experimental = value;
9325      return this;
9326    }
9327
9328    /**
9329     * @return A Boolean value to indicate that this citation record is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
9330     */
9331    public boolean getExperimental() { 
9332      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
9333    }
9334
9335    /**
9336     * @param value A Boolean value to indicate that this citation record is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
9337     */
9338    public Citation setExperimental(boolean value) { 
9339        if (this.experimental == null)
9340          this.experimental = new BooleanType();
9341        this.experimental.setValue(value);
9342      return this;
9343    }
9344
9345    /**
9346     * @return {@link #date} (The date (and optionally time) when the citation record was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the citation record changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
9347     */
9348    public DateTimeType getDateElement() { 
9349      if (this.date == null)
9350        if (Configuration.errorOnAutoCreate())
9351          throw new Error("Attempt to auto-create Citation.date");
9352        else if (Configuration.doAutoCreate())
9353          this.date = new DateTimeType(); // bb
9354      return this.date;
9355    }
9356
9357    public boolean hasDateElement() { 
9358      return this.date != null && !this.date.isEmpty();
9359    }
9360
9361    public boolean hasDate() { 
9362      return this.date != null && !this.date.isEmpty();
9363    }
9364
9365    /**
9366     * @param value {@link #date} (The date (and optionally time) when the citation record was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the citation record changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
9367     */
9368    public Citation setDateElement(DateTimeType value) { 
9369      this.date = value;
9370      return this;
9371    }
9372
9373    /**
9374     * @return The date (and optionally time) when the citation record was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the citation record changes.
9375     */
9376    public Date getDate() { 
9377      return this.date == null ? null : this.date.getValue();
9378    }
9379
9380    /**
9381     * @param value The date (and optionally time) when the citation record was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the citation record changes.
9382     */
9383    public Citation setDate(Date value) { 
9384      if (value == null)
9385        this.date = null;
9386      else {
9387        if (this.date == null)
9388          this.date = new DateTimeType();
9389        this.date.setValue(value);
9390      }
9391      return this;
9392    }
9393
9394    /**
9395     * @return {@link #publisher} (The name of the organization or individual that published the citation record.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
9396     */
9397    public StringType getPublisherElement() { 
9398      if (this.publisher == null)
9399        if (Configuration.errorOnAutoCreate())
9400          throw new Error("Attempt to auto-create Citation.publisher");
9401        else if (Configuration.doAutoCreate())
9402          this.publisher = new StringType(); // bb
9403      return this.publisher;
9404    }
9405
9406    public boolean hasPublisherElement() { 
9407      return this.publisher != null && !this.publisher.isEmpty();
9408    }
9409
9410    public boolean hasPublisher() { 
9411      return this.publisher != null && !this.publisher.isEmpty();
9412    }
9413
9414    /**
9415     * @param value {@link #publisher} (The name of the organization or individual that published the citation record.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
9416     */
9417    public Citation setPublisherElement(StringType value) { 
9418      this.publisher = value;
9419      return this;
9420    }
9421
9422    /**
9423     * @return The name of the organization or individual that published the citation record.
9424     */
9425    public String getPublisher() { 
9426      return this.publisher == null ? null : this.publisher.getValue();
9427    }
9428
9429    /**
9430     * @param value The name of the organization or individual that published the citation record.
9431     */
9432    public Citation setPublisher(String value) { 
9433      if (Utilities.noString(value))
9434        this.publisher = null;
9435      else {
9436        if (this.publisher == null)
9437          this.publisher = new StringType();
9438        this.publisher.setValue(value);
9439      }
9440      return this;
9441    }
9442
9443    /**
9444     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
9445     */
9446    public List<ContactDetail> getContact() { 
9447      if (this.contact == null)
9448        this.contact = new ArrayList<ContactDetail>();
9449      return this.contact;
9450    }
9451
9452    /**
9453     * @return Returns a reference to <code>this</code> for easy method chaining
9454     */
9455    public Citation setContact(List<ContactDetail> theContact) { 
9456      this.contact = theContact;
9457      return this;
9458    }
9459
9460    public boolean hasContact() { 
9461      if (this.contact == null)
9462        return false;
9463      for (ContactDetail item : this.contact)
9464        if (!item.isEmpty())
9465          return true;
9466      return false;
9467    }
9468
9469    public ContactDetail addContact() { //3
9470      ContactDetail t = new ContactDetail();
9471      if (this.contact == null)
9472        this.contact = new ArrayList<ContactDetail>();
9473      this.contact.add(t);
9474      return t;
9475    }
9476
9477    public Citation addContact(ContactDetail t) { //3
9478      if (t == null)
9479        return this;
9480      if (this.contact == null)
9481        this.contact = new ArrayList<ContactDetail>();
9482      this.contact.add(t);
9483      return this;
9484    }
9485
9486    /**
9487     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
9488     */
9489    public ContactDetail getContactFirstRep() { 
9490      if (getContact().isEmpty()) {
9491        addContact();
9492      }
9493      return getContact().get(0);
9494    }
9495
9496    /**
9497     * @return {@link #description} (A free text natural language description of the citation from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
9498     */
9499    public MarkdownType getDescriptionElement() { 
9500      if (this.description == null)
9501        if (Configuration.errorOnAutoCreate())
9502          throw new Error("Attempt to auto-create Citation.description");
9503        else if (Configuration.doAutoCreate())
9504          this.description = new MarkdownType(); // bb
9505      return this.description;
9506    }
9507
9508    public boolean hasDescriptionElement() { 
9509      return this.description != null && !this.description.isEmpty();
9510    }
9511
9512    public boolean hasDescription() { 
9513      return this.description != null && !this.description.isEmpty();
9514    }
9515
9516    /**
9517     * @param value {@link #description} (A free text natural language description of the citation from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
9518     */
9519    public Citation setDescriptionElement(MarkdownType value) { 
9520      this.description = value;
9521      return this;
9522    }
9523
9524    /**
9525     * @return A free text natural language description of the citation from a consumer's perspective.
9526     */
9527    public String getDescription() { 
9528      return this.description == null ? null : this.description.getValue();
9529    }
9530
9531    /**
9532     * @param value A free text natural language description of the citation from a consumer's perspective.
9533     */
9534    public Citation setDescription(String value) { 
9535      if (Utilities.noString(value))
9536        this.description = null;
9537      else {
9538        if (this.description == null)
9539          this.description = new MarkdownType();
9540        this.description.setValue(value);
9541      }
9542      return this;
9543    }
9544
9545    /**
9546     * @return {@link #useContext} (The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate citation record instances.)
9547     */
9548    public List<UsageContext> getUseContext() { 
9549      if (this.useContext == null)
9550        this.useContext = new ArrayList<UsageContext>();
9551      return this.useContext;
9552    }
9553
9554    /**
9555     * @return Returns a reference to <code>this</code> for easy method chaining
9556     */
9557    public Citation setUseContext(List<UsageContext> theUseContext) { 
9558      this.useContext = theUseContext;
9559      return this;
9560    }
9561
9562    public boolean hasUseContext() { 
9563      if (this.useContext == null)
9564        return false;
9565      for (UsageContext item : this.useContext)
9566        if (!item.isEmpty())
9567          return true;
9568      return false;
9569    }
9570
9571    public UsageContext addUseContext() { //3
9572      UsageContext t = new UsageContext();
9573      if (this.useContext == null)
9574        this.useContext = new ArrayList<UsageContext>();
9575      this.useContext.add(t);
9576      return t;
9577    }
9578
9579    public Citation addUseContext(UsageContext t) { //3
9580      if (t == null)
9581        return this;
9582      if (this.useContext == null)
9583        this.useContext = new ArrayList<UsageContext>();
9584      this.useContext.add(t);
9585      return this;
9586    }
9587
9588    /**
9589     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
9590     */
9591    public UsageContext getUseContextFirstRep() { 
9592      if (getUseContext().isEmpty()) {
9593        addUseContext();
9594      }
9595      return getUseContext().get(0);
9596    }
9597
9598    /**
9599     * @return {@link #jurisdiction} (A legal or geographic region in which the citation record is intended to be used.)
9600     */
9601    public List<CodeableConcept> getJurisdiction() { 
9602      if (this.jurisdiction == null)
9603        this.jurisdiction = new ArrayList<CodeableConcept>();
9604      return this.jurisdiction;
9605    }
9606
9607    /**
9608     * @return Returns a reference to <code>this</code> for easy method chaining
9609     */
9610    public Citation setJurisdiction(List<CodeableConcept> theJurisdiction) { 
9611      this.jurisdiction = theJurisdiction;
9612      return this;
9613    }
9614
9615    public boolean hasJurisdiction() { 
9616      if (this.jurisdiction == null)
9617        return false;
9618      for (CodeableConcept item : this.jurisdiction)
9619        if (!item.isEmpty())
9620          return true;
9621      return false;
9622    }
9623
9624    public CodeableConcept addJurisdiction() { //3
9625      CodeableConcept t = new CodeableConcept();
9626      if (this.jurisdiction == null)
9627        this.jurisdiction = new ArrayList<CodeableConcept>();
9628      this.jurisdiction.add(t);
9629      return t;
9630    }
9631
9632    public Citation addJurisdiction(CodeableConcept t) { //3
9633      if (t == null)
9634        return this;
9635      if (this.jurisdiction == null)
9636        this.jurisdiction = new ArrayList<CodeableConcept>();
9637      this.jurisdiction.add(t);
9638      return this;
9639    }
9640
9641    /**
9642     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
9643     */
9644    public CodeableConcept getJurisdictionFirstRep() { 
9645      if (getJurisdiction().isEmpty()) {
9646        addJurisdiction();
9647      }
9648      return getJurisdiction().get(0);
9649    }
9650
9651    /**
9652     * @return {@link #purpose} (Explanation of why this citation is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
9653     */
9654    public MarkdownType getPurposeElement() { 
9655      if (this.purpose == null)
9656        if (Configuration.errorOnAutoCreate())
9657          throw new Error("Attempt to auto-create Citation.purpose");
9658        else if (Configuration.doAutoCreate())
9659          this.purpose = new MarkdownType(); // bb
9660      return this.purpose;
9661    }
9662
9663    public boolean hasPurposeElement() { 
9664      return this.purpose != null && !this.purpose.isEmpty();
9665    }
9666
9667    public boolean hasPurpose() { 
9668      return this.purpose != null && !this.purpose.isEmpty();
9669    }
9670
9671    /**
9672     * @param value {@link #purpose} (Explanation of why this citation is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
9673     */
9674    public Citation setPurposeElement(MarkdownType value) { 
9675      this.purpose = value;
9676      return this;
9677    }
9678
9679    /**
9680     * @return Explanation of why this citation is needed and why it has been designed as it has.
9681     */
9682    public String getPurpose() { 
9683      return this.purpose == null ? null : this.purpose.getValue();
9684    }
9685
9686    /**
9687     * @param value Explanation of why this citation is needed and why it has been designed as it has.
9688     */
9689    public Citation setPurpose(String value) { 
9690      if (Utilities.noString(value))
9691        this.purpose = null;
9692      else {
9693        if (this.purpose == null)
9694          this.purpose = new MarkdownType();
9695        this.purpose.setValue(value);
9696      }
9697      return this;
9698    }
9699
9700    /**
9701     * @return {@link #copyright} (Use and/or publishing restrictions for the citation record, not for the cited artifact.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
9702     */
9703    public MarkdownType getCopyrightElement() { 
9704      if (this.copyright == null)
9705        if (Configuration.errorOnAutoCreate())
9706          throw new Error("Attempt to auto-create Citation.copyright");
9707        else if (Configuration.doAutoCreate())
9708          this.copyright = new MarkdownType(); // bb
9709      return this.copyright;
9710    }
9711
9712    public boolean hasCopyrightElement() { 
9713      return this.copyright != null && !this.copyright.isEmpty();
9714    }
9715
9716    public boolean hasCopyright() { 
9717      return this.copyright != null && !this.copyright.isEmpty();
9718    }
9719
9720    /**
9721     * @param value {@link #copyright} (Use and/or publishing restrictions for the citation record, not for the cited artifact.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
9722     */
9723    public Citation setCopyrightElement(MarkdownType value) { 
9724      this.copyright = value;
9725      return this;
9726    }
9727
9728    /**
9729     * @return Use and/or publishing restrictions for the citation record, not for the cited artifact.
9730     */
9731    public String getCopyright() { 
9732      return this.copyright == null ? null : this.copyright.getValue();
9733    }
9734
9735    /**
9736     * @param value Use and/or publishing restrictions for the citation record, not for the cited artifact.
9737     */
9738    public Citation setCopyright(String value) { 
9739      if (Utilities.noString(value))
9740        this.copyright = null;
9741      else {
9742        if (this.copyright == null)
9743          this.copyright = new MarkdownType();
9744        this.copyright.setValue(value);
9745      }
9746      return this;
9747    }
9748
9749    /**
9750     * @return {@link #copyrightLabel} (A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
9751     */
9752    public StringType getCopyrightLabelElement() { 
9753      if (this.copyrightLabel == null)
9754        if (Configuration.errorOnAutoCreate())
9755          throw new Error("Attempt to auto-create Citation.copyrightLabel");
9756        else if (Configuration.doAutoCreate())
9757          this.copyrightLabel = new StringType(); // bb
9758      return this.copyrightLabel;
9759    }
9760
9761    public boolean hasCopyrightLabelElement() { 
9762      return this.copyrightLabel != null && !this.copyrightLabel.isEmpty();
9763    }
9764
9765    public boolean hasCopyrightLabel() { 
9766      return this.copyrightLabel != null && !this.copyrightLabel.isEmpty();
9767    }
9768
9769    /**
9770     * @param value {@link #copyrightLabel} (A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
9771     */
9772    public Citation setCopyrightLabelElement(StringType value) { 
9773      this.copyrightLabel = value;
9774      return this;
9775    }
9776
9777    /**
9778     * @return A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').
9779     */
9780    public String getCopyrightLabel() { 
9781      return this.copyrightLabel == null ? null : this.copyrightLabel.getValue();
9782    }
9783
9784    /**
9785     * @param value A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').
9786     */
9787    public Citation setCopyrightLabel(String value) { 
9788      if (Utilities.noString(value))
9789        this.copyrightLabel = null;
9790      else {
9791        if (this.copyrightLabel == null)
9792          this.copyrightLabel = new StringType();
9793        this.copyrightLabel.setValue(value);
9794      }
9795      return this;
9796    }
9797
9798    /**
9799     * @return {@link #approvalDate} (The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.). This is the underlying object with id, value and extensions. The accessor "getApprovalDate" gives direct access to the value
9800     */
9801    public DateType getApprovalDateElement() { 
9802      if (this.approvalDate == null)
9803        if (Configuration.errorOnAutoCreate())
9804          throw new Error("Attempt to auto-create Citation.approvalDate");
9805        else if (Configuration.doAutoCreate())
9806          this.approvalDate = new DateType(); // bb
9807      return this.approvalDate;
9808    }
9809
9810    public boolean hasApprovalDateElement() { 
9811      return this.approvalDate != null && !this.approvalDate.isEmpty();
9812    }
9813
9814    public boolean hasApprovalDate() { 
9815      return this.approvalDate != null && !this.approvalDate.isEmpty();
9816    }
9817
9818    /**
9819     * @param value {@link #approvalDate} (The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.). This is the underlying object with id, value and extensions. The accessor "getApprovalDate" gives direct access to the value
9820     */
9821    public Citation setApprovalDateElement(DateType value) { 
9822      this.approvalDate = value;
9823      return this;
9824    }
9825
9826    /**
9827     * @return The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
9828     */
9829    public Date getApprovalDate() { 
9830      return this.approvalDate == null ? null : this.approvalDate.getValue();
9831    }
9832
9833    /**
9834     * @param value The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
9835     */
9836    public Citation setApprovalDate(Date value) { 
9837      if (value == null)
9838        this.approvalDate = null;
9839      else {
9840        if (this.approvalDate == null)
9841          this.approvalDate = new DateType();
9842        this.approvalDate.setValue(value);
9843      }
9844      return this;
9845    }
9846
9847    /**
9848     * @return {@link #lastReviewDate} (The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
9849     */
9850    public DateType getLastReviewDateElement() { 
9851      if (this.lastReviewDate == null)
9852        if (Configuration.errorOnAutoCreate())
9853          throw new Error("Attempt to auto-create Citation.lastReviewDate");
9854        else if (Configuration.doAutoCreate())
9855          this.lastReviewDate = new DateType(); // bb
9856      return this.lastReviewDate;
9857    }
9858
9859    public boolean hasLastReviewDateElement() { 
9860      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
9861    }
9862
9863    public boolean hasLastReviewDate() { 
9864      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
9865    }
9866
9867    /**
9868     * @param value {@link #lastReviewDate} (The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
9869     */
9870    public Citation setLastReviewDateElement(DateType value) { 
9871      this.lastReviewDate = value;
9872      return this;
9873    }
9874
9875    /**
9876     * @return The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
9877     */
9878    public Date getLastReviewDate() { 
9879      return this.lastReviewDate == null ? null : this.lastReviewDate.getValue();
9880    }
9881
9882    /**
9883     * @param value The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
9884     */
9885    public Citation setLastReviewDate(Date value) { 
9886      if (value == null)
9887        this.lastReviewDate = null;
9888      else {
9889        if (this.lastReviewDate == null)
9890          this.lastReviewDate = new DateType();
9891        this.lastReviewDate.setValue(value);
9892      }
9893      return this;
9894    }
9895
9896    /**
9897     * @return {@link #effectivePeriod} (The period during which the citation record content was or is planned to be in active use.)
9898     */
9899    public Period getEffectivePeriod() { 
9900      if (this.effectivePeriod == null)
9901        if (Configuration.errorOnAutoCreate())
9902          throw new Error("Attempt to auto-create Citation.effectivePeriod");
9903        else if (Configuration.doAutoCreate())
9904          this.effectivePeriod = new Period(); // cc
9905      return this.effectivePeriod;
9906    }
9907
9908    public boolean hasEffectivePeriod() { 
9909      return this.effectivePeriod != null && !this.effectivePeriod.isEmpty();
9910    }
9911
9912    /**
9913     * @param value {@link #effectivePeriod} (The period during which the citation record content was or is planned to be in active use.)
9914     */
9915    public Citation setEffectivePeriod(Period value) { 
9916      this.effectivePeriod = value;
9917      return this;
9918    }
9919
9920    /**
9921     * @return {@link #author} (Who authored or created the citation record.)
9922     */
9923    public List<ContactDetail> getAuthor() { 
9924      if (this.author == null)
9925        this.author = new ArrayList<ContactDetail>();
9926      return this.author;
9927    }
9928
9929    /**
9930     * @return Returns a reference to <code>this</code> for easy method chaining
9931     */
9932    public Citation setAuthor(List<ContactDetail> theAuthor) { 
9933      this.author = theAuthor;
9934      return this;
9935    }
9936
9937    public boolean hasAuthor() { 
9938      if (this.author == null)
9939        return false;
9940      for (ContactDetail item : this.author)
9941        if (!item.isEmpty())
9942          return true;
9943      return false;
9944    }
9945
9946    public ContactDetail addAuthor() { //3
9947      ContactDetail t = new ContactDetail();
9948      if (this.author == null)
9949        this.author = new ArrayList<ContactDetail>();
9950      this.author.add(t);
9951      return t;
9952    }
9953
9954    public Citation addAuthor(ContactDetail t) { //3
9955      if (t == null)
9956        return this;
9957      if (this.author == null)
9958        this.author = new ArrayList<ContactDetail>();
9959      this.author.add(t);
9960      return this;
9961    }
9962
9963    /**
9964     * @return The first repetition of repeating field {@link #author}, creating it if it does not already exist {3}
9965     */
9966    public ContactDetail getAuthorFirstRep() { 
9967      if (getAuthor().isEmpty()) {
9968        addAuthor();
9969      }
9970      return getAuthor().get(0);
9971    }
9972
9973    /**
9974     * @return {@link #editor} (Who edited or revised the citation record.)
9975     */
9976    public List<ContactDetail> getEditor() { 
9977      if (this.editor == null)
9978        this.editor = new ArrayList<ContactDetail>();
9979      return this.editor;
9980    }
9981
9982    /**
9983     * @return Returns a reference to <code>this</code> for easy method chaining
9984     */
9985    public Citation setEditor(List<ContactDetail> theEditor) { 
9986      this.editor = theEditor;
9987      return this;
9988    }
9989
9990    public boolean hasEditor() { 
9991      if (this.editor == null)
9992        return false;
9993      for (ContactDetail item : this.editor)
9994        if (!item.isEmpty())
9995          return true;
9996      return false;
9997    }
9998
9999    public ContactDetail addEditor() { //3
10000      ContactDetail t = new ContactDetail();
10001      if (this.editor == null)
10002        this.editor = new ArrayList<ContactDetail>();
10003      this.editor.add(t);
10004      return t;
10005    }
10006
10007    public Citation addEditor(ContactDetail t) { //3
10008      if (t == null)
10009        return this;
10010      if (this.editor == null)
10011        this.editor = new ArrayList<ContactDetail>();
10012      this.editor.add(t);
10013      return this;
10014    }
10015
10016    /**
10017     * @return The first repetition of repeating field {@link #editor}, creating it if it does not already exist {3}
10018     */
10019    public ContactDetail getEditorFirstRep() { 
10020      if (getEditor().isEmpty()) {
10021        addEditor();
10022      }
10023      return getEditor().get(0);
10024    }
10025
10026    /**
10027     * @return {@link #reviewer} (Who reviewed the citation record.)
10028     */
10029    public List<ContactDetail> getReviewer() { 
10030      if (this.reviewer == null)
10031        this.reviewer = new ArrayList<ContactDetail>();
10032      return this.reviewer;
10033    }
10034
10035    /**
10036     * @return Returns a reference to <code>this</code> for easy method chaining
10037     */
10038    public Citation setReviewer(List<ContactDetail> theReviewer) { 
10039      this.reviewer = theReviewer;
10040      return this;
10041    }
10042
10043    public boolean hasReviewer() { 
10044      if (this.reviewer == null)
10045        return false;
10046      for (ContactDetail item : this.reviewer)
10047        if (!item.isEmpty())
10048          return true;
10049      return false;
10050    }
10051
10052    public ContactDetail addReviewer() { //3
10053      ContactDetail t = new ContactDetail();
10054      if (this.reviewer == null)
10055        this.reviewer = new ArrayList<ContactDetail>();
10056      this.reviewer.add(t);
10057      return t;
10058    }
10059
10060    public Citation addReviewer(ContactDetail t) { //3
10061      if (t == null)
10062        return this;
10063      if (this.reviewer == null)
10064        this.reviewer = new ArrayList<ContactDetail>();
10065      this.reviewer.add(t);
10066      return this;
10067    }
10068
10069    /**
10070     * @return The first repetition of repeating field {@link #reviewer}, creating it if it does not already exist {3}
10071     */
10072    public ContactDetail getReviewerFirstRep() { 
10073      if (getReviewer().isEmpty()) {
10074        addReviewer();
10075      }
10076      return getReviewer().get(0);
10077    }
10078
10079    /**
10080     * @return {@link #endorser} (Who endorsed the citation record.)
10081     */
10082    public List<ContactDetail> getEndorser() { 
10083      if (this.endorser == null)
10084        this.endorser = new ArrayList<ContactDetail>();
10085      return this.endorser;
10086    }
10087
10088    /**
10089     * @return Returns a reference to <code>this</code> for easy method chaining
10090     */
10091    public Citation setEndorser(List<ContactDetail> theEndorser) { 
10092      this.endorser = theEndorser;
10093      return this;
10094    }
10095
10096    public boolean hasEndorser() { 
10097      if (this.endorser == null)
10098        return false;
10099      for (ContactDetail item : this.endorser)
10100        if (!item.isEmpty())
10101          return true;
10102      return false;
10103    }
10104
10105    public ContactDetail addEndorser() { //3
10106      ContactDetail t = new ContactDetail();
10107      if (this.endorser == null)
10108        this.endorser = new ArrayList<ContactDetail>();
10109      this.endorser.add(t);
10110      return t;
10111    }
10112
10113    public Citation addEndorser(ContactDetail t) { //3
10114      if (t == null)
10115        return this;
10116      if (this.endorser == null)
10117        this.endorser = new ArrayList<ContactDetail>();
10118      this.endorser.add(t);
10119      return this;
10120    }
10121
10122    /**
10123     * @return The first repetition of repeating field {@link #endorser}, creating it if it does not already exist {3}
10124     */
10125    public ContactDetail getEndorserFirstRep() { 
10126      if (getEndorser().isEmpty()) {
10127        addEndorser();
10128      }
10129      return getEndorser().get(0);
10130    }
10131
10132    /**
10133     * @return {@link #summary} (A human-readable display of key concepts to represent the citation.)
10134     */
10135    public List<CitationSummaryComponent> getSummary() { 
10136      if (this.summary == null)
10137        this.summary = new ArrayList<CitationSummaryComponent>();
10138      return this.summary;
10139    }
10140
10141    /**
10142     * @return Returns a reference to <code>this</code> for easy method chaining
10143     */
10144    public Citation setSummary(List<CitationSummaryComponent> theSummary) { 
10145      this.summary = theSummary;
10146      return this;
10147    }
10148
10149    public boolean hasSummary() { 
10150      if (this.summary == null)
10151        return false;
10152      for (CitationSummaryComponent item : this.summary)
10153        if (!item.isEmpty())
10154          return true;
10155      return false;
10156    }
10157
10158    public CitationSummaryComponent addSummary() { //3
10159      CitationSummaryComponent t = new CitationSummaryComponent();
10160      if (this.summary == null)
10161        this.summary = new ArrayList<CitationSummaryComponent>();
10162      this.summary.add(t);
10163      return t;
10164    }
10165
10166    public Citation addSummary(CitationSummaryComponent t) { //3
10167      if (t == null)
10168        return this;
10169      if (this.summary == null)
10170        this.summary = new ArrayList<CitationSummaryComponent>();
10171      this.summary.add(t);
10172      return this;
10173    }
10174
10175    /**
10176     * @return The first repetition of repeating field {@link #summary}, creating it if it does not already exist {3}
10177     */
10178    public CitationSummaryComponent getSummaryFirstRep() { 
10179      if (getSummary().isEmpty()) {
10180        addSummary();
10181      }
10182      return getSummary().get(0);
10183    }
10184
10185    /**
10186     * @return {@link #classification} (The assignment to an organizing scheme.)
10187     */
10188    public List<CitationClassificationComponent> getClassification() { 
10189      if (this.classification == null)
10190        this.classification = new ArrayList<CitationClassificationComponent>();
10191      return this.classification;
10192    }
10193
10194    /**
10195     * @return Returns a reference to <code>this</code> for easy method chaining
10196     */
10197    public Citation setClassification(List<CitationClassificationComponent> theClassification) { 
10198      this.classification = theClassification;
10199      return this;
10200    }
10201
10202    public boolean hasClassification() { 
10203      if (this.classification == null)
10204        return false;
10205      for (CitationClassificationComponent item : this.classification)
10206        if (!item.isEmpty())
10207          return true;
10208      return false;
10209    }
10210
10211    public CitationClassificationComponent addClassification() { //3
10212      CitationClassificationComponent t = new CitationClassificationComponent();
10213      if (this.classification == null)
10214        this.classification = new ArrayList<CitationClassificationComponent>();
10215      this.classification.add(t);
10216      return t;
10217    }
10218
10219    public Citation addClassification(CitationClassificationComponent t) { //3
10220      if (t == null)
10221        return this;
10222      if (this.classification == null)
10223        this.classification = new ArrayList<CitationClassificationComponent>();
10224      this.classification.add(t);
10225      return this;
10226    }
10227
10228    /**
10229     * @return The first repetition of repeating field {@link #classification}, creating it if it does not already exist {3}
10230     */
10231    public CitationClassificationComponent getClassificationFirstRep() { 
10232      if (getClassification().isEmpty()) {
10233        addClassification();
10234      }
10235      return getClassification().get(0);
10236    }
10237
10238    /**
10239     * @return {@link #note} (Used for general notes and annotations not coded elsewhere.)
10240     */
10241    public List<Annotation> getNote() { 
10242      if (this.note == null)
10243        this.note = new ArrayList<Annotation>();
10244      return this.note;
10245    }
10246
10247    /**
10248     * @return Returns a reference to <code>this</code> for easy method chaining
10249     */
10250    public Citation setNote(List<Annotation> theNote) { 
10251      this.note = theNote;
10252      return this;
10253    }
10254
10255    public boolean hasNote() { 
10256      if (this.note == null)
10257        return false;
10258      for (Annotation item : this.note)
10259        if (!item.isEmpty())
10260          return true;
10261      return false;
10262    }
10263
10264    public Annotation addNote() { //3
10265      Annotation t = new Annotation();
10266      if (this.note == null)
10267        this.note = new ArrayList<Annotation>();
10268      this.note.add(t);
10269      return t;
10270    }
10271
10272    public Citation addNote(Annotation t) { //3
10273      if (t == null)
10274        return this;
10275      if (this.note == null)
10276        this.note = new ArrayList<Annotation>();
10277      this.note.add(t);
10278      return this;
10279    }
10280
10281    /**
10282     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
10283     */
10284    public Annotation getNoteFirstRep() { 
10285      if (getNote().isEmpty()) {
10286        addNote();
10287      }
10288      return getNote().get(0);
10289    }
10290
10291    /**
10292     * @return {@link #currentState} (The status of the citation record.)
10293     */
10294    public List<CodeableConcept> getCurrentState() { 
10295      if (this.currentState == null)
10296        this.currentState = new ArrayList<CodeableConcept>();
10297      return this.currentState;
10298    }
10299
10300    /**
10301     * @return Returns a reference to <code>this</code> for easy method chaining
10302     */
10303    public Citation setCurrentState(List<CodeableConcept> theCurrentState) { 
10304      this.currentState = theCurrentState;
10305      return this;
10306    }
10307
10308    public boolean hasCurrentState() { 
10309      if (this.currentState == null)
10310        return false;
10311      for (CodeableConcept item : this.currentState)
10312        if (!item.isEmpty())
10313          return true;
10314      return false;
10315    }
10316
10317    public CodeableConcept addCurrentState() { //3
10318      CodeableConcept t = new CodeableConcept();
10319      if (this.currentState == null)
10320        this.currentState = new ArrayList<CodeableConcept>();
10321      this.currentState.add(t);
10322      return t;
10323    }
10324
10325    public Citation addCurrentState(CodeableConcept t) { //3
10326      if (t == null)
10327        return this;
10328      if (this.currentState == null)
10329        this.currentState = new ArrayList<CodeableConcept>();
10330      this.currentState.add(t);
10331      return this;
10332    }
10333
10334    /**
10335     * @return The first repetition of repeating field {@link #currentState}, creating it if it does not already exist {3}
10336     */
10337    public CodeableConcept getCurrentStateFirstRep() { 
10338      if (getCurrentState().isEmpty()) {
10339        addCurrentState();
10340      }
10341      return getCurrentState().get(0);
10342    }
10343
10344    /**
10345     * @return {@link #statusDate} (The state or status of the citation record paired with an effective date or period for that state.)
10346     */
10347    public List<CitationStatusDateComponent> getStatusDate() { 
10348      if (this.statusDate == null)
10349        this.statusDate = new ArrayList<CitationStatusDateComponent>();
10350      return this.statusDate;
10351    }
10352
10353    /**
10354     * @return Returns a reference to <code>this</code> for easy method chaining
10355     */
10356    public Citation setStatusDate(List<CitationStatusDateComponent> theStatusDate) { 
10357      this.statusDate = theStatusDate;
10358      return this;
10359    }
10360
10361    public boolean hasStatusDate() { 
10362      if (this.statusDate == null)
10363        return false;
10364      for (CitationStatusDateComponent item : this.statusDate)
10365        if (!item.isEmpty())
10366          return true;
10367      return false;
10368    }
10369
10370    public CitationStatusDateComponent addStatusDate() { //3
10371      CitationStatusDateComponent t = new CitationStatusDateComponent();
10372      if (this.statusDate == null)
10373        this.statusDate = new ArrayList<CitationStatusDateComponent>();
10374      this.statusDate.add(t);
10375      return t;
10376    }
10377
10378    public Citation addStatusDate(CitationStatusDateComponent t) { //3
10379      if (t == null)
10380        return this;
10381      if (this.statusDate == null)
10382        this.statusDate = new ArrayList<CitationStatusDateComponent>();
10383      this.statusDate.add(t);
10384      return this;
10385    }
10386
10387    /**
10388     * @return The first repetition of repeating field {@link #statusDate}, creating it if it does not already exist {3}
10389     */
10390    public CitationStatusDateComponent getStatusDateFirstRep() { 
10391      if (getStatusDate().isEmpty()) {
10392        addStatusDate();
10393      }
10394      return getStatusDate().get(0);
10395    }
10396
10397    /**
10398     * @return {@link #relatedArtifact} (Artifact related to the citation record.)
10399     */
10400    public List<RelatedArtifact> getRelatedArtifact() { 
10401      if (this.relatedArtifact == null)
10402        this.relatedArtifact = new ArrayList<RelatedArtifact>();
10403      return this.relatedArtifact;
10404    }
10405
10406    /**
10407     * @return Returns a reference to <code>this</code> for easy method chaining
10408     */
10409    public Citation setRelatedArtifact(List<RelatedArtifact> theRelatedArtifact) { 
10410      this.relatedArtifact = theRelatedArtifact;
10411      return this;
10412    }
10413
10414    public boolean hasRelatedArtifact() { 
10415      if (this.relatedArtifact == null)
10416        return false;
10417      for (RelatedArtifact item : this.relatedArtifact)
10418        if (!item.isEmpty())
10419          return true;
10420      return false;
10421    }
10422
10423    public RelatedArtifact addRelatedArtifact() { //3
10424      RelatedArtifact t = new RelatedArtifact();
10425      if (this.relatedArtifact == null)
10426        this.relatedArtifact = new ArrayList<RelatedArtifact>();
10427      this.relatedArtifact.add(t);
10428      return t;
10429    }
10430
10431    public Citation addRelatedArtifact(RelatedArtifact t) { //3
10432      if (t == null)
10433        return this;
10434      if (this.relatedArtifact == null)
10435        this.relatedArtifact = new ArrayList<RelatedArtifact>();
10436      this.relatedArtifact.add(t);
10437      return this;
10438    }
10439
10440    /**
10441     * @return The first repetition of repeating field {@link #relatedArtifact}, creating it if it does not already exist {3}
10442     */
10443    public RelatedArtifact getRelatedArtifactFirstRep() { 
10444      if (getRelatedArtifact().isEmpty()) {
10445        addRelatedArtifact();
10446      }
10447      return getRelatedArtifact().get(0);
10448    }
10449
10450    /**
10451     * @return {@link #citedArtifact} (The article or artifact being described.)
10452     */
10453    public CitationCitedArtifactComponent getCitedArtifact() { 
10454      if (this.citedArtifact == null)
10455        if (Configuration.errorOnAutoCreate())
10456          throw new Error("Attempt to auto-create Citation.citedArtifact");
10457        else if (Configuration.doAutoCreate())
10458          this.citedArtifact = new CitationCitedArtifactComponent(); // cc
10459      return this.citedArtifact;
10460    }
10461
10462    public boolean hasCitedArtifact() { 
10463      return this.citedArtifact != null && !this.citedArtifact.isEmpty();
10464    }
10465
10466    /**
10467     * @param value {@link #citedArtifact} (The article or artifact being described.)
10468     */
10469    public Citation setCitedArtifact(CitationCitedArtifactComponent value) { 
10470      this.citedArtifact = value;
10471      return this;
10472    }
10473
10474    /**
10475     * not supported on this implementation
10476     */
10477    @Override
10478    public int getTopicMax() { 
10479      return 0;
10480    }
10481    /**
10482     * @return {@link #topic} (Descriptive topics related to the content of the citation. Topics provide a high-level categorization as well as keywords for the citation that can be useful for filtering and searching.)
10483     */
10484    public List<CodeableConcept> getTopic() { 
10485      return new ArrayList<>();
10486    }
10487    /**
10488     * @return Returns a reference to <code>this</code> for easy method chaining
10489     */
10490    public Citation setTopic(List<CodeableConcept> theTopic) { 
10491      throw new Error("The resource type \"Citation\" does not implement the property \"topic\""); 
10492    }
10493    public boolean hasTopic() { 
10494      return false;
10495    }
10496
10497    public CodeableConcept addTopic() { //3
10498      throw new Error("The resource type \"Citation\" does not implement the property \"topic\""); 
10499    }
10500    public Citation addTopic(CodeableConcept t) { //3
10501      throw new Error("The resource type \"Citation\" does not implement the property \"topic\""); 
10502    }
10503    /**
10504     * @return The first repetition of repeating field {@link #topic}, creating it if it does not already exist {2}
10505     */
10506    public CodeableConcept getTopicFirstRep() { 
10507      throw new Error("The resource type \"Citation\" does not implement the property \"topic\""); 
10508    }
10509      protected void listChildren(List<Property> children) {
10510        super.listChildren(children);
10511        children.add(new Property("url", "uri", "An absolute URI that is used to identify this citation record when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this summary is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the summary is stored on different servers.", 0, 1, url));
10512        children.add(new Property("identifier", "Identifier", "A formal identifier that is used to identify this citation record when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier));
10513        children.add(new Property("version", "string", "The identifier that is used to identify this version of the citation record when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the citation record author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.", 0, 1, version));
10514        children.add(new Property("versionAlgorithm[x]", "string|Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm));
10515        children.add(new Property("name", "string", "A natural language name identifying the citation record. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
10516        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the citation record.", 0, 1, title));
10517        children.add(new Property("status", "code", "The status of this summary. Enables tracking the life-cycle of the content.", 0, 1, status));
10518        children.add(new Property("experimental", "boolean", "A Boolean value to indicate that this citation record is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental));
10519        children.add(new Property("date", "dateTime", "The date (and optionally time) when the citation record was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the citation record changes.", 0, 1, date));
10520        children.add(new Property("publisher", "string", "The name of the organization or individual that published the citation record.", 0, 1, publisher));
10521        children.add(new Property("contact", "ContactDetail", "Contact details to assist a user in finding and communicating with the publisher.", 0, java.lang.Integer.MAX_VALUE, contact));
10522        children.add(new Property("description", "markdown", "A free text natural language description of the citation from a consumer's perspective.", 0, 1, description));
10523        children.add(new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate citation record instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
10524        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the citation record is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
10525        children.add(new Property("purpose", "markdown", "Explanation of why this citation is needed and why it has been designed as it has.", 0, 1, purpose));
10526        children.add(new Property("copyright", "markdown", "Use and/or publishing restrictions for the citation record, not for the cited artifact.", 0, 1, copyright));
10527        children.add(new Property("copyrightLabel", "string", "A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').", 0, 1, copyrightLabel));
10528        children.add(new Property("approvalDate", "date", "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate));
10529        children.add(new Property("lastReviewDate", "date", "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.", 0, 1, lastReviewDate));
10530        children.add(new Property("effectivePeriod", "Period", "The period during which the citation record content was or is planned to be in active use.", 0, 1, effectivePeriod));
10531        children.add(new Property("author", "ContactDetail", "Who authored or created the citation record.", 0, java.lang.Integer.MAX_VALUE, author));
10532        children.add(new Property("editor", "ContactDetail", "Who edited or revised the citation record.", 0, java.lang.Integer.MAX_VALUE, editor));
10533        children.add(new Property("reviewer", "ContactDetail", "Who reviewed the citation record.", 0, java.lang.Integer.MAX_VALUE, reviewer));
10534        children.add(new Property("endorser", "ContactDetail", "Who endorsed the citation record.", 0, java.lang.Integer.MAX_VALUE, endorser));
10535        children.add(new Property("summary", "", "A human-readable display of key concepts to represent the citation.", 0, java.lang.Integer.MAX_VALUE, summary));
10536        children.add(new Property("classification", "", "The assignment to an organizing scheme.", 0, java.lang.Integer.MAX_VALUE, classification));
10537        children.add(new Property("note", "Annotation", "Used for general notes and annotations not coded elsewhere.", 0, java.lang.Integer.MAX_VALUE, note));
10538        children.add(new Property("currentState", "CodeableConcept", "The status of the citation record.", 0, java.lang.Integer.MAX_VALUE, currentState));
10539        children.add(new Property("statusDate", "", "The state or status of the citation record paired with an effective date or period for that state.", 0, java.lang.Integer.MAX_VALUE, statusDate));
10540        children.add(new Property("relatedArtifact", "RelatedArtifact", "Artifact related to the citation record.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact));
10541        children.add(new Property("citedArtifact", "", "The article or artifact being described.", 0, 1, citedArtifact));
10542      }
10543
10544      @Override
10545      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
10546        switch (_hash) {
10547        case 116079: /*url*/  return new Property("url", "uri", "An absolute URI that is used to identify this citation record when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this summary is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the summary is stored on different servers.", 0, 1, url);
10548        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A formal identifier that is used to identify this citation record when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier);
10549        case 351608024: /*version*/  return new Property("version", "string", "The identifier that is used to identify this version of the citation record when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the citation record author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.", 0, 1, version);
10550        case -115699031: /*versionAlgorithm[x]*/  return new Property("versionAlgorithm[x]", "string|Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
10551        case 1508158071: /*versionAlgorithm*/  return new Property("versionAlgorithm[x]", "string|Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
10552        case 1836908904: /*versionAlgorithmString*/  return new Property("versionAlgorithm[x]", "string", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
10553        case 1373807809: /*versionAlgorithmCoding*/  return new Property("versionAlgorithm[x]", "Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
10554        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the citation record. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
10555        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the citation record.", 0, 1, title);
10556        case -892481550: /*status*/  return new Property("status", "code", "The status of this summary. Enables tracking the life-cycle of the content.", 0, 1, status);
10557        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A Boolean value to indicate that this citation record is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental);
10558        case 3076014: /*date*/  return new Property("date", "dateTime", "The date (and optionally time) when the citation record was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the citation record changes.", 0, 1, date);
10559        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the citation record.", 0, 1, publisher);
10560        case 951526432: /*contact*/  return new Property("contact", "ContactDetail", "Contact details to assist a user in finding and communicating with the publisher.", 0, java.lang.Integer.MAX_VALUE, contact);
10561        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the citation from a consumer's perspective.", 0, 1, description);
10562        case -669707736: /*useContext*/  return new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate citation record instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
10563        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the citation record is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
10564        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "Explanation of why this citation is needed and why it has been designed as it has.", 0, 1, purpose);
10565        case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "Use and/or publishing restrictions for the citation record, not for the cited artifact.", 0, 1, copyright);
10566        case 765157229: /*copyrightLabel*/  return new Property("copyrightLabel", "string", "A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').", 0, 1, copyrightLabel);
10567        case 223539345: /*approvalDate*/  return new Property("approvalDate", "date", "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate);
10568        case -1687512484: /*lastReviewDate*/  return new Property("lastReviewDate", "date", "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.", 0, 1, lastReviewDate);
10569        case -403934648: /*effectivePeriod*/  return new Property("effectivePeriod", "Period", "The period during which the citation record content was or is planned to be in active use.", 0, 1, effectivePeriod);
10570        case -1406328437: /*author*/  return new Property("author", "ContactDetail", "Who authored or created the citation record.", 0, java.lang.Integer.MAX_VALUE, author);
10571        case -1307827859: /*editor*/  return new Property("editor", "ContactDetail", "Who edited or revised the citation record.", 0, java.lang.Integer.MAX_VALUE, editor);
10572        case -261190139: /*reviewer*/  return new Property("reviewer", "ContactDetail", "Who reviewed the citation record.", 0, java.lang.Integer.MAX_VALUE, reviewer);
10573        case 1740277666: /*endorser*/  return new Property("endorser", "ContactDetail", "Who endorsed the citation record.", 0, java.lang.Integer.MAX_VALUE, endorser);
10574        case -1857640538: /*summary*/  return new Property("summary", "", "A human-readable display of key concepts to represent the citation.", 0, java.lang.Integer.MAX_VALUE, summary);
10575        case 382350310: /*classification*/  return new Property("classification", "", "The assignment to an organizing scheme.", 0, java.lang.Integer.MAX_VALUE, classification);
10576        case 3387378: /*note*/  return new Property("note", "Annotation", "Used for general notes and annotations not coded elsewhere.", 0, java.lang.Integer.MAX_VALUE, note);
10577        case 1457822360: /*currentState*/  return new Property("currentState", "CodeableConcept", "The status of the citation record.", 0, java.lang.Integer.MAX_VALUE, currentState);
10578        case 247524032: /*statusDate*/  return new Property("statusDate", "", "The state or status of the citation record paired with an effective date or period for that state.", 0, java.lang.Integer.MAX_VALUE, statusDate);
10579        case 666807069: /*relatedArtifact*/  return new Property("relatedArtifact", "RelatedArtifact", "Artifact related to the citation record.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact);
10580        case -495272225: /*citedArtifact*/  return new Property("citedArtifact", "", "The article or artifact being described.", 0, 1, citedArtifact);
10581        default: return super.getNamedProperty(_hash, _name, _checkValid);
10582        }
10583
10584      }
10585
10586      @Override
10587      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
10588        switch (hash) {
10589        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
10590        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
10591        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
10592        case 1508158071: /*versionAlgorithm*/ return this.versionAlgorithm == null ? new Base[0] : new Base[] {this.versionAlgorithm}; // DataType
10593        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
10594        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
10595        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
10596        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
10597        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
10598        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
10599        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
10600        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
10601        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
10602        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
10603        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
10604        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
10605        case 765157229: /*copyrightLabel*/ return this.copyrightLabel == null ? new Base[0] : new Base[] {this.copyrightLabel}; // StringType
10606        case 223539345: /*approvalDate*/ return this.approvalDate == null ? new Base[0] : new Base[] {this.approvalDate}; // DateType
10607        case -1687512484: /*lastReviewDate*/ return this.lastReviewDate == null ? new Base[0] : new Base[] {this.lastReviewDate}; // DateType
10608        case -403934648: /*effectivePeriod*/ return this.effectivePeriod == null ? new Base[0] : new Base[] {this.effectivePeriod}; // Period
10609        case -1406328437: /*author*/ return this.author == null ? new Base[0] : this.author.toArray(new Base[this.author.size()]); // ContactDetail
10610        case -1307827859: /*editor*/ return this.editor == null ? new Base[0] : this.editor.toArray(new Base[this.editor.size()]); // ContactDetail
10611        case -261190139: /*reviewer*/ return this.reviewer == null ? new Base[0] : this.reviewer.toArray(new Base[this.reviewer.size()]); // ContactDetail
10612        case 1740277666: /*endorser*/ return this.endorser == null ? new Base[0] : this.endorser.toArray(new Base[this.endorser.size()]); // ContactDetail
10613        case -1857640538: /*summary*/ return this.summary == null ? new Base[0] : this.summary.toArray(new Base[this.summary.size()]); // CitationSummaryComponent
10614        case 382350310: /*classification*/ return this.classification == null ? new Base[0] : this.classification.toArray(new Base[this.classification.size()]); // CitationClassificationComponent
10615        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
10616        case 1457822360: /*currentState*/ return this.currentState == null ? new Base[0] : this.currentState.toArray(new Base[this.currentState.size()]); // CodeableConcept
10617        case 247524032: /*statusDate*/ return this.statusDate == null ? new Base[0] : this.statusDate.toArray(new Base[this.statusDate.size()]); // CitationStatusDateComponent
10618        case 666807069: /*relatedArtifact*/ return this.relatedArtifact == null ? new Base[0] : this.relatedArtifact.toArray(new Base[this.relatedArtifact.size()]); // RelatedArtifact
10619        case -495272225: /*citedArtifact*/ return this.citedArtifact == null ? new Base[0] : new Base[] {this.citedArtifact}; // CitationCitedArtifactComponent
10620        default: return super.getProperty(hash, name, checkValid);
10621        }
10622
10623      }
10624
10625      @Override
10626      public Base setProperty(int hash, String name, Base value) throws FHIRException {
10627        switch (hash) {
10628        case 116079: // url
10629          this.url = TypeConvertor.castToUri(value); // UriType
10630          return value;
10631        case -1618432855: // identifier
10632          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
10633          return value;
10634        case 351608024: // version
10635          this.version = TypeConvertor.castToString(value); // StringType
10636          return value;
10637        case 1508158071: // versionAlgorithm
10638          this.versionAlgorithm = TypeConvertor.castToType(value); // DataType
10639          return value;
10640        case 3373707: // name
10641          this.name = TypeConvertor.castToString(value); // StringType
10642          return value;
10643        case 110371416: // title
10644          this.title = TypeConvertor.castToString(value); // StringType
10645          return value;
10646        case -892481550: // status
10647          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
10648          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
10649          return value;
10650        case -404562712: // experimental
10651          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
10652          return value;
10653        case 3076014: // date
10654          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
10655          return value;
10656        case 1447404028: // publisher
10657          this.publisher = TypeConvertor.castToString(value); // StringType
10658          return value;
10659        case 951526432: // contact
10660          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
10661          return value;
10662        case -1724546052: // description
10663          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
10664          return value;
10665        case -669707736: // useContext
10666          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
10667          return value;
10668        case -507075711: // jurisdiction
10669          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
10670          return value;
10671        case -220463842: // purpose
10672          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
10673          return value;
10674        case 1522889671: // copyright
10675          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
10676          return value;
10677        case 765157229: // copyrightLabel
10678          this.copyrightLabel = TypeConvertor.castToString(value); // StringType
10679          return value;
10680        case 223539345: // approvalDate
10681          this.approvalDate = TypeConvertor.castToDate(value); // DateType
10682          return value;
10683        case -1687512484: // lastReviewDate
10684          this.lastReviewDate = TypeConvertor.castToDate(value); // DateType
10685          return value;
10686        case -403934648: // effectivePeriod
10687          this.effectivePeriod = TypeConvertor.castToPeriod(value); // Period
10688          return value;
10689        case -1406328437: // author
10690          this.getAuthor().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
10691          return value;
10692        case -1307827859: // editor
10693          this.getEditor().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
10694          return value;
10695        case -261190139: // reviewer
10696          this.getReviewer().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
10697          return value;
10698        case 1740277666: // endorser
10699          this.getEndorser().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
10700          return value;
10701        case -1857640538: // summary
10702          this.getSummary().add((CitationSummaryComponent) value); // CitationSummaryComponent
10703          return value;
10704        case 382350310: // classification
10705          this.getClassification().add((CitationClassificationComponent) value); // CitationClassificationComponent
10706          return value;
10707        case 3387378: // note
10708          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
10709          return value;
10710        case 1457822360: // currentState
10711          this.getCurrentState().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
10712          return value;
10713        case 247524032: // statusDate
10714          this.getStatusDate().add((CitationStatusDateComponent) value); // CitationStatusDateComponent
10715          return value;
10716        case 666807069: // relatedArtifact
10717          this.getRelatedArtifact().add(TypeConvertor.castToRelatedArtifact(value)); // RelatedArtifact
10718          return value;
10719        case -495272225: // citedArtifact
10720          this.citedArtifact = (CitationCitedArtifactComponent) value; // CitationCitedArtifactComponent
10721          return value;
10722        default: return super.setProperty(hash, name, value);
10723        }
10724
10725      }
10726
10727      @Override
10728      public Base setProperty(String name, Base value) throws FHIRException {
10729        if (name.equals("url")) {
10730          this.url = TypeConvertor.castToUri(value); // UriType
10731        } else if (name.equals("identifier")) {
10732          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
10733        } else if (name.equals("version")) {
10734          this.version = TypeConvertor.castToString(value); // StringType
10735        } else if (name.equals("versionAlgorithm[x]")) {
10736          this.versionAlgorithm = TypeConvertor.castToType(value); // DataType
10737        } else if (name.equals("name")) {
10738          this.name = TypeConvertor.castToString(value); // StringType
10739        } else if (name.equals("title")) {
10740          this.title = TypeConvertor.castToString(value); // StringType
10741        } else if (name.equals("status")) {
10742          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
10743          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
10744        } else if (name.equals("experimental")) {
10745          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
10746        } else if (name.equals("date")) {
10747          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
10748        } else if (name.equals("publisher")) {
10749          this.publisher = TypeConvertor.castToString(value); // StringType
10750        } else if (name.equals("contact")) {
10751          this.getContact().add(TypeConvertor.castToContactDetail(value));
10752        } else if (name.equals("description")) {
10753          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
10754        } else if (name.equals("useContext")) {
10755          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
10756        } else if (name.equals("jurisdiction")) {
10757          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
10758        } else if (name.equals("purpose")) {
10759          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
10760        } else if (name.equals("copyright")) {
10761          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
10762        } else if (name.equals("copyrightLabel")) {
10763          this.copyrightLabel = TypeConvertor.castToString(value); // StringType
10764        } else if (name.equals("approvalDate")) {
10765          this.approvalDate = TypeConvertor.castToDate(value); // DateType
10766        } else if (name.equals("lastReviewDate")) {
10767          this.lastReviewDate = TypeConvertor.castToDate(value); // DateType
10768        } else if (name.equals("effectivePeriod")) {
10769          this.effectivePeriod = TypeConvertor.castToPeriod(value); // Period
10770        } else if (name.equals("author")) {
10771          this.getAuthor().add(TypeConvertor.castToContactDetail(value));
10772        } else if (name.equals("editor")) {
10773          this.getEditor().add(TypeConvertor.castToContactDetail(value));
10774        } else if (name.equals("reviewer")) {
10775          this.getReviewer().add(TypeConvertor.castToContactDetail(value));
10776        } else if (name.equals("endorser")) {
10777          this.getEndorser().add(TypeConvertor.castToContactDetail(value));
10778        } else if (name.equals("summary")) {
10779          this.getSummary().add((CitationSummaryComponent) value);
10780        } else if (name.equals("classification")) {
10781          this.getClassification().add((CitationClassificationComponent) value);
10782        } else if (name.equals("note")) {
10783          this.getNote().add(TypeConvertor.castToAnnotation(value));
10784        } else if (name.equals("currentState")) {
10785          this.getCurrentState().add(TypeConvertor.castToCodeableConcept(value));
10786        } else if (name.equals("statusDate")) {
10787          this.getStatusDate().add((CitationStatusDateComponent) value);
10788        } else if (name.equals("relatedArtifact")) {
10789          this.getRelatedArtifact().add(TypeConvertor.castToRelatedArtifact(value));
10790        } else if (name.equals("citedArtifact")) {
10791          this.citedArtifact = (CitationCitedArtifactComponent) value; // CitationCitedArtifactComponent
10792        } else
10793          return super.setProperty(name, value);
10794        return value;
10795      }
10796
10797  @Override
10798  public void removeChild(String name, Base value) throws FHIRException {
10799        if (name.equals("url")) {
10800          this.url = null;
10801        } else if (name.equals("identifier")) {
10802          this.getIdentifier().remove(value);
10803        } else if (name.equals("version")) {
10804          this.version = null;
10805        } else if (name.equals("versionAlgorithm[x]")) {
10806          this.versionAlgorithm = null;
10807        } else if (name.equals("name")) {
10808          this.name = null;
10809        } else if (name.equals("title")) {
10810          this.title = null;
10811        } else if (name.equals("status")) {
10812          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
10813          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
10814        } else if (name.equals("experimental")) {
10815          this.experimental = null;
10816        } else if (name.equals("date")) {
10817          this.date = null;
10818        } else if (name.equals("publisher")) {
10819          this.publisher = null;
10820        } else if (name.equals("contact")) {
10821          this.getContact().remove(value);
10822        } else if (name.equals("description")) {
10823          this.description = null;
10824        } else if (name.equals("useContext")) {
10825          this.getUseContext().remove(value);
10826        } else if (name.equals("jurisdiction")) {
10827          this.getJurisdiction().remove(value);
10828        } else if (name.equals("purpose")) {
10829          this.purpose = null;
10830        } else if (name.equals("copyright")) {
10831          this.copyright = null;
10832        } else if (name.equals("copyrightLabel")) {
10833          this.copyrightLabel = null;
10834        } else if (name.equals("approvalDate")) {
10835          this.approvalDate = null;
10836        } else if (name.equals("lastReviewDate")) {
10837          this.lastReviewDate = null;
10838        } else if (name.equals("effectivePeriod")) {
10839          this.effectivePeriod = null;
10840        } else if (name.equals("author")) {
10841          this.getAuthor().remove(value);
10842        } else if (name.equals("editor")) {
10843          this.getEditor().remove(value);
10844        } else if (name.equals("reviewer")) {
10845          this.getReviewer().remove(value);
10846        } else if (name.equals("endorser")) {
10847          this.getEndorser().remove(value);
10848        } else if (name.equals("summary")) {
10849          this.getSummary().remove((CitationSummaryComponent) value);
10850        } else if (name.equals("classification")) {
10851          this.getClassification().remove((CitationClassificationComponent) value);
10852        } else if (name.equals("note")) {
10853          this.getNote().remove(value);
10854        } else if (name.equals("currentState")) {
10855          this.getCurrentState().remove(value);
10856        } else if (name.equals("statusDate")) {
10857          this.getStatusDate().remove((CitationStatusDateComponent) value);
10858        } else if (name.equals("relatedArtifact")) {
10859          this.getRelatedArtifact().remove(value);
10860        } else if (name.equals("citedArtifact")) {
10861          this.citedArtifact = (CitationCitedArtifactComponent) value; // CitationCitedArtifactComponent
10862        } else
10863          super.removeChild(name, value);
10864        
10865      }
10866
10867      @Override
10868      public Base makeProperty(int hash, String name) throws FHIRException {
10869        switch (hash) {
10870        case 116079:  return getUrlElement();
10871        case -1618432855:  return addIdentifier(); 
10872        case 351608024:  return getVersionElement();
10873        case -115699031:  return getVersionAlgorithm();
10874        case 1508158071:  return getVersionAlgorithm();
10875        case 3373707:  return getNameElement();
10876        case 110371416:  return getTitleElement();
10877        case -892481550:  return getStatusElement();
10878        case -404562712:  return getExperimentalElement();
10879        case 3076014:  return getDateElement();
10880        case 1447404028:  return getPublisherElement();
10881        case 951526432:  return addContact(); 
10882        case -1724546052:  return getDescriptionElement();
10883        case -669707736:  return addUseContext(); 
10884        case -507075711:  return addJurisdiction(); 
10885        case -220463842:  return getPurposeElement();
10886        case 1522889671:  return getCopyrightElement();
10887        case 765157229:  return getCopyrightLabelElement();
10888        case 223539345:  return getApprovalDateElement();
10889        case -1687512484:  return getLastReviewDateElement();
10890        case -403934648:  return getEffectivePeriod();
10891        case -1406328437:  return addAuthor(); 
10892        case -1307827859:  return addEditor(); 
10893        case -261190139:  return addReviewer(); 
10894        case 1740277666:  return addEndorser(); 
10895        case -1857640538:  return addSummary(); 
10896        case 382350310:  return addClassification(); 
10897        case 3387378:  return addNote(); 
10898        case 1457822360:  return addCurrentState(); 
10899        case 247524032:  return addStatusDate(); 
10900        case 666807069:  return addRelatedArtifact(); 
10901        case -495272225:  return getCitedArtifact();
10902        default: return super.makeProperty(hash, name);
10903        }
10904
10905      }
10906
10907      @Override
10908      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
10909        switch (hash) {
10910        case 116079: /*url*/ return new String[] {"uri"};
10911        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
10912        case 351608024: /*version*/ return new String[] {"string"};
10913        case 1508158071: /*versionAlgorithm*/ return new String[] {"string", "Coding"};
10914        case 3373707: /*name*/ return new String[] {"string"};
10915        case 110371416: /*title*/ return new String[] {"string"};
10916        case -892481550: /*status*/ return new String[] {"code"};
10917        case -404562712: /*experimental*/ return new String[] {"boolean"};
10918        case 3076014: /*date*/ return new String[] {"dateTime"};
10919        case 1447404028: /*publisher*/ return new String[] {"string"};
10920        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
10921        case -1724546052: /*description*/ return new String[] {"markdown"};
10922        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
10923        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
10924        case -220463842: /*purpose*/ return new String[] {"markdown"};
10925        case 1522889671: /*copyright*/ return new String[] {"markdown"};
10926        case 765157229: /*copyrightLabel*/ return new String[] {"string"};
10927        case 223539345: /*approvalDate*/ return new String[] {"date"};
10928        case -1687512484: /*lastReviewDate*/ return new String[] {"date"};
10929        case -403934648: /*effectivePeriod*/ return new String[] {"Period"};
10930        case -1406328437: /*author*/ return new String[] {"ContactDetail"};
10931        case -1307827859: /*editor*/ return new String[] {"ContactDetail"};
10932        case -261190139: /*reviewer*/ return new String[] {"ContactDetail"};
10933        case 1740277666: /*endorser*/ return new String[] {"ContactDetail"};
10934        case -1857640538: /*summary*/ return new String[] {};
10935        case 382350310: /*classification*/ return new String[] {};
10936        case 3387378: /*note*/ return new String[] {"Annotation"};
10937        case 1457822360: /*currentState*/ return new String[] {"CodeableConcept"};
10938        case 247524032: /*statusDate*/ return new String[] {};
10939        case 666807069: /*relatedArtifact*/ return new String[] {"RelatedArtifact"};
10940        case -495272225: /*citedArtifact*/ return new String[] {};
10941        default: return super.getTypesForProperty(hash, name);
10942        }
10943
10944      }
10945
10946      @Override
10947      public Base addChild(String name) throws FHIRException {
10948        if (name.equals("url")) {
10949          throw new FHIRException("Cannot call addChild on a singleton property Citation.url");
10950        }
10951        else if (name.equals("identifier")) {
10952          return addIdentifier();
10953        }
10954        else if (name.equals("version")) {
10955          throw new FHIRException("Cannot call addChild on a singleton property Citation.version");
10956        }
10957        else if (name.equals("versionAlgorithmString")) {
10958          this.versionAlgorithm = new StringType();
10959          return this.versionAlgorithm;
10960        }
10961        else if (name.equals("versionAlgorithmCoding")) {
10962          this.versionAlgorithm = new Coding();
10963          return this.versionAlgorithm;
10964        }
10965        else if (name.equals("name")) {
10966          throw new FHIRException("Cannot call addChild on a singleton property Citation.name");
10967        }
10968        else if (name.equals("title")) {
10969          throw new FHIRException("Cannot call addChild on a singleton property Citation.title");
10970        }
10971        else if (name.equals("status")) {
10972          throw new FHIRException("Cannot call addChild on a singleton property Citation.status");
10973        }
10974        else if (name.equals("experimental")) {
10975          throw new FHIRException("Cannot call addChild on a singleton property Citation.experimental");
10976        }
10977        else if (name.equals("date")) {
10978          throw new FHIRException("Cannot call addChild on a singleton property Citation.date");
10979        }
10980        else if (name.equals("publisher")) {
10981          throw new FHIRException("Cannot call addChild on a singleton property Citation.publisher");
10982        }
10983        else if (name.equals("contact")) {
10984          return addContact();
10985        }
10986        else if (name.equals("description")) {
10987          throw new FHIRException("Cannot call addChild on a singleton property Citation.description");
10988        }
10989        else if (name.equals("useContext")) {
10990          return addUseContext();
10991        }
10992        else if (name.equals("jurisdiction")) {
10993          return addJurisdiction();
10994        }
10995        else if (name.equals("purpose")) {
10996          throw new FHIRException("Cannot call addChild on a singleton property Citation.purpose");
10997        }
10998        else if (name.equals("copyright")) {
10999          throw new FHIRException("Cannot call addChild on a singleton property Citation.copyright");
11000        }
11001        else if (name.equals("copyrightLabel")) {
11002          throw new FHIRException("Cannot call addChild on a singleton property Citation.copyrightLabel");
11003        }
11004        else if (name.equals("approvalDate")) {
11005          throw new FHIRException("Cannot call addChild on a singleton property Citation.approvalDate");
11006        }
11007        else if (name.equals("lastReviewDate")) {
11008          throw new FHIRException("Cannot call addChild on a singleton property Citation.lastReviewDate");
11009        }
11010        else if (name.equals("effectivePeriod")) {
11011          this.effectivePeriod = new Period();
11012          return this.effectivePeriod;
11013        }
11014        else if (name.equals("author")) {
11015          return addAuthor();
11016        }
11017        else if (name.equals("editor")) {
11018          return addEditor();
11019        }
11020        else if (name.equals("reviewer")) {
11021          return addReviewer();
11022        }
11023        else if (name.equals("endorser")) {
11024          return addEndorser();
11025        }
11026        else if (name.equals("summary")) {
11027          return addSummary();
11028        }
11029        else if (name.equals("classification")) {
11030          return addClassification();
11031        }
11032        else if (name.equals("note")) {
11033          return addNote();
11034        }
11035        else if (name.equals("currentState")) {
11036          return addCurrentState();
11037        }
11038        else if (name.equals("statusDate")) {
11039          return addStatusDate();
11040        }
11041        else if (name.equals("relatedArtifact")) {
11042          return addRelatedArtifact();
11043        }
11044        else if (name.equals("citedArtifact")) {
11045          this.citedArtifact = new CitationCitedArtifactComponent();
11046          return this.citedArtifact;
11047        }
11048        else
11049          return super.addChild(name);
11050      }
11051
11052  public String fhirType() {
11053    return "Citation";
11054
11055  }
11056
11057      public Citation copy() {
11058        Citation dst = new Citation();
11059        copyValues(dst);
11060        return dst;
11061      }
11062
11063      public void copyValues(Citation dst) {
11064        super.copyValues(dst);
11065        dst.url = url == null ? null : url.copy();
11066        if (identifier != null) {
11067          dst.identifier = new ArrayList<Identifier>();
11068          for (Identifier i : identifier)
11069            dst.identifier.add(i.copy());
11070        };
11071        dst.version = version == null ? null : version.copy();
11072        dst.versionAlgorithm = versionAlgorithm == null ? null : versionAlgorithm.copy();
11073        dst.name = name == null ? null : name.copy();
11074        dst.title = title == null ? null : title.copy();
11075        dst.status = status == null ? null : status.copy();
11076        dst.experimental = experimental == null ? null : experimental.copy();
11077        dst.date = date == null ? null : date.copy();
11078        dst.publisher = publisher == null ? null : publisher.copy();
11079        if (contact != null) {
11080          dst.contact = new ArrayList<ContactDetail>();
11081          for (ContactDetail i : contact)
11082            dst.contact.add(i.copy());
11083        };
11084        dst.description = description == null ? null : description.copy();
11085        if (useContext != null) {
11086          dst.useContext = new ArrayList<UsageContext>();
11087          for (UsageContext i : useContext)
11088            dst.useContext.add(i.copy());
11089        };
11090        if (jurisdiction != null) {
11091          dst.jurisdiction = new ArrayList<CodeableConcept>();
11092          for (CodeableConcept i : jurisdiction)
11093            dst.jurisdiction.add(i.copy());
11094        };
11095        dst.purpose = purpose == null ? null : purpose.copy();
11096        dst.copyright = copyright == null ? null : copyright.copy();
11097        dst.copyrightLabel = copyrightLabel == null ? null : copyrightLabel.copy();
11098        dst.approvalDate = approvalDate == null ? null : approvalDate.copy();
11099        dst.lastReviewDate = lastReviewDate == null ? null : lastReviewDate.copy();
11100        dst.effectivePeriod = effectivePeriod == null ? null : effectivePeriod.copy();
11101        if (author != null) {
11102          dst.author = new ArrayList<ContactDetail>();
11103          for (ContactDetail i : author)
11104            dst.author.add(i.copy());
11105        };
11106        if (editor != null) {
11107          dst.editor = new ArrayList<ContactDetail>();
11108          for (ContactDetail i : editor)
11109            dst.editor.add(i.copy());
11110        };
11111        if (reviewer != null) {
11112          dst.reviewer = new ArrayList<ContactDetail>();
11113          for (ContactDetail i : reviewer)
11114            dst.reviewer.add(i.copy());
11115        };
11116        if (endorser != null) {
11117          dst.endorser = new ArrayList<ContactDetail>();
11118          for (ContactDetail i : endorser)
11119            dst.endorser.add(i.copy());
11120        };
11121        if (summary != null) {
11122          dst.summary = new ArrayList<CitationSummaryComponent>();
11123          for (CitationSummaryComponent i : summary)
11124            dst.summary.add(i.copy());
11125        };
11126        if (classification != null) {
11127          dst.classification = new ArrayList<CitationClassificationComponent>();
11128          for (CitationClassificationComponent i : classification)
11129            dst.classification.add(i.copy());
11130        };
11131        if (note != null) {
11132          dst.note = new ArrayList<Annotation>();
11133          for (Annotation i : note)
11134            dst.note.add(i.copy());
11135        };
11136        if (currentState != null) {
11137          dst.currentState = new ArrayList<CodeableConcept>();
11138          for (CodeableConcept i : currentState)
11139            dst.currentState.add(i.copy());
11140        };
11141        if (statusDate != null) {
11142          dst.statusDate = new ArrayList<CitationStatusDateComponent>();
11143          for (CitationStatusDateComponent i : statusDate)
11144            dst.statusDate.add(i.copy());
11145        };
11146        if (relatedArtifact != null) {
11147          dst.relatedArtifact = new ArrayList<RelatedArtifact>();
11148          for (RelatedArtifact i : relatedArtifact)
11149            dst.relatedArtifact.add(i.copy());
11150        };
11151        dst.citedArtifact = citedArtifact == null ? null : citedArtifact.copy();
11152      }
11153
11154      protected Citation typedCopy() {
11155        return copy();
11156      }
11157
11158      @Override
11159      public boolean equalsDeep(Base other_) {
11160        if (!super.equalsDeep(other_))
11161          return false;
11162        if (!(other_ instanceof Citation))
11163          return false;
11164        Citation o = (Citation) other_;
11165        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
11166           && compareDeep(versionAlgorithm, o.versionAlgorithm, true) && compareDeep(name, o.name, true) && compareDeep(title, o.title, true)
11167           && compareDeep(status, o.status, true) && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true)
11168           && compareDeep(publisher, o.publisher, true) && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true)
11169           && compareDeep(useContext, o.useContext, true) && compareDeep(jurisdiction, o.jurisdiction, true)
11170           && compareDeep(purpose, o.purpose, true) && compareDeep(copyright, o.copyright, true) && compareDeep(copyrightLabel, o.copyrightLabel, true)
11171           && compareDeep(approvalDate, o.approvalDate, true) && compareDeep(lastReviewDate, o.lastReviewDate, true)
11172           && compareDeep(effectivePeriod, o.effectivePeriod, true) && compareDeep(author, o.author, true)
11173           && compareDeep(editor, o.editor, true) && compareDeep(reviewer, o.reviewer, true) && compareDeep(endorser, o.endorser, true)
11174           && compareDeep(summary, o.summary, true) && compareDeep(classification, o.classification, true)
11175           && compareDeep(note, o.note, true) && compareDeep(currentState, o.currentState, true) && compareDeep(statusDate, o.statusDate, true)
11176           && compareDeep(relatedArtifact, o.relatedArtifact, true) && compareDeep(citedArtifact, o.citedArtifact, true)
11177          ;
11178      }
11179
11180      @Override
11181      public boolean equalsShallow(Base other_) {
11182        if (!super.equalsShallow(other_))
11183          return false;
11184        if (!(other_ instanceof Citation))
11185          return false;
11186        Citation o = (Citation) other_;
11187        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
11188           && compareValues(title, o.title, true) && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true)
11189           && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true) && compareValues(description, o.description, true)
11190           && compareValues(purpose, o.purpose, true) && compareValues(copyright, o.copyright, true) && compareValues(copyrightLabel, o.copyrightLabel, true)
11191           && compareValues(approvalDate, o.approvalDate, true) && compareValues(lastReviewDate, o.lastReviewDate, true)
11192          ;
11193      }
11194
11195      public boolean isEmpty() {
11196        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
11197          , versionAlgorithm, name, title, status, experimental, date, publisher, contact
11198          , description, useContext, jurisdiction, purpose, copyright, copyrightLabel, approvalDate
11199          , lastReviewDate, effectivePeriod, author, editor, reviewer, endorser, summary
11200          , classification, note, currentState, statusDate, relatedArtifact, citedArtifact
11201          );
11202      }
11203
11204  @Override
11205  public ResourceType getResourceType() {
11206    return ResourceType.Citation;
11207   }
11208
11209 /**
11210   * Search parameter: <b>context-quantity</b>
11211   * <p>
11212   * Description: <b>Multiple Resources: 
11213
11214* [ActivityDefinition](activitydefinition.html): A quantity- or range-valued use context assigned to the activity definition
11215* [ActorDefinition](actordefinition.html): A quantity- or range-valued use context assigned to the Actor Definition
11216* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
11217* [ChargeItemDefinition](chargeitemdefinition.html): A quantity- or range-valued use context assigned to the charge item definition
11218* [Citation](citation.html): A quantity- or range-valued use context assigned to the citation
11219* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
11220* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
11221* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
11222* [ConditionDefinition](conditiondefinition.html): A quantity- or range-valued use context assigned to the condition definition
11223* [EventDefinition](eventdefinition.html): A quantity- or range-valued use context assigned to the event definition
11224* [Evidence](evidence.html): A quantity- or range-valued use context assigned to the evidence
11225* [EvidenceReport](evidencereport.html): A quantity- or range-valued use context assigned to the evidence report
11226* [EvidenceVariable](evidencevariable.html): A quantity- or range-valued use context assigned to the evidence variable
11227* [ExampleScenario](examplescenario.html): A quantity- or range-valued use context assigned to the example scenario
11228* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
11229* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
11230* [Library](library.html): A quantity- or range-valued use context assigned to the library
11231* [Measure](measure.html): A quantity- or range-valued use context assigned to the measure
11232* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
11233* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
11234* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
11235* [PlanDefinition](plandefinition.html): A quantity- or range-valued use context assigned to the plan definition
11236* [Questionnaire](questionnaire.html): A quantity- or range-valued use context assigned to the questionnaire
11237* [Requirements](requirements.html): A quantity- or range-valued use context assigned to the requirements
11238* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
11239* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
11240* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
11241* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
11242* [TestScript](testscript.html): A quantity- or range-valued use context assigned to the test script
11243* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
11244</b><br>
11245   * Type: <b>quantity</b><br>
11246   * Path: <b>(ActivityDefinition.useContext.value.ofType(Quantity)) | (ActivityDefinition.useContext.value.ofType(Range)) | (ActorDefinition.useContext.value.ofType(Quantity)) | (ActorDefinition.useContext.value.ofType(Range)) | (CapabilityStatement.useContext.value.ofType(Quantity)) | (CapabilityStatement.useContext.value.ofType(Range)) | (ChargeItemDefinition.useContext.value.ofType(Quantity)) | (ChargeItemDefinition.useContext.value.ofType(Range)) | (Citation.useContext.value.ofType(Quantity)) | (Citation.useContext.value.ofType(Range)) | (CodeSystem.useContext.value.ofType(Quantity)) | (CodeSystem.useContext.value.ofType(Range)) | (CompartmentDefinition.useContext.value.ofType(Quantity)) | (CompartmentDefinition.useContext.value.ofType(Range)) | (ConceptMap.useContext.value.ofType(Quantity)) | (ConceptMap.useContext.value.ofType(Range)) | (ConditionDefinition.useContext.value.ofType(Quantity)) | (ConditionDefinition.useContext.value.ofType(Range)) | (EventDefinition.useContext.value.ofType(Quantity)) | (EventDefinition.useContext.value.ofType(Range)) | (Evidence.useContext.value.ofType(Quantity)) | (Evidence.useContext.value.ofType(Range)) | (EvidenceReport.useContext.value.ofType(Quantity)) | (EvidenceReport.useContext.value.ofType(Range)) | (EvidenceVariable.useContext.value.ofType(Quantity)) | (EvidenceVariable.useContext.value.ofType(Range)) | (ExampleScenario.useContext.value.ofType(Quantity)) | (ExampleScenario.useContext.value.ofType(Range)) | (GraphDefinition.useContext.value.ofType(Quantity)) | (GraphDefinition.useContext.value.ofType(Range)) | (ImplementationGuide.useContext.value.ofType(Quantity)) | (ImplementationGuide.useContext.value.ofType(Range)) | (Library.useContext.value.ofType(Quantity)) | (Library.useContext.value.ofType(Range)) | (Measure.useContext.value.ofType(Quantity)) | (Measure.useContext.value.ofType(Range)) | (MessageDefinition.useContext.value.ofType(Quantity)) | (MessageDefinition.useContext.value.ofType(Range)) | (NamingSystem.useContext.value.ofType(Quantity)) | (NamingSystem.useContext.value.ofType(Range)) | (OperationDefinition.useContext.value.ofType(Quantity)) | (OperationDefinition.useContext.value.ofType(Range)) | (PlanDefinition.useContext.value.ofType(Quantity)) | (PlanDefinition.useContext.value.ofType(Range)) | (Questionnaire.useContext.value.ofType(Quantity)) | (Questionnaire.useContext.value.ofType(Range)) | (Requirements.useContext.value.ofType(Quantity)) | (Requirements.useContext.value.ofType(Range)) | (SearchParameter.useContext.value.ofType(Quantity)) | (SearchParameter.useContext.value.ofType(Range)) | (StructureDefinition.useContext.value.ofType(Quantity)) | (StructureDefinition.useContext.value.ofType(Range)) | (StructureMap.useContext.value.ofType(Quantity)) | (StructureMap.useContext.value.ofType(Range)) | (TerminologyCapabilities.useContext.value.ofType(Quantity)) | (TerminologyCapabilities.useContext.value.ofType(Range)) | (TestScript.useContext.value.ofType(Quantity)) | (TestScript.useContext.value.ofType(Range)) | (ValueSet.useContext.value.ofType(Quantity)) | (ValueSet.useContext.value.ofType(Range))</b><br>
11247   * </p>
11248   */
11249  @SearchParamDefinition(name="context-quantity", path="(ActivityDefinition.useContext.value.ofType(Quantity)) | (ActivityDefinition.useContext.value.ofType(Range)) | (ActorDefinition.useContext.value.ofType(Quantity)) | (ActorDefinition.useContext.value.ofType(Range)) | (CapabilityStatement.useContext.value.ofType(Quantity)) | (CapabilityStatement.useContext.value.ofType(Range)) | (ChargeItemDefinition.useContext.value.ofType(Quantity)) | (ChargeItemDefinition.useContext.value.ofType(Range)) | (Citation.useContext.value.ofType(Quantity)) | (Citation.useContext.value.ofType(Range)) | (CodeSystem.useContext.value.ofType(Quantity)) | (CodeSystem.useContext.value.ofType(Range)) | (CompartmentDefinition.useContext.value.ofType(Quantity)) | (CompartmentDefinition.useContext.value.ofType(Range)) | (ConceptMap.useContext.value.ofType(Quantity)) | (ConceptMap.useContext.value.ofType(Range)) | (ConditionDefinition.useContext.value.ofType(Quantity)) | (ConditionDefinition.useContext.value.ofType(Range)) | (EventDefinition.useContext.value.ofType(Quantity)) | (EventDefinition.useContext.value.ofType(Range)) | (Evidence.useContext.value.ofType(Quantity)) | (Evidence.useContext.value.ofType(Range)) | (EvidenceReport.useContext.value.ofType(Quantity)) | (EvidenceReport.useContext.value.ofType(Range)) | (EvidenceVariable.useContext.value.ofType(Quantity)) | (EvidenceVariable.useContext.value.ofType(Range)) | (ExampleScenario.useContext.value.ofType(Quantity)) | (ExampleScenario.useContext.value.ofType(Range)) | (GraphDefinition.useContext.value.ofType(Quantity)) | (GraphDefinition.useContext.value.ofType(Range)) | (ImplementationGuide.useContext.value.ofType(Quantity)) | (ImplementationGuide.useContext.value.ofType(Range)) | (Library.useContext.value.ofType(Quantity)) | (Library.useContext.value.ofType(Range)) | (Measure.useContext.value.ofType(Quantity)) | (Measure.useContext.value.ofType(Range)) | (MessageDefinition.useContext.value.ofType(Quantity)) | (MessageDefinition.useContext.value.ofType(Range)) | (NamingSystem.useContext.value.ofType(Quantity)) | (NamingSystem.useContext.value.ofType(Range)) | (OperationDefinition.useContext.value.ofType(Quantity)) | (OperationDefinition.useContext.value.ofType(Range)) | (PlanDefinition.useContext.value.ofType(Quantity)) | (PlanDefinition.useContext.value.ofType(Range)) | (Questionnaire.useContext.value.ofType(Quantity)) | (Questionnaire.useContext.value.ofType(Range)) | (Requirements.useContext.value.ofType(Quantity)) | (Requirements.useContext.value.ofType(Range)) | (SearchParameter.useContext.value.ofType(Quantity)) | (SearchParameter.useContext.value.ofType(Range)) | (StructureDefinition.useContext.value.ofType(Quantity)) | (StructureDefinition.useContext.value.ofType(Range)) | (StructureMap.useContext.value.ofType(Quantity)) | (StructureMap.useContext.value.ofType(Range)) | (TerminologyCapabilities.useContext.value.ofType(Quantity)) | (TerminologyCapabilities.useContext.value.ofType(Range)) | (TestScript.useContext.value.ofType(Quantity)) | (TestScript.useContext.value.ofType(Range)) | (ValueSet.useContext.value.ofType(Quantity)) | (ValueSet.useContext.value.ofType(Range))", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): A quantity- or range-valued use context assigned to the activity definition\r\n* [ActorDefinition](actordefinition.html): A quantity- or range-valued use context assigned to the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): A quantity- or range-valued use context assigned to the charge item definition\r\n* [Citation](citation.html): A quantity- or range-valued use context assigned to the citation\r\n* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map\r\n* [ConditionDefinition](conditiondefinition.html): A quantity- or range-valued use context assigned to the condition definition\r\n* [EventDefinition](eventdefinition.html): A quantity- or range-valued use context assigned to the event definition\r\n* [Evidence](evidence.html): A quantity- or range-valued use context assigned to the evidence\r\n* [EvidenceReport](evidencereport.html): A quantity- or range-valued use context assigned to the evidence report\r\n* [EvidenceVariable](evidencevariable.html): A quantity- or range-valued use context assigned to the evidence variable\r\n* [ExampleScenario](examplescenario.html): A quantity- or range-valued use context assigned to the example scenario\r\n* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide\r\n* [Library](library.html): A quantity- or range-valued use context assigned to the library\r\n* [Measure](measure.html): A quantity- or range-valued use context assigned to the measure\r\n* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition\r\n* [PlanDefinition](plandefinition.html): A quantity- or range-valued use context assigned to the plan definition\r\n* [Questionnaire](questionnaire.html): A quantity- or range-valued use context assigned to the questionnaire\r\n* [Requirements](requirements.html): A quantity- or range-valued use context assigned to the requirements\r\n* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities\r\n* [TestScript](testscript.html): A quantity- or range-valued use context assigned to the test script\r\n* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set\r\n", type="quantity" )
11250  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
11251 /**
11252   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
11253   * <p>
11254   * Description: <b>Multiple Resources: 
11255
11256* [ActivityDefinition](activitydefinition.html): A quantity- or range-valued use context assigned to the activity definition
11257* [ActorDefinition](actordefinition.html): A quantity- or range-valued use context assigned to the Actor Definition
11258* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
11259* [ChargeItemDefinition](chargeitemdefinition.html): A quantity- or range-valued use context assigned to the charge item definition
11260* [Citation](citation.html): A quantity- or range-valued use context assigned to the citation
11261* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
11262* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
11263* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
11264* [ConditionDefinition](conditiondefinition.html): A quantity- or range-valued use context assigned to the condition definition
11265* [EventDefinition](eventdefinition.html): A quantity- or range-valued use context assigned to the event definition
11266* [Evidence](evidence.html): A quantity- or range-valued use context assigned to the evidence
11267* [EvidenceReport](evidencereport.html): A quantity- or range-valued use context assigned to the evidence report
11268* [EvidenceVariable](evidencevariable.html): A quantity- or range-valued use context assigned to the evidence variable
11269* [ExampleScenario](examplescenario.html): A quantity- or range-valued use context assigned to the example scenario
11270* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
11271* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
11272* [Library](library.html): A quantity- or range-valued use context assigned to the library
11273* [Measure](measure.html): A quantity- or range-valued use context assigned to the measure
11274* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
11275* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
11276* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
11277* [PlanDefinition](plandefinition.html): A quantity- or range-valued use context assigned to the plan definition
11278* [Questionnaire](questionnaire.html): A quantity- or range-valued use context assigned to the questionnaire
11279* [Requirements](requirements.html): A quantity- or range-valued use context assigned to the requirements
11280* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
11281* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
11282* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
11283* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
11284* [TestScript](testscript.html): A quantity- or range-valued use context assigned to the test script
11285* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
11286</b><br>
11287   * Type: <b>quantity</b><br>
11288   * Path: <b>(ActivityDefinition.useContext.value.ofType(Quantity)) | (ActivityDefinition.useContext.value.ofType(Range)) | (ActorDefinition.useContext.value.ofType(Quantity)) | (ActorDefinition.useContext.value.ofType(Range)) | (CapabilityStatement.useContext.value.ofType(Quantity)) | (CapabilityStatement.useContext.value.ofType(Range)) | (ChargeItemDefinition.useContext.value.ofType(Quantity)) | (ChargeItemDefinition.useContext.value.ofType(Range)) | (Citation.useContext.value.ofType(Quantity)) | (Citation.useContext.value.ofType(Range)) | (CodeSystem.useContext.value.ofType(Quantity)) | (CodeSystem.useContext.value.ofType(Range)) | (CompartmentDefinition.useContext.value.ofType(Quantity)) | (CompartmentDefinition.useContext.value.ofType(Range)) | (ConceptMap.useContext.value.ofType(Quantity)) | (ConceptMap.useContext.value.ofType(Range)) | (ConditionDefinition.useContext.value.ofType(Quantity)) | (ConditionDefinition.useContext.value.ofType(Range)) | (EventDefinition.useContext.value.ofType(Quantity)) | (EventDefinition.useContext.value.ofType(Range)) | (Evidence.useContext.value.ofType(Quantity)) | (Evidence.useContext.value.ofType(Range)) | (EvidenceReport.useContext.value.ofType(Quantity)) | (EvidenceReport.useContext.value.ofType(Range)) | (EvidenceVariable.useContext.value.ofType(Quantity)) | (EvidenceVariable.useContext.value.ofType(Range)) | (ExampleScenario.useContext.value.ofType(Quantity)) | (ExampleScenario.useContext.value.ofType(Range)) | (GraphDefinition.useContext.value.ofType(Quantity)) | (GraphDefinition.useContext.value.ofType(Range)) | (ImplementationGuide.useContext.value.ofType(Quantity)) | (ImplementationGuide.useContext.value.ofType(Range)) | (Library.useContext.value.ofType(Quantity)) | (Library.useContext.value.ofType(Range)) | (Measure.useContext.value.ofType(Quantity)) | (Measure.useContext.value.ofType(Range)) | (MessageDefinition.useContext.value.ofType(Quantity)) | (MessageDefinition.useContext.value.ofType(Range)) | (NamingSystem.useContext.value.ofType(Quantity)) | (NamingSystem.useContext.value.ofType(Range)) | (OperationDefinition.useContext.value.ofType(Quantity)) | (OperationDefinition.useContext.value.ofType(Range)) | (PlanDefinition.useContext.value.ofType(Quantity)) | (PlanDefinition.useContext.value.ofType(Range)) | (Questionnaire.useContext.value.ofType(Quantity)) | (Questionnaire.useContext.value.ofType(Range)) | (Requirements.useContext.value.ofType(Quantity)) | (Requirements.useContext.value.ofType(Range)) | (SearchParameter.useContext.value.ofType(Quantity)) | (SearchParameter.useContext.value.ofType(Range)) | (StructureDefinition.useContext.value.ofType(Quantity)) | (StructureDefinition.useContext.value.ofType(Range)) | (StructureMap.useContext.value.ofType(Quantity)) | (StructureMap.useContext.value.ofType(Range)) | (TerminologyCapabilities.useContext.value.ofType(Quantity)) | (TerminologyCapabilities.useContext.value.ofType(Range)) | (TestScript.useContext.value.ofType(Quantity)) | (TestScript.useContext.value.ofType(Range)) | (ValueSet.useContext.value.ofType(Quantity)) | (ValueSet.useContext.value.ofType(Range))</b><br>
11289   * </p>
11290   */
11291  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
11292
11293 /**
11294   * Search parameter: <b>context-type-quantity</b>
11295   * <p>
11296   * Description: <b>Multiple Resources: 
11297
11298* [ActivityDefinition](activitydefinition.html): A use context type and quantity- or range-based value assigned to the activity definition
11299* [ActorDefinition](actordefinition.html): A use context type and quantity- or range-based value assigned to the Actor Definition
11300* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
11301* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and quantity- or range-based value assigned to the charge item definition
11302* [Citation](citation.html): A use context type and quantity- or range-based value assigned to the citation
11303* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
11304* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
11305* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
11306* [ConditionDefinition](conditiondefinition.html): A use context type and quantity- or range-based value assigned to the condition definition
11307* [EventDefinition](eventdefinition.html): A use context type and quantity- or range-based value assigned to the event definition
11308* [Evidence](evidence.html): A use context type and quantity- or range-based value assigned to the evidence
11309* [EvidenceReport](evidencereport.html): A use context type and quantity- or range-based value assigned to the evidence report
11310* [EvidenceVariable](evidencevariable.html): A use context type and quantity- or range-based value assigned to the evidence variable
11311* [ExampleScenario](examplescenario.html): A use context type and quantity- or range-based value assigned to the example scenario
11312* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
11313* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
11314* [Library](library.html): A use context type and quantity- or range-based value assigned to the library
11315* [Measure](measure.html): A use context type and quantity- or range-based value assigned to the measure
11316* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
11317* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
11318* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
11319* [PlanDefinition](plandefinition.html): A use context type and quantity- or range-based value assigned to the plan definition
11320* [Questionnaire](questionnaire.html): A use context type and quantity- or range-based value assigned to the questionnaire
11321* [Requirements](requirements.html): A use context type and quantity- or range-based value assigned to the requirements
11322* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
11323* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
11324* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
11325* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
11326* [TestScript](testscript.html): A use context type and quantity- or range-based value assigned to the test script
11327* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
11328</b><br>
11329   * Type: <b>composite</b><br>
11330   * Path: <b>ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext</b><br>
11331   * </p>
11332   */
11333  @SearchParamDefinition(name="context-type-quantity", path="ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): A use context type and quantity- or range-based value assigned to the activity definition\r\n* [ActorDefinition](actordefinition.html): A use context type and quantity- or range-based value assigned to the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and quantity- or range-based value assigned to the charge item definition\r\n* [Citation](citation.html): A use context type and quantity- or range-based value assigned to the citation\r\n* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map\r\n* [ConditionDefinition](conditiondefinition.html): A use context type and quantity- or range-based value assigned to the condition definition\r\n* [EventDefinition](eventdefinition.html): A use context type and quantity- or range-based value assigned to the event definition\r\n* [Evidence](evidence.html): A use context type and quantity- or range-based value assigned to the evidence\r\n* [EvidenceReport](evidencereport.html): A use context type and quantity- or range-based value assigned to the evidence report\r\n* [EvidenceVariable](evidencevariable.html): A use context type and quantity- or range-based value assigned to the evidence variable\r\n* [ExampleScenario](examplescenario.html): A use context type and quantity- or range-based value assigned to the example scenario\r\n* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide\r\n* [Library](library.html): A use context type and quantity- or range-based value assigned to the library\r\n* [Measure](measure.html): A use context type and quantity- or range-based value assigned to the measure\r\n* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition\r\n* [PlanDefinition](plandefinition.html): A use context type and quantity- or range-based value assigned to the plan definition\r\n* [Questionnaire](questionnaire.html): A use context type and quantity- or range-based value assigned to the questionnaire\r\n* [Requirements](requirements.html): A use context type and quantity- or range-based value assigned to the requirements\r\n* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities\r\n* [TestScript](testscript.html): A use context type and quantity- or range-based value assigned to the test script\r\n* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set\r\n", type="composite", compositeOf={"context-type", "context-quantity"} )
11334  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
11335 /**
11336   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
11337   * <p>
11338   * Description: <b>Multiple Resources: 
11339
11340* [ActivityDefinition](activitydefinition.html): A use context type and quantity- or range-based value assigned to the activity definition
11341* [ActorDefinition](actordefinition.html): A use context type and quantity- or range-based value assigned to the Actor Definition
11342* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
11343* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and quantity- or range-based value assigned to the charge item definition
11344* [Citation](citation.html): A use context type and quantity- or range-based value assigned to the citation
11345* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
11346* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
11347* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
11348* [ConditionDefinition](conditiondefinition.html): A use context type and quantity- or range-based value assigned to the condition definition
11349* [EventDefinition](eventdefinition.html): A use context type and quantity- or range-based value assigned to the event definition
11350* [Evidence](evidence.html): A use context type and quantity- or range-based value assigned to the evidence
11351* [EvidenceReport](evidencereport.html): A use context type and quantity- or range-based value assigned to the evidence report
11352* [EvidenceVariable](evidencevariable.html): A use context type and quantity- or range-based value assigned to the evidence variable
11353* [ExampleScenario](examplescenario.html): A use context type and quantity- or range-based value assigned to the example scenario
11354* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
11355* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
11356* [Library](library.html): A use context type and quantity- or range-based value assigned to the library
11357* [Measure](measure.html): A use context type and quantity- or range-based value assigned to the measure
11358* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
11359* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
11360* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
11361* [PlanDefinition](plandefinition.html): A use context type and quantity- or range-based value assigned to the plan definition
11362* [Questionnaire](questionnaire.html): A use context type and quantity- or range-based value assigned to the questionnaire
11363* [Requirements](requirements.html): A use context type and quantity- or range-based value assigned to the requirements
11364* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
11365* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
11366* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
11367* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
11368* [TestScript](testscript.html): A use context type and quantity- or range-based value assigned to the test script
11369* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
11370</b><br>
11371   * Type: <b>composite</b><br>
11372   * Path: <b>ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext</b><br>
11373   * </p>
11374   */
11375  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam> CONTEXT_TYPE_QUANTITY = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam>(SP_CONTEXT_TYPE_QUANTITY);
11376
11377 /**
11378   * Search parameter: <b>context-type-value</b>
11379   * <p>
11380   * Description: <b>Multiple Resources: 
11381
11382* [ActivityDefinition](activitydefinition.html): A use context type and value assigned to the activity definition
11383* [ActorDefinition](actordefinition.html): A use context type and value assigned to the Actor Definition
11384* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
11385* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and value assigned to the charge item definition
11386* [Citation](citation.html): A use context type and value assigned to the citation
11387* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
11388* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
11389* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
11390* [ConditionDefinition](conditiondefinition.html): A use context type and value assigned to the condition definition
11391* [EventDefinition](eventdefinition.html): A use context type and value assigned to the event definition
11392* [Evidence](evidence.html): A use context type and value assigned to the evidence
11393* [EvidenceReport](evidencereport.html): A use context type and value assigned to the evidence report
11394* [EvidenceVariable](evidencevariable.html): A use context type and value assigned to the evidence variable
11395* [ExampleScenario](examplescenario.html): A use context type and value assigned to the example scenario
11396* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
11397* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
11398* [Library](library.html): A use context type and value assigned to the library
11399* [Measure](measure.html): A use context type and value assigned to the measure
11400* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
11401* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
11402* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
11403* [PlanDefinition](plandefinition.html): A use context type and value assigned to the plan definition
11404* [Questionnaire](questionnaire.html): A use context type and value assigned to the questionnaire
11405* [Requirements](requirements.html): A use context type and value assigned to the requirements
11406* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
11407* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
11408* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
11409* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
11410* [TestScript](testscript.html): A use context type and value assigned to the test script
11411* [ValueSet](valueset.html): A use context type and value assigned to the value set
11412</b><br>
11413   * Type: <b>composite</b><br>
11414   * Path: <b>ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext</b><br>
11415   * </p>
11416   */
11417  @SearchParamDefinition(name="context-type-value", path="ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): A use context type and value assigned to the activity definition\r\n* [ActorDefinition](actordefinition.html): A use context type and value assigned to the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and value assigned to the charge item definition\r\n* [Citation](citation.html): A use context type and value assigned to the citation\r\n* [CodeSystem](codesystem.html): A use context type and value assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map\r\n* [ConditionDefinition](conditiondefinition.html): A use context type and value assigned to the condition definition\r\n* [EventDefinition](eventdefinition.html): A use context type and value assigned to the event definition\r\n* [Evidence](evidence.html): A use context type and value assigned to the evidence\r\n* [EvidenceReport](evidencereport.html): A use context type and value assigned to the evidence report\r\n* [EvidenceVariable](evidencevariable.html): A use context type and value assigned to the evidence variable\r\n* [ExampleScenario](examplescenario.html): A use context type and value assigned to the example scenario\r\n* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide\r\n* [Library](library.html): A use context type and value assigned to the library\r\n* [Measure](measure.html): A use context type and value assigned to the measure\r\n* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition\r\n* [PlanDefinition](plandefinition.html): A use context type and value assigned to the plan definition\r\n* [Questionnaire](questionnaire.html): A use context type and value assigned to the questionnaire\r\n* [Requirements](requirements.html): A use context type and value assigned to the requirements\r\n* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context type and value assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities\r\n* [TestScript](testscript.html): A use context type and value assigned to the test script\r\n* [ValueSet](valueset.html): A use context type and value assigned to the value set\r\n", type="composite", compositeOf={"context-type", "context"} )
11418  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
11419 /**
11420   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
11421   * <p>
11422   * Description: <b>Multiple Resources: 
11423
11424* [ActivityDefinition](activitydefinition.html): A use context type and value assigned to the activity definition
11425* [ActorDefinition](actordefinition.html): A use context type and value assigned to the Actor Definition
11426* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
11427* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and value assigned to the charge item definition
11428* [Citation](citation.html): A use context type and value assigned to the citation
11429* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
11430* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
11431* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
11432* [ConditionDefinition](conditiondefinition.html): A use context type and value assigned to the condition definition
11433* [EventDefinition](eventdefinition.html): A use context type and value assigned to the event definition
11434* [Evidence](evidence.html): A use context type and value assigned to the evidence
11435* [EvidenceReport](evidencereport.html): A use context type and value assigned to the evidence report
11436* [EvidenceVariable](evidencevariable.html): A use context type and value assigned to the evidence variable
11437* [ExampleScenario](examplescenario.html): A use context type and value assigned to the example scenario
11438* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
11439* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
11440* [Library](library.html): A use context type and value assigned to the library
11441* [Measure](measure.html): A use context type and value assigned to the measure
11442* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
11443* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
11444* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
11445* [PlanDefinition](plandefinition.html): A use context type and value assigned to the plan definition
11446* [Questionnaire](questionnaire.html): A use context type and value assigned to the questionnaire
11447* [Requirements](requirements.html): A use context type and value assigned to the requirements
11448* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
11449* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
11450* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
11451* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
11452* [TestScript](testscript.html): A use context type and value assigned to the test script
11453* [ValueSet](valueset.html): A use context type and value assigned to the value set
11454</b><br>
11455   * Type: <b>composite</b><br>
11456   * Path: <b>ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext</b><br>
11457   * </p>
11458   */
11459  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam> CONTEXT_TYPE_VALUE = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam>(SP_CONTEXT_TYPE_VALUE);
11460
11461 /**
11462   * Search parameter: <b>context-type</b>
11463   * <p>
11464   * Description: <b>Multiple Resources: 
11465
11466* [ActivityDefinition](activitydefinition.html): A type of use context assigned to the activity definition
11467* [ActorDefinition](actordefinition.html): A type of use context assigned to the Actor Definition
11468* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
11469* [ChargeItemDefinition](chargeitemdefinition.html): A type of use context assigned to the charge item definition
11470* [Citation](citation.html): A type of use context assigned to the citation
11471* [CodeSystem](codesystem.html): A type of use context assigned to the code system
11472* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
11473* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
11474* [ConditionDefinition](conditiondefinition.html): A type of use context assigned to the condition definition
11475* [EventDefinition](eventdefinition.html): A type of use context assigned to the event definition
11476* [Evidence](evidence.html): A type of use context assigned to the evidence
11477* [EvidenceReport](evidencereport.html): A type of use context assigned to the evidence report
11478* [EvidenceVariable](evidencevariable.html): A type of use context assigned to the evidence variable
11479* [ExampleScenario](examplescenario.html): A type of use context assigned to the example scenario
11480* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
11481* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
11482* [Library](library.html): A type of use context assigned to the library
11483* [Measure](measure.html): A type of use context assigned to the measure
11484* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
11485* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
11486* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
11487* [PlanDefinition](plandefinition.html): A type of use context assigned to the plan definition
11488* [Questionnaire](questionnaire.html): A type of use context assigned to the questionnaire
11489* [Requirements](requirements.html): A type of use context assigned to the requirements
11490* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
11491* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
11492* [StructureMap](structuremap.html): A type of use context assigned to the structure map
11493* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
11494* [TestScript](testscript.html): A type of use context assigned to the test script
11495* [ValueSet](valueset.html): A type of use context assigned to the value set
11496</b><br>
11497   * Type: <b>token</b><br>
11498   * Path: <b>ActivityDefinition.useContext.code | ActorDefinition.useContext.code | CapabilityStatement.useContext.code | ChargeItemDefinition.useContext.code | Citation.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | ConditionDefinition.useContext.code | EventDefinition.useContext.code | Evidence.useContext.code | EvidenceReport.useContext.code | EvidenceVariable.useContext.code | ExampleScenario.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | Library.useContext.code | Measure.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | PlanDefinition.useContext.code | Questionnaire.useContext.code | Requirements.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | TestScript.useContext.code | ValueSet.useContext.code</b><br>
11499   * </p>
11500   */
11501  @SearchParamDefinition(name="context-type", path="ActivityDefinition.useContext.code | ActorDefinition.useContext.code | CapabilityStatement.useContext.code | ChargeItemDefinition.useContext.code | Citation.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | ConditionDefinition.useContext.code | EventDefinition.useContext.code | Evidence.useContext.code | EvidenceReport.useContext.code | EvidenceVariable.useContext.code | ExampleScenario.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | Library.useContext.code | Measure.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | PlanDefinition.useContext.code | Questionnaire.useContext.code | Requirements.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | TestScript.useContext.code | ValueSet.useContext.code", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): A type of use context assigned to the activity definition\r\n* [ActorDefinition](actordefinition.html): A type of use context assigned to the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): A type of use context assigned to the charge item definition\r\n* [Citation](citation.html): A type of use context assigned to the citation\r\n* [CodeSystem](codesystem.html): A type of use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map\r\n* [ConditionDefinition](conditiondefinition.html): A type of use context assigned to the condition definition\r\n* [EventDefinition](eventdefinition.html): A type of use context assigned to the event definition\r\n* [Evidence](evidence.html): A type of use context assigned to the evidence\r\n* [EvidenceReport](evidencereport.html): A type of use context assigned to the evidence report\r\n* [EvidenceVariable](evidencevariable.html): A type of use context assigned to the evidence variable\r\n* [ExampleScenario](examplescenario.html): A type of use context assigned to the example scenario\r\n* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide\r\n* [Library](library.html): A type of use context assigned to the library\r\n* [Measure](measure.html): A type of use context assigned to the measure\r\n* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition\r\n* [PlanDefinition](plandefinition.html): A type of use context assigned to the plan definition\r\n* [Questionnaire](questionnaire.html): A type of use context assigned to the questionnaire\r\n* [Requirements](requirements.html): A type of use context assigned to the requirements\r\n* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A type of use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities\r\n* [TestScript](testscript.html): A type of use context assigned to the test script\r\n* [ValueSet](valueset.html): A type of use context assigned to the value set\r\n", type="token" )
11502  public static final String SP_CONTEXT_TYPE = "context-type";
11503 /**
11504   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
11505   * <p>
11506   * Description: <b>Multiple Resources: 
11507
11508* [ActivityDefinition](activitydefinition.html): A type of use context assigned to the activity definition
11509* [ActorDefinition](actordefinition.html): A type of use context assigned to the Actor Definition
11510* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
11511* [ChargeItemDefinition](chargeitemdefinition.html): A type of use context assigned to the charge item definition
11512* [Citation](citation.html): A type of use context assigned to the citation
11513* [CodeSystem](codesystem.html): A type of use context assigned to the code system
11514* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
11515* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
11516* [ConditionDefinition](conditiondefinition.html): A type of use context assigned to the condition definition
11517* [EventDefinition](eventdefinition.html): A type of use context assigned to the event definition
11518* [Evidence](evidence.html): A type of use context assigned to the evidence
11519* [EvidenceReport](evidencereport.html): A type of use context assigned to the evidence report
11520* [EvidenceVariable](evidencevariable.html): A type of use context assigned to the evidence variable
11521* [ExampleScenario](examplescenario.html): A type of use context assigned to the example scenario
11522* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
11523* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
11524* [Library](library.html): A type of use context assigned to the library
11525* [Measure](measure.html): A type of use context assigned to the measure
11526* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
11527* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
11528* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
11529* [PlanDefinition](plandefinition.html): A type of use context assigned to the plan definition
11530* [Questionnaire](questionnaire.html): A type of use context assigned to the questionnaire
11531* [Requirements](requirements.html): A type of use context assigned to the requirements
11532* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
11533* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
11534* [StructureMap](structuremap.html): A type of use context assigned to the structure map
11535* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
11536* [TestScript](testscript.html): A type of use context assigned to the test script
11537* [ValueSet](valueset.html): A type of use context assigned to the value set
11538</b><br>
11539   * Type: <b>token</b><br>
11540   * Path: <b>ActivityDefinition.useContext.code | ActorDefinition.useContext.code | CapabilityStatement.useContext.code | ChargeItemDefinition.useContext.code | Citation.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | ConditionDefinition.useContext.code | EventDefinition.useContext.code | Evidence.useContext.code | EvidenceReport.useContext.code | EvidenceVariable.useContext.code | ExampleScenario.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | Library.useContext.code | Measure.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | PlanDefinition.useContext.code | Questionnaire.useContext.code | Requirements.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | TestScript.useContext.code | ValueSet.useContext.code</b><br>
11541   * </p>
11542   */
11543  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
11544
11545 /**
11546   * Search parameter: <b>context</b>
11547   * <p>
11548   * Description: <b>Multiple Resources: 
11549
11550* [ActivityDefinition](activitydefinition.html): A use context assigned to the activity definition
11551* [ActorDefinition](actordefinition.html): A use context assigned to the Actor Definition
11552* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
11553* [ChargeItemDefinition](chargeitemdefinition.html): A use context assigned to the charge item definition
11554* [Citation](citation.html): A use context assigned to the citation
11555* [CodeSystem](codesystem.html): A use context assigned to the code system
11556* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
11557* [ConceptMap](conceptmap.html): A use context assigned to the concept map
11558* [ConditionDefinition](conditiondefinition.html): A use context assigned to the condition definition
11559* [EventDefinition](eventdefinition.html): A use context assigned to the event definition
11560* [Evidence](evidence.html): A use context assigned to the evidence
11561* [EvidenceReport](evidencereport.html): A use context assigned to the evidence report
11562* [EvidenceVariable](evidencevariable.html): A use context assigned to the evidence variable
11563* [ExampleScenario](examplescenario.html): A use context assigned to the example scenario
11564* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
11565* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
11566* [Library](library.html): A use context assigned to the library
11567* [Measure](measure.html): A use context assigned to the measure
11568* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
11569* [NamingSystem](namingsystem.html): A use context assigned to the naming system
11570* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
11571* [PlanDefinition](plandefinition.html): A use context assigned to the plan definition
11572* [Questionnaire](questionnaire.html): A use context assigned to the questionnaire
11573* [Requirements](requirements.html): A use context assigned to the requirements
11574* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
11575* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
11576* [StructureMap](structuremap.html): A use context assigned to the structure map
11577* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
11578* [TestScript](testscript.html): A use context assigned to the test script
11579* [ValueSet](valueset.html): A use context assigned to the value set
11580</b><br>
11581   * Type: <b>token</b><br>
11582   * Path: <b>(ActivityDefinition.useContext.value.ofType(CodeableConcept)) | (ActorDefinition.useContext.value.ofType(CodeableConcept)) | (CapabilityStatement.useContext.value.ofType(CodeableConcept)) | (ChargeItemDefinition.useContext.value.ofType(CodeableConcept)) | (Citation.useContext.value.ofType(CodeableConcept)) | (CodeSystem.useContext.value.ofType(CodeableConcept)) | (CompartmentDefinition.useContext.value.ofType(CodeableConcept)) | (ConceptMap.useContext.value.ofType(CodeableConcept)) | (ConditionDefinition.useContext.value.ofType(CodeableConcept)) | (EventDefinition.useContext.value.ofType(CodeableConcept)) | (Evidence.useContext.value.ofType(CodeableConcept)) | (EvidenceReport.useContext.value.ofType(CodeableConcept)) | (EvidenceVariable.useContext.value.ofType(CodeableConcept)) | (ExampleScenario.useContext.value.ofType(CodeableConcept)) | (GraphDefinition.useContext.value.ofType(CodeableConcept)) | (ImplementationGuide.useContext.value.ofType(CodeableConcept)) | (Library.useContext.value.ofType(CodeableConcept)) | (Measure.useContext.value.ofType(CodeableConcept)) | (MessageDefinition.useContext.value.ofType(CodeableConcept)) | (NamingSystem.useContext.value.ofType(CodeableConcept)) | (OperationDefinition.useContext.value.ofType(CodeableConcept)) | (PlanDefinition.useContext.value.ofType(CodeableConcept)) | (Questionnaire.useContext.value.ofType(CodeableConcept)) | (Requirements.useContext.value.ofType(CodeableConcept)) | (SearchParameter.useContext.value.ofType(CodeableConcept)) | (StructureDefinition.useContext.value.ofType(CodeableConcept)) | (StructureMap.useContext.value.ofType(CodeableConcept)) | (TerminologyCapabilities.useContext.value.ofType(CodeableConcept)) | (TestScript.useContext.value.ofType(CodeableConcept)) | (ValueSet.useContext.value.ofType(CodeableConcept))</b><br>
11583   * </p>
11584   */
11585  @SearchParamDefinition(name="context", path="(ActivityDefinition.useContext.value.ofType(CodeableConcept)) | (ActorDefinition.useContext.value.ofType(CodeableConcept)) | (CapabilityStatement.useContext.value.ofType(CodeableConcept)) | (ChargeItemDefinition.useContext.value.ofType(CodeableConcept)) | (Citation.useContext.value.ofType(CodeableConcept)) | (CodeSystem.useContext.value.ofType(CodeableConcept)) | (CompartmentDefinition.useContext.value.ofType(CodeableConcept)) | (ConceptMap.useContext.value.ofType(CodeableConcept)) | (ConditionDefinition.useContext.value.ofType(CodeableConcept)) | (EventDefinition.useContext.value.ofType(CodeableConcept)) | (Evidence.useContext.value.ofType(CodeableConcept)) | (EvidenceReport.useContext.value.ofType(CodeableConcept)) | (EvidenceVariable.useContext.value.ofType(CodeableConcept)) | (ExampleScenario.useContext.value.ofType(CodeableConcept)) | (GraphDefinition.useContext.value.ofType(CodeableConcept)) | (ImplementationGuide.useContext.value.ofType(CodeableConcept)) | (Library.useContext.value.ofType(CodeableConcept)) | (Measure.useContext.value.ofType(CodeableConcept)) | (MessageDefinition.useContext.value.ofType(CodeableConcept)) | (NamingSystem.useContext.value.ofType(CodeableConcept)) | (OperationDefinition.useContext.value.ofType(CodeableConcept)) | (PlanDefinition.useContext.value.ofType(CodeableConcept)) | (Questionnaire.useContext.value.ofType(CodeableConcept)) | (Requirements.useContext.value.ofType(CodeableConcept)) | (SearchParameter.useContext.value.ofType(CodeableConcept)) | (StructureDefinition.useContext.value.ofType(CodeableConcept)) | (StructureMap.useContext.value.ofType(CodeableConcept)) | (TerminologyCapabilities.useContext.value.ofType(CodeableConcept)) | (TestScript.useContext.value.ofType(CodeableConcept)) | (ValueSet.useContext.value.ofType(CodeableConcept))", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): A use context assigned to the activity definition\r\n* [ActorDefinition](actordefinition.html): A use context assigned to the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): A use context assigned to the charge item definition\r\n* [Citation](citation.html): A use context assigned to the citation\r\n* [CodeSystem](codesystem.html): A use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context assigned to the concept map\r\n* [ConditionDefinition](conditiondefinition.html): A use context assigned to the condition definition\r\n* [EventDefinition](eventdefinition.html): A use context assigned to the event definition\r\n* [Evidence](evidence.html): A use context assigned to the evidence\r\n* [EvidenceReport](evidencereport.html): A use context assigned to the evidence report\r\n* [EvidenceVariable](evidencevariable.html): A use context assigned to the evidence variable\r\n* [ExampleScenario](examplescenario.html): A use context assigned to the example scenario\r\n* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide\r\n* [Library](library.html): A use context assigned to the library\r\n* [Measure](measure.html): A use context assigned to the measure\r\n* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition\r\n* [PlanDefinition](plandefinition.html): A use context assigned to the plan definition\r\n* [Questionnaire](questionnaire.html): A use context assigned to the questionnaire\r\n* [Requirements](requirements.html): A use context assigned to the requirements\r\n* [SearchParameter](searchparameter.html): A use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities\r\n* [TestScript](testscript.html): A use context assigned to the test script\r\n* [ValueSet](valueset.html): A use context assigned to the value set\r\n", type="token" )
11586  public static final String SP_CONTEXT = "context";
11587 /**
11588   * <b>Fluent Client</b> search parameter constant for <b>context</b>
11589   * <p>
11590   * Description: <b>Multiple Resources: 
11591
11592* [ActivityDefinition](activitydefinition.html): A use context assigned to the activity definition
11593* [ActorDefinition](actordefinition.html): A use context assigned to the Actor Definition
11594* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
11595* [ChargeItemDefinition](chargeitemdefinition.html): A use context assigned to the charge item definition
11596* [Citation](citation.html): A use context assigned to the citation
11597* [CodeSystem](codesystem.html): A use context assigned to the code system
11598* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
11599* [ConceptMap](conceptmap.html): A use context assigned to the concept map
11600* [ConditionDefinition](conditiondefinition.html): A use context assigned to the condition definition
11601* [EventDefinition](eventdefinition.html): A use context assigned to the event definition
11602* [Evidence](evidence.html): A use context assigned to the evidence
11603* [EvidenceReport](evidencereport.html): A use context assigned to the evidence report
11604* [EvidenceVariable](evidencevariable.html): A use context assigned to the evidence variable
11605* [ExampleScenario](examplescenario.html): A use context assigned to the example scenario
11606* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
11607* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
11608* [Library](library.html): A use context assigned to the library
11609* [Measure](measure.html): A use context assigned to the measure
11610* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
11611* [NamingSystem](namingsystem.html): A use context assigned to the naming system
11612* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
11613* [PlanDefinition](plandefinition.html): A use context assigned to the plan definition
11614* [Questionnaire](questionnaire.html): A use context assigned to the questionnaire
11615* [Requirements](requirements.html): A use context assigned to the requirements
11616* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
11617* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
11618* [StructureMap](structuremap.html): A use context assigned to the structure map
11619* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
11620* [TestScript](testscript.html): A use context assigned to the test script
11621* [ValueSet](valueset.html): A use context assigned to the value set
11622</b><br>
11623   * Type: <b>token</b><br>
11624   * Path: <b>(ActivityDefinition.useContext.value.ofType(CodeableConcept)) | (ActorDefinition.useContext.value.ofType(CodeableConcept)) | (CapabilityStatement.useContext.value.ofType(CodeableConcept)) | (ChargeItemDefinition.useContext.value.ofType(CodeableConcept)) | (Citation.useContext.value.ofType(CodeableConcept)) | (CodeSystem.useContext.value.ofType(CodeableConcept)) | (CompartmentDefinition.useContext.value.ofType(CodeableConcept)) | (ConceptMap.useContext.value.ofType(CodeableConcept)) | (ConditionDefinition.useContext.value.ofType(CodeableConcept)) | (EventDefinition.useContext.value.ofType(CodeableConcept)) | (Evidence.useContext.value.ofType(CodeableConcept)) | (EvidenceReport.useContext.value.ofType(CodeableConcept)) | (EvidenceVariable.useContext.value.ofType(CodeableConcept)) | (ExampleScenario.useContext.value.ofType(CodeableConcept)) | (GraphDefinition.useContext.value.ofType(CodeableConcept)) | (ImplementationGuide.useContext.value.ofType(CodeableConcept)) | (Library.useContext.value.ofType(CodeableConcept)) | (Measure.useContext.value.ofType(CodeableConcept)) | (MessageDefinition.useContext.value.ofType(CodeableConcept)) | (NamingSystem.useContext.value.ofType(CodeableConcept)) | (OperationDefinition.useContext.value.ofType(CodeableConcept)) | (PlanDefinition.useContext.value.ofType(CodeableConcept)) | (Questionnaire.useContext.value.ofType(CodeableConcept)) | (Requirements.useContext.value.ofType(CodeableConcept)) | (SearchParameter.useContext.value.ofType(CodeableConcept)) | (StructureDefinition.useContext.value.ofType(CodeableConcept)) | (StructureMap.useContext.value.ofType(CodeableConcept)) | (TerminologyCapabilities.useContext.value.ofType(CodeableConcept)) | (TestScript.useContext.value.ofType(CodeableConcept)) | (ValueSet.useContext.value.ofType(CodeableConcept))</b><br>
11625   * </p>
11626   */
11627  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
11628
11629 /**
11630   * Search parameter: <b>date</b>
11631   * <p>
11632   * Description: <b>Multiple Resources: 
11633
11634* [ActivityDefinition](activitydefinition.html): The activity definition publication date
11635* [ActorDefinition](actordefinition.html): The Actor Definition publication date
11636* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
11637* [ChargeItemDefinition](chargeitemdefinition.html): The charge item definition publication date
11638* [Citation](citation.html): The citation publication date
11639* [CodeSystem](codesystem.html): The code system publication date
11640* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
11641* [ConceptMap](conceptmap.html): The concept map publication date
11642* [ConditionDefinition](conditiondefinition.html): The condition definition publication date
11643* [EventDefinition](eventdefinition.html): The event definition publication date
11644* [Evidence](evidence.html): The evidence publication date
11645* [EvidenceVariable](evidencevariable.html): The evidence variable publication date
11646* [ExampleScenario](examplescenario.html): The example scenario publication date
11647* [GraphDefinition](graphdefinition.html): The graph definition publication date
11648* [ImplementationGuide](implementationguide.html): The implementation guide publication date
11649* [Library](library.html): The library publication date
11650* [Measure](measure.html): The measure publication date
11651* [MessageDefinition](messagedefinition.html): The message definition publication date
11652* [NamingSystem](namingsystem.html): The naming system publication date
11653* [OperationDefinition](operationdefinition.html): The operation definition publication date
11654* [PlanDefinition](plandefinition.html): The plan definition publication date
11655* [Questionnaire](questionnaire.html): The questionnaire publication date
11656* [Requirements](requirements.html): The requirements publication date
11657* [SearchParameter](searchparameter.html): The search parameter publication date
11658* [StructureDefinition](structuredefinition.html): The structure definition publication date
11659* [StructureMap](structuremap.html): The structure map publication date
11660* [SubscriptionTopic](subscriptiontopic.html): Date status first applied
11661* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
11662* [TestScript](testscript.html): The test script publication date
11663* [ValueSet](valueset.html): The value set publication date
11664</b><br>
11665   * Type: <b>date</b><br>
11666   * Path: <b>ActivityDefinition.date | ActorDefinition.date | CapabilityStatement.date | ChargeItemDefinition.date | Citation.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | ConditionDefinition.date | EventDefinition.date | Evidence.date | EvidenceVariable.date | ExampleScenario.date | GraphDefinition.date | ImplementationGuide.date | Library.date | Measure.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | PlanDefinition.date | Questionnaire.date | Requirements.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | SubscriptionTopic.date | TerminologyCapabilities.date | TestScript.date | ValueSet.date</b><br>
11667   * </p>
11668   */
11669  @SearchParamDefinition(name="date", path="ActivityDefinition.date | ActorDefinition.date | CapabilityStatement.date | ChargeItemDefinition.date | Citation.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | ConditionDefinition.date | EventDefinition.date | Evidence.date | EvidenceVariable.date | ExampleScenario.date | GraphDefinition.date | ImplementationGuide.date | Library.date | Measure.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | PlanDefinition.date | Questionnaire.date | Requirements.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | SubscriptionTopic.date | TerminologyCapabilities.date | TestScript.date | ValueSet.date", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The activity definition publication date\r\n* [ActorDefinition](actordefinition.html): The Actor Definition publication date\r\n* [CapabilityStatement](capabilitystatement.html): The capability statement publication date\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The charge item definition publication date\r\n* [Citation](citation.html): The citation publication date\r\n* [CodeSystem](codesystem.html): The code system publication date\r\n* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date\r\n* [ConceptMap](conceptmap.html): The concept map publication date\r\n* [ConditionDefinition](conditiondefinition.html): The condition definition publication date\r\n* [EventDefinition](eventdefinition.html): The event definition publication date\r\n* [Evidence](evidence.html): The evidence publication date\r\n* [EvidenceVariable](evidencevariable.html): The evidence variable publication date\r\n* [ExampleScenario](examplescenario.html): The example scenario publication date\r\n* [GraphDefinition](graphdefinition.html): The graph definition publication date\r\n* [ImplementationGuide](implementationguide.html): The implementation guide publication date\r\n* [Library](library.html): The library publication date\r\n* [Measure](measure.html): The measure publication date\r\n* [MessageDefinition](messagedefinition.html): The message definition publication date\r\n* [NamingSystem](namingsystem.html): The naming system publication date\r\n* [OperationDefinition](operationdefinition.html): The operation definition publication date\r\n* [PlanDefinition](plandefinition.html): The plan definition publication date\r\n* [Questionnaire](questionnaire.html): The questionnaire publication date\r\n* [Requirements](requirements.html): The requirements publication date\r\n* [SearchParameter](searchparameter.html): The search parameter publication date\r\n* [StructureDefinition](structuredefinition.html): The structure definition publication date\r\n* [StructureMap](structuremap.html): The structure map publication date\r\n* [SubscriptionTopic](subscriptiontopic.html): Date status first applied\r\n* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date\r\n* [TestScript](testscript.html): The test script publication date\r\n* [ValueSet](valueset.html): The value set publication date\r\n", type="date" )
11670  public static final String SP_DATE = "date";
11671 /**
11672   * <b>Fluent Client</b> search parameter constant for <b>date</b>
11673   * <p>
11674   * Description: <b>Multiple Resources: 
11675
11676* [ActivityDefinition](activitydefinition.html): The activity definition publication date
11677* [ActorDefinition](actordefinition.html): The Actor Definition publication date
11678* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
11679* [ChargeItemDefinition](chargeitemdefinition.html): The charge item definition publication date
11680* [Citation](citation.html): The citation publication date
11681* [CodeSystem](codesystem.html): The code system publication date
11682* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
11683* [ConceptMap](conceptmap.html): The concept map publication date
11684* [ConditionDefinition](conditiondefinition.html): The condition definition publication date
11685* [EventDefinition](eventdefinition.html): The event definition publication date
11686* [Evidence](evidence.html): The evidence publication date
11687* [EvidenceVariable](evidencevariable.html): The evidence variable publication date
11688* [ExampleScenario](examplescenario.html): The example scenario publication date
11689* [GraphDefinition](graphdefinition.html): The graph definition publication date
11690* [ImplementationGuide](implementationguide.html): The implementation guide publication date
11691* [Library](library.html): The library publication date
11692* [Measure](measure.html): The measure publication date
11693* [MessageDefinition](messagedefinition.html): The message definition publication date
11694* [NamingSystem](namingsystem.html): The naming system publication date
11695* [OperationDefinition](operationdefinition.html): The operation definition publication date
11696* [PlanDefinition](plandefinition.html): The plan definition publication date
11697* [Questionnaire](questionnaire.html): The questionnaire publication date
11698* [Requirements](requirements.html): The requirements publication date
11699* [SearchParameter](searchparameter.html): The search parameter publication date
11700* [StructureDefinition](structuredefinition.html): The structure definition publication date
11701* [StructureMap](structuremap.html): The structure map publication date
11702* [SubscriptionTopic](subscriptiontopic.html): Date status first applied
11703* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
11704* [TestScript](testscript.html): The test script publication date
11705* [ValueSet](valueset.html): The value set publication date
11706</b><br>
11707   * Type: <b>date</b><br>
11708   * Path: <b>ActivityDefinition.date | ActorDefinition.date | CapabilityStatement.date | ChargeItemDefinition.date | Citation.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | ConditionDefinition.date | EventDefinition.date | Evidence.date | EvidenceVariable.date | ExampleScenario.date | GraphDefinition.date | ImplementationGuide.date | Library.date | Measure.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | PlanDefinition.date | Questionnaire.date | Requirements.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | SubscriptionTopic.date | TerminologyCapabilities.date | TestScript.date | ValueSet.date</b><br>
11709   * </p>
11710   */
11711  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
11712
11713 /**
11714   * Search parameter: <b>description</b>
11715   * <p>
11716   * Description: <b>Multiple Resources: 
11717
11718* [ActivityDefinition](activitydefinition.html): The description of the activity definition
11719* [ActorDefinition](actordefinition.html): The description of the Actor Definition
11720* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
11721* [ChargeItemDefinition](chargeitemdefinition.html): The description of the charge item definition
11722* [Citation](citation.html): The description of the citation
11723* [CodeSystem](codesystem.html): The description of the code system
11724* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
11725* [ConceptMap](conceptmap.html): The description of the concept map
11726* [ConditionDefinition](conditiondefinition.html): The description of the condition definition
11727* [EventDefinition](eventdefinition.html): The description of the event definition
11728* [Evidence](evidence.html): The description of the evidence
11729* [EvidenceVariable](evidencevariable.html): The description of the evidence variable
11730* [GraphDefinition](graphdefinition.html): The description of the graph definition
11731* [ImplementationGuide](implementationguide.html): The description of the implementation guide
11732* [Library](library.html): The description of the library
11733* [Measure](measure.html): The description of the measure
11734* [MessageDefinition](messagedefinition.html): The description of the message definition
11735* [NamingSystem](namingsystem.html): The description of the naming system
11736* [OperationDefinition](operationdefinition.html): The description of the operation definition
11737* [PlanDefinition](plandefinition.html): The description of the plan definition
11738* [Questionnaire](questionnaire.html): The description of the questionnaire
11739* [Requirements](requirements.html): The description of the requirements
11740* [SearchParameter](searchparameter.html): The description of the search parameter
11741* [StructureDefinition](structuredefinition.html): The description of the structure definition
11742* [StructureMap](structuremap.html): The description of the structure map
11743* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
11744* [TestScript](testscript.html): The description of the test script
11745* [ValueSet](valueset.html): The description of the value set
11746</b><br>
11747   * Type: <b>string</b><br>
11748   * Path: <b>ActivityDefinition.description | ActorDefinition.description | CapabilityStatement.description | ChargeItemDefinition.description | Citation.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | ConditionDefinition.description | EventDefinition.description | Evidence.description | EvidenceVariable.description | GraphDefinition.description | ImplementationGuide.description | Library.description | Measure.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | PlanDefinition.description | Questionnaire.description | Requirements.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | TestScript.description | ValueSet.description</b><br>
11749   * </p>
11750   */
11751  @SearchParamDefinition(name="description", path="ActivityDefinition.description | ActorDefinition.description | CapabilityStatement.description | ChargeItemDefinition.description | Citation.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | ConditionDefinition.description | EventDefinition.description | Evidence.description | EvidenceVariable.description | GraphDefinition.description | ImplementationGuide.description | Library.description | Measure.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | PlanDefinition.description | Questionnaire.description | Requirements.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | TestScript.description | ValueSet.description", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The description of the activity definition\r\n* [ActorDefinition](actordefinition.html): The description of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The description of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The description of the charge item definition\r\n* [Citation](citation.html): The description of the citation\r\n* [CodeSystem](codesystem.html): The description of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition\r\n* [ConceptMap](conceptmap.html): The description of the concept map\r\n* [ConditionDefinition](conditiondefinition.html): The description of the condition definition\r\n* [EventDefinition](eventdefinition.html): The description of the event definition\r\n* [Evidence](evidence.html): The description of the evidence\r\n* [EvidenceVariable](evidencevariable.html): The description of the evidence variable\r\n* [GraphDefinition](graphdefinition.html): The description of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The description of the implementation guide\r\n* [Library](library.html): The description of the library\r\n* [Measure](measure.html): The description of the measure\r\n* [MessageDefinition](messagedefinition.html): The description of the message definition\r\n* [NamingSystem](namingsystem.html): The description of the naming system\r\n* [OperationDefinition](operationdefinition.html): The description of the operation definition\r\n* [PlanDefinition](plandefinition.html): The description of the plan definition\r\n* [Questionnaire](questionnaire.html): The description of the questionnaire\r\n* [Requirements](requirements.html): The description of the requirements\r\n* [SearchParameter](searchparameter.html): The description of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The description of the structure definition\r\n* [StructureMap](structuremap.html): The description of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities\r\n* [TestScript](testscript.html): The description of the test script\r\n* [ValueSet](valueset.html): The description of the value set\r\n", type="string" )
11752  public static final String SP_DESCRIPTION = "description";
11753 /**
11754   * <b>Fluent Client</b> search parameter constant for <b>description</b>
11755   * <p>
11756   * Description: <b>Multiple Resources: 
11757
11758* [ActivityDefinition](activitydefinition.html): The description of the activity definition
11759* [ActorDefinition](actordefinition.html): The description of the Actor Definition
11760* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
11761* [ChargeItemDefinition](chargeitemdefinition.html): The description of the charge item definition
11762* [Citation](citation.html): The description of the citation
11763* [CodeSystem](codesystem.html): The description of the code system
11764* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
11765* [ConceptMap](conceptmap.html): The description of the concept map
11766* [ConditionDefinition](conditiondefinition.html): The description of the condition definition
11767* [EventDefinition](eventdefinition.html): The description of the event definition
11768* [Evidence](evidence.html): The description of the evidence
11769* [EvidenceVariable](evidencevariable.html): The description of the evidence variable
11770* [GraphDefinition](graphdefinition.html): The description of the graph definition
11771* [ImplementationGuide](implementationguide.html): The description of the implementation guide
11772* [Library](library.html): The description of the library
11773* [Measure](measure.html): The description of the measure
11774* [MessageDefinition](messagedefinition.html): The description of the message definition
11775* [NamingSystem](namingsystem.html): The description of the naming system
11776* [OperationDefinition](operationdefinition.html): The description of the operation definition
11777* [PlanDefinition](plandefinition.html): The description of the plan definition
11778* [Questionnaire](questionnaire.html): The description of the questionnaire
11779* [Requirements](requirements.html): The description of the requirements
11780* [SearchParameter](searchparameter.html): The description of the search parameter
11781* [StructureDefinition](structuredefinition.html): The description of the structure definition
11782* [StructureMap](structuremap.html): The description of the structure map
11783* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
11784* [TestScript](testscript.html): The description of the test script
11785* [ValueSet](valueset.html): The description of the value set
11786</b><br>
11787   * Type: <b>string</b><br>
11788   * Path: <b>ActivityDefinition.description | ActorDefinition.description | CapabilityStatement.description | ChargeItemDefinition.description | Citation.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | ConditionDefinition.description | EventDefinition.description | Evidence.description | EvidenceVariable.description | GraphDefinition.description | ImplementationGuide.description | Library.description | Measure.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | PlanDefinition.description | Questionnaire.description | Requirements.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | TestScript.description | ValueSet.description</b><br>
11789   * </p>
11790   */
11791  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
11792
11793 /**
11794   * Search parameter: <b>identifier</b>
11795   * <p>
11796   * Description: <b>Multiple Resources: 
11797
11798* [ActivityDefinition](activitydefinition.html): External identifier for the activity definition
11799* [ActorDefinition](actordefinition.html): External identifier for the Actor Definition
11800* [CapabilityStatement](capabilitystatement.html): External identifier for the capability statement
11801* [ChargeItemDefinition](chargeitemdefinition.html): External identifier for the charge item definition
11802* [Citation](citation.html): External identifier for the citation
11803* [CodeSystem](codesystem.html): External identifier for the code system
11804* [ConceptMap](conceptmap.html): External identifier for the concept map
11805* [ConditionDefinition](conditiondefinition.html): External identifier for the condition definition
11806* [EventDefinition](eventdefinition.html): External identifier for the event definition
11807* [Evidence](evidence.html): External identifier for the evidence
11808* [EvidenceReport](evidencereport.html): External identifier for the evidence report
11809* [EvidenceVariable](evidencevariable.html): External identifier for the evidence variable
11810* [ExampleScenario](examplescenario.html): External identifier for the example scenario
11811* [GraphDefinition](graphdefinition.html): External identifier for the graph definition
11812* [ImplementationGuide](implementationguide.html): External identifier for the implementation guide
11813* [Library](library.html): External identifier for the library
11814* [Measure](measure.html): External identifier for the measure
11815* [MedicationKnowledge](medicationknowledge.html): Business identifier for this medication
11816* [MessageDefinition](messagedefinition.html): External identifier for the message definition
11817* [NamingSystem](namingsystem.html): External identifier for the naming system
11818* [ObservationDefinition](observationdefinition.html): The unique identifier associated with the specimen definition
11819* [OperationDefinition](operationdefinition.html): External identifier for the search parameter
11820* [PlanDefinition](plandefinition.html): External identifier for the plan definition
11821* [Questionnaire](questionnaire.html): External identifier for the questionnaire
11822* [Requirements](requirements.html): External identifier for the requirements
11823* [SearchParameter](searchparameter.html): External identifier for the search parameter
11824* [SpecimenDefinition](specimendefinition.html): The unique identifier associated with the SpecimenDefinition
11825* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
11826* [StructureMap](structuremap.html): External identifier for the structure map
11827* [SubscriptionTopic](subscriptiontopic.html): Business Identifier for SubscriptionTopic
11828* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
11829* [TestPlan](testplan.html): An identifier for the test plan
11830* [TestScript](testscript.html): External identifier for the test script
11831* [ValueSet](valueset.html): External identifier for the value set
11832</b><br>
11833   * Type: <b>token</b><br>
11834   * Path: <b>ActivityDefinition.identifier | ActorDefinition.identifier | CapabilityStatement.identifier | ChargeItemDefinition.identifier | Citation.identifier | CodeSystem.identifier | ConceptMap.identifier | ConditionDefinition.identifier | EventDefinition.identifier | Evidence.identifier | EvidenceReport.identifier | EvidenceVariable.identifier | ExampleScenario.identifier | GraphDefinition.identifier | ImplementationGuide.identifier | Library.identifier | Measure.identifier | MedicationKnowledge.identifier | MessageDefinition.identifier | NamingSystem.identifier | ObservationDefinition.identifier | OperationDefinition.identifier | PlanDefinition.identifier | Questionnaire.identifier | Requirements.identifier | SearchParameter.identifier | SpecimenDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | SubscriptionTopic.identifier | TerminologyCapabilities.identifier | TestPlan.identifier | TestScript.identifier | ValueSet.identifier</b><br>
11835   * </p>
11836   */
11837  @SearchParamDefinition(name="identifier", path="ActivityDefinition.identifier | ActorDefinition.identifier | CapabilityStatement.identifier | ChargeItemDefinition.identifier | Citation.identifier | CodeSystem.identifier | ConceptMap.identifier | ConditionDefinition.identifier | EventDefinition.identifier | Evidence.identifier | EvidenceReport.identifier | EvidenceVariable.identifier | ExampleScenario.identifier | GraphDefinition.identifier | ImplementationGuide.identifier | Library.identifier | Measure.identifier | MedicationKnowledge.identifier | MessageDefinition.identifier | NamingSystem.identifier | ObservationDefinition.identifier | OperationDefinition.identifier | PlanDefinition.identifier | Questionnaire.identifier | Requirements.identifier | SearchParameter.identifier | SpecimenDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | SubscriptionTopic.identifier | TerminologyCapabilities.identifier | TestPlan.identifier | TestScript.identifier | ValueSet.identifier", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): External identifier for the activity definition\r\n* [ActorDefinition](actordefinition.html): External identifier for the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): External identifier for the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): External identifier for the charge item definition\r\n* [Citation](citation.html): External identifier for the citation\r\n* [CodeSystem](codesystem.html): External identifier for the code system\r\n* [ConceptMap](conceptmap.html): External identifier for the concept map\r\n* [ConditionDefinition](conditiondefinition.html): External identifier for the condition definition\r\n* [EventDefinition](eventdefinition.html): External identifier for the event definition\r\n* [Evidence](evidence.html): External identifier for the evidence\r\n* [EvidenceReport](evidencereport.html): External identifier for the evidence report\r\n* [EvidenceVariable](evidencevariable.html): External identifier for the evidence variable\r\n* [ExampleScenario](examplescenario.html): External identifier for the example scenario\r\n* [GraphDefinition](graphdefinition.html): External identifier for the graph definition\r\n* [ImplementationGuide](implementationguide.html): External identifier for the implementation guide\r\n* [Library](library.html): External identifier for the library\r\n* [Measure](measure.html): External identifier for the measure\r\n* [MedicationKnowledge](medicationknowledge.html): Business identifier for this medication\r\n* [MessageDefinition](messagedefinition.html): External identifier for the message definition\r\n* [NamingSystem](namingsystem.html): External identifier for the naming system\r\n* [ObservationDefinition](observationdefinition.html): The unique identifier associated with the specimen definition\r\n* [OperationDefinition](operationdefinition.html): External identifier for the search parameter\r\n* [PlanDefinition](plandefinition.html): External identifier for the plan definition\r\n* [Questionnaire](questionnaire.html): External identifier for the questionnaire\r\n* [Requirements](requirements.html): External identifier for the requirements\r\n* [SearchParameter](searchparameter.html): External identifier for the search parameter\r\n* [SpecimenDefinition](specimendefinition.html): The unique identifier associated with the SpecimenDefinition\r\n* [StructureDefinition](structuredefinition.html): External identifier for the structure definition\r\n* [StructureMap](structuremap.html): External identifier for the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): Business Identifier for SubscriptionTopic\r\n* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities\r\n* [TestPlan](testplan.html): An identifier for the test plan\r\n* [TestScript](testscript.html): External identifier for the test script\r\n* [ValueSet](valueset.html): External identifier for the value set\r\n", type="token" )
11838  public static final String SP_IDENTIFIER = "identifier";
11839 /**
11840   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
11841   * <p>
11842   * Description: <b>Multiple Resources: 
11843
11844* [ActivityDefinition](activitydefinition.html): External identifier for the activity definition
11845* [ActorDefinition](actordefinition.html): External identifier for the Actor Definition
11846* [CapabilityStatement](capabilitystatement.html): External identifier for the capability statement
11847* [ChargeItemDefinition](chargeitemdefinition.html): External identifier for the charge item definition
11848* [Citation](citation.html): External identifier for the citation
11849* [CodeSystem](codesystem.html): External identifier for the code system
11850* [ConceptMap](conceptmap.html): External identifier for the concept map
11851* [ConditionDefinition](conditiondefinition.html): External identifier for the condition definition
11852* [EventDefinition](eventdefinition.html): External identifier for the event definition
11853* [Evidence](evidence.html): External identifier for the evidence
11854* [EvidenceReport](evidencereport.html): External identifier for the evidence report
11855* [EvidenceVariable](evidencevariable.html): External identifier for the evidence variable
11856* [ExampleScenario](examplescenario.html): External identifier for the example scenario
11857* [GraphDefinition](graphdefinition.html): External identifier for the graph definition
11858* [ImplementationGuide](implementationguide.html): External identifier for the implementation guide
11859* [Library](library.html): External identifier for the library
11860* [Measure](measure.html): External identifier for the measure
11861* [MedicationKnowledge](medicationknowledge.html): Business identifier for this medication
11862* [MessageDefinition](messagedefinition.html): External identifier for the message definition
11863* [NamingSystem](namingsystem.html): External identifier for the naming system
11864* [ObservationDefinition](observationdefinition.html): The unique identifier associated with the specimen definition
11865* [OperationDefinition](operationdefinition.html): External identifier for the search parameter
11866* [PlanDefinition](plandefinition.html): External identifier for the plan definition
11867* [Questionnaire](questionnaire.html): External identifier for the questionnaire
11868* [Requirements](requirements.html): External identifier for the requirements
11869* [SearchParameter](searchparameter.html): External identifier for the search parameter
11870* [SpecimenDefinition](specimendefinition.html): The unique identifier associated with the SpecimenDefinition
11871* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
11872* [StructureMap](structuremap.html): External identifier for the structure map
11873* [SubscriptionTopic](subscriptiontopic.html): Business Identifier for SubscriptionTopic
11874* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
11875* [TestPlan](testplan.html): An identifier for the test plan
11876* [TestScript](testscript.html): External identifier for the test script
11877* [ValueSet](valueset.html): External identifier for the value set
11878</b><br>
11879   * Type: <b>token</b><br>
11880   * Path: <b>ActivityDefinition.identifier | ActorDefinition.identifier | CapabilityStatement.identifier | ChargeItemDefinition.identifier | Citation.identifier | CodeSystem.identifier | ConceptMap.identifier | ConditionDefinition.identifier | EventDefinition.identifier | Evidence.identifier | EvidenceReport.identifier | EvidenceVariable.identifier | ExampleScenario.identifier | GraphDefinition.identifier | ImplementationGuide.identifier | Library.identifier | Measure.identifier | MedicationKnowledge.identifier | MessageDefinition.identifier | NamingSystem.identifier | ObservationDefinition.identifier | OperationDefinition.identifier | PlanDefinition.identifier | Questionnaire.identifier | Requirements.identifier | SearchParameter.identifier | SpecimenDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | SubscriptionTopic.identifier | TerminologyCapabilities.identifier | TestPlan.identifier | TestScript.identifier | ValueSet.identifier</b><br>
11881   * </p>
11882   */
11883  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
11884
11885 /**
11886   * Search parameter: <b>jurisdiction</b>
11887   * <p>
11888   * Description: <b>Multiple Resources: 
11889
11890* [ActivityDefinition](activitydefinition.html): Intended jurisdiction for the activity definition
11891* [ActorDefinition](actordefinition.html): Intended jurisdiction for the Actor Definition
11892* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
11893* [ChargeItemDefinition](chargeitemdefinition.html): Intended jurisdiction for the charge item definition
11894* [Citation](citation.html): Intended jurisdiction for the citation
11895* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
11896* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
11897* [ConditionDefinition](conditiondefinition.html): Intended jurisdiction for the condition definition
11898* [EventDefinition](eventdefinition.html): Intended jurisdiction for the event definition
11899* [ExampleScenario](examplescenario.html): Intended jurisdiction for the example scenario
11900* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
11901* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
11902* [Library](library.html): Intended jurisdiction for the library
11903* [Measure](measure.html): Intended jurisdiction for the measure
11904* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
11905* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
11906* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
11907* [PlanDefinition](plandefinition.html): Intended jurisdiction for the plan definition
11908* [Questionnaire](questionnaire.html): Intended jurisdiction for the questionnaire
11909* [Requirements](requirements.html): Intended jurisdiction for the requirements
11910* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
11911* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
11912* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
11913* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
11914* [TestScript](testscript.html): Intended jurisdiction for the test script
11915* [ValueSet](valueset.html): Intended jurisdiction for the value set
11916</b><br>
11917   * Type: <b>token</b><br>
11918   * Path: <b>ActivityDefinition.jurisdiction | ActorDefinition.jurisdiction | CapabilityStatement.jurisdiction | ChargeItemDefinition.jurisdiction | Citation.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | ConditionDefinition.jurisdiction | EventDefinition.jurisdiction | ExampleScenario.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | Library.jurisdiction | Measure.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | PlanDefinition.jurisdiction | Questionnaire.jurisdiction | Requirements.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | TestScript.jurisdiction | ValueSet.jurisdiction</b><br>
11919   * </p>
11920   */
11921  @SearchParamDefinition(name="jurisdiction", path="ActivityDefinition.jurisdiction | ActorDefinition.jurisdiction | CapabilityStatement.jurisdiction | ChargeItemDefinition.jurisdiction | Citation.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | ConditionDefinition.jurisdiction | EventDefinition.jurisdiction | ExampleScenario.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | Library.jurisdiction | Measure.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | PlanDefinition.jurisdiction | Questionnaire.jurisdiction | Requirements.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | TestScript.jurisdiction | ValueSet.jurisdiction", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): Intended jurisdiction for the activity definition\r\n* [ActorDefinition](actordefinition.html): Intended jurisdiction for the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): Intended jurisdiction for the charge item definition\r\n* [Citation](citation.html): Intended jurisdiction for the citation\r\n* [CodeSystem](codesystem.html): Intended jurisdiction for the code system\r\n* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map\r\n* [ConditionDefinition](conditiondefinition.html): Intended jurisdiction for the condition definition\r\n* [EventDefinition](eventdefinition.html): Intended jurisdiction for the event definition\r\n* [ExampleScenario](examplescenario.html): Intended jurisdiction for the example scenario\r\n* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition\r\n* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide\r\n* [Library](library.html): Intended jurisdiction for the library\r\n* [Measure](measure.html): Intended jurisdiction for the measure\r\n* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition\r\n* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system\r\n* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition\r\n* [PlanDefinition](plandefinition.html): Intended jurisdiction for the plan definition\r\n* [Questionnaire](questionnaire.html): Intended jurisdiction for the questionnaire\r\n* [Requirements](requirements.html): Intended jurisdiction for the requirements\r\n* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter\r\n* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition\r\n* [StructureMap](structuremap.html): Intended jurisdiction for the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities\r\n* [TestScript](testscript.html): Intended jurisdiction for the test script\r\n* [ValueSet](valueset.html): Intended jurisdiction for the value set\r\n", type="token" )
11922  public static final String SP_JURISDICTION = "jurisdiction";
11923 /**
11924   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
11925   * <p>
11926   * Description: <b>Multiple Resources: 
11927
11928* [ActivityDefinition](activitydefinition.html): Intended jurisdiction for the activity definition
11929* [ActorDefinition](actordefinition.html): Intended jurisdiction for the Actor Definition
11930* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
11931* [ChargeItemDefinition](chargeitemdefinition.html): Intended jurisdiction for the charge item definition
11932* [Citation](citation.html): Intended jurisdiction for the citation
11933* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
11934* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
11935* [ConditionDefinition](conditiondefinition.html): Intended jurisdiction for the condition definition
11936* [EventDefinition](eventdefinition.html): Intended jurisdiction for the event definition
11937* [ExampleScenario](examplescenario.html): Intended jurisdiction for the example scenario
11938* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
11939* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
11940* [Library](library.html): Intended jurisdiction for the library
11941* [Measure](measure.html): Intended jurisdiction for the measure
11942* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
11943* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
11944* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
11945* [PlanDefinition](plandefinition.html): Intended jurisdiction for the plan definition
11946* [Questionnaire](questionnaire.html): Intended jurisdiction for the questionnaire
11947* [Requirements](requirements.html): Intended jurisdiction for the requirements
11948* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
11949* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
11950* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
11951* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
11952* [TestScript](testscript.html): Intended jurisdiction for the test script
11953* [ValueSet](valueset.html): Intended jurisdiction for the value set
11954</b><br>
11955   * Type: <b>token</b><br>
11956   * Path: <b>ActivityDefinition.jurisdiction | ActorDefinition.jurisdiction | CapabilityStatement.jurisdiction | ChargeItemDefinition.jurisdiction | Citation.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | ConditionDefinition.jurisdiction | EventDefinition.jurisdiction | ExampleScenario.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | Library.jurisdiction | Measure.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | PlanDefinition.jurisdiction | Questionnaire.jurisdiction | Requirements.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | TestScript.jurisdiction | ValueSet.jurisdiction</b><br>
11957   * </p>
11958   */
11959  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
11960
11961 /**
11962   * Search parameter: <b>name</b>
11963   * <p>
11964   * Description: <b>Multiple Resources: 
11965
11966* [ActivityDefinition](activitydefinition.html): Computationally friendly name of the activity definition
11967* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
11968* [Citation](citation.html): Computationally friendly name of the citation
11969* [CodeSystem](codesystem.html): Computationally friendly name of the code system
11970* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
11971* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
11972* [ConditionDefinition](conditiondefinition.html): Computationally friendly name of the condition definition
11973* [EventDefinition](eventdefinition.html): Computationally friendly name of the event definition
11974* [EvidenceVariable](evidencevariable.html): Computationally friendly name of the evidence variable
11975* [ExampleScenario](examplescenario.html): Computationally friendly name of the example scenario
11976* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
11977* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
11978* [Library](library.html): Computationally friendly name of the library
11979* [Measure](measure.html): Computationally friendly name of the measure
11980* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
11981* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
11982* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
11983* [PlanDefinition](plandefinition.html): Computationally friendly name of the plan definition
11984* [Questionnaire](questionnaire.html): Computationally friendly name of the questionnaire
11985* [Requirements](requirements.html): Computationally friendly name of the requirements
11986* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
11987* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
11988* [StructureMap](structuremap.html): Computationally friendly name of the structure map
11989* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
11990* [TestScript](testscript.html): Computationally friendly name of the test script
11991* [ValueSet](valueset.html): Computationally friendly name of the value set
11992</b><br>
11993   * Type: <b>string</b><br>
11994   * Path: <b>ActivityDefinition.name | CapabilityStatement.name | Citation.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | ConditionDefinition.name | EventDefinition.name | EvidenceVariable.name | ExampleScenario.name | GraphDefinition.name | ImplementationGuide.name | Library.name | Measure.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | PlanDefinition.name | Questionnaire.name | Requirements.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | TestScript.name | ValueSet.name</b><br>
11995   * </p>
11996   */
11997  @SearchParamDefinition(name="name", path="ActivityDefinition.name | CapabilityStatement.name | Citation.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | ConditionDefinition.name | EventDefinition.name | EvidenceVariable.name | ExampleScenario.name | GraphDefinition.name | ImplementationGuide.name | Library.name | Measure.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | PlanDefinition.name | Questionnaire.name | Requirements.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | TestScript.name | ValueSet.name", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): Computationally friendly name of the activity definition\r\n* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement\r\n* [Citation](citation.html): Computationally friendly name of the citation\r\n* [CodeSystem](codesystem.html): Computationally friendly name of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition\r\n* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map\r\n* [ConditionDefinition](conditiondefinition.html): Computationally friendly name of the condition definition\r\n* [EventDefinition](eventdefinition.html): Computationally friendly name of the event definition\r\n* [EvidenceVariable](evidencevariable.html): Computationally friendly name of the evidence variable\r\n* [ExampleScenario](examplescenario.html): Computationally friendly name of the example scenario\r\n* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition\r\n* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide\r\n* [Library](library.html): Computationally friendly name of the library\r\n* [Measure](measure.html): Computationally friendly name of the measure\r\n* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition\r\n* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system\r\n* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition\r\n* [PlanDefinition](plandefinition.html): Computationally friendly name of the plan definition\r\n* [Questionnaire](questionnaire.html): Computationally friendly name of the questionnaire\r\n* [Requirements](requirements.html): Computationally friendly name of the requirements\r\n* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter\r\n* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition\r\n* [StructureMap](structuremap.html): Computationally friendly name of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities\r\n* [TestScript](testscript.html): Computationally friendly name of the test script\r\n* [ValueSet](valueset.html): Computationally friendly name of the value set\r\n", type="string" )
11998  public static final String SP_NAME = "name";
11999 /**
12000   * <b>Fluent Client</b> search parameter constant for <b>name</b>
12001   * <p>
12002   * Description: <b>Multiple Resources: 
12003
12004* [ActivityDefinition](activitydefinition.html): Computationally friendly name of the activity definition
12005* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
12006* [Citation](citation.html): Computationally friendly name of the citation
12007* [CodeSystem](codesystem.html): Computationally friendly name of the code system
12008* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
12009* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
12010* [ConditionDefinition](conditiondefinition.html): Computationally friendly name of the condition definition
12011* [EventDefinition](eventdefinition.html): Computationally friendly name of the event definition
12012* [EvidenceVariable](evidencevariable.html): Computationally friendly name of the evidence variable
12013* [ExampleScenario](examplescenario.html): Computationally friendly name of the example scenario
12014* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
12015* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
12016* [Library](library.html): Computationally friendly name of the library
12017* [Measure](measure.html): Computationally friendly name of the measure
12018* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
12019* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
12020* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
12021* [PlanDefinition](plandefinition.html): Computationally friendly name of the plan definition
12022* [Questionnaire](questionnaire.html): Computationally friendly name of the questionnaire
12023* [Requirements](requirements.html): Computationally friendly name of the requirements
12024* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
12025* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
12026* [StructureMap](structuremap.html): Computationally friendly name of the structure map
12027* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
12028* [TestScript](testscript.html): Computationally friendly name of the test script
12029* [ValueSet](valueset.html): Computationally friendly name of the value set
12030</b><br>
12031   * Type: <b>string</b><br>
12032   * Path: <b>ActivityDefinition.name | CapabilityStatement.name | Citation.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | ConditionDefinition.name | EventDefinition.name | EvidenceVariable.name | ExampleScenario.name | GraphDefinition.name | ImplementationGuide.name | Library.name | Measure.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | PlanDefinition.name | Questionnaire.name | Requirements.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | TestScript.name | ValueSet.name</b><br>
12033   * </p>
12034   */
12035  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
12036
12037 /**
12038   * Search parameter: <b>publisher</b>
12039   * <p>
12040   * Description: <b>Multiple Resources: 
12041
12042* [ActivityDefinition](activitydefinition.html): Name of the publisher of the activity definition
12043* [ActorDefinition](actordefinition.html): Name of the publisher of the Actor Definition
12044* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
12045* [ChargeItemDefinition](chargeitemdefinition.html): Name of the publisher of the charge item definition
12046* [Citation](citation.html): Name of the publisher of the citation
12047* [CodeSystem](codesystem.html): Name of the publisher of the code system
12048* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
12049* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
12050* [ConditionDefinition](conditiondefinition.html): Name of the publisher of the condition definition
12051* [EventDefinition](eventdefinition.html): Name of the publisher of the event definition
12052* [Evidence](evidence.html): Name of the publisher of the evidence
12053* [EvidenceReport](evidencereport.html): Name of the publisher of the evidence report
12054* [EvidenceVariable](evidencevariable.html): Name of the publisher of the evidence variable
12055* [ExampleScenario](examplescenario.html): Name of the publisher of the example scenario
12056* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
12057* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
12058* [Library](library.html): Name of the publisher of the library
12059* [Measure](measure.html): Name of the publisher of the measure
12060* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
12061* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
12062* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
12063* [PlanDefinition](plandefinition.html): Name of the publisher of the plan definition
12064* [Questionnaire](questionnaire.html): Name of the publisher of the questionnaire
12065* [Requirements](requirements.html): Name of the publisher of the requirements
12066* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
12067* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
12068* [StructureMap](structuremap.html): Name of the publisher of the structure map
12069* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
12070* [TestScript](testscript.html): Name of the publisher of the test script
12071* [ValueSet](valueset.html): Name of the publisher of the value set
12072</b><br>
12073   * Type: <b>string</b><br>
12074   * Path: <b>ActivityDefinition.publisher | ActorDefinition.publisher | CapabilityStatement.publisher | ChargeItemDefinition.publisher | Citation.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | ConditionDefinition.publisher | EventDefinition.publisher | Evidence.publisher | EvidenceReport.publisher | EvidenceVariable.publisher | ExampleScenario.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | Library.publisher | Measure.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | PlanDefinition.publisher | Questionnaire.publisher | Requirements.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | TestScript.publisher | ValueSet.publisher</b><br>
12075   * </p>
12076   */
12077  @SearchParamDefinition(name="publisher", path="ActivityDefinition.publisher | ActorDefinition.publisher | CapabilityStatement.publisher | ChargeItemDefinition.publisher | Citation.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | ConditionDefinition.publisher | EventDefinition.publisher | Evidence.publisher | EvidenceReport.publisher | EvidenceVariable.publisher | ExampleScenario.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | Library.publisher | Measure.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | PlanDefinition.publisher | Questionnaire.publisher | Requirements.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | TestScript.publisher | ValueSet.publisher", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): Name of the publisher of the activity definition\r\n* [ActorDefinition](actordefinition.html): Name of the publisher of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): Name of the publisher of the charge item definition\r\n* [Citation](citation.html): Name of the publisher of the citation\r\n* [CodeSystem](codesystem.html): Name of the publisher of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition\r\n* [ConceptMap](conceptmap.html): Name of the publisher of the concept map\r\n* [ConditionDefinition](conditiondefinition.html): Name of the publisher of the condition definition\r\n* [EventDefinition](eventdefinition.html): Name of the publisher of the event definition\r\n* [Evidence](evidence.html): Name of the publisher of the evidence\r\n* [EvidenceReport](evidencereport.html): Name of the publisher of the evidence report\r\n* [EvidenceVariable](evidencevariable.html): Name of the publisher of the evidence variable\r\n* [ExampleScenario](examplescenario.html): Name of the publisher of the example scenario\r\n* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition\r\n* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide\r\n* [Library](library.html): Name of the publisher of the library\r\n* [Measure](measure.html): Name of the publisher of the measure\r\n* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition\r\n* [NamingSystem](namingsystem.html): Name of the publisher of the naming system\r\n* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition\r\n* [PlanDefinition](plandefinition.html): Name of the publisher of the plan definition\r\n* [Questionnaire](questionnaire.html): Name of the publisher of the questionnaire\r\n* [Requirements](requirements.html): Name of the publisher of the requirements\r\n* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter\r\n* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition\r\n* [StructureMap](structuremap.html): Name of the publisher of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities\r\n* [TestScript](testscript.html): Name of the publisher of the test script\r\n* [ValueSet](valueset.html): Name of the publisher of the value set\r\n", type="string" )
12078  public static final String SP_PUBLISHER = "publisher";
12079 /**
12080   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
12081   * <p>
12082   * Description: <b>Multiple Resources: 
12083
12084* [ActivityDefinition](activitydefinition.html): Name of the publisher of the activity definition
12085* [ActorDefinition](actordefinition.html): Name of the publisher of the Actor Definition
12086* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
12087* [ChargeItemDefinition](chargeitemdefinition.html): Name of the publisher of the charge item definition
12088* [Citation](citation.html): Name of the publisher of the citation
12089* [CodeSystem](codesystem.html): Name of the publisher of the code system
12090* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
12091* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
12092* [ConditionDefinition](conditiondefinition.html): Name of the publisher of the condition definition
12093* [EventDefinition](eventdefinition.html): Name of the publisher of the event definition
12094* [Evidence](evidence.html): Name of the publisher of the evidence
12095* [EvidenceReport](evidencereport.html): Name of the publisher of the evidence report
12096* [EvidenceVariable](evidencevariable.html): Name of the publisher of the evidence variable
12097* [ExampleScenario](examplescenario.html): Name of the publisher of the example scenario
12098* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
12099* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
12100* [Library](library.html): Name of the publisher of the library
12101* [Measure](measure.html): Name of the publisher of the measure
12102* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
12103* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
12104* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
12105* [PlanDefinition](plandefinition.html): Name of the publisher of the plan definition
12106* [Questionnaire](questionnaire.html): Name of the publisher of the questionnaire
12107* [Requirements](requirements.html): Name of the publisher of the requirements
12108* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
12109* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
12110* [StructureMap](structuremap.html): Name of the publisher of the structure map
12111* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
12112* [TestScript](testscript.html): Name of the publisher of the test script
12113* [ValueSet](valueset.html): Name of the publisher of the value set
12114</b><br>
12115   * Type: <b>string</b><br>
12116   * Path: <b>ActivityDefinition.publisher | ActorDefinition.publisher | CapabilityStatement.publisher | ChargeItemDefinition.publisher | Citation.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | ConditionDefinition.publisher | EventDefinition.publisher | Evidence.publisher | EvidenceReport.publisher | EvidenceVariable.publisher | ExampleScenario.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | Library.publisher | Measure.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | PlanDefinition.publisher | Questionnaire.publisher | Requirements.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | TestScript.publisher | ValueSet.publisher</b><br>
12117   * </p>
12118   */
12119  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
12120
12121 /**
12122   * Search parameter: <b>status</b>
12123   * <p>
12124   * Description: <b>Multiple Resources: 
12125
12126* [ActivityDefinition](activitydefinition.html): The current status of the activity definition
12127* [ActorDefinition](actordefinition.html): The current status of the Actor Definition
12128* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
12129* [ChargeItemDefinition](chargeitemdefinition.html): The current status of the charge item definition
12130* [Citation](citation.html): The current status of the citation
12131* [CodeSystem](codesystem.html): The current status of the code system
12132* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
12133* [ConceptMap](conceptmap.html): The current status of the concept map
12134* [ConditionDefinition](conditiondefinition.html): The current status of the condition definition
12135* [EventDefinition](eventdefinition.html): The current status of the event definition
12136* [Evidence](evidence.html): The current status of the evidence
12137* [EvidenceReport](evidencereport.html): The current status of the evidence report
12138* [EvidenceVariable](evidencevariable.html): The current status of the evidence variable
12139* [ExampleScenario](examplescenario.html): The current status of the example scenario
12140* [GraphDefinition](graphdefinition.html): The current status of the graph definition
12141* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
12142* [Library](library.html): The current status of the library
12143* [Measure](measure.html): The current status of the measure
12144* [MedicationKnowledge](medicationknowledge.html): active | inactive | entered-in-error
12145* [MessageDefinition](messagedefinition.html): The current status of the message definition
12146* [NamingSystem](namingsystem.html): The current status of the naming system
12147* [ObservationDefinition](observationdefinition.html): Publication status of the ObservationDefinition: draft, active, retired, unknown
12148* [OperationDefinition](operationdefinition.html): The current status of the operation definition
12149* [PlanDefinition](plandefinition.html): The current status of the plan definition
12150* [Questionnaire](questionnaire.html): The current status of the questionnaire
12151* [Requirements](requirements.html): The current status of the requirements
12152* [SearchParameter](searchparameter.html): The current status of the search parameter
12153* [SpecimenDefinition](specimendefinition.html): Publication status of the SpecimenDefinition: draft, active, retired, unknown
12154* [StructureDefinition](structuredefinition.html): The current status of the structure definition
12155* [StructureMap](structuremap.html): The current status of the structure map
12156* [SubscriptionTopic](subscriptiontopic.html): draft | active | retired | unknown
12157* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
12158* [TestPlan](testplan.html): The current status of the test plan
12159* [TestScript](testscript.html): The current status of the test script
12160* [ValueSet](valueset.html): The current status of the value set
12161</b><br>
12162   * Type: <b>token</b><br>
12163   * Path: <b>ActivityDefinition.status | ActorDefinition.status | CapabilityStatement.status | ChargeItemDefinition.status | Citation.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | ConditionDefinition.status | EventDefinition.status | Evidence.status | EvidenceReport.status | EvidenceVariable.status | ExampleScenario.status | GraphDefinition.status | ImplementationGuide.status | Library.status | Measure.status | MedicationKnowledge.status | MessageDefinition.status | NamingSystem.status | ObservationDefinition.status | OperationDefinition.status | PlanDefinition.status | Questionnaire.status | Requirements.status | SearchParameter.status | SpecimenDefinition.status | StructureDefinition.status | StructureMap.status | SubscriptionTopic.status | TerminologyCapabilities.status | TestPlan.status | TestScript.status | ValueSet.status</b><br>
12164   * </p>
12165   */
12166  @SearchParamDefinition(name="status", path="ActivityDefinition.status | ActorDefinition.status | CapabilityStatement.status | ChargeItemDefinition.status | Citation.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | ConditionDefinition.status | EventDefinition.status | Evidence.status | EvidenceReport.status | EvidenceVariable.status | ExampleScenario.status | GraphDefinition.status | ImplementationGuide.status | Library.status | Measure.status | MedicationKnowledge.status | MessageDefinition.status | NamingSystem.status | ObservationDefinition.status | OperationDefinition.status | PlanDefinition.status | Questionnaire.status | Requirements.status | SearchParameter.status | SpecimenDefinition.status | StructureDefinition.status | StructureMap.status | SubscriptionTopic.status | TerminologyCapabilities.status | TestPlan.status | TestScript.status | ValueSet.status", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The current status of the activity definition\r\n* [ActorDefinition](actordefinition.html): The current status of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The current status of the charge item definition\r\n* [Citation](citation.html): The current status of the citation\r\n* [CodeSystem](codesystem.html): The current status of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition\r\n* [ConceptMap](conceptmap.html): The current status of the concept map\r\n* [ConditionDefinition](conditiondefinition.html): The current status of the condition definition\r\n* [EventDefinition](eventdefinition.html): The current status of the event definition\r\n* [Evidence](evidence.html): The current status of the evidence\r\n* [EvidenceReport](evidencereport.html): The current status of the evidence report\r\n* [EvidenceVariable](evidencevariable.html): The current status of the evidence variable\r\n* [ExampleScenario](examplescenario.html): The current status of the example scenario\r\n* [GraphDefinition](graphdefinition.html): The current status of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The current status of the implementation guide\r\n* [Library](library.html): The current status of the library\r\n* [Measure](measure.html): The current status of the measure\r\n* [MedicationKnowledge](medicationknowledge.html): active | inactive | entered-in-error\r\n* [MessageDefinition](messagedefinition.html): The current status of the message definition\r\n* [NamingSystem](namingsystem.html): The current status of the naming system\r\n* [ObservationDefinition](observationdefinition.html): Publication status of the ObservationDefinition: draft, active, retired, unknown\r\n* [OperationDefinition](operationdefinition.html): The current status of the operation definition\r\n* [PlanDefinition](plandefinition.html): The current status of the plan definition\r\n* [Questionnaire](questionnaire.html): The current status of the questionnaire\r\n* [Requirements](requirements.html): The current status of the requirements\r\n* [SearchParameter](searchparameter.html): The current status of the search parameter\r\n* [SpecimenDefinition](specimendefinition.html): Publication status of the SpecimenDefinition: draft, active, retired, unknown\r\n* [StructureDefinition](structuredefinition.html): The current status of the structure definition\r\n* [StructureMap](structuremap.html): The current status of the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): draft | active | retired | unknown\r\n* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities\r\n* [TestPlan](testplan.html): The current status of the test plan\r\n* [TestScript](testscript.html): The current status of the test script\r\n* [ValueSet](valueset.html): The current status of the value set\r\n", type="token" )
12167  public static final String SP_STATUS = "status";
12168 /**
12169   * <b>Fluent Client</b> search parameter constant for <b>status</b>
12170   * <p>
12171   * Description: <b>Multiple Resources: 
12172
12173* [ActivityDefinition](activitydefinition.html): The current status of the activity definition
12174* [ActorDefinition](actordefinition.html): The current status of the Actor Definition
12175* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
12176* [ChargeItemDefinition](chargeitemdefinition.html): The current status of the charge item definition
12177* [Citation](citation.html): The current status of the citation
12178* [CodeSystem](codesystem.html): The current status of the code system
12179* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
12180* [ConceptMap](conceptmap.html): The current status of the concept map
12181* [ConditionDefinition](conditiondefinition.html): The current status of the condition definition
12182* [EventDefinition](eventdefinition.html): The current status of the event definition
12183* [Evidence](evidence.html): The current status of the evidence
12184* [EvidenceReport](evidencereport.html): The current status of the evidence report
12185* [EvidenceVariable](evidencevariable.html): The current status of the evidence variable
12186* [ExampleScenario](examplescenario.html): The current status of the example scenario
12187* [GraphDefinition](graphdefinition.html): The current status of the graph definition
12188* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
12189* [Library](library.html): The current status of the library
12190* [Measure](measure.html): The current status of the measure
12191* [MedicationKnowledge](medicationknowledge.html): active | inactive | entered-in-error
12192* [MessageDefinition](messagedefinition.html): The current status of the message definition
12193* [NamingSystem](namingsystem.html): The current status of the naming system
12194* [ObservationDefinition](observationdefinition.html): Publication status of the ObservationDefinition: draft, active, retired, unknown
12195* [OperationDefinition](operationdefinition.html): The current status of the operation definition
12196* [PlanDefinition](plandefinition.html): The current status of the plan definition
12197* [Questionnaire](questionnaire.html): The current status of the questionnaire
12198* [Requirements](requirements.html): The current status of the requirements
12199* [SearchParameter](searchparameter.html): The current status of the search parameter
12200* [SpecimenDefinition](specimendefinition.html): Publication status of the SpecimenDefinition: draft, active, retired, unknown
12201* [StructureDefinition](structuredefinition.html): The current status of the structure definition
12202* [StructureMap](structuremap.html): The current status of the structure map
12203* [SubscriptionTopic](subscriptiontopic.html): draft | active | retired | unknown
12204* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
12205* [TestPlan](testplan.html): The current status of the test plan
12206* [TestScript](testscript.html): The current status of the test script
12207* [ValueSet](valueset.html): The current status of the value set
12208</b><br>
12209   * Type: <b>token</b><br>
12210   * Path: <b>ActivityDefinition.status | ActorDefinition.status | CapabilityStatement.status | ChargeItemDefinition.status | Citation.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | ConditionDefinition.status | EventDefinition.status | Evidence.status | EvidenceReport.status | EvidenceVariable.status | ExampleScenario.status | GraphDefinition.status | ImplementationGuide.status | Library.status | Measure.status | MedicationKnowledge.status | MessageDefinition.status | NamingSystem.status | ObservationDefinition.status | OperationDefinition.status | PlanDefinition.status | Questionnaire.status | Requirements.status | SearchParameter.status | SpecimenDefinition.status | StructureDefinition.status | StructureMap.status | SubscriptionTopic.status | TerminologyCapabilities.status | TestPlan.status | TestScript.status | ValueSet.status</b><br>
12211   * </p>
12212   */
12213  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
12214
12215 /**
12216   * Search parameter: <b>title</b>
12217   * <p>
12218   * Description: <b>Multiple Resources: 
12219
12220* [ActivityDefinition](activitydefinition.html): The human-friendly name of the activity definition
12221* [ActorDefinition](actordefinition.html): The human-friendly name of the Actor Definition
12222* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
12223* [ChargeItemDefinition](chargeitemdefinition.html): The human-friendly name of the charge item definition
12224* [Citation](citation.html): The human-friendly name of the citation
12225* [CodeSystem](codesystem.html): The human-friendly name of the code system
12226* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
12227* [ConditionDefinition](conditiondefinition.html): The human-friendly name of the condition definition
12228* [EventDefinition](eventdefinition.html): The human-friendly name of the event definition
12229* [Evidence](evidence.html): The human-friendly name of the evidence
12230* [EvidenceVariable](evidencevariable.html): The human-friendly name of the evidence variable
12231* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
12232* [Library](library.html): The human-friendly name of the library
12233* [Measure](measure.html): The human-friendly name of the measure
12234* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
12235* [ObservationDefinition](observationdefinition.html): Human-friendly name of the ObservationDefinition
12236* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
12237* [PlanDefinition](plandefinition.html): The human-friendly name of the plan definition
12238* [Questionnaire](questionnaire.html): The human-friendly name of the questionnaire
12239* [Requirements](requirements.html): The human-friendly name of the requirements
12240* [SpecimenDefinition](specimendefinition.html): Human-friendly name of the SpecimenDefinition
12241* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
12242* [StructureMap](structuremap.html): The human-friendly name of the structure map
12243* [SubscriptionTopic](subscriptiontopic.html): Name for this SubscriptionTopic (Human friendly)
12244* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
12245* [TestScript](testscript.html): The human-friendly name of the test script
12246* [ValueSet](valueset.html): The human-friendly name of the value set
12247</b><br>
12248   * Type: <b>string</b><br>
12249   * Path: <b>ActivityDefinition.title | ActorDefinition.title | CapabilityStatement.title | ChargeItemDefinition.title | Citation.title | CodeSystem.title | ConceptMap.title | ConditionDefinition.title | EventDefinition.title | Evidence.title | EvidenceVariable.title | ImplementationGuide.title | Library.title | Measure.title | MessageDefinition.title | ObservationDefinition.title | OperationDefinition.title | PlanDefinition.title | Questionnaire.title | Requirements.title | SpecimenDefinition.title | StructureDefinition.title | StructureMap.title | SubscriptionTopic.title | TerminologyCapabilities.title | TestScript.title | ValueSet.title</b><br>
12250   * </p>
12251   */
12252  @SearchParamDefinition(name="title", path="ActivityDefinition.title | ActorDefinition.title | CapabilityStatement.title | ChargeItemDefinition.title | Citation.title | CodeSystem.title | ConceptMap.title | ConditionDefinition.title | EventDefinition.title | Evidence.title | EvidenceVariable.title | ImplementationGuide.title | Library.title | Measure.title | MessageDefinition.title | ObservationDefinition.title | OperationDefinition.title | PlanDefinition.title | Questionnaire.title | Requirements.title | SpecimenDefinition.title | StructureDefinition.title | StructureMap.title | SubscriptionTopic.title | TerminologyCapabilities.title | TestScript.title | ValueSet.title", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The human-friendly name of the activity definition\r\n* [ActorDefinition](actordefinition.html): The human-friendly name of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The human-friendly name of the charge item definition\r\n* [Citation](citation.html): The human-friendly name of the citation\r\n* [CodeSystem](codesystem.html): The human-friendly name of the code system\r\n* [ConceptMap](conceptmap.html): The human-friendly name of the concept map\r\n* [ConditionDefinition](conditiondefinition.html): The human-friendly name of the condition definition\r\n* [EventDefinition](eventdefinition.html): The human-friendly name of the event definition\r\n* [Evidence](evidence.html): The human-friendly name of the evidence\r\n* [EvidenceVariable](evidencevariable.html): The human-friendly name of the evidence variable\r\n* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide\r\n* [Library](library.html): The human-friendly name of the library\r\n* [Measure](measure.html): The human-friendly name of the measure\r\n* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition\r\n* [ObservationDefinition](observationdefinition.html): Human-friendly name of the ObservationDefinition\r\n* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition\r\n* [PlanDefinition](plandefinition.html): The human-friendly name of the plan definition\r\n* [Questionnaire](questionnaire.html): The human-friendly name of the questionnaire\r\n* [Requirements](requirements.html): The human-friendly name of the requirements\r\n* [SpecimenDefinition](specimendefinition.html): Human-friendly name of the SpecimenDefinition\r\n* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition\r\n* [StructureMap](structuremap.html): The human-friendly name of the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): Name for this SubscriptionTopic (Human friendly)\r\n* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities\r\n* [TestScript](testscript.html): The human-friendly name of the test script\r\n* [ValueSet](valueset.html): The human-friendly name of the value set\r\n", type="string" )
12253  public static final String SP_TITLE = "title";
12254 /**
12255   * <b>Fluent Client</b> search parameter constant for <b>title</b>
12256   * <p>
12257   * Description: <b>Multiple Resources: 
12258
12259* [ActivityDefinition](activitydefinition.html): The human-friendly name of the activity definition
12260* [ActorDefinition](actordefinition.html): The human-friendly name of the Actor Definition
12261* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
12262* [ChargeItemDefinition](chargeitemdefinition.html): The human-friendly name of the charge item definition
12263* [Citation](citation.html): The human-friendly name of the citation
12264* [CodeSystem](codesystem.html): The human-friendly name of the code system
12265* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
12266* [ConditionDefinition](conditiondefinition.html): The human-friendly name of the condition definition
12267* [EventDefinition](eventdefinition.html): The human-friendly name of the event definition
12268* [Evidence](evidence.html): The human-friendly name of the evidence
12269* [EvidenceVariable](evidencevariable.html): The human-friendly name of the evidence variable
12270* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
12271* [Library](library.html): The human-friendly name of the library
12272* [Measure](measure.html): The human-friendly name of the measure
12273* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
12274* [ObservationDefinition](observationdefinition.html): Human-friendly name of the ObservationDefinition
12275* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
12276* [PlanDefinition](plandefinition.html): The human-friendly name of the plan definition
12277* [Questionnaire](questionnaire.html): The human-friendly name of the questionnaire
12278* [Requirements](requirements.html): The human-friendly name of the requirements
12279* [SpecimenDefinition](specimendefinition.html): Human-friendly name of the SpecimenDefinition
12280* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
12281* [StructureMap](structuremap.html): The human-friendly name of the structure map
12282* [SubscriptionTopic](subscriptiontopic.html): Name for this SubscriptionTopic (Human friendly)
12283* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
12284* [TestScript](testscript.html): The human-friendly name of the test script
12285* [ValueSet](valueset.html): The human-friendly name of the value set
12286</b><br>
12287   * Type: <b>string</b><br>
12288   * Path: <b>ActivityDefinition.title | ActorDefinition.title | CapabilityStatement.title | ChargeItemDefinition.title | Citation.title | CodeSystem.title | ConceptMap.title | ConditionDefinition.title | EventDefinition.title | Evidence.title | EvidenceVariable.title | ImplementationGuide.title | Library.title | Measure.title | MessageDefinition.title | ObservationDefinition.title | OperationDefinition.title | PlanDefinition.title | Questionnaire.title | Requirements.title | SpecimenDefinition.title | StructureDefinition.title | StructureMap.title | SubscriptionTopic.title | TerminologyCapabilities.title | TestScript.title | ValueSet.title</b><br>
12289   * </p>
12290   */
12291  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
12292
12293 /**
12294   * Search parameter: <b>url</b>
12295   * <p>
12296   * Description: <b>Multiple Resources: 
12297
12298* [ActivityDefinition](activitydefinition.html): The uri that identifies the activity definition
12299* [ActorDefinition](actordefinition.html): The uri that identifies the Actor Definition
12300* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
12301* [ChargeItemDefinition](chargeitemdefinition.html): The uri that identifies the charge item definition
12302* [Citation](citation.html): The uri that identifies the citation
12303* [CodeSystem](codesystem.html): The uri that identifies the code system
12304* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
12305* [ConceptMap](conceptmap.html): The URI that identifies the concept map
12306* [ConditionDefinition](conditiondefinition.html): The uri that identifies the condition definition
12307* [EventDefinition](eventdefinition.html): The uri that identifies the event definition
12308* [Evidence](evidence.html): The uri that identifies the evidence
12309* [EvidenceReport](evidencereport.html): The uri that identifies the evidence report
12310* [EvidenceVariable](evidencevariable.html): The uri that identifies the evidence variable
12311* [ExampleScenario](examplescenario.html): The uri that identifies the example scenario
12312* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
12313* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
12314* [Library](library.html): The uri that identifies the library
12315* [Measure](measure.html): The uri that identifies the measure
12316* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
12317* [NamingSystem](namingsystem.html): The uri that identifies the naming system
12318* [ObservationDefinition](observationdefinition.html): The uri that identifies the observation definition
12319* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
12320* [PlanDefinition](plandefinition.html): The uri that identifies the plan definition
12321* [Questionnaire](questionnaire.html): The uri that identifies the questionnaire
12322* [Requirements](requirements.html): The uri that identifies the requirements
12323* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
12324* [SpecimenDefinition](specimendefinition.html): The uri that identifies the specimen definition
12325* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
12326* [StructureMap](structuremap.html): The uri that identifies the structure map
12327* [SubscriptionTopic](subscriptiontopic.html): Logical canonical URL to reference this SubscriptionTopic (globally unique)
12328* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
12329* [TestPlan](testplan.html): The uri that identifies the test plan
12330* [TestScript](testscript.html): The uri that identifies the test script
12331* [ValueSet](valueset.html): The uri that identifies the value set
12332</b><br>
12333   * Type: <b>uri</b><br>
12334   * Path: <b>ActivityDefinition.url | ActorDefinition.url | CapabilityStatement.url | ChargeItemDefinition.url | Citation.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | ConditionDefinition.url | EventDefinition.url | Evidence.url | EvidenceReport.url | EvidenceVariable.url | ExampleScenario.url | GraphDefinition.url | ImplementationGuide.url | Library.url | Measure.url | MessageDefinition.url | NamingSystem.url | ObservationDefinition.url | OperationDefinition.url | PlanDefinition.url | Questionnaire.url | Requirements.url | SearchParameter.url | SpecimenDefinition.url | StructureDefinition.url | StructureMap.url | SubscriptionTopic.url | TerminologyCapabilities.url | TestPlan.url | TestScript.url | ValueSet.url</b><br>
12335   * </p>
12336   */
12337  @SearchParamDefinition(name="url", path="ActivityDefinition.url | ActorDefinition.url | CapabilityStatement.url | ChargeItemDefinition.url | Citation.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | ConditionDefinition.url | EventDefinition.url | Evidence.url | EvidenceReport.url | EvidenceVariable.url | ExampleScenario.url | GraphDefinition.url | ImplementationGuide.url | Library.url | Measure.url | MessageDefinition.url | NamingSystem.url | ObservationDefinition.url | OperationDefinition.url | PlanDefinition.url | Questionnaire.url | Requirements.url | SearchParameter.url | SpecimenDefinition.url | StructureDefinition.url | StructureMap.url | SubscriptionTopic.url | TerminologyCapabilities.url | TestPlan.url | TestScript.url | ValueSet.url", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The uri that identifies the activity definition\r\n* [ActorDefinition](actordefinition.html): The uri that identifies the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The uri that identifies the charge item definition\r\n* [Citation](citation.html): The uri that identifies the citation\r\n* [CodeSystem](codesystem.html): The uri that identifies the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition\r\n* [ConceptMap](conceptmap.html): The URI that identifies the concept map\r\n* [ConditionDefinition](conditiondefinition.html): The uri that identifies the condition definition\r\n* [EventDefinition](eventdefinition.html): The uri that identifies the event definition\r\n* [Evidence](evidence.html): The uri that identifies the evidence\r\n* [EvidenceReport](evidencereport.html): The uri that identifies the evidence report\r\n* [EvidenceVariable](evidencevariable.html): The uri that identifies the evidence variable\r\n* [ExampleScenario](examplescenario.html): The uri that identifies the example scenario\r\n* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition\r\n* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide\r\n* [Library](library.html): The uri that identifies the library\r\n* [Measure](measure.html): The uri that identifies the measure\r\n* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition\r\n* [NamingSystem](namingsystem.html): The uri that identifies the naming system\r\n* [ObservationDefinition](observationdefinition.html): The uri that identifies the observation definition\r\n* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition\r\n* [PlanDefinition](plandefinition.html): The uri that identifies the plan definition\r\n* [Questionnaire](questionnaire.html): The uri that identifies the questionnaire\r\n* [Requirements](requirements.html): The uri that identifies the requirements\r\n* [SearchParameter](searchparameter.html): The uri that identifies the search parameter\r\n* [SpecimenDefinition](specimendefinition.html): The uri that identifies the specimen definition\r\n* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition\r\n* [StructureMap](structuremap.html): The uri that identifies the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): Logical canonical URL to reference this SubscriptionTopic (globally unique)\r\n* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities\r\n* [TestPlan](testplan.html): The uri that identifies the test plan\r\n* [TestScript](testscript.html): The uri that identifies the test script\r\n* [ValueSet](valueset.html): The uri that identifies the value set\r\n", type="uri" )
12338  public static final String SP_URL = "url";
12339 /**
12340   * <b>Fluent Client</b> search parameter constant for <b>url</b>
12341   * <p>
12342   * Description: <b>Multiple Resources: 
12343
12344* [ActivityDefinition](activitydefinition.html): The uri that identifies the activity definition
12345* [ActorDefinition](actordefinition.html): The uri that identifies the Actor Definition
12346* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
12347* [ChargeItemDefinition](chargeitemdefinition.html): The uri that identifies the charge item definition
12348* [Citation](citation.html): The uri that identifies the citation
12349* [CodeSystem](codesystem.html): The uri that identifies the code system
12350* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
12351* [ConceptMap](conceptmap.html): The URI that identifies the concept map
12352* [ConditionDefinition](conditiondefinition.html): The uri that identifies the condition definition
12353* [EventDefinition](eventdefinition.html): The uri that identifies the event definition
12354* [Evidence](evidence.html): The uri that identifies the evidence
12355* [EvidenceReport](evidencereport.html): The uri that identifies the evidence report
12356* [EvidenceVariable](evidencevariable.html): The uri that identifies the evidence variable
12357* [ExampleScenario](examplescenario.html): The uri that identifies the example scenario
12358* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
12359* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
12360* [Library](library.html): The uri that identifies the library
12361* [Measure](measure.html): The uri that identifies the measure
12362* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
12363* [NamingSystem](namingsystem.html): The uri that identifies the naming system
12364* [ObservationDefinition](observationdefinition.html): The uri that identifies the observation definition
12365* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
12366* [PlanDefinition](plandefinition.html): The uri that identifies the plan definition
12367* [Questionnaire](questionnaire.html): The uri that identifies the questionnaire
12368* [Requirements](requirements.html): The uri that identifies the requirements
12369* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
12370* [SpecimenDefinition](specimendefinition.html): The uri that identifies the specimen definition
12371* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
12372* [StructureMap](structuremap.html): The uri that identifies the structure map
12373* [SubscriptionTopic](subscriptiontopic.html): Logical canonical URL to reference this SubscriptionTopic (globally unique)
12374* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
12375* [TestPlan](testplan.html): The uri that identifies the test plan
12376* [TestScript](testscript.html): The uri that identifies the test script
12377* [ValueSet](valueset.html): The uri that identifies the value set
12378</b><br>
12379   * Type: <b>uri</b><br>
12380   * Path: <b>ActivityDefinition.url | ActorDefinition.url | CapabilityStatement.url | ChargeItemDefinition.url | Citation.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | ConditionDefinition.url | EventDefinition.url | Evidence.url | EvidenceReport.url | EvidenceVariable.url | ExampleScenario.url | GraphDefinition.url | ImplementationGuide.url | Library.url | Measure.url | MessageDefinition.url | NamingSystem.url | ObservationDefinition.url | OperationDefinition.url | PlanDefinition.url | Questionnaire.url | Requirements.url | SearchParameter.url | SpecimenDefinition.url | StructureDefinition.url | StructureMap.url | SubscriptionTopic.url | TerminologyCapabilities.url | TestPlan.url | TestScript.url | ValueSet.url</b><br>
12381   * </p>
12382   */
12383  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
12384
12385 /**
12386   * Search parameter: <b>version</b>
12387   * <p>
12388   * Description: <b>Multiple Resources: 
12389
12390* [ActivityDefinition](activitydefinition.html): The business version of the activity definition
12391* [ActorDefinition](actordefinition.html): The business version of the Actor Definition
12392* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
12393* [ChargeItemDefinition](chargeitemdefinition.html): The business version of the charge item definition
12394* [Citation](citation.html): The business version of the citation
12395* [CodeSystem](codesystem.html): The business version of the code system
12396* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
12397* [ConceptMap](conceptmap.html): The business version of the concept map
12398* [ConditionDefinition](conditiondefinition.html): The business version of the condition definition
12399* [EventDefinition](eventdefinition.html): The business version of the event definition
12400* [Evidence](evidence.html): The business version of the evidence
12401* [EvidenceVariable](evidencevariable.html): The business version of the evidence variable
12402* [ExampleScenario](examplescenario.html): The business version of the example scenario
12403* [GraphDefinition](graphdefinition.html): The business version of the graph definition
12404* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
12405* [Library](library.html): The business version of the library
12406* [Measure](measure.html): The business version of the measure
12407* [MessageDefinition](messagedefinition.html): The business version of the message definition
12408* [NamingSystem](namingsystem.html): The business version of the naming system
12409* [OperationDefinition](operationdefinition.html): The business version of the operation definition
12410* [PlanDefinition](plandefinition.html): The business version of the plan definition
12411* [Questionnaire](questionnaire.html): The business version of the questionnaire
12412* [Requirements](requirements.html): The business version of the requirements
12413* [SearchParameter](searchparameter.html): The business version of the search parameter
12414* [StructureDefinition](structuredefinition.html): The business version of the structure definition
12415* [StructureMap](structuremap.html): The business version of the structure map
12416* [SubscriptionTopic](subscriptiontopic.html): Business version of the SubscriptionTopic
12417* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
12418* [TestScript](testscript.html): The business version of the test script
12419* [ValueSet](valueset.html): The business version of the value set
12420</b><br>
12421   * Type: <b>token</b><br>
12422   * Path: <b>ActivityDefinition.version | ActorDefinition.version | CapabilityStatement.version | ChargeItemDefinition.version | Citation.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | ConditionDefinition.version | EventDefinition.version | Evidence.version | EvidenceVariable.version | ExampleScenario.version | GraphDefinition.version | ImplementationGuide.version | Library.version | Measure.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | PlanDefinition.version | Questionnaire.version | Requirements.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | SubscriptionTopic.version | TerminologyCapabilities.version | TestScript.version | ValueSet.version</b><br>
12423   * </p>
12424   */
12425  @SearchParamDefinition(name="version", path="ActivityDefinition.version | ActorDefinition.version | CapabilityStatement.version | ChargeItemDefinition.version | Citation.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | ConditionDefinition.version | EventDefinition.version | Evidence.version | EvidenceVariable.version | ExampleScenario.version | GraphDefinition.version | ImplementationGuide.version | Library.version | Measure.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | PlanDefinition.version | Questionnaire.version | Requirements.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | SubscriptionTopic.version | TerminologyCapabilities.version | TestScript.version | ValueSet.version", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The business version of the activity definition\r\n* [ActorDefinition](actordefinition.html): The business version of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The business version of the charge item definition\r\n* [Citation](citation.html): The business version of the citation\r\n* [CodeSystem](codesystem.html): The business version of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition\r\n* [ConceptMap](conceptmap.html): The business version of the concept map\r\n* [ConditionDefinition](conditiondefinition.html): The business version of the condition definition\r\n* [EventDefinition](eventdefinition.html): The business version of the event definition\r\n* [Evidence](evidence.html): The business version of the evidence\r\n* [EvidenceVariable](evidencevariable.html): The business version of the evidence variable\r\n* [ExampleScenario](examplescenario.html): The business version of the example scenario\r\n* [GraphDefinition](graphdefinition.html): The business version of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The business version of the implementation guide\r\n* [Library](library.html): The business version of the library\r\n* [Measure](measure.html): The business version of the measure\r\n* [MessageDefinition](messagedefinition.html): The business version of the message definition\r\n* [NamingSystem](namingsystem.html): The business version of the naming system\r\n* [OperationDefinition](operationdefinition.html): The business version of the operation definition\r\n* [PlanDefinition](plandefinition.html): The business version of the plan definition\r\n* [Questionnaire](questionnaire.html): The business version of the questionnaire\r\n* [Requirements](requirements.html): The business version of the requirements\r\n* [SearchParameter](searchparameter.html): The business version of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The business version of the structure definition\r\n* [StructureMap](structuremap.html): The business version of the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): Business version of the SubscriptionTopic\r\n* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities\r\n* [TestScript](testscript.html): The business version of the test script\r\n* [ValueSet](valueset.html): The business version of the value set\r\n", type="token" )
12426  public static final String SP_VERSION = "version";
12427 /**
12428   * <b>Fluent Client</b> search parameter constant for <b>version</b>
12429   * <p>
12430   * Description: <b>Multiple Resources: 
12431
12432* [ActivityDefinition](activitydefinition.html): The business version of the activity definition
12433* [ActorDefinition](actordefinition.html): The business version of the Actor Definition
12434* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
12435* [ChargeItemDefinition](chargeitemdefinition.html): The business version of the charge item definition
12436* [Citation](citation.html): The business version of the citation
12437* [CodeSystem](codesystem.html): The business version of the code system
12438* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
12439* [ConceptMap](conceptmap.html): The business version of the concept map
12440* [ConditionDefinition](conditiondefinition.html): The business version of the condition definition
12441* [EventDefinition](eventdefinition.html): The business version of the event definition
12442* [Evidence](evidence.html): The business version of the evidence
12443* [EvidenceVariable](evidencevariable.html): The business version of the evidence variable
12444* [ExampleScenario](examplescenario.html): The business version of the example scenario
12445* [GraphDefinition](graphdefinition.html): The business version of the graph definition
12446* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
12447* [Library](library.html): The business version of the library
12448* [Measure](measure.html): The business version of the measure
12449* [MessageDefinition](messagedefinition.html): The business version of the message definition
12450* [NamingSystem](namingsystem.html): The business version of the naming system
12451* [OperationDefinition](operationdefinition.html): The business version of the operation definition
12452* [PlanDefinition](plandefinition.html): The business version of the plan definition
12453* [Questionnaire](questionnaire.html): The business version of the questionnaire
12454* [Requirements](requirements.html): The business version of the requirements
12455* [SearchParameter](searchparameter.html): The business version of the search parameter
12456* [StructureDefinition](structuredefinition.html): The business version of the structure definition
12457* [StructureMap](structuremap.html): The business version of the structure map
12458* [SubscriptionTopic](subscriptiontopic.html): Business version of the SubscriptionTopic
12459* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
12460* [TestScript](testscript.html): The business version of the test script
12461* [ValueSet](valueset.html): The business version of the value set
12462</b><br>
12463   * Type: <b>token</b><br>
12464   * Path: <b>ActivityDefinition.version | ActorDefinition.version | CapabilityStatement.version | ChargeItemDefinition.version | Citation.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | ConditionDefinition.version | EventDefinition.version | Evidence.version | EvidenceVariable.version | ExampleScenario.version | GraphDefinition.version | ImplementationGuide.version | Library.version | Measure.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | PlanDefinition.version | Questionnaire.version | Requirements.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | SubscriptionTopic.version | TerminologyCapabilities.version | TestScript.version | ValueSet.version</b><br>
12465   * </p>
12466   */
12467  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
12468
12469 /**
12470   * Search parameter: <b>classification-type</b>
12471   * <p>
12472   * Description: <b>A type of classification assigned to the citation</b><br>
12473   * Type: <b>token</b><br>
12474   * Path: <b>(Citation.classification.type)</b><br>
12475   * </p>
12476   */
12477  @SearchParamDefinition(name="classification-type", path="(Citation.classification.type)", description="A type of classification assigned to the citation", type="token" )
12478  public static final String SP_CLASSIFICATION_TYPE = "classification-type";
12479 /**
12480   * <b>Fluent Client</b> search parameter constant for <b>classification-type</b>
12481   * <p>
12482   * Description: <b>A type of classification assigned to the citation</b><br>
12483   * Type: <b>token</b><br>
12484   * Path: <b>(Citation.classification.type)</b><br>
12485   * </p>
12486   */
12487  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CLASSIFICATION_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CLASSIFICATION_TYPE);
12488
12489 /**
12490   * Search parameter: <b>classification</b>
12491   * <p>
12492   * Description: <b>A classification type and value assigned to the citation</b><br>
12493   * Type: <b>composite</b><br>
12494   * Path: <b>Citation.classification</b><br>
12495   * </p>
12496   */
12497  @SearchParamDefinition(name="classification", path="Citation.classification", description="A classification type and value assigned to the citation", type="composite", compositeOf={"classification-type", "classifier"} )
12498  public static final String SP_CLASSIFICATION = "classification";
12499 /**
12500   * <b>Fluent Client</b> search parameter constant for <b>classification</b>
12501   * <p>
12502   * Description: <b>A classification type and value assigned to the citation</b><br>
12503   * Type: <b>composite</b><br>
12504   * Path: <b>Citation.classification</b><br>
12505   * </p>
12506   */
12507  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam> CLASSIFICATION = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam>(SP_CLASSIFICATION);
12508
12509 /**
12510   * Search parameter: <b>classifier</b>
12511   * <p>
12512   * Description: <b>A classifier assigned to the citation</b><br>
12513   * Type: <b>token</b><br>
12514   * Path: <b>(Citation.classification.classifier)</b><br>
12515   * </p>
12516   */
12517  @SearchParamDefinition(name="classifier", path="(Citation.classification.classifier)", description="A classifier assigned to the citation", type="token" )
12518  public static final String SP_CLASSIFIER = "classifier";
12519 /**
12520   * <b>Fluent Client</b> search parameter constant for <b>classifier</b>
12521   * <p>
12522   * Description: <b>A classifier assigned to the citation</b><br>
12523   * Type: <b>token</b><br>
12524   * Path: <b>(Citation.classification.classifier)</b><br>
12525   * </p>
12526   */
12527  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CLASSIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CLASSIFIER);
12528
12529 /**
12530   * Search parameter: <b>effective</b>
12531   * <p>
12532   * Description: <b>Multiple Resources: 
12533
12534* [ActivityDefinition](activitydefinition.html): The time during which the activity definition is intended to be in use
12535* [ChargeItemDefinition](chargeitemdefinition.html): The time during which the charge item definition is intended to be in use
12536* [Citation](citation.html): The time during which the citation is intended to be in use
12537* [CodeSystem](codesystem.html): The time during which the CodeSystem is intended to be in use
12538* [ConceptMap](conceptmap.html): The time during which the ConceptMap is intended to be in use
12539* [EventDefinition](eventdefinition.html): The time during which the event definition is intended to be in use
12540* [Library](library.html): The time during which the library is intended to be in use
12541* [Measure](measure.html): The time during which the measure is intended to be in use
12542* [NamingSystem](namingsystem.html): The time during which the NamingSystem is intended to be in use
12543* [PlanDefinition](plandefinition.html): The time during which the plan definition is intended to be in use
12544* [Questionnaire](questionnaire.html): The time during which the questionnaire is intended to be in use
12545* [ValueSet](valueset.html): The time during which the ValueSet is intended to be in use
12546</b><br>
12547   * Type: <b>date</b><br>
12548   * Path: <b>ActivityDefinition.effectivePeriod | ChargeItemDefinition.applicability.effectivePeriod | Citation.effectivePeriod | CodeSystem.effectivePeriod | ConceptMap.effectivePeriod | EventDefinition.effectivePeriod | Library.effectivePeriod | Measure.effectivePeriod | NamingSystem.effectivePeriod | PlanDefinition.effectivePeriod | Questionnaire.effectivePeriod | ValueSet.effectivePeriod</b><br>
12549   * </p>
12550   */
12551  @SearchParamDefinition(name="effective", path="ActivityDefinition.effectivePeriod | ChargeItemDefinition.applicability.effectivePeriod | Citation.effectivePeriod | CodeSystem.effectivePeriod | ConceptMap.effectivePeriod | EventDefinition.effectivePeriod | Library.effectivePeriod | Measure.effectivePeriod | NamingSystem.effectivePeriod | PlanDefinition.effectivePeriod | Questionnaire.effectivePeriod | ValueSet.effectivePeriod", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The time during which the activity definition is intended to be in use\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The time during which the charge item definition is intended to be in use\r\n* [Citation](citation.html): The time during which the citation is intended to be in use\r\n* [CodeSystem](codesystem.html): The time during which the CodeSystem is intended to be in use\r\n* [ConceptMap](conceptmap.html): The time during which the ConceptMap is intended to be in use\r\n* [EventDefinition](eventdefinition.html): The time during which the event definition is intended to be in use\r\n* [Library](library.html): The time during which the library is intended to be in use\r\n* [Measure](measure.html): The time during which the measure is intended to be in use\r\n* [NamingSystem](namingsystem.html): The time during which the NamingSystem is intended to be in use\r\n* [PlanDefinition](plandefinition.html): The time during which the plan definition is intended to be in use\r\n* [Questionnaire](questionnaire.html): The time during which the questionnaire is intended to be in use\r\n* [ValueSet](valueset.html): The time during which the ValueSet is intended to be in use\r\n", type="date" )
12552  public static final String SP_EFFECTIVE = "effective";
12553 /**
12554   * <b>Fluent Client</b> search parameter constant for <b>effective</b>
12555   * <p>
12556   * Description: <b>Multiple Resources: 
12557
12558* [ActivityDefinition](activitydefinition.html): The time during which the activity definition is intended to be in use
12559* [ChargeItemDefinition](chargeitemdefinition.html): The time during which the charge item definition is intended to be in use
12560* [Citation](citation.html): The time during which the citation is intended to be in use
12561* [CodeSystem](codesystem.html): The time during which the CodeSystem is intended to be in use
12562* [ConceptMap](conceptmap.html): The time during which the ConceptMap is intended to be in use
12563* [EventDefinition](eventdefinition.html): The time during which the event definition is intended to be in use
12564* [Library](library.html): The time during which the library is intended to be in use
12565* [Measure](measure.html): The time during which the measure is intended to be in use
12566* [NamingSystem](namingsystem.html): The time during which the NamingSystem is intended to be in use
12567* [PlanDefinition](plandefinition.html): The time during which the plan definition is intended to be in use
12568* [Questionnaire](questionnaire.html): The time during which the questionnaire is intended to be in use
12569* [ValueSet](valueset.html): The time during which the ValueSet is intended to be in use
12570</b><br>
12571   * Type: <b>date</b><br>
12572   * Path: <b>ActivityDefinition.effectivePeriod | ChargeItemDefinition.applicability.effectivePeriod | Citation.effectivePeriod | CodeSystem.effectivePeriod | ConceptMap.effectivePeriod | EventDefinition.effectivePeriod | Library.effectivePeriod | Measure.effectivePeriod | NamingSystem.effectivePeriod | PlanDefinition.effectivePeriod | Questionnaire.effectivePeriod | ValueSet.effectivePeriod</b><br>
12573   * </p>
12574   */
12575  public static final ca.uhn.fhir.rest.gclient.DateClientParam EFFECTIVE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_EFFECTIVE);
12576
12577
12578}
12579