001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Tue, Dec 28, 2021 07:16+1100 for FHIR v5.0.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * The 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.
052 */
053@ResourceDef(name="Library", profile="http://hl7.org/fhir/StructureDefinition/Library")
054public class Library extends MetadataResource {
055
056    /**
057     * An absolute URI that is used to identify this library when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this library is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the library is stored on different servers.
058     */
059    @Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
060    @Description(shortDefinition="Canonical identifier for this library, represented as a URI (globally unique)", formalDefinition="An absolute URI that is used to identify this library when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this library is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the library is stored on different servers." )
061    protected UriType url;
062
063    /**
064     * 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.
065     */
066    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
067    @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." )
068    protected List<Identifier> identifier;
069
070    /**
071     * 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.
072     */
073    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
074    @Description(shortDefinition="Business version of the library", formalDefinition="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." )
075    protected StringType version;
076
077    /**
078     * 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.
079     */
080    @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
081    @Description(shortDefinition="Name for this library (computer friendly)", formalDefinition="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." )
082    protected StringType name;
083
084    /**
085     * A short, descriptive, user-friendly title for the library.
086     */
087    @Child(name = "title", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
088    @Description(shortDefinition="Name for this library (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the library." )
089    protected StringType title;
090
091    /**
092     * An explanatory or alternate title for the library giving additional information about its content.
093     */
094    @Child(name = "subtitle", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
095    @Description(shortDefinition="Subordinate title of the library", formalDefinition="An explanatory or alternate title for the library giving additional information about its content." )
096    protected StringType subtitle;
097
098    /**
099     * The status of this library. Enables tracking the life-cycle of the content.
100     */
101    @Child(name = "status", type = {CodeType.class}, order=6, min=1, max=1, modifier=true, summary=true)
102    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this library. Enables tracking the life-cycle of the content." )
103    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
104    protected Enumeration<PublicationStatus> status;
105
106    /**
107     * 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.
108     */
109    @Child(name = "experimental", type = {BooleanType.class}, order=7, min=0, max=1, modifier=false, summary=true)
110    @Description(shortDefinition="For testing purposes, not real usage", formalDefinition="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." )
111    protected BooleanType experimental;
112
113    /**
114     * Identifies the type of library such as a Logic Library, Model Definition, Asset Collection, or Module Definition.
115     */
116    @Child(name = "type", type = {CodeableConcept.class}, order=8, min=1, max=1, modifier=false, summary=true)
117    @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." )
118    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/library-type")
119    protected CodeableConcept type;
120
121    /**
122     * A code or group definition that describes the intended subject of the contents of the library.
123     */
124    @Child(name = "subject", type = {CodeableConcept.class, Group.class}, order=9, min=0, max=1, modifier=false, summary=false)
125    @Description(shortDefinition="Type of individual the library content is focused on", formalDefinition="A code or group definition that describes the intended subject of the contents of the library." )
126    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/subject-type")
127    protected DataType subject;
128
129    /**
130     * The date  (and optionally time) when the library was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the library changes.
131     */
132    @Child(name = "date", type = {DateTimeType.class}, order=10, min=0, max=1, modifier=false, summary=true)
133    @Description(shortDefinition="Date last changed", formalDefinition="The date  (and optionally time) when the library was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the library changes." )
134    protected DateTimeType date;
135
136    /**
137     * The name of the organization or individual that published the library.
138     */
139    @Child(name = "publisher", type = {StringType.class}, order=11, min=0, max=1, modifier=false, summary=true)
140    @Description(shortDefinition="Name of the publisher (organization or individual)", formalDefinition="The name of the organization or individual that published the library." )
141    protected StringType publisher;
142
143    /**
144     * Contact details to assist a user in finding and communicating with the publisher.
145     */
146    @Child(name = "contact", type = {ContactDetail.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
147    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
148    protected List<ContactDetail> contact;
149
150    /**
151     * A free text natural language description of the library from a consumer's perspective.
152     */
153    @Child(name = "description", type = {MarkdownType.class}, order=13, min=0, max=1, modifier=false, summary=true)
154    @Description(shortDefinition="Natural language description of the library", formalDefinition="A free text natural language description of the library from a consumer's perspective." )
155    protected MarkdownType description;
156
157    /**
158     * The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate library instances.
159     */
160    @Child(name = "useContext", type = {UsageContext.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
161    @Description(shortDefinition="The context that the content is intended to support", formalDefinition="The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate library instances." )
162    protected List<UsageContext> useContext;
163
164    /**
165     * A legal or geographic region in which the library is intended to be used.
166     */
167    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
168    @Description(shortDefinition="Intended jurisdiction for library (if applicable)", formalDefinition="A legal or geographic region in which the library is intended to be used." )
169    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
170    protected List<CodeableConcept> jurisdiction;
171
172    /**
173     * Explanation of why this library is needed and why it has been designed as it has.
174     */
175    @Child(name = "purpose", type = {MarkdownType.class}, order=16, min=0, max=1, modifier=false, summary=false)
176    @Description(shortDefinition="Why this library is defined", formalDefinition="Explanation of why this library is needed and why it has been designed as it has." )
177    protected MarkdownType purpose;
178
179    /**
180     * A detailed description of how the library is used from a clinical perspective.
181     */
182    @Child(name = "usage", type = {StringType.class}, order=17, min=0, max=1, modifier=false, summary=false)
183    @Description(shortDefinition="Describes the clinical usage of the library", formalDefinition="A detailed description of how the library is used from a clinical perspective." )
184    protected StringType usage;
185
186    /**
187     * 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.
188     */
189    @Child(name = "copyright", type = {MarkdownType.class}, order=18, min=0, max=1, modifier=false, summary=false)
190    @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." )
191    protected MarkdownType copyright;
192
193    /**
194     * The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
195     */
196    @Child(name = "approvalDate", type = {DateType.class}, order=19, min=0, max=1, modifier=false, summary=false)
197    @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." )
198    protected DateType approvalDate;
199
200    /**
201     * The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
202     */
203    @Child(name = "lastReviewDate", type = {DateType.class}, order=20, min=0, max=1, modifier=false, summary=false)
204    @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 does not change the original approval date." )
205    protected DateType lastReviewDate;
206
207    /**
208     * The period during which the library content was or is planned to be in active use.
209     */
210    @Child(name = "effectivePeriod", type = {Period.class}, order=21, min=0, max=1, modifier=false, summary=true)
211    @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." )
212    protected Period effectivePeriod;
213
214    /**
215     * 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.
216     */
217    @Child(name = "topic", type = {CodeableConcept.class}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
218    @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." )
219    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/definition-topic")
220    protected List<CodeableConcept> topic;
221
222    /**
223     * An individiual or organization primarily involved in the creation and maintenance of the content.
224     */
225    @Child(name = "author", type = {ContactDetail.class}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
226    @Description(shortDefinition="Who authored the content", formalDefinition="An individiual or organization primarily involved in the creation and maintenance of the content." )
227    protected List<ContactDetail> author;
228
229    /**
230     * An individual or organization primarily responsible for internal coherence of the content.
231     */
232    @Child(name = "editor", type = {ContactDetail.class}, order=24, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
233    @Description(shortDefinition="Who edited the content", formalDefinition="An individual or organization primarily responsible for internal coherence of the content." )
234    protected List<ContactDetail> editor;
235
236    /**
237     * An individual or organization primarily responsible for review of some aspect of the content.
238     */
239    @Child(name = "reviewer", type = {ContactDetail.class}, order=25, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
240    @Description(shortDefinition="Who reviewed the content", formalDefinition="An individual or organization primarily responsible for review of some aspect of the content." )
241    protected List<ContactDetail> reviewer;
242
243    /**
244     * An individual or organization responsible for officially endorsing the content for use in some setting.
245     */
246    @Child(name = "endorser", type = {ContactDetail.class}, order=26, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
247    @Description(shortDefinition="Who endorsed the content", formalDefinition="An individual or organization responsible for officially endorsing the content for use in some setting." )
248    protected List<ContactDetail> endorser;
249
250    /**
251     * Related artifacts such as additional documentation, justification, or bibliographic references.
252     */
253    @Child(name = "relatedArtifact", type = {RelatedArtifact.class}, order=27, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
254    @Description(shortDefinition="Additional documentation, citations, etc.", formalDefinition="Related artifacts such as additional documentation, justification, or bibliographic references." )
255    protected List<RelatedArtifact> relatedArtifact;
256
257    /**
258     * The parameter element defines parameters used by the library.
259     */
260    @Child(name = "parameter", type = {ParameterDefinition.class}, order=28, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
261    @Description(shortDefinition="Parameters defined by the library", formalDefinition="The parameter element defines parameters used by the library." )
262    protected List<ParameterDefinition> parameter;
263
264    /**
265     * Describes a set of data that must be provided in order to be able to successfully perform the computations defined by the library.
266     */
267    @Child(name = "dataRequirement", type = {DataRequirement.class}, order=29, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
268    @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." )
269    protected List<DataRequirement> dataRequirement;
270
271    /**
272     * 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.
273     */
274    @Child(name = "content", type = {Attachment.class}, order=30, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
275    @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." )
276    protected List<Attachment> content;
277
278    private static final long serialVersionUID = -1616746037L;
279
280  /**
281   * Constructor
282   */
283    public Library() {
284      super();
285    }
286
287  /**
288   * Constructor
289   */
290    public Library(PublicationStatus status, CodeableConcept type) {
291      super();
292      this.setStatus(status);
293      this.setType(type);
294    }
295
296    /**
297     * @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; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this library is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the library is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
298     */
299    public UriType getUrlElement() { 
300      if (this.url == null)
301        if (Configuration.errorOnAutoCreate())
302          throw new Error("Attempt to auto-create Library.url");
303        else if (Configuration.doAutoCreate())
304          this.url = new UriType(); // bb
305      return this.url;
306    }
307
308    public boolean hasUrlElement() { 
309      return this.url != null && !this.url.isEmpty();
310    }
311
312    public boolean hasUrl() { 
313      return this.url != null && !this.url.isEmpty();
314    }
315
316    /**
317     * @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; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this library is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the library is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
318     */
319    public Library setUrlElement(UriType value) { 
320      this.url = value;
321      return this;
322    }
323
324    /**
325     * @return An absolute URI that is used to identify this library when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this library is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the library is stored on different servers.
326     */
327    public String getUrl() { 
328      return this.url == null ? null : this.url.getValue();
329    }
330
331    /**
332     * @param value An absolute URI that is used to identify this library when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this library is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the library is stored on different servers.
333     */
334    public Library setUrl(String value) { 
335      if (Utilities.noString(value))
336        this.url = null;
337      else {
338        if (this.url == null)
339          this.url = new UriType();
340        this.url.setValue(value);
341      }
342      return this;
343    }
344
345    /**
346     * @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.)
347     */
348    public List<Identifier> getIdentifier() { 
349      if (this.identifier == null)
350        this.identifier = new ArrayList<Identifier>();
351      return this.identifier;
352    }
353
354    /**
355     * @return Returns a reference to <code>this</code> for easy method chaining
356     */
357    public Library setIdentifier(List<Identifier> theIdentifier) { 
358      this.identifier = theIdentifier;
359      return this;
360    }
361
362    public boolean hasIdentifier() { 
363      if (this.identifier == null)
364        return false;
365      for (Identifier item : this.identifier)
366        if (!item.isEmpty())
367          return true;
368      return false;
369    }
370
371    public Identifier addIdentifier() { //3
372      Identifier t = new Identifier();
373      if (this.identifier == null)
374        this.identifier = new ArrayList<Identifier>();
375      this.identifier.add(t);
376      return t;
377    }
378
379    public Library addIdentifier(Identifier t) { //3
380      if (t == null)
381        return this;
382      if (this.identifier == null)
383        this.identifier = new ArrayList<Identifier>();
384      this.identifier.add(t);
385      return this;
386    }
387
388    /**
389     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
390     */
391    public Identifier getIdentifierFirstRep() { 
392      if (getIdentifier().isEmpty()) {
393        addIdentifier();
394      }
395      return getIdentifier().get(0);
396    }
397
398    /**
399     * @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
400     */
401    public StringType getVersionElement() { 
402      if (this.version == null)
403        if (Configuration.errorOnAutoCreate())
404          throw new Error("Attempt to auto-create Library.version");
405        else if (Configuration.doAutoCreate())
406          this.version = new StringType(); // bb
407      return this.version;
408    }
409
410    public boolean hasVersionElement() { 
411      return this.version != null && !this.version.isEmpty();
412    }
413
414    public boolean hasVersion() { 
415      return this.version != null && !this.version.isEmpty();
416    }
417
418    /**
419     * @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
420     */
421    public Library setVersionElement(StringType value) { 
422      this.version = value;
423      return this;
424    }
425
426    /**
427     * @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.
428     */
429    public String getVersion() { 
430      return this.version == null ? null : this.version.getValue();
431    }
432
433    /**
434     * @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.
435     */
436    public Library setVersion(String value) { 
437      if (Utilities.noString(value))
438        this.version = null;
439      else {
440        if (this.version == null)
441          this.version = new StringType();
442        this.version.setValue(value);
443      }
444      return this;
445    }
446
447    /**
448     * @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
449     */
450    public StringType getNameElement() { 
451      if (this.name == null)
452        if (Configuration.errorOnAutoCreate())
453          throw new Error("Attempt to auto-create Library.name");
454        else if (Configuration.doAutoCreate())
455          this.name = new StringType(); // bb
456      return this.name;
457    }
458
459    public boolean hasNameElement() { 
460      return this.name != null && !this.name.isEmpty();
461    }
462
463    public boolean hasName() { 
464      return this.name != null && !this.name.isEmpty();
465    }
466
467    /**
468     * @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
469     */
470    public Library setNameElement(StringType value) { 
471      this.name = value;
472      return this;
473    }
474
475    /**
476     * @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.
477     */
478    public String getName() { 
479      return this.name == null ? null : this.name.getValue();
480    }
481
482    /**
483     * @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.
484     */
485    public Library setName(String value) { 
486      if (Utilities.noString(value))
487        this.name = null;
488      else {
489        if (this.name == null)
490          this.name = new StringType();
491        this.name.setValue(value);
492      }
493      return this;
494    }
495
496    /**
497     * @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
498     */
499    public StringType getTitleElement() { 
500      if (this.title == null)
501        if (Configuration.errorOnAutoCreate())
502          throw new Error("Attempt to auto-create Library.title");
503        else if (Configuration.doAutoCreate())
504          this.title = new StringType(); // bb
505      return this.title;
506    }
507
508    public boolean hasTitleElement() { 
509      return this.title != null && !this.title.isEmpty();
510    }
511
512    public boolean hasTitle() { 
513      return this.title != null && !this.title.isEmpty();
514    }
515
516    /**
517     * @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
518     */
519    public Library setTitleElement(StringType value) { 
520      this.title = value;
521      return this;
522    }
523
524    /**
525     * @return A short, descriptive, user-friendly title for the library.
526     */
527    public String getTitle() { 
528      return this.title == null ? null : this.title.getValue();
529    }
530
531    /**
532     * @param value A short, descriptive, user-friendly title for the library.
533     */
534    public Library setTitle(String value) { 
535      if (Utilities.noString(value))
536        this.title = null;
537      else {
538        if (this.title == null)
539          this.title = new StringType();
540        this.title.setValue(value);
541      }
542      return this;
543    }
544
545    /**
546     * @return {@link #subtitle} (An explanatory or alternate title for the library giving additional information about its content.). This is the underlying object with id, value and extensions. The accessor "getSubtitle" gives direct access to the value
547     */
548    public StringType getSubtitleElement() { 
549      if (this.subtitle == null)
550        if (Configuration.errorOnAutoCreate())
551          throw new Error("Attempt to auto-create Library.subtitle");
552        else if (Configuration.doAutoCreate())
553          this.subtitle = new StringType(); // bb
554      return this.subtitle;
555    }
556
557    public boolean hasSubtitleElement() { 
558      return this.subtitle != null && !this.subtitle.isEmpty();
559    }
560
561    public boolean hasSubtitle() { 
562      return this.subtitle != null && !this.subtitle.isEmpty();
563    }
564
565    /**
566     * @param value {@link #subtitle} (An explanatory or alternate title for the library giving additional information about its content.). This is the underlying object with id, value and extensions. The accessor "getSubtitle" gives direct access to the value
567     */
568    public Library setSubtitleElement(StringType value) { 
569      this.subtitle = value;
570      return this;
571    }
572
573    /**
574     * @return An explanatory or alternate title for the library giving additional information about its content.
575     */
576    public String getSubtitle() { 
577      return this.subtitle == null ? null : this.subtitle.getValue();
578    }
579
580    /**
581     * @param value An explanatory or alternate title for the library giving additional information about its content.
582     */
583    public Library setSubtitle(String value) { 
584      if (Utilities.noString(value))
585        this.subtitle = null;
586      else {
587        if (this.subtitle == null)
588          this.subtitle = new StringType();
589        this.subtitle.setValue(value);
590      }
591      return this;
592    }
593
594    /**
595     * @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
596     */
597    public Enumeration<PublicationStatus> getStatusElement() { 
598      if (this.status == null)
599        if (Configuration.errorOnAutoCreate())
600          throw new Error("Attempt to auto-create Library.status");
601        else if (Configuration.doAutoCreate())
602          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
603      return this.status;
604    }
605
606    public boolean hasStatusElement() { 
607      return this.status != null && !this.status.isEmpty();
608    }
609
610    public boolean hasStatus() { 
611      return this.status != null && !this.status.isEmpty();
612    }
613
614    /**
615     * @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
616     */
617    public Library setStatusElement(Enumeration<PublicationStatus> value) { 
618      this.status = value;
619      return this;
620    }
621
622    /**
623     * @return The status of this library. Enables tracking the life-cycle of the content.
624     */
625    public PublicationStatus getStatus() { 
626      return this.status == null ? null : this.status.getValue();
627    }
628
629    /**
630     * @param value The status of this library. Enables tracking the life-cycle of the content.
631     */
632    public Library setStatus(PublicationStatus value) { 
633        if (this.status == null)
634          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
635        this.status.setValue(value);
636      return this;
637    }
638
639    /**
640     * @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
641     */
642    public BooleanType getExperimentalElement() { 
643      if (this.experimental == null)
644        if (Configuration.errorOnAutoCreate())
645          throw new Error("Attempt to auto-create Library.experimental");
646        else if (Configuration.doAutoCreate())
647          this.experimental = new BooleanType(); // bb
648      return this.experimental;
649    }
650
651    public boolean hasExperimentalElement() { 
652      return this.experimental != null && !this.experimental.isEmpty();
653    }
654
655    public boolean hasExperimental() { 
656      return this.experimental != null && !this.experimental.isEmpty();
657    }
658
659    /**
660     * @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
661     */
662    public Library setExperimentalElement(BooleanType value) { 
663      this.experimental = value;
664      return this;
665    }
666
667    /**
668     * @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.
669     */
670    public boolean getExperimental() { 
671      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
672    }
673
674    /**
675     * @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.
676     */
677    public Library setExperimental(boolean value) { 
678        if (this.experimental == null)
679          this.experimental = new BooleanType();
680        this.experimental.setValue(value);
681      return this;
682    }
683
684    /**
685     * @return {@link #type} (Identifies the type of library such as a Logic Library, Model Definition, Asset Collection, or Module Definition.)
686     */
687    public CodeableConcept getType() { 
688      if (this.type == null)
689        if (Configuration.errorOnAutoCreate())
690          throw new Error("Attempt to auto-create Library.type");
691        else if (Configuration.doAutoCreate())
692          this.type = new CodeableConcept(); // cc
693      return this.type;
694    }
695
696    public boolean hasType() { 
697      return this.type != null && !this.type.isEmpty();
698    }
699
700    /**
701     * @param value {@link #type} (Identifies the type of library such as a Logic Library, Model Definition, Asset Collection, or Module Definition.)
702     */
703    public Library setType(CodeableConcept value) { 
704      this.type = value;
705      return this;
706    }
707
708    /**
709     * @return {@link #subject} (A code or group definition that describes the intended subject of the contents of the library.)
710     */
711    public DataType getSubject() { 
712      return this.subject;
713    }
714
715    /**
716     * @return {@link #subject} (A code or group definition that describes the intended subject of the contents of the library.)
717     */
718    public CodeableConcept getSubjectCodeableConcept() throws FHIRException { 
719      if (this.subject == null)
720        this.subject = new CodeableConcept();
721      if (!(this.subject instanceof CodeableConcept))
722        throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.subject.getClass().getName()+" was encountered");
723      return (CodeableConcept) this.subject;
724    }
725
726    public boolean hasSubjectCodeableConcept() { 
727      return this != null && this.subject instanceof CodeableConcept;
728    }
729
730    /**
731     * @return {@link #subject} (A code or group definition that describes the intended subject of the contents of the library.)
732     */
733    public Reference getSubjectReference() throws FHIRException { 
734      if (this.subject == null)
735        this.subject = new Reference();
736      if (!(this.subject instanceof Reference))
737        throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.subject.getClass().getName()+" was encountered");
738      return (Reference) this.subject;
739    }
740
741    public boolean hasSubjectReference() { 
742      return this != null && this.subject instanceof Reference;
743    }
744
745    public boolean hasSubject() { 
746      return this.subject != null && !this.subject.isEmpty();
747    }
748
749    /**
750     * @param value {@link #subject} (A code or group definition that describes the intended subject of the contents of the library.)
751     */
752    public Library setSubject(DataType value) { 
753      if (value != null && !(value instanceof CodeableConcept || value instanceof Reference))
754        throw new Error("Not the right type for Library.subject[x]: "+value.fhirType());
755      this.subject = value;
756      return this;
757    }
758
759    /**
760     * @return {@link #date} (The date  (and optionally time) when the library was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the library changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
761     */
762    public DateTimeType getDateElement() { 
763      if (this.date == null)
764        if (Configuration.errorOnAutoCreate())
765          throw new Error("Attempt to auto-create Library.date");
766        else if (Configuration.doAutoCreate())
767          this.date = new DateTimeType(); // bb
768      return this.date;
769    }
770
771    public boolean hasDateElement() { 
772      return this.date != null && !this.date.isEmpty();
773    }
774
775    public boolean hasDate() { 
776      return this.date != null && !this.date.isEmpty();
777    }
778
779    /**
780     * @param value {@link #date} (The date  (and optionally time) when the library was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the library changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
781     */
782    public Library setDateElement(DateTimeType value) { 
783      this.date = value;
784      return this;
785    }
786
787    /**
788     * @return The date  (and optionally time) when the library was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the library changes.
789     */
790    public Date getDate() { 
791      return this.date == null ? null : this.date.getValue();
792    }
793
794    /**
795     * @param value The date  (and optionally time) when the library was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the library changes.
796     */
797    public Library setDate(Date value) { 
798      if (value == null)
799        this.date = null;
800      else {
801        if (this.date == null)
802          this.date = new DateTimeType();
803        this.date.setValue(value);
804      }
805      return this;
806    }
807
808    /**
809     * @return {@link #publisher} (The name of the organization or individual that published the library.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
810     */
811    public StringType getPublisherElement() { 
812      if (this.publisher == null)
813        if (Configuration.errorOnAutoCreate())
814          throw new Error("Attempt to auto-create Library.publisher");
815        else if (Configuration.doAutoCreate())
816          this.publisher = new StringType(); // bb
817      return this.publisher;
818    }
819
820    public boolean hasPublisherElement() { 
821      return this.publisher != null && !this.publisher.isEmpty();
822    }
823
824    public boolean hasPublisher() { 
825      return this.publisher != null && !this.publisher.isEmpty();
826    }
827
828    /**
829     * @param value {@link #publisher} (The name of the organization or individual that published the library.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
830     */
831    public Library setPublisherElement(StringType value) { 
832      this.publisher = value;
833      return this;
834    }
835
836    /**
837     * @return The name of the organization or individual that published the library.
838     */
839    public String getPublisher() { 
840      return this.publisher == null ? null : this.publisher.getValue();
841    }
842
843    /**
844     * @param value The name of the organization or individual that published the library.
845     */
846    public Library setPublisher(String value) { 
847      if (Utilities.noString(value))
848        this.publisher = null;
849      else {
850        if (this.publisher == null)
851          this.publisher = new StringType();
852        this.publisher.setValue(value);
853      }
854      return this;
855    }
856
857    /**
858     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
859     */
860    public List<ContactDetail> getContact() { 
861      if (this.contact == null)
862        this.contact = new ArrayList<ContactDetail>();
863      return this.contact;
864    }
865
866    /**
867     * @return Returns a reference to <code>this</code> for easy method chaining
868     */
869    public Library setContact(List<ContactDetail> theContact) { 
870      this.contact = theContact;
871      return this;
872    }
873
874    public boolean hasContact() { 
875      if (this.contact == null)
876        return false;
877      for (ContactDetail item : this.contact)
878        if (!item.isEmpty())
879          return true;
880      return false;
881    }
882
883    public ContactDetail addContact() { //3
884      ContactDetail t = new ContactDetail();
885      if (this.contact == null)
886        this.contact = new ArrayList<ContactDetail>();
887      this.contact.add(t);
888      return t;
889    }
890
891    public Library addContact(ContactDetail t) { //3
892      if (t == null)
893        return this;
894      if (this.contact == null)
895        this.contact = new ArrayList<ContactDetail>();
896      this.contact.add(t);
897      return this;
898    }
899
900    /**
901     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
902     */
903    public ContactDetail getContactFirstRep() { 
904      if (getContact().isEmpty()) {
905        addContact();
906      }
907      return getContact().get(0);
908    }
909
910    /**
911     * @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
912     */
913    public MarkdownType getDescriptionElement() { 
914      if (this.description == null)
915        if (Configuration.errorOnAutoCreate())
916          throw new Error("Attempt to auto-create Library.description");
917        else if (Configuration.doAutoCreate())
918          this.description = new MarkdownType(); // bb
919      return this.description;
920    }
921
922    public boolean hasDescriptionElement() { 
923      return this.description != null && !this.description.isEmpty();
924    }
925
926    public boolean hasDescription() { 
927      return this.description != null && !this.description.isEmpty();
928    }
929
930    /**
931     * @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
932     */
933    public Library setDescriptionElement(MarkdownType value) { 
934      this.description = value;
935      return this;
936    }
937
938    /**
939     * @return A free text natural language description of the library from a consumer's perspective.
940     */
941    public String getDescription() { 
942      return this.description == null ? null : this.description.getValue();
943    }
944
945    /**
946     * @param value A free text natural language description of the library from a consumer's perspective.
947     */
948    public Library setDescription(String value) { 
949      if (value == null)
950        this.description = null;
951      else {
952        if (this.description == null)
953          this.description = new MarkdownType();
954        this.description.setValue(value);
955      }
956      return this;
957    }
958
959    /**
960     * @return {@link #useContext} (The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate library instances.)
961     */
962    public List<UsageContext> getUseContext() { 
963      if (this.useContext == null)
964        this.useContext = new ArrayList<UsageContext>();
965      return this.useContext;
966    }
967
968    /**
969     * @return Returns a reference to <code>this</code> for easy method chaining
970     */
971    public Library setUseContext(List<UsageContext> theUseContext) { 
972      this.useContext = theUseContext;
973      return this;
974    }
975
976    public boolean hasUseContext() { 
977      if (this.useContext == null)
978        return false;
979      for (UsageContext item : this.useContext)
980        if (!item.isEmpty())
981          return true;
982      return false;
983    }
984
985    public UsageContext addUseContext() { //3
986      UsageContext t = new UsageContext();
987      if (this.useContext == null)
988        this.useContext = new ArrayList<UsageContext>();
989      this.useContext.add(t);
990      return t;
991    }
992
993    public Library addUseContext(UsageContext t) { //3
994      if (t == null)
995        return this;
996      if (this.useContext == null)
997        this.useContext = new ArrayList<UsageContext>();
998      this.useContext.add(t);
999      return this;
1000    }
1001
1002    /**
1003     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
1004     */
1005    public UsageContext getUseContextFirstRep() { 
1006      if (getUseContext().isEmpty()) {
1007        addUseContext();
1008      }
1009      return getUseContext().get(0);
1010    }
1011
1012    /**
1013     * @return {@link #jurisdiction} (A legal or geographic region in which the library is intended to be used.)
1014     */
1015    public List<CodeableConcept> getJurisdiction() { 
1016      if (this.jurisdiction == null)
1017        this.jurisdiction = new ArrayList<CodeableConcept>();
1018      return this.jurisdiction;
1019    }
1020
1021    /**
1022     * @return Returns a reference to <code>this</code> for easy method chaining
1023     */
1024    public Library setJurisdiction(List<CodeableConcept> theJurisdiction) { 
1025      this.jurisdiction = theJurisdiction;
1026      return this;
1027    }
1028
1029    public boolean hasJurisdiction() { 
1030      if (this.jurisdiction == null)
1031        return false;
1032      for (CodeableConcept item : this.jurisdiction)
1033        if (!item.isEmpty())
1034          return true;
1035      return false;
1036    }
1037
1038    public CodeableConcept addJurisdiction() { //3
1039      CodeableConcept t = new CodeableConcept();
1040      if (this.jurisdiction == null)
1041        this.jurisdiction = new ArrayList<CodeableConcept>();
1042      this.jurisdiction.add(t);
1043      return t;
1044    }
1045
1046    public Library addJurisdiction(CodeableConcept t) { //3
1047      if (t == null)
1048        return this;
1049      if (this.jurisdiction == null)
1050        this.jurisdiction = new ArrayList<CodeableConcept>();
1051      this.jurisdiction.add(t);
1052      return this;
1053    }
1054
1055    /**
1056     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
1057     */
1058    public CodeableConcept getJurisdictionFirstRep() { 
1059      if (getJurisdiction().isEmpty()) {
1060        addJurisdiction();
1061      }
1062      return getJurisdiction().get(0);
1063    }
1064
1065    /**
1066     * @return {@link #purpose} (Explanation 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
1067     */
1068    public MarkdownType getPurposeElement() { 
1069      if (this.purpose == null)
1070        if (Configuration.errorOnAutoCreate())
1071          throw new Error("Attempt to auto-create Library.purpose");
1072        else if (Configuration.doAutoCreate())
1073          this.purpose = new MarkdownType(); // bb
1074      return this.purpose;
1075    }
1076
1077    public boolean hasPurposeElement() { 
1078      return this.purpose != null && !this.purpose.isEmpty();
1079    }
1080
1081    public boolean hasPurpose() { 
1082      return this.purpose != null && !this.purpose.isEmpty();
1083    }
1084
1085    /**
1086     * @param value {@link #purpose} (Explanation 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
1087     */
1088    public Library setPurposeElement(MarkdownType value) { 
1089      this.purpose = value;
1090      return this;
1091    }
1092
1093    /**
1094     * @return Explanation of why this library is needed and why it has been designed as it has.
1095     */
1096    public String getPurpose() { 
1097      return this.purpose == null ? null : this.purpose.getValue();
1098    }
1099
1100    /**
1101     * @param value Explanation of why this library is needed and why it has been designed as it has.
1102     */
1103    public Library setPurpose(String value) { 
1104      if (value == null)
1105        this.purpose = null;
1106      else {
1107        if (this.purpose == null)
1108          this.purpose = new MarkdownType();
1109        this.purpose.setValue(value);
1110      }
1111      return this;
1112    }
1113
1114    /**
1115     * @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
1116     */
1117    public StringType getUsageElement() { 
1118      if (this.usage == null)
1119        if (Configuration.errorOnAutoCreate())
1120          throw new Error("Attempt to auto-create Library.usage");
1121        else if (Configuration.doAutoCreate())
1122          this.usage = new StringType(); // bb
1123      return this.usage;
1124    }
1125
1126    public boolean hasUsageElement() { 
1127      return this.usage != null && !this.usage.isEmpty();
1128    }
1129
1130    public boolean hasUsage() { 
1131      return this.usage != null && !this.usage.isEmpty();
1132    }
1133
1134    /**
1135     * @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
1136     */
1137    public Library setUsageElement(StringType value) { 
1138      this.usage = value;
1139      return this;
1140    }
1141
1142    /**
1143     * @return A detailed description of how the library is used from a clinical perspective.
1144     */
1145    public String getUsage() { 
1146      return this.usage == null ? null : this.usage.getValue();
1147    }
1148
1149    /**
1150     * @param value A detailed description of how the library is used from a clinical perspective.
1151     */
1152    public Library setUsage(String value) { 
1153      if (Utilities.noString(value))
1154        this.usage = null;
1155      else {
1156        if (this.usage == null)
1157          this.usage = new StringType();
1158        this.usage.setValue(value);
1159      }
1160      return this;
1161    }
1162
1163    /**
1164     * @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
1165     */
1166    public MarkdownType getCopyrightElement() { 
1167      if (this.copyright == null)
1168        if (Configuration.errorOnAutoCreate())
1169          throw new Error("Attempt to auto-create Library.copyright");
1170        else if (Configuration.doAutoCreate())
1171          this.copyright = new MarkdownType(); // bb
1172      return this.copyright;
1173    }
1174
1175    public boolean hasCopyrightElement() { 
1176      return this.copyright != null && !this.copyright.isEmpty();
1177    }
1178
1179    public boolean hasCopyright() { 
1180      return this.copyright != null && !this.copyright.isEmpty();
1181    }
1182
1183    /**
1184     * @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
1185     */
1186    public Library setCopyrightElement(MarkdownType value) { 
1187      this.copyright = value;
1188      return this;
1189    }
1190
1191    /**
1192     * @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.
1193     */
1194    public String getCopyright() { 
1195      return this.copyright == null ? null : this.copyright.getValue();
1196    }
1197
1198    /**
1199     * @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.
1200     */
1201    public Library setCopyright(String value) { 
1202      if (value == null)
1203        this.copyright = null;
1204      else {
1205        if (this.copyright == null)
1206          this.copyright = new MarkdownType();
1207        this.copyright.setValue(value);
1208      }
1209      return this;
1210    }
1211
1212    /**
1213     * @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
1214     */
1215    public DateType getApprovalDateElement() { 
1216      if (this.approvalDate == null)
1217        if (Configuration.errorOnAutoCreate())
1218          throw new Error("Attempt to auto-create Library.approvalDate");
1219        else if (Configuration.doAutoCreate())
1220          this.approvalDate = new DateType(); // bb
1221      return this.approvalDate;
1222    }
1223
1224    public boolean hasApprovalDateElement() { 
1225      return this.approvalDate != null && !this.approvalDate.isEmpty();
1226    }
1227
1228    public boolean hasApprovalDate() { 
1229      return this.approvalDate != null && !this.approvalDate.isEmpty();
1230    }
1231
1232    /**
1233     * @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
1234     */
1235    public Library setApprovalDateElement(DateType value) { 
1236      this.approvalDate = value;
1237      return this;
1238    }
1239
1240    /**
1241     * @return The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
1242     */
1243    public Date getApprovalDate() { 
1244      return this.approvalDate == null ? null : this.approvalDate.getValue();
1245    }
1246
1247    /**
1248     * @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.
1249     */
1250    public Library setApprovalDate(Date value) { 
1251      if (value == null)
1252        this.approvalDate = null;
1253      else {
1254        if (this.approvalDate == null)
1255          this.approvalDate = new DateType();
1256        this.approvalDate.setValue(value);
1257      }
1258      return this;
1259    }
1260
1261    /**
1262     * @return {@link #lastReviewDate} (The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
1263     */
1264    public DateType getLastReviewDateElement() { 
1265      if (this.lastReviewDate == null)
1266        if (Configuration.errorOnAutoCreate())
1267          throw new Error("Attempt to auto-create Library.lastReviewDate");
1268        else if (Configuration.doAutoCreate())
1269          this.lastReviewDate = new DateType(); // bb
1270      return this.lastReviewDate;
1271    }
1272
1273    public boolean hasLastReviewDateElement() { 
1274      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
1275    }
1276
1277    public boolean hasLastReviewDate() { 
1278      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
1279    }
1280
1281    /**
1282     * @param value {@link #lastReviewDate} (The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
1283     */
1284    public Library setLastReviewDateElement(DateType value) { 
1285      this.lastReviewDate = value;
1286      return this;
1287    }
1288
1289    /**
1290     * @return The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
1291     */
1292    public Date getLastReviewDate() { 
1293      return this.lastReviewDate == null ? null : this.lastReviewDate.getValue();
1294    }
1295
1296    /**
1297     * @param value The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
1298     */
1299    public Library setLastReviewDate(Date value) { 
1300      if (value == null)
1301        this.lastReviewDate = null;
1302      else {
1303        if (this.lastReviewDate == null)
1304          this.lastReviewDate = new DateType();
1305        this.lastReviewDate.setValue(value);
1306      }
1307      return this;
1308    }
1309
1310    /**
1311     * @return {@link #effectivePeriod} (The period during which the library content was or is planned to be in active use.)
1312     */
1313    public Period getEffectivePeriod() { 
1314      if (this.effectivePeriod == null)
1315        if (Configuration.errorOnAutoCreate())
1316          throw new Error("Attempt to auto-create Library.effectivePeriod");
1317        else if (Configuration.doAutoCreate())
1318          this.effectivePeriod = new Period(); // cc
1319      return this.effectivePeriod;
1320    }
1321
1322    public boolean hasEffectivePeriod() { 
1323      return this.effectivePeriod != null && !this.effectivePeriod.isEmpty();
1324    }
1325
1326    /**
1327     * @param value {@link #effectivePeriod} (The period during which the library content was or is planned to be in active use.)
1328     */
1329    public Library setEffectivePeriod(Period value) { 
1330      this.effectivePeriod = value;
1331      return this;
1332    }
1333
1334    /**
1335     * @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.)
1336     */
1337    public List<CodeableConcept> getTopic() { 
1338      if (this.topic == null)
1339        this.topic = new ArrayList<CodeableConcept>();
1340      return this.topic;
1341    }
1342
1343    /**
1344     * @return Returns a reference to <code>this</code> for easy method chaining
1345     */
1346    public Library setTopic(List<CodeableConcept> theTopic) { 
1347      this.topic = theTopic;
1348      return this;
1349    }
1350
1351    public boolean hasTopic() { 
1352      if (this.topic == null)
1353        return false;
1354      for (CodeableConcept item : this.topic)
1355        if (!item.isEmpty())
1356          return true;
1357      return false;
1358    }
1359
1360    public CodeableConcept addTopic() { //3
1361      CodeableConcept t = new CodeableConcept();
1362      if (this.topic == null)
1363        this.topic = new ArrayList<CodeableConcept>();
1364      this.topic.add(t);
1365      return t;
1366    }
1367
1368    public Library addTopic(CodeableConcept t) { //3
1369      if (t == null)
1370        return this;
1371      if (this.topic == null)
1372        this.topic = new ArrayList<CodeableConcept>();
1373      this.topic.add(t);
1374      return this;
1375    }
1376
1377    /**
1378     * @return The first repetition of repeating field {@link #topic}, creating it if it does not already exist {3}
1379     */
1380    public CodeableConcept getTopicFirstRep() { 
1381      if (getTopic().isEmpty()) {
1382        addTopic();
1383      }
1384      return getTopic().get(0);
1385    }
1386
1387    /**
1388     * @return {@link #author} (An individiual or organization primarily involved in the creation and maintenance of the content.)
1389     */
1390    public List<ContactDetail> getAuthor() { 
1391      if (this.author == null)
1392        this.author = new ArrayList<ContactDetail>();
1393      return this.author;
1394    }
1395
1396    /**
1397     * @return Returns a reference to <code>this</code> for easy method chaining
1398     */
1399    public Library setAuthor(List<ContactDetail> theAuthor) { 
1400      this.author = theAuthor;
1401      return this;
1402    }
1403
1404    public boolean hasAuthor() { 
1405      if (this.author == null)
1406        return false;
1407      for (ContactDetail item : this.author)
1408        if (!item.isEmpty())
1409          return true;
1410      return false;
1411    }
1412
1413    public ContactDetail addAuthor() { //3
1414      ContactDetail t = new ContactDetail();
1415      if (this.author == null)
1416        this.author = new ArrayList<ContactDetail>();
1417      this.author.add(t);
1418      return t;
1419    }
1420
1421    public Library addAuthor(ContactDetail t) { //3
1422      if (t == null)
1423        return this;
1424      if (this.author == null)
1425        this.author = new ArrayList<ContactDetail>();
1426      this.author.add(t);
1427      return this;
1428    }
1429
1430    /**
1431     * @return The first repetition of repeating field {@link #author}, creating it if it does not already exist {3}
1432     */
1433    public ContactDetail getAuthorFirstRep() { 
1434      if (getAuthor().isEmpty()) {
1435        addAuthor();
1436      }
1437      return getAuthor().get(0);
1438    }
1439
1440    /**
1441     * @return {@link #editor} (An individual or organization primarily responsible for internal coherence of the content.)
1442     */
1443    public List<ContactDetail> getEditor() { 
1444      if (this.editor == null)
1445        this.editor = new ArrayList<ContactDetail>();
1446      return this.editor;
1447    }
1448
1449    /**
1450     * @return Returns a reference to <code>this</code> for easy method chaining
1451     */
1452    public Library setEditor(List<ContactDetail> theEditor) { 
1453      this.editor = theEditor;
1454      return this;
1455    }
1456
1457    public boolean hasEditor() { 
1458      if (this.editor == null)
1459        return false;
1460      for (ContactDetail item : this.editor)
1461        if (!item.isEmpty())
1462          return true;
1463      return false;
1464    }
1465
1466    public ContactDetail addEditor() { //3
1467      ContactDetail t = new ContactDetail();
1468      if (this.editor == null)
1469        this.editor = new ArrayList<ContactDetail>();
1470      this.editor.add(t);
1471      return t;
1472    }
1473
1474    public Library addEditor(ContactDetail t) { //3
1475      if (t == null)
1476        return this;
1477      if (this.editor == null)
1478        this.editor = new ArrayList<ContactDetail>();
1479      this.editor.add(t);
1480      return this;
1481    }
1482
1483    /**
1484     * @return The first repetition of repeating field {@link #editor}, creating it if it does not already exist {3}
1485     */
1486    public ContactDetail getEditorFirstRep() { 
1487      if (getEditor().isEmpty()) {
1488        addEditor();
1489      }
1490      return getEditor().get(0);
1491    }
1492
1493    /**
1494     * @return {@link #reviewer} (An individual or organization primarily responsible for review of some aspect of the content.)
1495     */
1496    public List<ContactDetail> getReviewer() { 
1497      if (this.reviewer == null)
1498        this.reviewer = new ArrayList<ContactDetail>();
1499      return this.reviewer;
1500    }
1501
1502    /**
1503     * @return Returns a reference to <code>this</code> for easy method chaining
1504     */
1505    public Library setReviewer(List<ContactDetail> theReviewer) { 
1506      this.reviewer = theReviewer;
1507      return this;
1508    }
1509
1510    public boolean hasReviewer() { 
1511      if (this.reviewer == null)
1512        return false;
1513      for (ContactDetail item : this.reviewer)
1514        if (!item.isEmpty())
1515          return true;
1516      return false;
1517    }
1518
1519    public ContactDetail addReviewer() { //3
1520      ContactDetail t = new ContactDetail();
1521      if (this.reviewer == null)
1522        this.reviewer = new ArrayList<ContactDetail>();
1523      this.reviewer.add(t);
1524      return t;
1525    }
1526
1527    public Library addReviewer(ContactDetail t) { //3
1528      if (t == null)
1529        return this;
1530      if (this.reviewer == null)
1531        this.reviewer = new ArrayList<ContactDetail>();
1532      this.reviewer.add(t);
1533      return this;
1534    }
1535
1536    /**
1537     * @return The first repetition of repeating field {@link #reviewer}, creating it if it does not already exist {3}
1538     */
1539    public ContactDetail getReviewerFirstRep() { 
1540      if (getReviewer().isEmpty()) {
1541        addReviewer();
1542      }
1543      return getReviewer().get(0);
1544    }
1545
1546    /**
1547     * @return {@link #endorser} (An individual or organization responsible for officially endorsing the content for use in some setting.)
1548     */
1549    public List<ContactDetail> getEndorser() { 
1550      if (this.endorser == null)
1551        this.endorser = new ArrayList<ContactDetail>();
1552      return this.endorser;
1553    }
1554
1555    /**
1556     * @return Returns a reference to <code>this</code> for easy method chaining
1557     */
1558    public Library setEndorser(List<ContactDetail> theEndorser) { 
1559      this.endorser = theEndorser;
1560      return this;
1561    }
1562
1563    public boolean hasEndorser() { 
1564      if (this.endorser == null)
1565        return false;
1566      for (ContactDetail item : this.endorser)
1567        if (!item.isEmpty())
1568          return true;
1569      return false;
1570    }
1571
1572    public ContactDetail addEndorser() { //3
1573      ContactDetail t = new ContactDetail();
1574      if (this.endorser == null)
1575        this.endorser = new ArrayList<ContactDetail>();
1576      this.endorser.add(t);
1577      return t;
1578    }
1579
1580    public Library addEndorser(ContactDetail t) { //3
1581      if (t == null)
1582        return this;
1583      if (this.endorser == null)
1584        this.endorser = new ArrayList<ContactDetail>();
1585      this.endorser.add(t);
1586      return this;
1587    }
1588
1589    /**
1590     * @return The first repetition of repeating field {@link #endorser}, creating it if it does not already exist {3}
1591     */
1592    public ContactDetail getEndorserFirstRep() { 
1593      if (getEndorser().isEmpty()) {
1594        addEndorser();
1595      }
1596      return getEndorser().get(0);
1597    }
1598
1599    /**
1600     * @return {@link #relatedArtifact} (Related artifacts such as additional documentation, justification, or bibliographic references.)
1601     */
1602    public List<RelatedArtifact> getRelatedArtifact() { 
1603      if (this.relatedArtifact == null)
1604        this.relatedArtifact = new ArrayList<RelatedArtifact>();
1605      return this.relatedArtifact;
1606    }
1607
1608    /**
1609     * @return Returns a reference to <code>this</code> for easy method chaining
1610     */
1611    public Library setRelatedArtifact(List<RelatedArtifact> theRelatedArtifact) { 
1612      this.relatedArtifact = theRelatedArtifact;
1613      return this;
1614    }
1615
1616    public boolean hasRelatedArtifact() { 
1617      if (this.relatedArtifact == null)
1618        return false;
1619      for (RelatedArtifact item : this.relatedArtifact)
1620        if (!item.isEmpty())
1621          return true;
1622      return false;
1623    }
1624
1625    public RelatedArtifact addRelatedArtifact() { //3
1626      RelatedArtifact t = new RelatedArtifact();
1627      if (this.relatedArtifact == null)
1628        this.relatedArtifact = new ArrayList<RelatedArtifact>();
1629      this.relatedArtifact.add(t);
1630      return t;
1631    }
1632
1633    public Library addRelatedArtifact(RelatedArtifact t) { //3
1634      if (t == null)
1635        return this;
1636      if (this.relatedArtifact == null)
1637        this.relatedArtifact = new ArrayList<RelatedArtifact>();
1638      this.relatedArtifact.add(t);
1639      return this;
1640    }
1641
1642    /**
1643     * @return The first repetition of repeating field {@link #relatedArtifact}, creating it if it does not already exist {3}
1644     */
1645    public RelatedArtifact getRelatedArtifactFirstRep() { 
1646      if (getRelatedArtifact().isEmpty()) {
1647        addRelatedArtifact();
1648      }
1649      return getRelatedArtifact().get(0);
1650    }
1651
1652    /**
1653     * @return {@link #parameter} (The parameter element defines parameters used by the library.)
1654     */
1655    public List<ParameterDefinition> getParameter() { 
1656      if (this.parameter == null)
1657        this.parameter = new ArrayList<ParameterDefinition>();
1658      return this.parameter;
1659    }
1660
1661    /**
1662     * @return Returns a reference to <code>this</code> for easy method chaining
1663     */
1664    public Library setParameter(List<ParameterDefinition> theParameter) { 
1665      this.parameter = theParameter;
1666      return this;
1667    }
1668
1669    public boolean hasParameter() { 
1670      if (this.parameter == null)
1671        return false;
1672      for (ParameterDefinition item : this.parameter)
1673        if (!item.isEmpty())
1674          return true;
1675      return false;
1676    }
1677
1678    public ParameterDefinition addParameter() { //3
1679      ParameterDefinition t = new ParameterDefinition();
1680      if (this.parameter == null)
1681        this.parameter = new ArrayList<ParameterDefinition>();
1682      this.parameter.add(t);
1683      return t;
1684    }
1685
1686    public Library addParameter(ParameterDefinition t) { //3
1687      if (t == null)
1688        return this;
1689      if (this.parameter == null)
1690        this.parameter = new ArrayList<ParameterDefinition>();
1691      this.parameter.add(t);
1692      return this;
1693    }
1694
1695    /**
1696     * @return The first repetition of repeating field {@link #parameter}, creating it if it does not already exist {3}
1697     */
1698    public ParameterDefinition getParameterFirstRep() { 
1699      if (getParameter().isEmpty()) {
1700        addParameter();
1701      }
1702      return getParameter().get(0);
1703    }
1704
1705    /**
1706     * @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.)
1707     */
1708    public List<DataRequirement> getDataRequirement() { 
1709      if (this.dataRequirement == null)
1710        this.dataRequirement = new ArrayList<DataRequirement>();
1711      return this.dataRequirement;
1712    }
1713
1714    /**
1715     * @return Returns a reference to <code>this</code> for easy method chaining
1716     */
1717    public Library setDataRequirement(List<DataRequirement> theDataRequirement) { 
1718      this.dataRequirement = theDataRequirement;
1719      return this;
1720    }
1721
1722    public boolean hasDataRequirement() { 
1723      if (this.dataRequirement == null)
1724        return false;
1725      for (DataRequirement item : this.dataRequirement)
1726        if (!item.isEmpty())
1727          return true;
1728      return false;
1729    }
1730
1731    public DataRequirement addDataRequirement() { //3
1732      DataRequirement t = new DataRequirement();
1733      if (this.dataRequirement == null)
1734        this.dataRequirement = new ArrayList<DataRequirement>();
1735      this.dataRequirement.add(t);
1736      return t;
1737    }
1738
1739    public Library addDataRequirement(DataRequirement t) { //3
1740      if (t == null)
1741        return this;
1742      if (this.dataRequirement == null)
1743        this.dataRequirement = new ArrayList<DataRequirement>();
1744      this.dataRequirement.add(t);
1745      return this;
1746    }
1747
1748    /**
1749     * @return The first repetition of repeating field {@link #dataRequirement}, creating it if it does not already exist {3}
1750     */
1751    public DataRequirement getDataRequirementFirstRep() { 
1752      if (getDataRequirement().isEmpty()) {
1753        addDataRequirement();
1754      }
1755      return getDataRequirement().get(0);
1756    }
1757
1758    /**
1759     * @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.)
1760     */
1761    public List<Attachment> getContent() { 
1762      if (this.content == null)
1763        this.content = new ArrayList<Attachment>();
1764      return this.content;
1765    }
1766
1767    /**
1768     * @return Returns a reference to <code>this</code> for easy method chaining
1769     */
1770    public Library setContent(List<Attachment> theContent) { 
1771      this.content = theContent;
1772      return this;
1773    }
1774
1775    public boolean hasContent() { 
1776      if (this.content == null)
1777        return false;
1778      for (Attachment item : this.content)
1779        if (!item.isEmpty())
1780          return true;
1781      return false;
1782    }
1783
1784    public Attachment addContent() { //3
1785      Attachment t = new Attachment();
1786      if (this.content == null)
1787        this.content = new ArrayList<Attachment>();
1788      this.content.add(t);
1789      return t;
1790    }
1791
1792    public Library addContent(Attachment t) { //3
1793      if (t == null)
1794        return this;
1795      if (this.content == null)
1796        this.content = new ArrayList<Attachment>();
1797      this.content.add(t);
1798      return this;
1799    }
1800
1801    /**
1802     * @return The first repetition of repeating field {@link #content}, creating it if it does not already exist {3}
1803     */
1804    public Attachment getContentFirstRep() { 
1805      if (getContent().isEmpty()) {
1806        addContent();
1807      }
1808      return getContent().get(0);
1809    }
1810
1811      protected void listChildren(List<Property> children) {
1812        super.listChildren(children);
1813        children.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; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this library is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the library is stored on different servers.", 0, 1, url));
1814        children.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));
1815        children.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, 1, version));
1816        children.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, 1, name));
1817        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the library.", 0, 1, title));
1818        children.add(new Property("subtitle", "string", "An explanatory or alternate title for the library giving additional information about its content.", 0, 1, subtitle));
1819        children.add(new Property("status", "code", "The status of this library. Enables tracking the life-cycle of the content.", 0, 1, status));
1820        children.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, 1, experimental));
1821        children.add(new Property("type", "CodeableConcept", "Identifies the type of library such as a Logic Library, Model Definition, Asset Collection, or Module Definition.", 0, 1, type));
1822        children.add(new Property("subject[x]", "CodeableConcept|Reference(Group)", "A code or group definition that describes the intended subject of the contents of the library.", 0, 1, subject));
1823        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the library was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the library changes.", 0, 1, date));
1824        children.add(new Property("publisher", "string", "The name of the organization or individual that published the library.", 0, 1, publisher));
1825        children.add(new Property("contact", "ContactDetail", "Contact details to assist a user in finding and communicating with the publisher.", 0, java.lang.Integer.MAX_VALUE, contact));
1826        children.add(new Property("description", "markdown", "A free text natural language description of the library from a consumer's perspective.", 0, 1, description));
1827        children.add(new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate library instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
1828        children.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));
1829        children.add(new Property("purpose", "markdown", "Explanation of why this library is needed and why it has been designed as it has.", 0, 1, purpose));
1830        children.add(new Property("usage", "string", "A detailed description of how the library is used from a clinical perspective.", 0, 1, usage));
1831        children.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, 1, copyright));
1832        children.add(new Property("approvalDate", "date", "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate));
1833        children.add(new Property("lastReviewDate", "date", "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.", 0, 1, lastReviewDate));
1834        children.add(new Property("effectivePeriod", "Period", "The period during which the library content was or is planned to be in active use.", 0, 1, effectivePeriod));
1835        children.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));
1836        children.add(new Property("author", "ContactDetail", "An individiual or organization primarily involved in the creation and maintenance of the content.", 0, java.lang.Integer.MAX_VALUE, author));
1837        children.add(new Property("editor", "ContactDetail", "An individual or organization primarily responsible for internal coherence of the content.", 0, java.lang.Integer.MAX_VALUE, editor));
1838        children.add(new Property("reviewer", "ContactDetail", "An individual or organization primarily responsible for review of some aspect of the content.", 0, java.lang.Integer.MAX_VALUE, reviewer));
1839        children.add(new Property("endorser", "ContactDetail", "An individual or organization responsible for officially endorsing the content for use in some setting.", 0, java.lang.Integer.MAX_VALUE, endorser));
1840        children.add(new Property("relatedArtifact", "RelatedArtifact", "Related artifacts such as additional documentation, justification, or bibliographic references.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact));
1841        children.add(new Property("parameter", "ParameterDefinition", "The parameter element defines parameters used by the library.", 0, java.lang.Integer.MAX_VALUE, parameter));
1842        children.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));
1843        children.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));
1844      }
1845
1846      @Override
1847      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1848        switch (_hash) {
1849        case 116079: /*url*/  return 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; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this library is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the library is stored on different servers.", 0, 1, url);
1850        case -1618432855: /*identifier*/  return 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);
1851        case 351608024: /*version*/  return 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, 1, version);
1852        case 3373707: /*name*/  return 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, 1, name);
1853        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the library.", 0, 1, title);
1854        case -2060497896: /*subtitle*/  return new Property("subtitle", "string", "An explanatory or alternate title for the library giving additional information about its content.", 0, 1, subtitle);
1855        case -892481550: /*status*/  return new Property("status", "code", "The status of this library. Enables tracking the life-cycle of the content.", 0, 1, status);
1856        case -404562712: /*experimental*/  return 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, 1, experimental);
1857        case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Identifies the type of library such as a Logic Library, Model Definition, Asset Collection, or Module Definition.", 0, 1, type);
1858        case -573640748: /*subject[x]*/  return new Property("subject[x]", "CodeableConcept|Reference(Group)", "A code or group definition that describes the intended subject of the contents of the library.", 0, 1, subject);
1859        case -1867885268: /*subject*/  return new Property("subject[x]", "CodeableConcept|Reference(Group)", "A code or group definition that describes the intended subject of the contents of the library.", 0, 1, subject);
1860        case -1257122603: /*subjectCodeableConcept*/  return new Property("subject[x]", "CodeableConcept", "A code or group definition that describes the intended subject of the contents of the library.", 0, 1, subject);
1861        case 772938623: /*subjectReference*/  return new Property("subject[x]", "Reference(Group)", "A code or group definition that describes the intended subject of the contents of the library.", 0, 1, subject);
1862        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the library was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the library changes.", 0, 1, date);
1863        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the library.", 0, 1, publisher);
1864        case 951526432: /*contact*/  return new Property("contact", "ContactDetail", "Contact details to assist a user in finding and communicating with the publisher.", 0, java.lang.Integer.MAX_VALUE, contact);
1865        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the library from a consumer's perspective.", 0, 1, description);
1866        case -669707736: /*useContext*/  return new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate library instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
1867        case -507075711: /*jurisdiction*/  return 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);
1868        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "Explanation of why this library is needed and why it has been designed as it has.", 0, 1, purpose);
1869        case 111574433: /*usage*/  return new Property("usage", "string", "A detailed description of how the library is used from a clinical perspective.", 0, 1, usage);
1870        case 1522889671: /*copyright*/  return 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, 1, copyright);
1871        case 223539345: /*approvalDate*/  return new Property("approvalDate", "date", "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate);
1872        case -1687512484: /*lastReviewDate*/  return new Property("lastReviewDate", "date", "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.", 0, 1, lastReviewDate);
1873        case -403934648: /*effectivePeriod*/  return new Property("effectivePeriod", "Period", "The period during which the library content was or is planned to be in active use.", 0, 1, effectivePeriod);
1874        case 110546223: /*topic*/  return 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);
1875        case -1406328437: /*author*/  return new Property("author", "ContactDetail", "An individiual or organization primarily involved in the creation and maintenance of the content.", 0, java.lang.Integer.MAX_VALUE, author);
1876        case -1307827859: /*editor*/  return new Property("editor", "ContactDetail", "An individual or organization primarily responsible for internal coherence of the content.", 0, java.lang.Integer.MAX_VALUE, editor);
1877        case -261190139: /*reviewer*/  return new Property("reviewer", "ContactDetail", "An individual or organization primarily responsible for review of some aspect of the content.", 0, java.lang.Integer.MAX_VALUE, reviewer);
1878        case 1740277666: /*endorser*/  return new Property("endorser", "ContactDetail", "An individual or organization responsible for officially endorsing the content for use in some setting.", 0, java.lang.Integer.MAX_VALUE, endorser);
1879        case 666807069: /*relatedArtifact*/  return new Property("relatedArtifact", "RelatedArtifact", "Related artifacts such as additional documentation, justification, or bibliographic references.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact);
1880        case 1954460585: /*parameter*/  return new Property("parameter", "ParameterDefinition", "The parameter element defines parameters used by the library.", 0, java.lang.Integer.MAX_VALUE, parameter);
1881        case 629147193: /*dataRequirement*/  return 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);
1882        case 951530617: /*content*/  return 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);
1883        default: return super.getNamedProperty(_hash, _name, _checkValid);
1884        }
1885
1886      }
1887
1888      @Override
1889      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1890        switch (hash) {
1891        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
1892        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1893        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
1894        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
1895        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
1896        case -2060497896: /*subtitle*/ return this.subtitle == null ? new Base[0] : new Base[] {this.subtitle}; // StringType
1897        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
1898        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
1899        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
1900        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // DataType
1901        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
1902        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
1903        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
1904        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
1905        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
1906        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
1907        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
1908        case 111574433: /*usage*/ return this.usage == null ? new Base[0] : new Base[] {this.usage}; // StringType
1909        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
1910        case 223539345: /*approvalDate*/ return this.approvalDate == null ? new Base[0] : new Base[] {this.approvalDate}; // DateType
1911        case -1687512484: /*lastReviewDate*/ return this.lastReviewDate == null ? new Base[0] : new Base[] {this.lastReviewDate}; // DateType
1912        case -403934648: /*effectivePeriod*/ return this.effectivePeriod == null ? new Base[0] : new Base[] {this.effectivePeriod}; // Period
1913        case 110546223: /*topic*/ return this.topic == null ? new Base[0] : this.topic.toArray(new Base[this.topic.size()]); // CodeableConcept
1914        case -1406328437: /*author*/ return this.author == null ? new Base[0] : this.author.toArray(new Base[this.author.size()]); // ContactDetail
1915        case -1307827859: /*editor*/ return this.editor == null ? new Base[0] : this.editor.toArray(new Base[this.editor.size()]); // ContactDetail
1916        case -261190139: /*reviewer*/ return this.reviewer == null ? new Base[0] : this.reviewer.toArray(new Base[this.reviewer.size()]); // ContactDetail
1917        case 1740277666: /*endorser*/ return this.endorser == null ? new Base[0] : this.endorser.toArray(new Base[this.endorser.size()]); // ContactDetail
1918        case 666807069: /*relatedArtifact*/ return this.relatedArtifact == null ? new Base[0] : this.relatedArtifact.toArray(new Base[this.relatedArtifact.size()]); // RelatedArtifact
1919        case 1954460585: /*parameter*/ return this.parameter == null ? new Base[0] : this.parameter.toArray(new Base[this.parameter.size()]); // ParameterDefinition
1920        case 629147193: /*dataRequirement*/ return this.dataRequirement == null ? new Base[0] : this.dataRequirement.toArray(new Base[this.dataRequirement.size()]); // DataRequirement
1921        case 951530617: /*content*/ return this.content == null ? new Base[0] : this.content.toArray(new Base[this.content.size()]); // Attachment
1922        default: return super.getProperty(hash, name, checkValid);
1923        }
1924
1925      }
1926
1927      @Override
1928      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1929        switch (hash) {
1930        case 116079: // url
1931          this.url = TypeConvertor.castToUri(value); // UriType
1932          return value;
1933        case -1618432855: // identifier
1934          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1935          return value;
1936        case 351608024: // version
1937          this.version = TypeConvertor.castToString(value); // StringType
1938          return value;
1939        case 3373707: // name
1940          this.name = TypeConvertor.castToString(value); // StringType
1941          return value;
1942        case 110371416: // title
1943          this.title = TypeConvertor.castToString(value); // StringType
1944          return value;
1945        case -2060497896: // subtitle
1946          this.subtitle = TypeConvertor.castToString(value); // StringType
1947          return value;
1948        case -892481550: // status
1949          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1950          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
1951          return value;
1952        case -404562712: // experimental
1953          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
1954          return value;
1955        case 3575610: // type
1956          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1957          return value;
1958        case -1867885268: // subject
1959          this.subject = TypeConvertor.castToType(value); // DataType
1960          return value;
1961        case 3076014: // date
1962          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
1963          return value;
1964        case 1447404028: // publisher
1965          this.publisher = TypeConvertor.castToString(value); // StringType
1966          return value;
1967        case 951526432: // contact
1968          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
1969          return value;
1970        case -1724546052: // description
1971          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
1972          return value;
1973        case -669707736: // useContext
1974          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
1975          return value;
1976        case -507075711: // jurisdiction
1977          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1978          return value;
1979        case -220463842: // purpose
1980          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
1981          return value;
1982        case 111574433: // usage
1983          this.usage = TypeConvertor.castToString(value); // StringType
1984          return value;
1985        case 1522889671: // copyright
1986          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
1987          return value;
1988        case 223539345: // approvalDate
1989          this.approvalDate = TypeConvertor.castToDate(value); // DateType
1990          return value;
1991        case -1687512484: // lastReviewDate
1992          this.lastReviewDate = TypeConvertor.castToDate(value); // DateType
1993          return value;
1994        case -403934648: // effectivePeriod
1995          this.effectivePeriod = TypeConvertor.castToPeriod(value); // Period
1996          return value;
1997        case 110546223: // topic
1998          this.getTopic().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1999          return value;
2000        case -1406328437: // author
2001          this.getAuthor().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
2002          return value;
2003        case -1307827859: // editor
2004          this.getEditor().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
2005          return value;
2006        case -261190139: // reviewer
2007          this.getReviewer().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
2008          return value;
2009        case 1740277666: // endorser
2010          this.getEndorser().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
2011          return value;
2012        case 666807069: // relatedArtifact
2013          this.getRelatedArtifact().add(TypeConvertor.castToRelatedArtifact(value)); // RelatedArtifact
2014          return value;
2015        case 1954460585: // parameter
2016          this.getParameter().add(TypeConvertor.castToParameterDefinition(value)); // ParameterDefinition
2017          return value;
2018        case 629147193: // dataRequirement
2019          this.getDataRequirement().add(TypeConvertor.castToDataRequirement(value)); // DataRequirement
2020          return value;
2021        case 951530617: // content
2022          this.getContent().add(TypeConvertor.castToAttachment(value)); // Attachment
2023          return value;
2024        default: return super.setProperty(hash, name, value);
2025        }
2026
2027      }
2028
2029      @Override
2030      public Base setProperty(String name, Base value) throws FHIRException {
2031        if (name.equals("url")) {
2032          this.url = TypeConvertor.castToUri(value); // UriType
2033        } else if (name.equals("identifier")) {
2034          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
2035        } else if (name.equals("version")) {
2036          this.version = TypeConvertor.castToString(value); // StringType
2037        } else if (name.equals("name")) {
2038          this.name = TypeConvertor.castToString(value); // StringType
2039        } else if (name.equals("title")) {
2040          this.title = TypeConvertor.castToString(value); // StringType
2041        } else if (name.equals("subtitle")) {
2042          this.subtitle = TypeConvertor.castToString(value); // StringType
2043        } else if (name.equals("status")) {
2044          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2045          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
2046        } else if (name.equals("experimental")) {
2047          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
2048        } else if (name.equals("type")) {
2049          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2050        } else if (name.equals("subject[x]")) {
2051          this.subject = TypeConvertor.castToType(value); // DataType
2052        } else if (name.equals("date")) {
2053          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
2054        } else if (name.equals("publisher")) {
2055          this.publisher = TypeConvertor.castToString(value); // StringType
2056        } else if (name.equals("contact")) {
2057          this.getContact().add(TypeConvertor.castToContactDetail(value));
2058        } else if (name.equals("description")) {
2059          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
2060        } else if (name.equals("useContext")) {
2061          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
2062        } else if (name.equals("jurisdiction")) {
2063          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
2064        } else if (name.equals("purpose")) {
2065          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
2066        } else if (name.equals("usage")) {
2067          this.usage = TypeConvertor.castToString(value); // StringType
2068        } else if (name.equals("copyright")) {
2069          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
2070        } else if (name.equals("approvalDate")) {
2071          this.approvalDate = TypeConvertor.castToDate(value); // DateType
2072        } else if (name.equals("lastReviewDate")) {
2073          this.lastReviewDate = TypeConvertor.castToDate(value); // DateType
2074        } else if (name.equals("effectivePeriod")) {
2075          this.effectivePeriod = TypeConvertor.castToPeriod(value); // Period
2076        } else if (name.equals("topic")) {
2077          this.getTopic().add(TypeConvertor.castToCodeableConcept(value));
2078        } else if (name.equals("author")) {
2079          this.getAuthor().add(TypeConvertor.castToContactDetail(value));
2080        } else if (name.equals("editor")) {
2081          this.getEditor().add(TypeConvertor.castToContactDetail(value));
2082        } else if (name.equals("reviewer")) {
2083          this.getReviewer().add(TypeConvertor.castToContactDetail(value));
2084        } else if (name.equals("endorser")) {
2085          this.getEndorser().add(TypeConvertor.castToContactDetail(value));
2086        } else if (name.equals("relatedArtifact")) {
2087          this.getRelatedArtifact().add(TypeConvertor.castToRelatedArtifact(value));
2088        } else if (name.equals("parameter")) {
2089          this.getParameter().add(TypeConvertor.castToParameterDefinition(value));
2090        } else if (name.equals("dataRequirement")) {
2091          this.getDataRequirement().add(TypeConvertor.castToDataRequirement(value));
2092        } else if (name.equals("content")) {
2093          this.getContent().add(TypeConvertor.castToAttachment(value));
2094        } else
2095          return super.setProperty(name, value);
2096        return value;
2097      }
2098
2099      @Override
2100      public Base makeProperty(int hash, String name) throws FHIRException {
2101        switch (hash) {
2102        case 116079:  return getUrlElement();
2103        case -1618432855:  return addIdentifier(); 
2104        case 351608024:  return getVersionElement();
2105        case 3373707:  return getNameElement();
2106        case 110371416:  return getTitleElement();
2107        case -2060497896:  return getSubtitleElement();
2108        case -892481550:  return getStatusElement();
2109        case -404562712:  return getExperimentalElement();
2110        case 3575610:  return getType();
2111        case -573640748:  return getSubject();
2112        case -1867885268:  return getSubject();
2113        case 3076014:  return getDateElement();
2114        case 1447404028:  return getPublisherElement();
2115        case 951526432:  return addContact(); 
2116        case -1724546052:  return getDescriptionElement();
2117        case -669707736:  return addUseContext(); 
2118        case -507075711:  return addJurisdiction(); 
2119        case -220463842:  return getPurposeElement();
2120        case 111574433:  return getUsageElement();
2121        case 1522889671:  return getCopyrightElement();
2122        case 223539345:  return getApprovalDateElement();
2123        case -1687512484:  return getLastReviewDateElement();
2124        case -403934648:  return getEffectivePeriod();
2125        case 110546223:  return addTopic(); 
2126        case -1406328437:  return addAuthor(); 
2127        case -1307827859:  return addEditor(); 
2128        case -261190139:  return addReviewer(); 
2129        case 1740277666:  return addEndorser(); 
2130        case 666807069:  return addRelatedArtifact(); 
2131        case 1954460585:  return addParameter(); 
2132        case 629147193:  return addDataRequirement(); 
2133        case 951530617:  return addContent(); 
2134        default: return super.makeProperty(hash, name);
2135        }
2136
2137      }
2138
2139      @Override
2140      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2141        switch (hash) {
2142        case 116079: /*url*/ return new String[] {"uri"};
2143        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2144        case 351608024: /*version*/ return new String[] {"string"};
2145        case 3373707: /*name*/ return new String[] {"string"};
2146        case 110371416: /*title*/ return new String[] {"string"};
2147        case -2060497896: /*subtitle*/ return new String[] {"string"};
2148        case -892481550: /*status*/ return new String[] {"code"};
2149        case -404562712: /*experimental*/ return new String[] {"boolean"};
2150        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
2151        case -1867885268: /*subject*/ return new String[] {"CodeableConcept", "Reference"};
2152        case 3076014: /*date*/ return new String[] {"dateTime"};
2153        case 1447404028: /*publisher*/ return new String[] {"string"};
2154        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
2155        case -1724546052: /*description*/ return new String[] {"markdown"};
2156        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
2157        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
2158        case -220463842: /*purpose*/ return new String[] {"markdown"};
2159        case 111574433: /*usage*/ return new String[] {"string"};
2160        case 1522889671: /*copyright*/ return new String[] {"markdown"};
2161        case 223539345: /*approvalDate*/ return new String[] {"date"};
2162        case -1687512484: /*lastReviewDate*/ return new String[] {"date"};
2163        case -403934648: /*effectivePeriod*/ return new String[] {"Period"};
2164        case 110546223: /*topic*/ return new String[] {"CodeableConcept"};
2165        case -1406328437: /*author*/ return new String[] {"ContactDetail"};
2166        case -1307827859: /*editor*/ return new String[] {"ContactDetail"};
2167        case -261190139: /*reviewer*/ return new String[] {"ContactDetail"};
2168        case 1740277666: /*endorser*/ return new String[] {"ContactDetail"};
2169        case 666807069: /*relatedArtifact*/ return new String[] {"RelatedArtifact"};
2170        case 1954460585: /*parameter*/ return new String[] {"ParameterDefinition"};
2171        case 629147193: /*dataRequirement*/ return new String[] {"DataRequirement"};
2172        case 951530617: /*content*/ return new String[] {"Attachment"};
2173        default: return super.getTypesForProperty(hash, name);
2174        }
2175
2176      }
2177
2178      @Override
2179      public Base addChild(String name) throws FHIRException {
2180        if (name.equals("url")) {
2181          throw new FHIRException("Cannot call addChild on a primitive type Library.url");
2182        }
2183        else if (name.equals("identifier")) {
2184          return addIdentifier();
2185        }
2186        else if (name.equals("version")) {
2187          throw new FHIRException("Cannot call addChild on a primitive type Library.version");
2188        }
2189        else if (name.equals("name")) {
2190          throw new FHIRException("Cannot call addChild on a primitive type Library.name");
2191        }
2192        else if (name.equals("title")) {
2193          throw new FHIRException("Cannot call addChild on a primitive type Library.title");
2194        }
2195        else if (name.equals("subtitle")) {
2196          throw new FHIRException("Cannot call addChild on a primitive type Library.subtitle");
2197        }
2198        else if (name.equals("status")) {
2199          throw new FHIRException("Cannot call addChild on a primitive type Library.status");
2200        }
2201        else if (name.equals("experimental")) {
2202          throw new FHIRException("Cannot call addChild on a primitive type Library.experimental");
2203        }
2204        else if (name.equals("type")) {
2205          this.type = new CodeableConcept();
2206          return this.type;
2207        }
2208        else if (name.equals("subjectCodeableConcept")) {
2209          this.subject = new CodeableConcept();
2210          return this.subject;
2211        }
2212        else if (name.equals("subjectReference")) {
2213          this.subject = new Reference();
2214          return this.subject;
2215        }
2216        else if (name.equals("date")) {
2217          throw new FHIRException("Cannot call addChild on a primitive type Library.date");
2218        }
2219        else if (name.equals("publisher")) {
2220          throw new FHIRException("Cannot call addChild on a primitive type Library.publisher");
2221        }
2222        else if (name.equals("contact")) {
2223          return addContact();
2224        }
2225        else if (name.equals("description")) {
2226          throw new FHIRException("Cannot call addChild on a primitive type Library.description");
2227        }
2228        else if (name.equals("useContext")) {
2229          return addUseContext();
2230        }
2231        else if (name.equals("jurisdiction")) {
2232          return addJurisdiction();
2233        }
2234        else if (name.equals("purpose")) {
2235          throw new FHIRException("Cannot call addChild on a primitive type Library.purpose");
2236        }
2237        else if (name.equals("usage")) {
2238          throw new FHIRException("Cannot call addChild on a primitive type Library.usage");
2239        }
2240        else if (name.equals("copyright")) {
2241          throw new FHIRException("Cannot call addChild on a primitive type Library.copyright");
2242        }
2243        else if (name.equals("approvalDate")) {
2244          throw new FHIRException("Cannot call addChild on a primitive type Library.approvalDate");
2245        }
2246        else if (name.equals("lastReviewDate")) {
2247          throw new FHIRException("Cannot call addChild on a primitive type Library.lastReviewDate");
2248        }
2249        else if (name.equals("effectivePeriod")) {
2250          this.effectivePeriod = new Period();
2251          return this.effectivePeriod;
2252        }
2253        else if (name.equals("topic")) {
2254          return addTopic();
2255        }
2256        else if (name.equals("author")) {
2257          return addAuthor();
2258        }
2259        else if (name.equals("editor")) {
2260          return addEditor();
2261        }
2262        else if (name.equals("reviewer")) {
2263          return addReviewer();
2264        }
2265        else if (name.equals("endorser")) {
2266          return addEndorser();
2267        }
2268        else if (name.equals("relatedArtifact")) {
2269          return addRelatedArtifact();
2270        }
2271        else if (name.equals("parameter")) {
2272          return addParameter();
2273        }
2274        else if (name.equals("dataRequirement")) {
2275          return addDataRequirement();
2276        }
2277        else if (name.equals("content")) {
2278          return addContent();
2279        }
2280        else
2281          return super.addChild(name);
2282      }
2283
2284  public String fhirType() {
2285    return "Library";
2286
2287  }
2288
2289      public Library copy() {
2290        Library dst = new Library();
2291        copyValues(dst);
2292        return dst;
2293      }
2294
2295      public void copyValues(Library dst) {
2296        super.copyValues(dst);
2297        dst.url = url == null ? null : url.copy();
2298        if (identifier != null) {
2299          dst.identifier = new ArrayList<Identifier>();
2300          for (Identifier i : identifier)
2301            dst.identifier.add(i.copy());
2302        };
2303        dst.version = version == null ? null : version.copy();
2304        dst.name = name == null ? null : name.copy();
2305        dst.title = title == null ? null : title.copy();
2306        dst.subtitle = subtitle == null ? null : subtitle.copy();
2307        dst.status = status == null ? null : status.copy();
2308        dst.experimental = experimental == null ? null : experimental.copy();
2309        dst.type = type == null ? null : type.copy();
2310        dst.subject = subject == null ? null : subject.copy();
2311        dst.date = date == null ? null : date.copy();
2312        dst.publisher = publisher == null ? null : publisher.copy();
2313        if (contact != null) {
2314          dst.contact = new ArrayList<ContactDetail>();
2315          for (ContactDetail i : contact)
2316            dst.contact.add(i.copy());
2317        };
2318        dst.description = description == null ? null : description.copy();
2319        if (useContext != null) {
2320          dst.useContext = new ArrayList<UsageContext>();
2321          for (UsageContext i : useContext)
2322            dst.useContext.add(i.copy());
2323        };
2324        if (jurisdiction != null) {
2325          dst.jurisdiction = new ArrayList<CodeableConcept>();
2326          for (CodeableConcept i : jurisdiction)
2327            dst.jurisdiction.add(i.copy());
2328        };
2329        dst.purpose = purpose == null ? null : purpose.copy();
2330        dst.usage = usage == null ? null : usage.copy();
2331        dst.copyright = copyright == null ? null : copyright.copy();
2332        dst.approvalDate = approvalDate == null ? null : approvalDate.copy();
2333        dst.lastReviewDate = lastReviewDate == null ? null : lastReviewDate.copy();
2334        dst.effectivePeriod = effectivePeriod == null ? null : effectivePeriod.copy();
2335        if (topic != null) {
2336          dst.topic = new ArrayList<CodeableConcept>();
2337          for (CodeableConcept i : topic)
2338            dst.topic.add(i.copy());
2339        };
2340        if (author != null) {
2341          dst.author = new ArrayList<ContactDetail>();
2342          for (ContactDetail i : author)
2343            dst.author.add(i.copy());
2344        };
2345        if (editor != null) {
2346          dst.editor = new ArrayList<ContactDetail>();
2347          for (ContactDetail i : editor)
2348            dst.editor.add(i.copy());
2349        };
2350        if (reviewer != null) {
2351          dst.reviewer = new ArrayList<ContactDetail>();
2352          for (ContactDetail i : reviewer)
2353            dst.reviewer.add(i.copy());
2354        };
2355        if (endorser != null) {
2356          dst.endorser = new ArrayList<ContactDetail>();
2357          for (ContactDetail i : endorser)
2358            dst.endorser.add(i.copy());
2359        };
2360        if (relatedArtifact != null) {
2361          dst.relatedArtifact = new ArrayList<RelatedArtifact>();
2362          for (RelatedArtifact i : relatedArtifact)
2363            dst.relatedArtifact.add(i.copy());
2364        };
2365        if (parameter != null) {
2366          dst.parameter = new ArrayList<ParameterDefinition>();
2367          for (ParameterDefinition i : parameter)
2368            dst.parameter.add(i.copy());
2369        };
2370        if (dataRequirement != null) {
2371          dst.dataRequirement = new ArrayList<DataRequirement>();
2372          for (DataRequirement i : dataRequirement)
2373            dst.dataRequirement.add(i.copy());
2374        };
2375        if (content != null) {
2376          dst.content = new ArrayList<Attachment>();
2377          for (Attachment i : content)
2378            dst.content.add(i.copy());
2379        };
2380      }
2381
2382      protected Library typedCopy() {
2383        return copy();
2384      }
2385
2386      @Override
2387      public boolean equalsDeep(Base other_) {
2388        if (!super.equalsDeep(other_))
2389          return false;
2390        if (!(other_ instanceof Library))
2391          return false;
2392        Library o = (Library) other_;
2393        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
2394           && compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(subtitle, o.subtitle, true)
2395           && compareDeep(status, o.status, true) && compareDeep(experimental, o.experimental, true) && compareDeep(type, o.type, true)
2396           && compareDeep(subject, o.subject, true) && compareDeep(date, o.date, true) && compareDeep(publisher, o.publisher, true)
2397           && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true) && compareDeep(useContext, o.useContext, true)
2398           && compareDeep(jurisdiction, o.jurisdiction, true) && compareDeep(purpose, o.purpose, true) && compareDeep(usage, o.usage, true)
2399           && compareDeep(copyright, o.copyright, true) && compareDeep(approvalDate, o.approvalDate, true)
2400           && compareDeep(lastReviewDate, o.lastReviewDate, true) && compareDeep(effectivePeriod, o.effectivePeriod, true)
2401           && compareDeep(topic, o.topic, true) && compareDeep(author, o.author, true) && compareDeep(editor, o.editor, true)
2402           && compareDeep(reviewer, o.reviewer, true) && compareDeep(endorser, o.endorser, true) && compareDeep(relatedArtifact, o.relatedArtifact, true)
2403           && compareDeep(parameter, o.parameter, true) && compareDeep(dataRequirement, o.dataRequirement, true)
2404           && compareDeep(content, o.content, true);
2405      }
2406
2407      @Override
2408      public boolean equalsShallow(Base other_) {
2409        if (!super.equalsShallow(other_))
2410          return false;
2411        if (!(other_ instanceof Library))
2412          return false;
2413        Library o = (Library) other_;
2414        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
2415           && compareValues(title, o.title, true) && compareValues(subtitle, o.subtitle, true) && compareValues(status, o.status, true)
2416           && compareValues(experimental, o.experimental, true) && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true)
2417           && compareValues(description, o.description, true) && compareValues(purpose, o.purpose, true) && compareValues(usage, o.usage, true)
2418           && compareValues(copyright, o.copyright, true) && compareValues(approvalDate, o.approvalDate, true)
2419           && compareValues(lastReviewDate, o.lastReviewDate, true);
2420      }
2421
2422      public boolean isEmpty() {
2423        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
2424          , name, title, subtitle, status, experimental, type, subject, date, publisher
2425          , contact, description, useContext, jurisdiction, purpose, usage, copyright, approvalDate
2426          , lastReviewDate, effectivePeriod, topic, author, editor, reviewer, endorser, relatedArtifact
2427          , parameter, dataRequirement, content);
2428      }
2429
2430  @Override
2431  public ResourceType getResourceType() {
2432    return ResourceType.Library;
2433   }
2434
2435 /**
2436   * Search parameter: <b>composed-of</b>
2437   * <p>
2438   * Description: <b>What resource is being referenced</b><br>
2439   * Type: <b>reference</b><br>
2440   * Path: <b>Library.relatedArtifact.where(type='composed-of').resource</b><br>
2441   * </p>
2442   */
2443  @SearchParamDefinition(name="composed-of", path="Library.relatedArtifact.where(type='composed-of').resource", description="What resource is being referenced", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CapabilityStatement2.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, ClinicalUseIssue.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, ConceptMap2.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2444  public static final String SP_COMPOSED_OF = "composed-of";
2445 /**
2446   * <b>Fluent Client</b> search parameter constant for <b>composed-of</b>
2447   * <p>
2448   * Description: <b>What resource is being referenced</b><br>
2449   * Type: <b>reference</b><br>
2450   * Path: <b>Library.relatedArtifact.where(type='composed-of').resource</b><br>
2451   * </p>
2452   */
2453  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam COMPOSED_OF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_COMPOSED_OF);
2454
2455/**
2456   * Constant for fluent queries to be used to add include statements. Specifies
2457   * the path value of "<b>Library:composed-of</b>".
2458   */
2459  public static final ca.uhn.fhir.model.api.Include INCLUDE_COMPOSED_OF = new ca.uhn.fhir.model.api.Include("Library:composed-of").toLocked();
2460
2461 /**
2462   * Search parameter: <b>content-type</b>
2463   * <p>
2464   * Description: <b>The type of content in the library (e.g. text/cql)</b><br>
2465   * Type: <b>token</b><br>
2466   * Path: <b>Library.content.contentType</b><br>
2467   * </p>
2468   */
2469  @SearchParamDefinition(name="content-type", path="Library.content.contentType", description="The type of content in the library (e.g. text/cql)", type="token" )
2470  public static final String SP_CONTENT_TYPE = "content-type";
2471 /**
2472   * <b>Fluent Client</b> search parameter constant for <b>content-type</b>
2473   * <p>
2474   * Description: <b>The type of content in the library (e.g. text/cql)</b><br>
2475   * Type: <b>token</b><br>
2476   * Path: <b>Library.content.contentType</b><br>
2477   * </p>
2478   */
2479  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTENT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTENT_TYPE);
2480
2481 /**
2482   * Search parameter: <b>context-quantity</b>
2483   * <p>
2484   * Description: <b>A quantity- or range-valued use context assigned to the library</b><br>
2485   * Type: <b>quantity</b><br>
2486   * Path: <b>(Library.useContext.value as Quantity) | (Library.useContext.value as Range)</b><br>
2487   * </p>
2488   */
2489  @SearchParamDefinition(name="context-quantity", path="(Library.useContext.value as Quantity) | (Library.useContext.value as Range)", description="A quantity- or range-valued use context assigned to the library", type="quantity" )
2490  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
2491 /**
2492   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
2493   * <p>
2494   * Description: <b>A quantity- or range-valued use context assigned to the library</b><br>
2495   * Type: <b>quantity</b><br>
2496   * Path: <b>(Library.useContext.value as Quantity) | (Library.useContext.value as Range)</b><br>
2497   * </p>
2498   */
2499  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
2500
2501 /**
2502   * Search parameter: <b>context-type-quantity</b>
2503   * <p>
2504   * Description: <b>A use context type and quantity- or range-based value assigned to the library</b><br>
2505   * Type: <b>composite</b><br>
2506   * Path: <b>Library.useContext</b><br>
2507   * </p>
2508   */
2509  @SearchParamDefinition(name="context-type-quantity", path="Library.useContext", description="A use context type and quantity- or range-based value assigned to the library", type="composite", compositeOf={"context-type", "context-quantity"} )
2510  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
2511 /**
2512   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
2513   * <p>
2514   * Description: <b>A use context type and quantity- or range-based value assigned to the library</b><br>
2515   * Type: <b>composite</b><br>
2516   * Path: <b>Library.useContext</b><br>
2517   * </p>
2518   */
2519  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam> CONTEXT_TYPE_QUANTITY = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam>(SP_CONTEXT_TYPE_QUANTITY);
2520
2521 /**
2522   * Search parameter: <b>context-type-value</b>
2523   * <p>
2524   * Description: <b>A use context type and value assigned to the library</b><br>
2525   * Type: <b>composite</b><br>
2526   * Path: <b>Library.useContext</b><br>
2527   * </p>
2528   */
2529  @SearchParamDefinition(name="context-type-value", path="Library.useContext", description="A use context type and value assigned to the library", type="composite", compositeOf={"context-type", "context"} )
2530  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
2531 /**
2532   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
2533   * <p>
2534   * Description: <b>A use context type and value assigned to the library</b><br>
2535   * Type: <b>composite</b><br>
2536   * Path: <b>Library.useContext</b><br>
2537   * </p>
2538   */
2539  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam> CONTEXT_TYPE_VALUE = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam>(SP_CONTEXT_TYPE_VALUE);
2540
2541 /**
2542   * Search parameter: <b>context-type</b>
2543   * <p>
2544   * Description: <b>A type of use context assigned to the library</b><br>
2545   * Type: <b>token</b><br>
2546   * Path: <b>Library.useContext.code</b><br>
2547   * </p>
2548   */
2549  @SearchParamDefinition(name="context-type", path="Library.useContext.code", description="A type of use context assigned to the library", type="token" )
2550  public static final String SP_CONTEXT_TYPE = "context-type";
2551 /**
2552   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
2553   * <p>
2554   * Description: <b>A type of use context assigned to the library</b><br>
2555   * Type: <b>token</b><br>
2556   * Path: <b>Library.useContext.code</b><br>
2557   * </p>
2558   */
2559  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
2560
2561 /**
2562   * Search parameter: <b>context</b>
2563   * <p>
2564   * Description: <b>A use context assigned to the library</b><br>
2565   * Type: <b>token</b><br>
2566   * Path: <b>(Library.useContext.value as CodeableConcept)</b><br>
2567   * </p>
2568   */
2569  @SearchParamDefinition(name="context", path="(Library.useContext.value as CodeableConcept)", description="A use context assigned to the library", type="token" )
2570  public static final String SP_CONTEXT = "context";
2571 /**
2572   * <b>Fluent Client</b> search parameter constant for <b>context</b>
2573   * <p>
2574   * Description: <b>A use context assigned to the library</b><br>
2575   * Type: <b>token</b><br>
2576   * Path: <b>(Library.useContext.value as CodeableConcept)</b><br>
2577   * </p>
2578   */
2579  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
2580
2581 /**
2582   * Search parameter: <b>date</b>
2583   * <p>
2584   * Description: <b>The library publication date</b><br>
2585   * Type: <b>date</b><br>
2586   * Path: <b>Library.date</b><br>
2587   * </p>
2588   */
2589  @SearchParamDefinition(name="date", path="Library.date", description="The library publication date", type="date" )
2590  public static final String SP_DATE = "date";
2591 /**
2592   * <b>Fluent Client</b> search parameter constant for <b>date</b>
2593   * <p>
2594   * Description: <b>The library publication date</b><br>
2595   * Type: <b>date</b><br>
2596   * Path: <b>Library.date</b><br>
2597   * </p>
2598   */
2599  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
2600
2601 /**
2602   * Search parameter: <b>depends-on</b>
2603   * <p>
2604   * Description: <b>What resource is being referenced</b><br>
2605   * Type: <b>reference</b><br>
2606   * Path: <b>Library.relatedArtifact.where(type='depends-on').resource</b><br>
2607   * </p>
2608   */
2609  @SearchParamDefinition(name="depends-on", path="Library.relatedArtifact.where(type='depends-on').resource", description="What resource is being referenced", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CapabilityStatement2.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, ClinicalUseIssue.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, ConceptMap2.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2610  public static final String SP_DEPENDS_ON = "depends-on";
2611 /**
2612   * <b>Fluent Client</b> search parameter constant for <b>depends-on</b>
2613   * <p>
2614   * Description: <b>What resource is being referenced</b><br>
2615   * Type: <b>reference</b><br>
2616   * Path: <b>Library.relatedArtifact.where(type='depends-on').resource</b><br>
2617   * </p>
2618   */
2619  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEPENDS_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DEPENDS_ON);
2620
2621/**
2622   * Constant for fluent queries to be used to add include statements. Specifies
2623   * the path value of "<b>Library:depends-on</b>".
2624   */
2625  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEPENDS_ON = new ca.uhn.fhir.model.api.Include("Library:depends-on").toLocked();
2626
2627 /**
2628   * Search parameter: <b>derived-from</b>
2629   * <p>
2630   * Description: <b>What resource is being referenced</b><br>
2631   * Type: <b>reference</b><br>
2632   * Path: <b>Library.relatedArtifact.where(type='derived-from').resource</b><br>
2633   * </p>
2634   */
2635  @SearchParamDefinition(name="derived-from", path="Library.relatedArtifact.where(type='derived-from').resource", description="What resource is being referenced", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CapabilityStatement2.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, ClinicalUseIssue.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, ConceptMap2.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2636  public static final String SP_DERIVED_FROM = "derived-from";
2637 /**
2638   * <b>Fluent Client</b> search parameter constant for <b>derived-from</b>
2639   * <p>
2640   * Description: <b>What resource is being referenced</b><br>
2641   * Type: <b>reference</b><br>
2642   * Path: <b>Library.relatedArtifact.where(type='derived-from').resource</b><br>
2643   * </p>
2644   */
2645  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DERIVED_FROM = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DERIVED_FROM);
2646
2647/**
2648   * Constant for fluent queries to be used to add include statements. Specifies
2649   * the path value of "<b>Library:derived-from</b>".
2650   */
2651  public static final ca.uhn.fhir.model.api.Include INCLUDE_DERIVED_FROM = new ca.uhn.fhir.model.api.Include("Library:derived-from").toLocked();
2652
2653 /**
2654   * Search parameter: <b>description</b>
2655   * <p>
2656   * Description: <b>The description of the library</b><br>
2657   * Type: <b>string</b><br>
2658   * Path: <b>Library.description</b><br>
2659   * </p>
2660   */
2661  @SearchParamDefinition(name="description", path="Library.description", description="The description of the library", type="string" )
2662  public static final String SP_DESCRIPTION = "description";
2663 /**
2664   * <b>Fluent Client</b> search parameter constant for <b>description</b>
2665   * <p>
2666   * Description: <b>The description of the library</b><br>
2667   * Type: <b>string</b><br>
2668   * Path: <b>Library.description</b><br>
2669   * </p>
2670   */
2671  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
2672
2673 /**
2674   * Search parameter: <b>effective</b>
2675   * <p>
2676   * Description: <b>The time during which the library is intended to be in use</b><br>
2677   * Type: <b>date</b><br>
2678   * Path: <b>Library.effectivePeriod</b><br>
2679   * </p>
2680   */
2681  @SearchParamDefinition(name="effective", path="Library.effectivePeriod", description="The time during which the library is intended to be in use", type="date" )
2682  public static final String SP_EFFECTIVE = "effective";
2683 /**
2684   * <b>Fluent Client</b> search parameter constant for <b>effective</b>
2685   * <p>
2686   * Description: <b>The time during which the library is intended to be in use</b><br>
2687   * Type: <b>date</b><br>
2688   * Path: <b>Library.effectivePeriod</b><br>
2689   * </p>
2690   */
2691  public static final ca.uhn.fhir.rest.gclient.DateClientParam EFFECTIVE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_EFFECTIVE);
2692
2693 /**
2694   * Search parameter: <b>identifier</b>
2695   * <p>
2696   * Description: <b>External identifier for the library</b><br>
2697   * Type: <b>token</b><br>
2698   * Path: <b>Library.identifier</b><br>
2699   * </p>
2700   */
2701  @SearchParamDefinition(name="identifier", path="Library.identifier", description="External identifier for the library", type="token" )
2702  public static final String SP_IDENTIFIER = "identifier";
2703 /**
2704   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2705   * <p>
2706   * Description: <b>External identifier for the library</b><br>
2707   * Type: <b>token</b><br>
2708   * Path: <b>Library.identifier</b><br>
2709   * </p>
2710   */
2711  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2712
2713 /**
2714   * Search parameter: <b>jurisdiction</b>
2715   * <p>
2716   * Description: <b>Intended jurisdiction for the library</b><br>
2717   * Type: <b>token</b><br>
2718   * Path: <b>Library.jurisdiction</b><br>
2719   * </p>
2720   */
2721  @SearchParamDefinition(name="jurisdiction", path="Library.jurisdiction", description="Intended jurisdiction for the library", type="token" )
2722  public static final String SP_JURISDICTION = "jurisdiction";
2723 /**
2724   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
2725   * <p>
2726   * Description: <b>Intended jurisdiction for the library</b><br>
2727   * Type: <b>token</b><br>
2728   * Path: <b>Library.jurisdiction</b><br>
2729   * </p>
2730   */
2731  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
2732
2733 /**
2734   * Search parameter: <b>name</b>
2735   * <p>
2736   * Description: <b>Computationally friendly name of the library</b><br>
2737   * Type: <b>string</b><br>
2738   * Path: <b>Library.name</b><br>
2739   * </p>
2740   */
2741  @SearchParamDefinition(name="name", path="Library.name", description="Computationally friendly name of the library", type="string" )
2742  public static final String SP_NAME = "name";
2743 /**
2744   * <b>Fluent Client</b> search parameter constant for <b>name</b>
2745   * <p>
2746   * Description: <b>Computationally friendly name of the library</b><br>
2747   * Type: <b>string</b><br>
2748   * Path: <b>Library.name</b><br>
2749   * </p>
2750   */
2751  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
2752
2753 /**
2754   * Search parameter: <b>predecessor</b>
2755   * <p>
2756   * Description: <b>What resource is being referenced</b><br>
2757   * Type: <b>reference</b><br>
2758   * Path: <b>Library.relatedArtifact.where(type='predecessor').resource</b><br>
2759   * </p>
2760   */
2761  @SearchParamDefinition(name="predecessor", path="Library.relatedArtifact.where(type='predecessor').resource", description="What resource is being referenced", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CapabilityStatement2.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, ClinicalUseIssue.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, ConceptMap2.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2762  public static final String SP_PREDECESSOR = "predecessor";
2763 /**
2764   * <b>Fluent Client</b> search parameter constant for <b>predecessor</b>
2765   * <p>
2766   * Description: <b>What resource is being referenced</b><br>
2767   * Type: <b>reference</b><br>
2768   * Path: <b>Library.relatedArtifact.where(type='predecessor').resource</b><br>
2769   * </p>
2770   */
2771  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PREDECESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PREDECESSOR);
2772
2773/**
2774   * Constant for fluent queries to be used to add include statements. Specifies
2775   * the path value of "<b>Library:predecessor</b>".
2776   */
2777  public static final ca.uhn.fhir.model.api.Include INCLUDE_PREDECESSOR = new ca.uhn.fhir.model.api.Include("Library:predecessor").toLocked();
2778
2779 /**
2780   * Search parameter: <b>publisher</b>
2781   * <p>
2782   * Description: <b>Name of the publisher of the library</b><br>
2783   * Type: <b>string</b><br>
2784   * Path: <b>Library.publisher</b><br>
2785   * </p>
2786   */
2787  @SearchParamDefinition(name="publisher", path="Library.publisher", description="Name of the publisher of the library", type="string" )
2788  public static final String SP_PUBLISHER = "publisher";
2789 /**
2790   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
2791   * <p>
2792   * Description: <b>Name of the publisher of the library</b><br>
2793   * Type: <b>string</b><br>
2794   * Path: <b>Library.publisher</b><br>
2795   * </p>
2796   */
2797  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
2798
2799 /**
2800   * Search parameter: <b>status</b>
2801   * <p>
2802   * Description: <b>The current status of the library</b><br>
2803   * Type: <b>token</b><br>
2804   * Path: <b>Library.status</b><br>
2805   * </p>
2806   */
2807  @SearchParamDefinition(name="status", path="Library.status", description="The current status of the library", type="token" )
2808  public static final String SP_STATUS = "status";
2809 /**
2810   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2811   * <p>
2812   * Description: <b>The current status of the library</b><br>
2813   * Type: <b>token</b><br>
2814   * Path: <b>Library.status</b><br>
2815   * </p>
2816   */
2817  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2818
2819 /**
2820   * Search parameter: <b>successor</b>
2821   * <p>
2822   * Description: <b>What resource is being referenced</b><br>
2823   * Type: <b>reference</b><br>
2824   * Path: <b>Library.relatedArtifact.where(type='successor').resource</b><br>
2825   * </p>
2826   */
2827  @SearchParamDefinition(name="successor", path="Library.relatedArtifact.where(type='successor').resource", description="What resource is being referenced", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CapabilityStatement2.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, ClinicalUseIssue.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, ConceptMap2.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2828  public static final String SP_SUCCESSOR = "successor";
2829 /**
2830   * <b>Fluent Client</b> search parameter constant for <b>successor</b>
2831   * <p>
2832   * Description: <b>What resource is being referenced</b><br>
2833   * Type: <b>reference</b><br>
2834   * Path: <b>Library.relatedArtifact.where(type='successor').resource</b><br>
2835   * </p>
2836   */
2837  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUCCESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUCCESSOR);
2838
2839/**
2840   * Constant for fluent queries to be used to add include statements. Specifies
2841   * the path value of "<b>Library:successor</b>".
2842   */
2843  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUCCESSOR = new ca.uhn.fhir.model.api.Include("Library:successor").toLocked();
2844
2845 /**
2846   * Search parameter: <b>title</b>
2847   * <p>
2848   * Description: <b>The human-friendly name of the library</b><br>
2849   * Type: <b>string</b><br>
2850   * Path: <b>Library.title</b><br>
2851   * </p>
2852   */
2853  @SearchParamDefinition(name="title", path="Library.title", description="The human-friendly name of the library", type="string" )
2854  public static final String SP_TITLE = "title";
2855 /**
2856   * <b>Fluent Client</b> search parameter constant for <b>title</b>
2857   * <p>
2858   * Description: <b>The human-friendly name of the library</b><br>
2859   * Type: <b>string</b><br>
2860   * Path: <b>Library.title</b><br>
2861   * </p>
2862   */
2863  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
2864
2865 /**
2866   * Search parameter: <b>topic</b>
2867   * <p>
2868   * Description: <b>Topics associated with the module</b><br>
2869   * Type: <b>token</b><br>
2870   * Path: <b>Library.topic</b><br>
2871   * </p>
2872   */
2873  @SearchParamDefinition(name="topic", path="Library.topic", description="Topics associated with the module", type="token" )
2874  public static final String SP_TOPIC = "topic";
2875 /**
2876   * <b>Fluent Client</b> search parameter constant for <b>topic</b>
2877   * <p>
2878   * Description: <b>Topics associated with the module</b><br>
2879   * Type: <b>token</b><br>
2880   * Path: <b>Library.topic</b><br>
2881   * </p>
2882   */
2883  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TOPIC = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TOPIC);
2884
2885 /**
2886   * Search parameter: <b>type</b>
2887   * <p>
2888   * Description: <b>The type of the library (e.g. logic-library, model-definition, asset-collection, module-definition)</b><br>
2889   * Type: <b>token</b><br>
2890   * Path: <b>Library.type</b><br>
2891   * </p>
2892   */
2893  @SearchParamDefinition(name="type", path="Library.type", description="The type of the library (e.g. logic-library, model-definition, asset-collection, module-definition)", type="token" )
2894  public static final String SP_TYPE = "type";
2895 /**
2896   * <b>Fluent Client</b> search parameter constant for <b>type</b>
2897   * <p>
2898   * Description: <b>The type of the library (e.g. logic-library, model-definition, asset-collection, module-definition)</b><br>
2899   * Type: <b>token</b><br>
2900   * Path: <b>Library.type</b><br>
2901   * </p>
2902   */
2903  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TYPE);
2904
2905 /**
2906   * Search parameter: <b>url</b>
2907   * <p>
2908   * Description: <b>The uri that identifies the library</b><br>
2909   * Type: <b>uri</b><br>
2910   * Path: <b>Library.url</b><br>
2911   * </p>
2912   */
2913  @SearchParamDefinition(name="url", path="Library.url", description="The uri that identifies the library", type="uri" )
2914  public static final String SP_URL = "url";
2915 /**
2916   * <b>Fluent Client</b> search parameter constant for <b>url</b>
2917   * <p>
2918   * Description: <b>The uri that identifies the library</b><br>
2919   * Type: <b>uri</b><br>
2920   * Path: <b>Library.url</b><br>
2921   * </p>
2922   */
2923  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
2924
2925 /**
2926   * Search parameter: <b>version</b>
2927   * <p>
2928   * Description: <b>The business version of the library</b><br>
2929   * Type: <b>token</b><br>
2930   * Path: <b>Library.version</b><br>
2931   * </p>
2932   */
2933  @SearchParamDefinition(name="version", path="Library.version", description="The business version of the library", type="token" )
2934  public static final String SP_VERSION = "version";
2935 /**
2936   * <b>Fluent Client</b> search parameter constant for <b>version</b>
2937   * <p>
2938   * Description: <b>The business version of the library</b><br>
2939   * Type: <b>token</b><br>
2940   * Path: <b>Library.version</b><br>
2941   * </p>
2942   */
2943  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
2944
2945
2946}
2947