001package org.hl7.fhir.dstu3.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Mon, Apr 17, 2017 17:38-0400 for FHIR v3.0.1
033
034import java.util.*;
035
036import org.hl7.fhir.utilities.Utilities;
037import org.hl7.fhir.dstu3.model.Enumerations.*;
038import ca.uhn.fhir.model.api.annotation.ResourceDef;
039import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
040import ca.uhn.fhir.model.api.annotation.Child;
041import ca.uhn.fhir.model.api.annotation.ChildOrder;
042import ca.uhn.fhir.model.api.annotation.Description;
043import ca.uhn.fhir.model.api.annotation.Block;
044import org.hl7.fhir.instance.model.api.*;
045import org.hl7.fhir.exceptions.FHIRException;
046/**
047 * The Library resource is a general-purpose container for knowledge asset definitions. It can be used to describe and expose existing knowledge assets such as logic libraries and information model descriptions, as well as to describe a collection of knowledge assets.
048 */
049@ResourceDef(name="Library", profile="http://hl7.org/fhir/Profile/Library")
050@ChildOrder(names={"url", "identifier", "version", "name", "title", "status", "experimental", "type", "date", "publisher", "description", "purpose", "usage", "approvalDate", "lastReviewDate", "effectivePeriod", "useContext", "jurisdiction", "topic", "contributor", "contact", "copyright", "relatedArtifact", "parameter", "dataRequirement", "content"})
051public class Library extends MetadataResource {
052
053    /**
054     * A formal identifier that is used to identify this library when it is represented in other formats, or referenced in a specification, model, design or an instance. e.g. CMS or NQF identifiers for a measure artifact. Note that at least one identifier is required for non-experimental active artifacts.
055     */
056    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
057    @Description(shortDefinition="Additional identifier for the library", formalDefinition="A formal identifier that is used to identify this library when it is represented in other formats, or referenced in a specification, model, design or an instance. e.g. CMS or NQF identifiers for a measure artifact. Note that at least one identifier is required for non-experimental active artifacts." )
058    protected List<Identifier> identifier;
059
060    /**
061     * Identifies the type of library such as a Logic Library, Model Definition, Asset Collection, or Module Definition.
062     */
063    @Child(name = "type", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=true)
064    @Description(shortDefinition="logic-library | model-definition | asset-collection | module-definition", formalDefinition="Identifies the type of library such as a Logic Library, Model Definition, Asset Collection, or Module Definition." )
065    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/library-type")
066    protected CodeableConcept type;
067
068    /**
069     * Explaination of why this library is needed and why it has been designed as it has.
070     */
071    @Child(name = "purpose", type = {MarkdownType.class}, order=2, min=0, max=1, modifier=false, summary=false)
072    @Description(shortDefinition="Why this library is defined", formalDefinition="Explaination of why this library is needed and why it has been designed as it has." )
073    protected MarkdownType purpose;
074
075    /**
076     * A detailed description of how the library is used from a clinical perspective.
077     */
078    @Child(name = "usage", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
079    @Description(shortDefinition="Describes the clinical usage of the library", formalDefinition="A detailed description of how the library is used from a clinical perspective." )
080    protected StringType usage;
081
082    /**
083     * The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
084     */
085    @Child(name = "approvalDate", type = {DateType.class}, order=4, min=0, max=1, modifier=false, summary=false)
086    @Description(shortDefinition="When the library 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." )
087    protected DateType approvalDate;
088
089    /**
090     * The date on which the resource content was last reviewed. Review happens periodically after approval, but doesn't change the original approval date.
091     */
092    @Child(name = "lastReviewDate", type = {DateType.class}, order=5, min=0, max=1, modifier=false, summary=false)
093    @Description(shortDefinition="When the library was last reviewed", formalDefinition="The date on which the resource content was last reviewed. Review happens periodically after approval, but doesn't change the original approval date." )
094    protected DateType lastReviewDate;
095
096    /**
097     * The period during which the library content was or is planned to be in active use.
098     */
099    @Child(name = "effectivePeriod", type = {Period.class}, order=6, min=0, max=1, modifier=false, summary=true)
100    @Description(shortDefinition="When the library is expected to be used", formalDefinition="The period during which the library content was or is planned to be in active use." )
101    protected Period effectivePeriod;
102
103    /**
104     * Descriptive topics related to the content of the library. Topics provide a high-level categorization of the library that can be useful for filtering and searching.
105     */
106    @Child(name = "topic", type = {CodeableConcept.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
107    @Description(shortDefinition="E.g. Education, Treatment, Assessment, etc", formalDefinition="Descriptive topics related to the content of the library. Topics provide a high-level categorization of the library that can be useful for filtering and searching." )
108    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/definition-topic")
109    protected List<CodeableConcept> topic;
110
111    /**
112     * A contributor to the content of the library, including authors, editors, reviewers, and endorsers.
113     */
114    @Child(name = "contributor", type = {Contributor.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
115    @Description(shortDefinition="A content contributor", formalDefinition="A contributor to the content of the library, including authors, editors, reviewers, and endorsers." )
116    protected List<Contributor> contributor;
117
118    /**
119     * A copyright statement relating to the library and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the library.
120     */
121    @Child(name = "copyright", type = {MarkdownType.class}, order=9, min=0, max=1, modifier=false, summary=false)
122    @Description(shortDefinition="Use and/or publishing restrictions", formalDefinition="A copyright statement relating to the library and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the library." )
123    protected MarkdownType copyright;
124
125    /**
126     * Related artifacts such as additional documentation, justification, or bibliographic references.
127     */
128    @Child(name = "relatedArtifact", type = {RelatedArtifact.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
129    @Description(shortDefinition="Additional documentation, citations, etc.", formalDefinition="Related artifacts such as additional documentation, justification, or bibliographic references." )
130    protected List<RelatedArtifact> relatedArtifact;
131
132    /**
133     * The parameter element defines parameters used by the library.
134     */
135    @Child(name = "parameter", type = {ParameterDefinition.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
136    @Description(shortDefinition="Parameters defined by the library", formalDefinition="The parameter element defines parameters used by the library." )
137    protected List<ParameterDefinition> parameter;
138
139    /**
140     * Describes a set of data that must be provided in order to be able to successfully perform the computations defined by the library.
141     */
142    @Child(name = "dataRequirement", type = {DataRequirement.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
143    @Description(shortDefinition="What data is referenced by this library", formalDefinition="Describes a set of data that must be provided in order to be able to successfully perform the computations defined by the library." )
144    protected List<DataRequirement> dataRequirement;
145
146    /**
147     * The content of the library as an Attachment. The content may be a reference to a url, or may be directly embedded as a base-64 string. Either way, the contentType of the attachment determines how to interpret the content.
148     */
149    @Child(name = "content", type = {Attachment.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
150    @Description(shortDefinition="Contents of the library, either embedded or referenced", formalDefinition="The content of the library as an Attachment. The content may be a reference to a url, or may be directly embedded as a base-64 string. Either way, the contentType of the attachment determines how to interpret the content." )
151    protected List<Attachment> content;
152
153    private static final long serialVersionUID = -39463327L;
154
155  /**
156   * Constructor
157   */
158    public Library() {
159      super();
160    }
161
162  /**
163   * Constructor
164   */
165    public Library(Enumeration<PublicationStatus> status, CodeableConcept type) {
166      super();
167      this.status = status;
168      this.type = type;
169    }
170
171    /**
172     * @return {@link #url} (An absolute URI that is used to identify this library when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this library is (or will be) published. The URL SHOULD include the major version of the library. For more information see [Technical and Business Versions](resource.html#versions).). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
173     */
174    public UriType getUrlElement() { 
175      if (this.url == null)
176        if (Configuration.errorOnAutoCreate())
177          throw new Error("Attempt to auto-create Library.url");
178        else if (Configuration.doAutoCreate())
179          this.url = new UriType(); // bb
180      return this.url;
181    }
182
183    public boolean hasUrlElement() { 
184      return this.url != null && !this.url.isEmpty();
185    }
186
187    public boolean hasUrl() { 
188      return this.url != null && !this.url.isEmpty();
189    }
190
191    /**
192     * @param value {@link #url} (An absolute URI that is used to identify this library when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this library is (or will be) published. The URL SHOULD include the major version of the library. For more information see [Technical and Business Versions](resource.html#versions).). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
193     */
194    public Library setUrlElement(UriType value) { 
195      this.url = value;
196      return this;
197    }
198
199    /**
200     * @return An absolute URI that is used to identify this library when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this library is (or will be) published. The URL SHOULD include the major version of the library. For more information see [Technical and Business Versions](resource.html#versions).
201     */
202    public String getUrl() { 
203      return this.url == null ? null : this.url.getValue();
204    }
205
206    /**
207     * @param value An absolute URI that is used to identify this library when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this library is (or will be) published. The URL SHOULD include the major version of the library. For more information see [Technical and Business Versions](resource.html#versions).
208     */
209    public Library setUrl(String value) { 
210      if (Utilities.noString(value))
211        this.url = null;
212      else {
213        if (this.url == null)
214          this.url = new UriType();
215        this.url.setValue(value);
216      }
217      return this;
218    }
219
220    /**
221     * @return {@link #identifier} (A formal identifier that is used to identify this library when it is represented in other formats, or referenced in a specification, model, design or an instance. e.g. CMS or NQF identifiers for a measure artifact. Note that at least one identifier is required for non-experimental active artifacts.)
222     */
223    public List<Identifier> getIdentifier() { 
224      if (this.identifier == null)
225        this.identifier = new ArrayList<Identifier>();
226      return this.identifier;
227    }
228
229    /**
230     * @return Returns a reference to <code>this</code> for easy method chaining
231     */
232    public Library setIdentifier(List<Identifier> theIdentifier) { 
233      this.identifier = theIdentifier;
234      return this;
235    }
236
237    public boolean hasIdentifier() { 
238      if (this.identifier == null)
239        return false;
240      for (Identifier item : this.identifier)
241        if (!item.isEmpty())
242          return true;
243      return false;
244    }
245
246    public Identifier addIdentifier() { //3
247      Identifier t = new Identifier();
248      if (this.identifier == null)
249        this.identifier = new ArrayList<Identifier>();
250      this.identifier.add(t);
251      return t;
252    }
253
254    public Library addIdentifier(Identifier t) { //3
255      if (t == null)
256        return this;
257      if (this.identifier == null)
258        this.identifier = new ArrayList<Identifier>();
259      this.identifier.add(t);
260      return this;
261    }
262
263    /**
264     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
265     */
266    public Identifier getIdentifierFirstRep() { 
267      if (getIdentifier().isEmpty()) {
268        addIdentifier();
269      }
270      return getIdentifier().get(0);
271    }
272
273    /**
274     * @return {@link #version} (The identifier that is used to identify this version of the library when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the library 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. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active artifacts.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
275     */
276    public StringType getVersionElement() { 
277      if (this.version == null)
278        if (Configuration.errorOnAutoCreate())
279          throw new Error("Attempt to auto-create Library.version");
280        else if (Configuration.doAutoCreate())
281          this.version = new StringType(); // bb
282      return this.version;
283    }
284
285    public boolean hasVersionElement() { 
286      return this.version != null && !this.version.isEmpty();
287    }
288
289    public boolean hasVersion() { 
290      return this.version != null && !this.version.isEmpty();
291    }
292
293    /**
294     * @param value {@link #version} (The identifier that is used to identify this version of the library when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the library 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. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active artifacts.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
295     */
296    public Library setVersionElement(StringType value) { 
297      this.version = value;
298      return this;
299    }
300
301    /**
302     * @return The identifier that is used to identify this version of the library when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the library 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. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active artifacts.
303     */
304    public String getVersion() { 
305      return this.version == null ? null : this.version.getValue();
306    }
307
308    /**
309     * @param value The identifier that is used to identify this version of the library when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the library 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. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active artifacts.
310     */
311    public Library setVersion(String value) { 
312      if (Utilities.noString(value))
313        this.version = null;
314      else {
315        if (this.version == null)
316          this.version = new StringType();
317        this.version.setValue(value);
318      }
319      return this;
320    }
321
322    /**
323     * @return {@link #name} (A natural language name identifying the library. 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
324     */
325    public StringType getNameElement() { 
326      if (this.name == null)
327        if (Configuration.errorOnAutoCreate())
328          throw new Error("Attempt to auto-create Library.name");
329        else if (Configuration.doAutoCreate())
330          this.name = new StringType(); // bb
331      return this.name;
332    }
333
334    public boolean hasNameElement() { 
335      return this.name != null && !this.name.isEmpty();
336    }
337
338    public boolean hasName() { 
339      return this.name != null && !this.name.isEmpty();
340    }
341
342    /**
343     * @param value {@link #name} (A natural language name identifying the library. 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
344     */
345    public Library setNameElement(StringType value) { 
346      this.name = value;
347      return this;
348    }
349
350    /**
351     * @return A natural language name identifying the library. This name should be usable as an identifier for the module by machine processing applications such as code generation.
352     */
353    public String getName() { 
354      return this.name == null ? null : this.name.getValue();
355    }
356
357    /**
358     * @param value A natural language name identifying the library. This name should be usable as an identifier for the module by machine processing applications such as code generation.
359     */
360    public Library setName(String value) { 
361      if (Utilities.noString(value))
362        this.name = null;
363      else {
364        if (this.name == null)
365          this.name = new StringType();
366        this.name.setValue(value);
367      }
368      return this;
369    }
370
371    /**
372     * @return {@link #title} (A short, descriptive, user-friendly title for the library.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
373     */
374    public StringType getTitleElement() { 
375      if (this.title == null)
376        if (Configuration.errorOnAutoCreate())
377          throw new Error("Attempt to auto-create Library.title");
378        else if (Configuration.doAutoCreate())
379          this.title = new StringType(); // bb
380      return this.title;
381    }
382
383    public boolean hasTitleElement() { 
384      return this.title != null && !this.title.isEmpty();
385    }
386
387    public boolean hasTitle() { 
388      return this.title != null && !this.title.isEmpty();
389    }
390
391    /**
392     * @param value {@link #title} (A short, descriptive, user-friendly title for the library.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
393     */
394    public Library setTitleElement(StringType value) { 
395      this.title = value;
396      return this;
397    }
398
399    /**
400     * @return A short, descriptive, user-friendly title for the library.
401     */
402    public String getTitle() { 
403      return this.title == null ? null : this.title.getValue();
404    }
405
406    /**
407     * @param value A short, descriptive, user-friendly title for the library.
408     */
409    public Library setTitle(String value) { 
410      if (Utilities.noString(value))
411        this.title = null;
412      else {
413        if (this.title == null)
414          this.title = new StringType();
415        this.title.setValue(value);
416      }
417      return this;
418    }
419
420    /**
421     * @return {@link #status} (The status of this library. 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
422     */
423    public Enumeration<PublicationStatus> getStatusElement() { 
424      if (this.status == null)
425        if (Configuration.errorOnAutoCreate())
426          throw new Error("Attempt to auto-create Library.status");
427        else if (Configuration.doAutoCreate())
428          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
429      return this.status;
430    }
431
432    public boolean hasStatusElement() { 
433      return this.status != null && !this.status.isEmpty();
434    }
435
436    public boolean hasStatus() { 
437      return this.status != null && !this.status.isEmpty();
438    }
439
440    /**
441     * @param value {@link #status} (The status of this library. 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
442     */
443    public Library setStatusElement(Enumeration<PublicationStatus> value) { 
444      this.status = value;
445      return this;
446    }
447
448    /**
449     * @return The status of this library. Enables tracking the life-cycle of the content.
450     */
451    public PublicationStatus getStatus() { 
452      return this.status == null ? null : this.status.getValue();
453    }
454
455    /**
456     * @param value The status of this library. Enables tracking the life-cycle of the content.
457     */
458    public Library setStatus(PublicationStatus value) { 
459        if (this.status == null)
460          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
461        this.status.setValue(value);
462      return this;
463    }
464
465    /**
466     * @return {@link #experimental} (A boolean value to indicate that this library 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
467     */
468    public BooleanType getExperimentalElement() { 
469      if (this.experimental == null)
470        if (Configuration.errorOnAutoCreate())
471          throw new Error("Attempt to auto-create Library.experimental");
472        else if (Configuration.doAutoCreate())
473          this.experimental = new BooleanType(); // bb
474      return this.experimental;
475    }
476
477    public boolean hasExperimentalElement() { 
478      return this.experimental != null && !this.experimental.isEmpty();
479    }
480
481    public boolean hasExperimental() { 
482      return this.experimental != null && !this.experimental.isEmpty();
483    }
484
485    /**
486     * @param value {@link #experimental} (A boolean value to indicate that this library 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
487     */
488    public Library setExperimentalElement(BooleanType value) { 
489      this.experimental = value;
490      return this;
491    }
492
493    /**
494     * @return A boolean value to indicate that this library is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage.
495     */
496    public boolean getExperimental() { 
497      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
498    }
499
500    /**
501     * @param value A boolean value to indicate that this library is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage.
502     */
503    public Library setExperimental(boolean value) { 
504        if (this.experimental == null)
505          this.experimental = new BooleanType();
506        this.experimental.setValue(value);
507      return this;
508    }
509
510    /**
511     * @return {@link #type} (Identifies the type of library such as a Logic Library, Model Definition, Asset Collection, or Module Definition.)
512     */
513    public CodeableConcept getType() { 
514      if (this.type == null)
515        if (Configuration.errorOnAutoCreate())
516          throw new Error("Attempt to auto-create Library.type");
517        else if (Configuration.doAutoCreate())
518          this.type = new CodeableConcept(); // cc
519      return this.type;
520    }
521
522    public boolean hasType() { 
523      return this.type != null && !this.type.isEmpty();
524    }
525
526    /**
527     * @param value {@link #type} (Identifies the type of library such as a Logic Library, Model Definition, Asset Collection, or Module Definition.)
528     */
529    public Library setType(CodeableConcept value) { 
530      this.type = value;
531      return this;
532    }
533
534    /**
535     * @return {@link #date} (The date  (and optionally time) when the library was published. The date must change if and 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 library changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
536     */
537    public DateTimeType getDateElement() { 
538      if (this.date == null)
539        if (Configuration.errorOnAutoCreate())
540          throw new Error("Attempt to auto-create Library.date");
541        else if (Configuration.doAutoCreate())
542          this.date = new DateTimeType(); // bb
543      return this.date;
544    }
545
546    public boolean hasDateElement() { 
547      return this.date != null && !this.date.isEmpty();
548    }
549
550    public boolean hasDate() { 
551      return this.date != null && !this.date.isEmpty();
552    }
553
554    /**
555     * @param value {@link #date} (The date  (and optionally time) when the library was published. The date must change if and 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 library changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
556     */
557    public Library setDateElement(DateTimeType value) { 
558      this.date = value;
559      return this;
560    }
561
562    /**
563     * @return The date  (and optionally time) when the library was published. The date must change if and 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 library changes.
564     */
565    public Date getDate() { 
566      return this.date == null ? null : this.date.getValue();
567    }
568
569    /**
570     * @param value The date  (and optionally time) when the library was published. The date must change if and 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 library changes.
571     */
572    public Library setDate(Date value) { 
573      if (value == null)
574        this.date = null;
575      else {
576        if (this.date == null)
577          this.date = new DateTimeType();
578        this.date.setValue(value);
579      }
580      return this;
581    }
582
583    /**
584     * @return {@link #publisher} (The name of the individual or organization that published the library.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
585     */
586    public StringType getPublisherElement() { 
587      if (this.publisher == null)
588        if (Configuration.errorOnAutoCreate())
589          throw new Error("Attempt to auto-create Library.publisher");
590        else if (Configuration.doAutoCreate())
591          this.publisher = new StringType(); // bb
592      return this.publisher;
593    }
594
595    public boolean hasPublisherElement() { 
596      return this.publisher != null && !this.publisher.isEmpty();
597    }
598
599    public boolean hasPublisher() { 
600      return this.publisher != null && !this.publisher.isEmpty();
601    }
602
603    /**
604     * @param value {@link #publisher} (The name of the individual or organization that published the library.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
605     */
606    public Library setPublisherElement(StringType value) { 
607      this.publisher = value;
608      return this;
609    }
610
611    /**
612     * @return The name of the individual or organization that published the library.
613     */
614    public String getPublisher() { 
615      return this.publisher == null ? null : this.publisher.getValue();
616    }
617
618    /**
619     * @param value The name of the individual or organization that published the library.
620     */
621    public Library setPublisher(String value) { 
622      if (Utilities.noString(value))
623        this.publisher = null;
624      else {
625        if (this.publisher == null)
626          this.publisher = new StringType();
627        this.publisher.setValue(value);
628      }
629      return this;
630    }
631
632    /**
633     * @return {@link #description} (A free text natural language description of the library from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
634     */
635    public MarkdownType getDescriptionElement() { 
636      if (this.description == null)
637        if (Configuration.errorOnAutoCreate())
638          throw new Error("Attempt to auto-create Library.description");
639        else if (Configuration.doAutoCreate())
640          this.description = new MarkdownType(); // bb
641      return this.description;
642    }
643
644    public boolean hasDescriptionElement() { 
645      return this.description != null && !this.description.isEmpty();
646    }
647
648    public boolean hasDescription() { 
649      return this.description != null && !this.description.isEmpty();
650    }
651
652    /**
653     * @param value {@link #description} (A free text natural language description of the library from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
654     */
655    public Library setDescriptionElement(MarkdownType value) { 
656      this.description = value;
657      return this;
658    }
659
660    /**
661     * @return A free text natural language description of the library from a consumer's perspective.
662     */
663    public String getDescription() { 
664      return this.description == null ? null : this.description.getValue();
665    }
666
667    /**
668     * @param value A free text natural language description of the library from a consumer's perspective.
669     */
670    public Library setDescription(String value) { 
671      if (value == null)
672        this.description = null;
673      else {
674        if (this.description == null)
675          this.description = new MarkdownType();
676        this.description.setValue(value);
677      }
678      return this;
679    }
680
681    /**
682     * @return {@link #purpose} (Explaination of why this library 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
683     */
684    public MarkdownType getPurposeElement() { 
685      if (this.purpose == null)
686        if (Configuration.errorOnAutoCreate())
687          throw new Error("Attempt to auto-create Library.purpose");
688        else if (Configuration.doAutoCreate())
689          this.purpose = new MarkdownType(); // bb
690      return this.purpose;
691    }
692
693    public boolean hasPurposeElement() { 
694      return this.purpose != null && !this.purpose.isEmpty();
695    }
696
697    public boolean hasPurpose() { 
698      return this.purpose != null && !this.purpose.isEmpty();
699    }
700
701    /**
702     * @param value {@link #purpose} (Explaination of why this library 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
703     */
704    public Library setPurposeElement(MarkdownType value) { 
705      this.purpose = value;
706      return this;
707    }
708
709    /**
710     * @return Explaination of why this library is needed and why it has been designed as it has.
711     */
712    public String getPurpose() { 
713      return this.purpose == null ? null : this.purpose.getValue();
714    }
715
716    /**
717     * @param value Explaination of why this library is needed and why it has been designed as it has.
718     */
719    public Library setPurpose(String value) { 
720      if (value == null)
721        this.purpose = null;
722      else {
723        if (this.purpose == null)
724          this.purpose = new MarkdownType();
725        this.purpose.setValue(value);
726      }
727      return this;
728    }
729
730    /**
731     * @return {@link #usage} (A detailed description of how the library is used from a clinical perspective.). This is the underlying object with id, value and extensions. The accessor "getUsage" gives direct access to the value
732     */
733    public StringType getUsageElement() { 
734      if (this.usage == null)
735        if (Configuration.errorOnAutoCreate())
736          throw new Error("Attempt to auto-create Library.usage");
737        else if (Configuration.doAutoCreate())
738          this.usage = new StringType(); // bb
739      return this.usage;
740    }
741
742    public boolean hasUsageElement() { 
743      return this.usage != null && !this.usage.isEmpty();
744    }
745
746    public boolean hasUsage() { 
747      return this.usage != null && !this.usage.isEmpty();
748    }
749
750    /**
751     * @param value {@link #usage} (A detailed description of how the library is used from a clinical perspective.). This is the underlying object with id, value and extensions. The accessor "getUsage" gives direct access to the value
752     */
753    public Library setUsageElement(StringType value) { 
754      this.usage = value;
755      return this;
756    }
757
758    /**
759     * @return A detailed description of how the library is used from a clinical perspective.
760     */
761    public String getUsage() { 
762      return this.usage == null ? null : this.usage.getValue();
763    }
764
765    /**
766     * @param value A detailed description of how the library is used from a clinical perspective.
767     */
768    public Library setUsage(String value) { 
769      if (Utilities.noString(value))
770        this.usage = null;
771      else {
772        if (this.usage == null)
773          this.usage = new StringType();
774        this.usage.setValue(value);
775      }
776      return this;
777    }
778
779    /**
780     * @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
781     */
782    public DateType getApprovalDateElement() { 
783      if (this.approvalDate == null)
784        if (Configuration.errorOnAutoCreate())
785          throw new Error("Attempt to auto-create Library.approvalDate");
786        else if (Configuration.doAutoCreate())
787          this.approvalDate = new DateType(); // bb
788      return this.approvalDate;
789    }
790
791    public boolean hasApprovalDateElement() { 
792      return this.approvalDate != null && !this.approvalDate.isEmpty();
793    }
794
795    public boolean hasApprovalDate() { 
796      return this.approvalDate != null && !this.approvalDate.isEmpty();
797    }
798
799    /**
800     * @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
801     */
802    public Library setApprovalDateElement(DateType value) { 
803      this.approvalDate = value;
804      return this;
805    }
806
807    /**
808     * @return The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
809     */
810    public Date getApprovalDate() { 
811      return this.approvalDate == null ? null : this.approvalDate.getValue();
812    }
813
814    /**
815     * @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.
816     */
817    public Library setApprovalDate(Date value) { 
818      if (value == null)
819        this.approvalDate = null;
820      else {
821        if (this.approvalDate == null)
822          this.approvalDate = new DateType();
823        this.approvalDate.setValue(value);
824      }
825      return this;
826    }
827
828    /**
829     * @return {@link #lastReviewDate} (The date on which the resource content was last reviewed. Review happens periodically after approval, but doesn't change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
830     */
831    public DateType getLastReviewDateElement() { 
832      if (this.lastReviewDate == null)
833        if (Configuration.errorOnAutoCreate())
834          throw new Error("Attempt to auto-create Library.lastReviewDate");
835        else if (Configuration.doAutoCreate())
836          this.lastReviewDate = new DateType(); // bb
837      return this.lastReviewDate;
838    }
839
840    public boolean hasLastReviewDateElement() { 
841      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
842    }
843
844    public boolean hasLastReviewDate() { 
845      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
846    }
847
848    /**
849     * @param value {@link #lastReviewDate} (The date on which the resource content was last reviewed. Review happens periodically after approval, but doesn't change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
850     */
851    public Library setLastReviewDateElement(DateType value) { 
852      this.lastReviewDate = value;
853      return this;
854    }
855
856    /**
857     * @return The date on which the resource content was last reviewed. Review happens periodically after approval, but doesn't change the original approval date.
858     */
859    public Date getLastReviewDate() { 
860      return this.lastReviewDate == null ? null : this.lastReviewDate.getValue();
861    }
862
863    /**
864     * @param value The date on which the resource content was last reviewed. Review happens periodically after approval, but doesn't change the original approval date.
865     */
866    public Library setLastReviewDate(Date value) { 
867      if (value == null)
868        this.lastReviewDate = null;
869      else {
870        if (this.lastReviewDate == null)
871          this.lastReviewDate = new DateType();
872        this.lastReviewDate.setValue(value);
873      }
874      return this;
875    }
876
877    /**
878     * @return {@link #effectivePeriod} (The period during which the library content was or is planned to be in active use.)
879     */
880    public Period getEffectivePeriod() { 
881      if (this.effectivePeriod == null)
882        if (Configuration.errorOnAutoCreate())
883          throw new Error("Attempt to auto-create Library.effectivePeriod");
884        else if (Configuration.doAutoCreate())
885          this.effectivePeriod = new Period(); // cc
886      return this.effectivePeriod;
887    }
888
889    public boolean hasEffectivePeriod() { 
890      return this.effectivePeriod != null && !this.effectivePeriod.isEmpty();
891    }
892
893    /**
894     * @param value {@link #effectivePeriod} (The period during which the library content was or is planned to be in active use.)
895     */
896    public Library setEffectivePeriod(Period value) { 
897      this.effectivePeriod = value;
898      return this;
899    }
900
901    /**
902     * @return {@link #useContext} (The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate library instances.)
903     */
904    public List<UsageContext> getUseContext() { 
905      if (this.useContext == null)
906        this.useContext = new ArrayList<UsageContext>();
907      return this.useContext;
908    }
909
910    /**
911     * @return Returns a reference to <code>this</code> for easy method chaining
912     */
913    public Library setUseContext(List<UsageContext> theUseContext) { 
914      this.useContext = theUseContext;
915      return this;
916    }
917
918    public boolean hasUseContext() { 
919      if (this.useContext == null)
920        return false;
921      for (UsageContext item : this.useContext)
922        if (!item.isEmpty())
923          return true;
924      return false;
925    }
926
927    public UsageContext addUseContext() { //3
928      UsageContext t = new UsageContext();
929      if (this.useContext == null)
930        this.useContext = new ArrayList<UsageContext>();
931      this.useContext.add(t);
932      return t;
933    }
934
935    public Library addUseContext(UsageContext t) { //3
936      if (t == null)
937        return this;
938      if (this.useContext == null)
939        this.useContext = new ArrayList<UsageContext>();
940      this.useContext.add(t);
941      return this;
942    }
943
944    /**
945     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist
946     */
947    public UsageContext getUseContextFirstRep() { 
948      if (getUseContext().isEmpty()) {
949        addUseContext();
950      }
951      return getUseContext().get(0);
952    }
953
954    /**
955     * @return {@link #jurisdiction} (A legal or geographic region in which the library is intended to be used.)
956     */
957    public List<CodeableConcept> getJurisdiction() { 
958      if (this.jurisdiction == null)
959        this.jurisdiction = new ArrayList<CodeableConcept>();
960      return this.jurisdiction;
961    }
962
963    /**
964     * @return Returns a reference to <code>this</code> for easy method chaining
965     */
966    public Library setJurisdiction(List<CodeableConcept> theJurisdiction) { 
967      this.jurisdiction = theJurisdiction;
968      return this;
969    }
970
971    public boolean hasJurisdiction() { 
972      if (this.jurisdiction == null)
973        return false;
974      for (CodeableConcept item : this.jurisdiction)
975        if (!item.isEmpty())
976          return true;
977      return false;
978    }
979
980    public CodeableConcept addJurisdiction() { //3
981      CodeableConcept t = new CodeableConcept();
982      if (this.jurisdiction == null)
983        this.jurisdiction = new ArrayList<CodeableConcept>();
984      this.jurisdiction.add(t);
985      return t;
986    }
987
988    public Library addJurisdiction(CodeableConcept t) { //3
989      if (t == null)
990        return this;
991      if (this.jurisdiction == null)
992        this.jurisdiction = new ArrayList<CodeableConcept>();
993      this.jurisdiction.add(t);
994      return this;
995    }
996
997    /**
998     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist
999     */
1000    public CodeableConcept getJurisdictionFirstRep() { 
1001      if (getJurisdiction().isEmpty()) {
1002        addJurisdiction();
1003      }
1004      return getJurisdiction().get(0);
1005    }
1006
1007    /**
1008     * @return {@link #topic} (Descriptive topics related to the content of the library. Topics provide a high-level categorization of the library that can be useful for filtering and searching.)
1009     */
1010    public List<CodeableConcept> getTopic() { 
1011      if (this.topic == null)
1012        this.topic = new ArrayList<CodeableConcept>();
1013      return this.topic;
1014    }
1015
1016    /**
1017     * @return Returns a reference to <code>this</code> for easy method chaining
1018     */
1019    public Library setTopic(List<CodeableConcept> theTopic) { 
1020      this.topic = theTopic;
1021      return this;
1022    }
1023
1024    public boolean hasTopic() { 
1025      if (this.topic == null)
1026        return false;
1027      for (CodeableConcept item : this.topic)
1028        if (!item.isEmpty())
1029          return true;
1030      return false;
1031    }
1032
1033    public CodeableConcept addTopic() { //3
1034      CodeableConcept t = new CodeableConcept();
1035      if (this.topic == null)
1036        this.topic = new ArrayList<CodeableConcept>();
1037      this.topic.add(t);
1038      return t;
1039    }
1040
1041    public Library addTopic(CodeableConcept t) { //3
1042      if (t == null)
1043        return this;
1044      if (this.topic == null)
1045        this.topic = new ArrayList<CodeableConcept>();
1046      this.topic.add(t);
1047      return this;
1048    }
1049
1050    /**
1051     * @return The first repetition of repeating field {@link #topic}, creating it if it does not already exist
1052     */
1053    public CodeableConcept getTopicFirstRep() { 
1054      if (getTopic().isEmpty()) {
1055        addTopic();
1056      }
1057      return getTopic().get(0);
1058    }
1059
1060    /**
1061     * @return {@link #contributor} (A contributor to the content of the library, including authors, editors, reviewers, and endorsers.)
1062     */
1063    public List<Contributor> getContributor() { 
1064      if (this.contributor == null)
1065        this.contributor = new ArrayList<Contributor>();
1066      return this.contributor;
1067    }
1068
1069    /**
1070     * @return Returns a reference to <code>this</code> for easy method chaining
1071     */
1072    public Library setContributor(List<Contributor> theContributor) { 
1073      this.contributor = theContributor;
1074      return this;
1075    }
1076
1077    public boolean hasContributor() { 
1078      if (this.contributor == null)
1079        return false;
1080      for (Contributor item : this.contributor)
1081        if (!item.isEmpty())
1082          return true;
1083      return false;
1084    }
1085
1086    public Contributor addContributor() { //3
1087      Contributor t = new Contributor();
1088      if (this.contributor == null)
1089        this.contributor = new ArrayList<Contributor>();
1090      this.contributor.add(t);
1091      return t;
1092    }
1093
1094    public Library addContributor(Contributor t) { //3
1095      if (t == null)
1096        return this;
1097      if (this.contributor == null)
1098        this.contributor = new ArrayList<Contributor>();
1099      this.contributor.add(t);
1100      return this;
1101    }
1102
1103    /**
1104     * @return The first repetition of repeating field {@link #contributor}, creating it if it does not already exist
1105     */
1106    public Contributor getContributorFirstRep() { 
1107      if (getContributor().isEmpty()) {
1108        addContributor();
1109      }
1110      return getContributor().get(0);
1111    }
1112
1113    /**
1114     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
1115     */
1116    public List<ContactDetail> getContact() { 
1117      if (this.contact == null)
1118        this.contact = new ArrayList<ContactDetail>();
1119      return this.contact;
1120    }
1121
1122    /**
1123     * @return Returns a reference to <code>this</code> for easy method chaining
1124     */
1125    public Library setContact(List<ContactDetail> theContact) { 
1126      this.contact = theContact;
1127      return this;
1128    }
1129
1130    public boolean hasContact() { 
1131      if (this.contact == null)
1132        return false;
1133      for (ContactDetail item : this.contact)
1134        if (!item.isEmpty())
1135          return true;
1136      return false;
1137    }
1138
1139    public ContactDetail addContact() { //3
1140      ContactDetail t = new ContactDetail();
1141      if (this.contact == null)
1142        this.contact = new ArrayList<ContactDetail>();
1143      this.contact.add(t);
1144      return t;
1145    }
1146
1147    public Library addContact(ContactDetail t) { //3
1148      if (t == null)
1149        return this;
1150      if (this.contact == null)
1151        this.contact = new ArrayList<ContactDetail>();
1152      this.contact.add(t);
1153      return this;
1154    }
1155
1156    /**
1157     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist
1158     */
1159    public ContactDetail getContactFirstRep() { 
1160      if (getContact().isEmpty()) {
1161        addContact();
1162      }
1163      return getContact().get(0);
1164    }
1165
1166    /**
1167     * @return {@link #copyright} (A copyright statement relating to the library and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the library.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
1168     */
1169    public MarkdownType getCopyrightElement() { 
1170      if (this.copyright == null)
1171        if (Configuration.errorOnAutoCreate())
1172          throw new Error("Attempt to auto-create Library.copyright");
1173        else if (Configuration.doAutoCreate())
1174          this.copyright = new MarkdownType(); // bb
1175      return this.copyright;
1176    }
1177
1178    public boolean hasCopyrightElement() { 
1179      return this.copyright != null && !this.copyright.isEmpty();
1180    }
1181
1182    public boolean hasCopyright() { 
1183      return this.copyright != null && !this.copyright.isEmpty();
1184    }
1185
1186    /**
1187     * @param value {@link #copyright} (A copyright statement relating to the library and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the library.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
1188     */
1189    public Library setCopyrightElement(MarkdownType value) { 
1190      this.copyright = value;
1191      return this;
1192    }
1193
1194    /**
1195     * @return A copyright statement relating to the library and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the library.
1196     */
1197    public String getCopyright() { 
1198      return this.copyright == null ? null : this.copyright.getValue();
1199    }
1200
1201    /**
1202     * @param value A copyright statement relating to the library and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the library.
1203     */
1204    public Library setCopyright(String value) { 
1205      if (value == null)
1206        this.copyright = null;
1207      else {
1208        if (this.copyright == null)
1209          this.copyright = new MarkdownType();
1210        this.copyright.setValue(value);
1211      }
1212      return this;
1213    }
1214
1215    /**
1216     * @return {@link #relatedArtifact} (Related artifacts such as additional documentation, justification, or bibliographic references.)
1217     */
1218    public List<RelatedArtifact> getRelatedArtifact() { 
1219      if (this.relatedArtifact == null)
1220        this.relatedArtifact = new ArrayList<RelatedArtifact>();
1221      return this.relatedArtifact;
1222    }
1223
1224    /**
1225     * @return Returns a reference to <code>this</code> for easy method chaining
1226     */
1227    public Library setRelatedArtifact(List<RelatedArtifact> theRelatedArtifact) { 
1228      this.relatedArtifact = theRelatedArtifact;
1229      return this;
1230    }
1231
1232    public boolean hasRelatedArtifact() { 
1233      if (this.relatedArtifact == null)
1234        return false;
1235      for (RelatedArtifact item : this.relatedArtifact)
1236        if (!item.isEmpty())
1237          return true;
1238      return false;
1239    }
1240
1241    public RelatedArtifact addRelatedArtifact() { //3
1242      RelatedArtifact t = new RelatedArtifact();
1243      if (this.relatedArtifact == null)
1244        this.relatedArtifact = new ArrayList<RelatedArtifact>();
1245      this.relatedArtifact.add(t);
1246      return t;
1247    }
1248
1249    public Library addRelatedArtifact(RelatedArtifact t) { //3
1250      if (t == null)
1251        return this;
1252      if (this.relatedArtifact == null)
1253        this.relatedArtifact = new ArrayList<RelatedArtifact>();
1254      this.relatedArtifact.add(t);
1255      return this;
1256    }
1257
1258    /**
1259     * @return The first repetition of repeating field {@link #relatedArtifact}, creating it if it does not already exist
1260     */
1261    public RelatedArtifact getRelatedArtifactFirstRep() { 
1262      if (getRelatedArtifact().isEmpty()) {
1263        addRelatedArtifact();
1264      }
1265      return getRelatedArtifact().get(0);
1266    }
1267
1268    /**
1269     * @return {@link #parameter} (The parameter element defines parameters used by the library.)
1270     */
1271    public List<ParameterDefinition> getParameter() { 
1272      if (this.parameter == null)
1273        this.parameter = new ArrayList<ParameterDefinition>();
1274      return this.parameter;
1275    }
1276
1277    /**
1278     * @return Returns a reference to <code>this</code> for easy method chaining
1279     */
1280    public Library setParameter(List<ParameterDefinition> theParameter) { 
1281      this.parameter = theParameter;
1282      return this;
1283    }
1284
1285    public boolean hasParameter() { 
1286      if (this.parameter == null)
1287        return false;
1288      for (ParameterDefinition item : this.parameter)
1289        if (!item.isEmpty())
1290          return true;
1291      return false;
1292    }
1293
1294    public ParameterDefinition addParameter() { //3
1295      ParameterDefinition t = new ParameterDefinition();
1296      if (this.parameter == null)
1297        this.parameter = new ArrayList<ParameterDefinition>();
1298      this.parameter.add(t);
1299      return t;
1300    }
1301
1302    public Library addParameter(ParameterDefinition t) { //3
1303      if (t == null)
1304        return this;
1305      if (this.parameter == null)
1306        this.parameter = new ArrayList<ParameterDefinition>();
1307      this.parameter.add(t);
1308      return this;
1309    }
1310
1311    /**
1312     * @return The first repetition of repeating field {@link #parameter}, creating it if it does not already exist
1313     */
1314    public ParameterDefinition getParameterFirstRep() { 
1315      if (getParameter().isEmpty()) {
1316        addParameter();
1317      }
1318      return getParameter().get(0);
1319    }
1320
1321    /**
1322     * @return {@link #dataRequirement} (Describes a set of data that must be provided in order to be able to successfully perform the computations defined by the library.)
1323     */
1324    public List<DataRequirement> getDataRequirement() { 
1325      if (this.dataRequirement == null)
1326        this.dataRequirement = new ArrayList<DataRequirement>();
1327      return this.dataRequirement;
1328    }
1329
1330    /**
1331     * @return Returns a reference to <code>this</code> for easy method chaining
1332     */
1333    public Library setDataRequirement(List<DataRequirement> theDataRequirement) { 
1334      this.dataRequirement = theDataRequirement;
1335      return this;
1336    }
1337
1338    public boolean hasDataRequirement() { 
1339      if (this.dataRequirement == null)
1340        return false;
1341      for (DataRequirement item : this.dataRequirement)
1342        if (!item.isEmpty())
1343          return true;
1344      return false;
1345    }
1346
1347    public DataRequirement addDataRequirement() { //3
1348      DataRequirement t = new DataRequirement();
1349      if (this.dataRequirement == null)
1350        this.dataRequirement = new ArrayList<DataRequirement>();
1351      this.dataRequirement.add(t);
1352      return t;
1353    }
1354
1355    public Library addDataRequirement(DataRequirement t) { //3
1356      if (t == null)
1357        return this;
1358      if (this.dataRequirement == null)
1359        this.dataRequirement = new ArrayList<DataRequirement>();
1360      this.dataRequirement.add(t);
1361      return this;
1362    }
1363
1364    /**
1365     * @return The first repetition of repeating field {@link #dataRequirement}, creating it if it does not already exist
1366     */
1367    public DataRequirement getDataRequirementFirstRep() { 
1368      if (getDataRequirement().isEmpty()) {
1369        addDataRequirement();
1370      }
1371      return getDataRequirement().get(0);
1372    }
1373
1374    /**
1375     * @return {@link #content} (The content of the library as an Attachment. The content may be a reference to a url, or may be directly embedded as a base-64 string. Either way, the contentType of the attachment determines how to interpret the content.)
1376     */
1377    public List<Attachment> getContent() { 
1378      if (this.content == null)
1379        this.content = new ArrayList<Attachment>();
1380      return this.content;
1381    }
1382
1383    /**
1384     * @return Returns a reference to <code>this</code> for easy method chaining
1385     */
1386    public Library setContent(List<Attachment> theContent) { 
1387      this.content = theContent;
1388      return this;
1389    }
1390
1391    public boolean hasContent() { 
1392      if (this.content == null)
1393        return false;
1394      for (Attachment item : this.content)
1395        if (!item.isEmpty())
1396          return true;
1397      return false;
1398    }
1399
1400    public Attachment addContent() { //3
1401      Attachment t = new Attachment();
1402      if (this.content == null)
1403        this.content = new ArrayList<Attachment>();
1404      this.content.add(t);
1405      return t;
1406    }
1407
1408    public Library addContent(Attachment t) { //3
1409      if (t == null)
1410        return this;
1411      if (this.content == null)
1412        this.content = new ArrayList<Attachment>();
1413      this.content.add(t);
1414      return this;
1415    }
1416
1417    /**
1418     * @return The first repetition of repeating field {@link #content}, creating it if it does not already exist
1419     */
1420    public Attachment getContentFirstRep() { 
1421      if (getContent().isEmpty()) {
1422        addContent();
1423      }
1424      return getContent().get(0);
1425    }
1426
1427      protected void listChildren(List<Property> childrenList) {
1428        super.listChildren(childrenList);
1429        childrenList.add(new Property("url", "uri", "An absolute URI that is used to identify this library when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this library is (or will be) published. The URL SHOULD include the major version of the library. For more information see [Technical and Business Versions](resource.html#versions).", 0, java.lang.Integer.MAX_VALUE, url));
1430        childrenList.add(new Property("identifier", "Identifier", "A formal identifier that is used to identify this library when it is represented in other formats, or referenced in a specification, model, design or an instance. e.g. CMS or NQF identifiers for a measure artifact. Note that at least one identifier is required for non-experimental active artifacts.", 0, java.lang.Integer.MAX_VALUE, identifier));
1431        childrenList.add(new Property("version", "string", "The identifier that is used to identify this version of the library when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the library 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. To provide a version consistent with the Decision Support Service specification, use the format Major.Minor.Revision (e.g. 1.0.0). For more information on versioning knowledge assets, refer to the Decision Support Service specification. Note that a version is required for non-experimental active artifacts.", 0, java.lang.Integer.MAX_VALUE, version));
1432        childrenList.add(new Property("name", "string", "A natural language name identifying the library. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, java.lang.Integer.MAX_VALUE, name));
1433        childrenList.add(new Property("title", "string", "A short, descriptive, user-friendly title for the library.", 0, java.lang.Integer.MAX_VALUE, title));
1434        childrenList.add(new Property("status", "code", "The status of this library. Enables tracking the life-cycle of the content.", 0, java.lang.Integer.MAX_VALUE, status));
1435        childrenList.add(new Property("experimental", "boolean", "A boolean value to indicate that this library is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage.", 0, java.lang.Integer.MAX_VALUE, experimental));
1436        childrenList.add(new Property("type", "CodeableConcept", "Identifies the type of library such as a Logic Library, Model Definition, Asset Collection, or Module Definition.", 0, java.lang.Integer.MAX_VALUE, type));
1437        childrenList.add(new Property("date", "dateTime", "The date  (and optionally time) when the library was published. The date must change if and 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 library changes.", 0, java.lang.Integer.MAX_VALUE, date));
1438        childrenList.add(new Property("publisher", "string", "The name of the individual or organization that published the library.", 0, java.lang.Integer.MAX_VALUE, publisher));
1439        childrenList.add(new Property("description", "markdown", "A free text natural language description of the library from a consumer's perspective.", 0, java.lang.Integer.MAX_VALUE, description));
1440        childrenList.add(new Property("purpose", "markdown", "Explaination of why this library is needed and why it has been designed as it has.", 0, java.lang.Integer.MAX_VALUE, purpose));
1441        childrenList.add(new Property("usage", "string", "A detailed description of how the library is used from a clinical perspective.", 0, java.lang.Integer.MAX_VALUE, usage));
1442        childrenList.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, java.lang.Integer.MAX_VALUE, approvalDate));
1443        childrenList.add(new Property("lastReviewDate", "date", "The date on which the resource content was last reviewed. Review happens periodically after approval, but doesn't change the original approval date.", 0, java.lang.Integer.MAX_VALUE, lastReviewDate));
1444        childrenList.add(new Property("effectivePeriod", "Period", "The period during which the library content was or is planned to be in active use.", 0, java.lang.Integer.MAX_VALUE, effectivePeriod));
1445        childrenList.add(new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate library instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
1446        childrenList.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the library is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
1447        childrenList.add(new Property("topic", "CodeableConcept", "Descriptive topics related to the content of the library. Topics provide a high-level categorization of the library that can be useful for filtering and searching.", 0, java.lang.Integer.MAX_VALUE, topic));
1448        childrenList.add(new Property("contributor", "Contributor", "A contributor to the content of the library, including authors, editors, reviewers, and endorsers.", 0, java.lang.Integer.MAX_VALUE, contributor));
1449        childrenList.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));
1450        childrenList.add(new Property("copyright", "markdown", "A copyright statement relating to the library and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the library.", 0, java.lang.Integer.MAX_VALUE, copyright));
1451        childrenList.add(new Property("relatedArtifact", "RelatedArtifact", "Related artifacts such as additional documentation, justification, or bibliographic references.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact));
1452        childrenList.add(new Property("parameter", "ParameterDefinition", "The parameter element defines parameters used by the library.", 0, java.lang.Integer.MAX_VALUE, parameter));
1453        childrenList.add(new Property("dataRequirement", "DataRequirement", "Describes a set of data that must be provided in order to be able to successfully perform the computations defined by the library.", 0, java.lang.Integer.MAX_VALUE, dataRequirement));
1454        childrenList.add(new Property("content", "Attachment", "The content of the library as an Attachment. The content may be a reference to a url, or may be directly embedded as a base-64 string. Either way, the contentType of the attachment determines how to interpret the content.", 0, java.lang.Integer.MAX_VALUE, content));
1455      }
1456
1457      @Override
1458      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1459        switch (hash) {
1460        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
1461        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1462        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
1463        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
1464        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
1465        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
1466        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
1467        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
1468        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
1469        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
1470        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
1471        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
1472        case 111574433: /*usage*/ return this.usage == null ? new Base[0] : new Base[] {this.usage}; // StringType
1473        case 223539345: /*approvalDate*/ return this.approvalDate == null ? new Base[0] : new Base[] {this.approvalDate}; // DateType
1474        case -1687512484: /*lastReviewDate*/ return this.lastReviewDate == null ? new Base[0] : new Base[] {this.lastReviewDate}; // DateType
1475        case -403934648: /*effectivePeriod*/ return this.effectivePeriod == null ? new Base[0] : new Base[] {this.effectivePeriod}; // Period
1476        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
1477        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
1478        case 110546223: /*topic*/ return this.topic == null ? new Base[0] : this.topic.toArray(new Base[this.topic.size()]); // CodeableConcept
1479        case -1895276325: /*contributor*/ return this.contributor == null ? new Base[0] : this.contributor.toArray(new Base[this.contributor.size()]); // Contributor
1480        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
1481        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
1482        case 666807069: /*relatedArtifact*/ return this.relatedArtifact == null ? new Base[0] : this.relatedArtifact.toArray(new Base[this.relatedArtifact.size()]); // RelatedArtifact
1483        case 1954460585: /*parameter*/ return this.parameter == null ? new Base[0] : this.parameter.toArray(new Base[this.parameter.size()]); // ParameterDefinition
1484        case 629147193: /*dataRequirement*/ return this.dataRequirement == null ? new Base[0] : this.dataRequirement.toArray(new Base[this.dataRequirement.size()]); // DataRequirement
1485        case 951530617: /*content*/ return this.content == null ? new Base[0] : this.content.toArray(new Base[this.content.size()]); // Attachment
1486        default: return super.getProperty(hash, name, checkValid);
1487        }
1488
1489      }
1490
1491      @Override
1492      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1493        switch (hash) {
1494        case 116079: // url
1495          this.url = castToUri(value); // UriType
1496          return value;
1497        case -1618432855: // identifier
1498          this.getIdentifier().add(castToIdentifier(value)); // Identifier
1499          return value;
1500        case 351608024: // version
1501          this.version = castToString(value); // StringType
1502          return value;
1503        case 3373707: // name
1504          this.name = castToString(value); // StringType
1505          return value;
1506        case 110371416: // title
1507          this.title = castToString(value); // StringType
1508          return value;
1509        case -892481550: // status
1510          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
1511          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
1512          return value;
1513        case -404562712: // experimental
1514          this.experimental = castToBoolean(value); // BooleanType
1515          return value;
1516        case 3575610: // type
1517          this.type = castToCodeableConcept(value); // CodeableConcept
1518          return value;
1519        case 3076014: // date
1520          this.date = castToDateTime(value); // DateTimeType
1521          return value;
1522        case 1447404028: // publisher
1523          this.publisher = castToString(value); // StringType
1524          return value;
1525        case -1724546052: // description
1526          this.description = castToMarkdown(value); // MarkdownType
1527          return value;
1528        case -220463842: // purpose
1529          this.purpose = castToMarkdown(value); // MarkdownType
1530          return value;
1531        case 111574433: // usage
1532          this.usage = castToString(value); // StringType
1533          return value;
1534        case 223539345: // approvalDate
1535          this.approvalDate = castToDate(value); // DateType
1536          return value;
1537        case -1687512484: // lastReviewDate
1538          this.lastReviewDate = castToDate(value); // DateType
1539          return value;
1540        case -403934648: // effectivePeriod
1541          this.effectivePeriod = castToPeriod(value); // Period
1542          return value;
1543        case -669707736: // useContext
1544          this.getUseContext().add(castToUsageContext(value)); // UsageContext
1545          return value;
1546        case -507075711: // jurisdiction
1547          this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept
1548          return value;
1549        case 110546223: // topic
1550          this.getTopic().add(castToCodeableConcept(value)); // CodeableConcept
1551          return value;
1552        case -1895276325: // contributor
1553          this.getContributor().add(castToContributor(value)); // Contributor
1554          return value;
1555        case 951526432: // contact
1556          this.getContact().add(castToContactDetail(value)); // ContactDetail
1557          return value;
1558        case 1522889671: // copyright
1559          this.copyright = castToMarkdown(value); // MarkdownType
1560          return value;
1561        case 666807069: // relatedArtifact
1562          this.getRelatedArtifact().add(castToRelatedArtifact(value)); // RelatedArtifact
1563          return value;
1564        case 1954460585: // parameter
1565          this.getParameter().add(castToParameterDefinition(value)); // ParameterDefinition
1566          return value;
1567        case 629147193: // dataRequirement
1568          this.getDataRequirement().add(castToDataRequirement(value)); // DataRequirement
1569          return value;
1570        case 951530617: // content
1571          this.getContent().add(castToAttachment(value)); // Attachment
1572          return value;
1573        default: return super.setProperty(hash, name, value);
1574        }
1575
1576      }
1577
1578      @Override
1579      public Base setProperty(String name, Base value) throws FHIRException {
1580        if (name.equals("url")) {
1581          this.url = castToUri(value); // UriType
1582        } else if (name.equals("identifier")) {
1583          this.getIdentifier().add(castToIdentifier(value));
1584        } else if (name.equals("version")) {
1585          this.version = castToString(value); // StringType
1586        } else if (name.equals("name")) {
1587          this.name = castToString(value); // StringType
1588        } else if (name.equals("title")) {
1589          this.title = castToString(value); // StringType
1590        } else if (name.equals("status")) {
1591          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
1592          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
1593        } else if (name.equals("experimental")) {
1594          this.experimental = castToBoolean(value); // BooleanType
1595        } else if (name.equals("type")) {
1596          this.type = castToCodeableConcept(value); // CodeableConcept
1597        } else if (name.equals("date")) {
1598          this.date = castToDateTime(value); // DateTimeType
1599        } else if (name.equals("publisher")) {
1600          this.publisher = castToString(value); // StringType
1601        } else if (name.equals("description")) {
1602          this.description = castToMarkdown(value); // MarkdownType
1603        } else if (name.equals("purpose")) {
1604          this.purpose = castToMarkdown(value); // MarkdownType
1605        } else if (name.equals("usage")) {
1606          this.usage = castToString(value); // StringType
1607        } else if (name.equals("approvalDate")) {
1608          this.approvalDate = castToDate(value); // DateType
1609        } else if (name.equals("lastReviewDate")) {
1610          this.lastReviewDate = castToDate(value); // DateType
1611        } else if (name.equals("effectivePeriod")) {
1612          this.effectivePeriod = castToPeriod(value); // Period
1613        } else if (name.equals("useContext")) {
1614          this.getUseContext().add(castToUsageContext(value));
1615        } else if (name.equals("jurisdiction")) {
1616          this.getJurisdiction().add(castToCodeableConcept(value));
1617        } else if (name.equals("topic")) {
1618          this.getTopic().add(castToCodeableConcept(value));
1619        } else if (name.equals("contributor")) {
1620          this.getContributor().add(castToContributor(value));
1621        } else if (name.equals("contact")) {
1622          this.getContact().add(castToContactDetail(value));
1623        } else if (name.equals("copyright")) {
1624          this.copyright = castToMarkdown(value); // MarkdownType
1625        } else if (name.equals("relatedArtifact")) {
1626          this.getRelatedArtifact().add(castToRelatedArtifact(value));
1627        } else if (name.equals("parameter")) {
1628          this.getParameter().add(castToParameterDefinition(value));
1629        } else if (name.equals("dataRequirement")) {
1630          this.getDataRequirement().add(castToDataRequirement(value));
1631        } else if (name.equals("content")) {
1632          this.getContent().add(castToAttachment(value));
1633        } else
1634          return super.setProperty(name, value);
1635        return value;
1636      }
1637
1638      @Override
1639      public Base makeProperty(int hash, String name) throws FHIRException {
1640        switch (hash) {
1641        case 116079:  return getUrlElement();
1642        case -1618432855:  return addIdentifier(); 
1643        case 351608024:  return getVersionElement();
1644        case 3373707:  return getNameElement();
1645        case 110371416:  return getTitleElement();
1646        case -892481550:  return getStatusElement();
1647        case -404562712:  return getExperimentalElement();
1648        case 3575610:  return getType(); 
1649        case 3076014:  return getDateElement();
1650        case 1447404028:  return getPublisherElement();
1651        case -1724546052:  return getDescriptionElement();
1652        case -220463842:  return getPurposeElement();
1653        case 111574433:  return getUsageElement();
1654        case 223539345:  return getApprovalDateElement();
1655        case -1687512484:  return getLastReviewDateElement();
1656        case -403934648:  return getEffectivePeriod(); 
1657        case -669707736:  return addUseContext(); 
1658        case -507075711:  return addJurisdiction(); 
1659        case 110546223:  return addTopic(); 
1660        case -1895276325:  return addContributor(); 
1661        case 951526432:  return addContact(); 
1662        case 1522889671:  return getCopyrightElement();
1663        case 666807069:  return addRelatedArtifact(); 
1664        case 1954460585:  return addParameter(); 
1665        case 629147193:  return addDataRequirement(); 
1666        case 951530617:  return addContent(); 
1667        default: return super.makeProperty(hash, name);
1668        }
1669
1670      }
1671
1672      @Override
1673      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1674        switch (hash) {
1675        case 116079: /*url*/ return new String[] {"uri"};
1676        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1677        case 351608024: /*version*/ return new String[] {"string"};
1678        case 3373707: /*name*/ return new String[] {"string"};
1679        case 110371416: /*title*/ return new String[] {"string"};
1680        case -892481550: /*status*/ return new String[] {"code"};
1681        case -404562712: /*experimental*/ return new String[] {"boolean"};
1682        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
1683        case 3076014: /*date*/ return new String[] {"dateTime"};
1684        case 1447404028: /*publisher*/ return new String[] {"string"};
1685        case -1724546052: /*description*/ return new String[] {"markdown"};
1686        case -220463842: /*purpose*/ return new String[] {"markdown"};
1687        case 111574433: /*usage*/ return new String[] {"string"};
1688        case 223539345: /*approvalDate*/ return new String[] {"date"};
1689        case -1687512484: /*lastReviewDate*/ return new String[] {"date"};
1690        case -403934648: /*effectivePeriod*/ return new String[] {"Period"};
1691        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
1692        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
1693        case 110546223: /*topic*/ return new String[] {"CodeableConcept"};
1694        case -1895276325: /*contributor*/ return new String[] {"Contributor"};
1695        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
1696        case 1522889671: /*copyright*/ return new String[] {"markdown"};
1697        case 666807069: /*relatedArtifact*/ return new String[] {"RelatedArtifact"};
1698        case 1954460585: /*parameter*/ return new String[] {"ParameterDefinition"};
1699        case 629147193: /*dataRequirement*/ return new String[] {"DataRequirement"};
1700        case 951530617: /*content*/ return new String[] {"Attachment"};
1701        default: return super.getTypesForProperty(hash, name);
1702        }
1703
1704      }
1705
1706      @Override
1707      public Base addChild(String name) throws FHIRException {
1708        if (name.equals("url")) {
1709          throw new FHIRException("Cannot call addChild on a primitive type Library.url");
1710        }
1711        else if (name.equals("identifier")) {
1712          return addIdentifier();
1713        }
1714        else if (name.equals("version")) {
1715          throw new FHIRException("Cannot call addChild on a primitive type Library.version");
1716        }
1717        else if (name.equals("name")) {
1718          throw new FHIRException("Cannot call addChild on a primitive type Library.name");
1719        }
1720        else if (name.equals("title")) {
1721          throw new FHIRException("Cannot call addChild on a primitive type Library.title");
1722        }
1723        else if (name.equals("status")) {
1724          throw new FHIRException("Cannot call addChild on a primitive type Library.status");
1725        }
1726        else if (name.equals("experimental")) {
1727          throw new FHIRException("Cannot call addChild on a primitive type Library.experimental");
1728        }
1729        else if (name.equals("type")) {
1730          this.type = new CodeableConcept();
1731          return this.type;
1732        }
1733        else if (name.equals("date")) {
1734          throw new FHIRException("Cannot call addChild on a primitive type Library.date");
1735        }
1736        else if (name.equals("publisher")) {
1737          throw new FHIRException("Cannot call addChild on a primitive type Library.publisher");
1738        }
1739        else if (name.equals("description")) {
1740          throw new FHIRException("Cannot call addChild on a primitive type Library.description");
1741        }
1742        else if (name.equals("purpose")) {
1743          throw new FHIRException("Cannot call addChild on a primitive type Library.purpose");
1744        }
1745        else if (name.equals("usage")) {
1746          throw new FHIRException("Cannot call addChild on a primitive type Library.usage");
1747        }
1748        else if (name.equals("approvalDate")) {
1749          throw new FHIRException("Cannot call addChild on a primitive type Library.approvalDate");
1750        }
1751        else if (name.equals("lastReviewDate")) {
1752          throw new FHIRException("Cannot call addChild on a primitive type Library.lastReviewDate");
1753        }
1754        else if (name.equals("effectivePeriod")) {
1755          this.effectivePeriod = new Period();
1756          return this.effectivePeriod;
1757        }
1758        else if (name.equals("useContext")) {
1759          return addUseContext();
1760        }
1761        else if (name.equals("jurisdiction")) {
1762          return addJurisdiction();
1763        }
1764        else if (name.equals("topic")) {
1765          return addTopic();
1766        }
1767        else if (name.equals("contributor")) {
1768          return addContributor();
1769        }
1770        else if (name.equals("contact")) {
1771          return addContact();
1772        }
1773        else if (name.equals("copyright")) {
1774          throw new FHIRException("Cannot call addChild on a primitive type Library.copyright");
1775        }
1776        else if (name.equals("relatedArtifact")) {
1777          return addRelatedArtifact();
1778        }
1779        else if (name.equals("parameter")) {
1780          return addParameter();
1781        }
1782        else if (name.equals("dataRequirement")) {
1783          return addDataRequirement();
1784        }
1785        else if (name.equals("content")) {
1786          return addContent();
1787        }
1788        else
1789          return super.addChild(name);
1790      }
1791
1792  public String fhirType() {
1793    return "Library";
1794
1795  }
1796
1797      public Library copy() {
1798        Library dst = new Library();
1799        copyValues(dst);
1800        dst.url = url == null ? null : url.copy();
1801        if (identifier != null) {
1802          dst.identifier = new ArrayList<Identifier>();
1803          for (Identifier i : identifier)
1804            dst.identifier.add(i.copy());
1805        };
1806        dst.version = version == null ? null : version.copy();
1807        dst.name = name == null ? null : name.copy();
1808        dst.title = title == null ? null : title.copy();
1809        dst.status = status == null ? null : status.copy();
1810        dst.experimental = experimental == null ? null : experimental.copy();
1811        dst.type = type == null ? null : type.copy();
1812        dst.date = date == null ? null : date.copy();
1813        dst.publisher = publisher == null ? null : publisher.copy();
1814        dst.description = description == null ? null : description.copy();
1815        dst.purpose = purpose == null ? null : purpose.copy();
1816        dst.usage = usage == null ? null : usage.copy();
1817        dst.approvalDate = approvalDate == null ? null : approvalDate.copy();
1818        dst.lastReviewDate = lastReviewDate == null ? null : lastReviewDate.copy();
1819        dst.effectivePeriod = effectivePeriod == null ? null : effectivePeriod.copy();
1820        if (useContext != null) {
1821          dst.useContext = new ArrayList<UsageContext>();
1822          for (UsageContext i : useContext)
1823            dst.useContext.add(i.copy());
1824        };
1825        if (jurisdiction != null) {
1826          dst.jurisdiction = new ArrayList<CodeableConcept>();
1827          for (CodeableConcept i : jurisdiction)
1828            dst.jurisdiction.add(i.copy());
1829        };
1830        if (topic != null) {
1831          dst.topic = new ArrayList<CodeableConcept>();
1832          for (CodeableConcept i : topic)
1833            dst.topic.add(i.copy());
1834        };
1835        if (contributor != null) {
1836          dst.contributor = new ArrayList<Contributor>();
1837          for (Contributor i : contributor)
1838            dst.contributor.add(i.copy());
1839        };
1840        if (contact != null) {
1841          dst.contact = new ArrayList<ContactDetail>();
1842          for (ContactDetail i : contact)
1843            dst.contact.add(i.copy());
1844        };
1845        dst.copyright = copyright == null ? null : copyright.copy();
1846        if (relatedArtifact != null) {
1847          dst.relatedArtifact = new ArrayList<RelatedArtifact>();
1848          for (RelatedArtifact i : relatedArtifact)
1849            dst.relatedArtifact.add(i.copy());
1850        };
1851        if (parameter != null) {
1852          dst.parameter = new ArrayList<ParameterDefinition>();
1853          for (ParameterDefinition i : parameter)
1854            dst.parameter.add(i.copy());
1855        };
1856        if (dataRequirement != null) {
1857          dst.dataRequirement = new ArrayList<DataRequirement>();
1858          for (DataRequirement i : dataRequirement)
1859            dst.dataRequirement.add(i.copy());
1860        };
1861        if (content != null) {
1862          dst.content = new ArrayList<Attachment>();
1863          for (Attachment i : content)
1864            dst.content.add(i.copy());
1865        };
1866        return dst;
1867      }
1868
1869      protected Library typedCopy() {
1870        return copy();
1871      }
1872
1873      @Override
1874      public boolean equalsDeep(Base other) {
1875        if (!super.equalsDeep(other))
1876          return false;
1877        if (!(other instanceof Library))
1878          return false;
1879        Library o = (Library) other;
1880        return compareDeep(identifier, o.identifier, true) && compareDeep(type, o.type, true) && compareDeep(purpose, o.purpose, true)
1881           && compareDeep(usage, o.usage, true) && compareDeep(approvalDate, o.approvalDate, true) && compareDeep(lastReviewDate, o.lastReviewDate, true)
1882           && compareDeep(effectivePeriod, o.effectivePeriod, true) && compareDeep(topic, o.topic, true) && compareDeep(contributor, o.contributor, true)
1883           && compareDeep(copyright, o.copyright, true) && compareDeep(relatedArtifact, o.relatedArtifact, true)
1884           && compareDeep(parameter, o.parameter, true) && compareDeep(dataRequirement, o.dataRequirement, true)
1885           && compareDeep(content, o.content, true);
1886      }
1887
1888      @Override
1889      public boolean equalsShallow(Base other) {
1890        if (!super.equalsShallow(other))
1891          return false;
1892        if (!(other instanceof Library))
1893          return false;
1894        Library o = (Library) other;
1895        return compareValues(purpose, o.purpose, true) && compareValues(usage, o.usage, true) && compareValues(approvalDate, o.approvalDate, true)
1896           && compareValues(lastReviewDate, o.lastReviewDate, true) && compareValues(copyright, o.copyright, true)
1897          ;
1898      }
1899
1900      public boolean isEmpty() {
1901        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, type, purpose
1902          , usage, approvalDate, lastReviewDate, effectivePeriod, topic, contributor, copyright
1903          , relatedArtifact, parameter, dataRequirement, content);
1904      }
1905
1906  @Override
1907  public ResourceType getResourceType() {
1908    return ResourceType.Library;
1909   }
1910
1911 /**
1912   * Search parameter: <b>date</b>
1913   * <p>
1914   * Description: <b>The library publication date</b><br>
1915   * Type: <b>date</b><br>
1916   * Path: <b>Library.date</b><br>
1917   * </p>
1918   */
1919  @SearchParamDefinition(name="date", path="Library.date", description="The library publication date", type="date" )
1920  public static final String SP_DATE = "date";
1921 /**
1922   * <b>Fluent Client</b> search parameter constant for <b>date</b>
1923   * <p>
1924   * Description: <b>The library publication date</b><br>
1925   * Type: <b>date</b><br>
1926   * Path: <b>Library.date</b><br>
1927   * </p>
1928   */
1929  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
1930
1931 /**
1932   * Search parameter: <b>identifier</b>
1933   * <p>
1934   * Description: <b>External identifier for the library</b><br>
1935   * Type: <b>token</b><br>
1936   * Path: <b>Library.identifier</b><br>
1937   * </p>
1938   */
1939  @SearchParamDefinition(name="identifier", path="Library.identifier", description="External identifier for the library", type="token" )
1940  public static final String SP_IDENTIFIER = "identifier";
1941 /**
1942   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1943   * <p>
1944   * Description: <b>External identifier for the library</b><br>
1945   * Type: <b>token</b><br>
1946   * Path: <b>Library.identifier</b><br>
1947   * </p>
1948   */
1949  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1950
1951 /**
1952   * Search parameter: <b>successor</b>
1953   * <p>
1954   * Description: <b>What resource is being referenced</b><br>
1955   * Type: <b>reference</b><br>
1956   * Path: <b>Library.relatedArtifact.resource</b><br>
1957   * </p>
1958   */
1959  @SearchParamDefinition(name="successor", path="Library.relatedArtifact.where(type='successor').resource", description="What resource is being referenced", type="reference" )
1960  public static final String SP_SUCCESSOR = "successor";
1961 /**
1962   * <b>Fluent Client</b> search parameter constant for <b>successor</b>
1963   * <p>
1964   * Description: <b>What resource is being referenced</b><br>
1965   * Type: <b>reference</b><br>
1966   * Path: <b>Library.relatedArtifact.resource</b><br>
1967   * </p>
1968   */
1969  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUCCESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUCCESSOR);
1970
1971/**
1972   * Constant for fluent queries to be used to add include statements. Specifies
1973   * the path value of "<b>Library:successor</b>".
1974   */
1975  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUCCESSOR = new ca.uhn.fhir.model.api.Include("Library:successor").toLocked();
1976
1977 /**
1978   * Search parameter: <b>jurisdiction</b>
1979   * <p>
1980   * Description: <b>Intended jurisdiction for the library</b><br>
1981   * Type: <b>token</b><br>
1982   * Path: <b>Library.jurisdiction</b><br>
1983   * </p>
1984   */
1985  @SearchParamDefinition(name="jurisdiction", path="Library.jurisdiction", description="Intended jurisdiction for the library", type="token" )
1986  public static final String SP_JURISDICTION = "jurisdiction";
1987 /**
1988   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
1989   * <p>
1990   * Description: <b>Intended jurisdiction for the library</b><br>
1991   * Type: <b>token</b><br>
1992   * Path: <b>Library.jurisdiction</b><br>
1993   * </p>
1994   */
1995  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
1996
1997 /**
1998   * Search parameter: <b>description</b>
1999   * <p>
2000   * Description: <b>The description of the library</b><br>
2001   * Type: <b>string</b><br>
2002   * Path: <b>Library.description</b><br>
2003   * </p>
2004   */
2005  @SearchParamDefinition(name="description", path="Library.description", description="The description of the library", type="string" )
2006  public static final String SP_DESCRIPTION = "description";
2007 /**
2008   * <b>Fluent Client</b> search parameter constant for <b>description</b>
2009   * <p>
2010   * Description: <b>The description of the library</b><br>
2011   * Type: <b>string</b><br>
2012   * Path: <b>Library.description</b><br>
2013   * </p>
2014   */
2015  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
2016
2017 /**
2018   * Search parameter: <b>derived-from</b>
2019   * <p>
2020   * Description: <b>What resource is being referenced</b><br>
2021   * Type: <b>reference</b><br>
2022   * Path: <b>Library.relatedArtifact.resource</b><br>
2023   * </p>
2024   */
2025  @SearchParamDefinition(name="derived-from", path="Library.relatedArtifact.where(type='derived-from').resource", description="What resource is being referenced", type="reference" )
2026  public static final String SP_DERIVED_FROM = "derived-from";
2027 /**
2028   * <b>Fluent Client</b> search parameter constant for <b>derived-from</b>
2029   * <p>
2030   * Description: <b>What resource is being referenced</b><br>
2031   * Type: <b>reference</b><br>
2032   * Path: <b>Library.relatedArtifact.resource</b><br>
2033   * </p>
2034   */
2035  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DERIVED_FROM = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DERIVED_FROM);
2036
2037/**
2038   * Constant for fluent queries to be used to add include statements. Specifies
2039   * the path value of "<b>Library:derived-from</b>".
2040   */
2041  public static final ca.uhn.fhir.model.api.Include INCLUDE_DERIVED_FROM = new ca.uhn.fhir.model.api.Include("Library:derived-from").toLocked();
2042
2043 /**
2044   * Search parameter: <b>predecessor</b>
2045   * <p>
2046   * Description: <b>What resource is being referenced</b><br>
2047   * Type: <b>reference</b><br>
2048   * Path: <b>Library.relatedArtifact.resource</b><br>
2049   * </p>
2050   */
2051  @SearchParamDefinition(name="predecessor", path="Library.relatedArtifact.where(type='predecessor').resource", description="What resource is being referenced", type="reference" )
2052  public static final String SP_PREDECESSOR = "predecessor";
2053 /**
2054   * <b>Fluent Client</b> search parameter constant for <b>predecessor</b>
2055   * <p>
2056   * Description: <b>What resource is being referenced</b><br>
2057   * Type: <b>reference</b><br>
2058   * Path: <b>Library.relatedArtifact.resource</b><br>
2059   * </p>
2060   */
2061  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PREDECESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PREDECESSOR);
2062
2063/**
2064   * Constant for fluent queries to be used to add include statements. Specifies
2065   * the path value of "<b>Library:predecessor</b>".
2066   */
2067  public static final ca.uhn.fhir.model.api.Include INCLUDE_PREDECESSOR = new ca.uhn.fhir.model.api.Include("Library:predecessor").toLocked();
2068
2069 /**
2070   * Search parameter: <b>title</b>
2071   * <p>
2072   * Description: <b>The human-friendly name of the library</b><br>
2073   * Type: <b>string</b><br>
2074   * Path: <b>Library.title</b><br>
2075   * </p>
2076   */
2077  @SearchParamDefinition(name="title", path="Library.title", description="The human-friendly name of the library", type="string" )
2078  public static final String SP_TITLE = "title";
2079 /**
2080   * <b>Fluent Client</b> search parameter constant for <b>title</b>
2081   * <p>
2082   * Description: <b>The human-friendly name of the library</b><br>
2083   * Type: <b>string</b><br>
2084   * Path: <b>Library.title</b><br>
2085   * </p>
2086   */
2087  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
2088
2089 /**
2090   * Search parameter: <b>composed-of</b>
2091   * <p>
2092   * Description: <b>What resource is being referenced</b><br>
2093   * Type: <b>reference</b><br>
2094   * Path: <b>Library.relatedArtifact.resource</b><br>
2095   * </p>
2096   */
2097  @SearchParamDefinition(name="composed-of", path="Library.relatedArtifact.where(type='composed-of').resource", description="What resource is being referenced", type="reference" )
2098  public static final String SP_COMPOSED_OF = "composed-of";
2099 /**
2100   * <b>Fluent Client</b> search parameter constant for <b>composed-of</b>
2101   * <p>
2102   * Description: <b>What resource is being referenced</b><br>
2103   * Type: <b>reference</b><br>
2104   * Path: <b>Library.relatedArtifact.resource</b><br>
2105   * </p>
2106   */
2107  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam COMPOSED_OF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_COMPOSED_OF);
2108
2109/**
2110   * Constant for fluent queries to be used to add include statements. Specifies
2111   * the path value of "<b>Library:composed-of</b>".
2112   */
2113  public static final ca.uhn.fhir.model.api.Include INCLUDE_COMPOSED_OF = new ca.uhn.fhir.model.api.Include("Library:composed-of").toLocked();
2114
2115 /**
2116   * Search parameter: <b>version</b>
2117   * <p>
2118   * Description: <b>The business version of the library</b><br>
2119   * Type: <b>token</b><br>
2120   * Path: <b>Library.version</b><br>
2121   * </p>
2122   */
2123  @SearchParamDefinition(name="version", path="Library.version", description="The business version of the library", type="token" )
2124  public static final String SP_VERSION = "version";
2125 /**
2126   * <b>Fluent Client</b> search parameter constant for <b>version</b>
2127   * <p>
2128   * Description: <b>The business version of the library</b><br>
2129   * Type: <b>token</b><br>
2130   * Path: <b>Library.version</b><br>
2131   * </p>
2132   */
2133  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
2134
2135 /**
2136   * Search parameter: <b>url</b>
2137   * <p>
2138   * Description: <b>The uri that identifies the library</b><br>
2139   * Type: <b>uri</b><br>
2140   * Path: <b>Library.url</b><br>
2141   * </p>
2142   */
2143  @SearchParamDefinition(name="url", path="Library.url", description="The uri that identifies the library", type="uri" )
2144  public static final String SP_URL = "url";
2145 /**
2146   * <b>Fluent Client</b> search parameter constant for <b>url</b>
2147   * <p>
2148   * Description: <b>The uri that identifies the library</b><br>
2149   * Type: <b>uri</b><br>
2150   * Path: <b>Library.url</b><br>
2151   * </p>
2152   */
2153  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
2154
2155 /**
2156   * Search parameter: <b>effective</b>
2157   * <p>
2158   * Description: <b>The time during which the library is intended to be in use</b><br>
2159   * Type: <b>date</b><br>
2160   * Path: <b>Library.effectivePeriod</b><br>
2161   * </p>
2162   */
2163  @SearchParamDefinition(name="effective", path="Library.effectivePeriod", description="The time during which the library is intended to be in use", type="date" )
2164  public static final String SP_EFFECTIVE = "effective";
2165 /**
2166   * <b>Fluent Client</b> search parameter constant for <b>effective</b>
2167   * <p>
2168   * Description: <b>The time during which the library is intended to be in use</b><br>
2169   * Type: <b>date</b><br>
2170   * Path: <b>Library.effectivePeriod</b><br>
2171   * </p>
2172   */
2173  public static final ca.uhn.fhir.rest.gclient.DateClientParam EFFECTIVE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_EFFECTIVE);
2174
2175 /**
2176   * Search parameter: <b>depends-on</b>
2177   * <p>
2178   * Description: <b>What resource is being referenced</b><br>
2179   * Type: <b>reference</b><br>
2180   * Path: <b>Library.relatedArtifact.resource</b><br>
2181   * </p>
2182   */
2183  @SearchParamDefinition(name="depends-on", path="Library.relatedArtifact.where(type='depends-on').resource", description="What resource is being referenced", type="reference" )
2184  public static final String SP_DEPENDS_ON = "depends-on";
2185 /**
2186   * <b>Fluent Client</b> search parameter constant for <b>depends-on</b>
2187   * <p>
2188   * Description: <b>What resource is being referenced</b><br>
2189   * Type: <b>reference</b><br>
2190   * Path: <b>Library.relatedArtifact.resource</b><br>
2191   * </p>
2192   */
2193  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEPENDS_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DEPENDS_ON);
2194
2195/**
2196   * Constant for fluent queries to be used to add include statements. Specifies
2197   * the path value of "<b>Library:depends-on</b>".
2198   */
2199  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEPENDS_ON = new ca.uhn.fhir.model.api.Include("Library:depends-on").toLocked();
2200
2201 /**
2202   * Search parameter: <b>name</b>
2203   * <p>
2204   * Description: <b>Computationally friendly name of the library</b><br>
2205   * Type: <b>string</b><br>
2206   * Path: <b>Library.name</b><br>
2207   * </p>
2208   */
2209  @SearchParamDefinition(name="name", path="Library.name", description="Computationally friendly name of the library", type="string" )
2210  public static final String SP_NAME = "name";
2211 /**
2212   * <b>Fluent Client</b> search parameter constant for <b>name</b>
2213   * <p>
2214   * Description: <b>Computationally friendly name of the library</b><br>
2215   * Type: <b>string</b><br>
2216   * Path: <b>Library.name</b><br>
2217   * </p>
2218   */
2219  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
2220
2221 /**
2222   * Search parameter: <b>publisher</b>
2223   * <p>
2224   * Description: <b>Name of the publisher of the library</b><br>
2225   * Type: <b>string</b><br>
2226   * Path: <b>Library.publisher</b><br>
2227   * </p>
2228   */
2229  @SearchParamDefinition(name="publisher", path="Library.publisher", description="Name of the publisher of the library", type="string" )
2230  public static final String SP_PUBLISHER = "publisher";
2231 /**
2232   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
2233   * <p>
2234   * Description: <b>Name of the publisher of the library</b><br>
2235   * Type: <b>string</b><br>
2236   * Path: <b>Library.publisher</b><br>
2237   * </p>
2238   */
2239  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
2240
2241 /**
2242   * Search parameter: <b>topic</b>
2243   * <p>
2244   * Description: <b>Topics associated with the module</b><br>
2245   * Type: <b>token</b><br>
2246   * Path: <b>Library.topic</b><br>
2247   * </p>
2248   */
2249  @SearchParamDefinition(name="topic", path="Library.topic", description="Topics associated with the module", type="token" )
2250  public static final String SP_TOPIC = "topic";
2251 /**
2252   * <b>Fluent Client</b> search parameter constant for <b>topic</b>
2253   * <p>
2254   * Description: <b>Topics associated with the module</b><br>
2255   * Type: <b>token</b><br>
2256   * Path: <b>Library.topic</b><br>
2257   * </p>
2258   */
2259  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TOPIC = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TOPIC);
2260
2261 /**
2262   * Search parameter: <b>status</b>
2263   * <p>
2264   * Description: <b>The current status of the library</b><br>
2265   * Type: <b>token</b><br>
2266   * Path: <b>Library.status</b><br>
2267   * </p>
2268   */
2269  @SearchParamDefinition(name="status", path="Library.status", description="The current status of the library", type="token" )
2270  public static final String SP_STATUS = "status";
2271 /**
2272   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2273   * <p>
2274   * Description: <b>The current status of the library</b><br>
2275   * Type: <b>token</b><br>
2276   * Path: <b>Library.status</b><br>
2277   * </p>
2278   */
2279  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2280
2281
2282}
2283