001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * Common Interface declaration for conformance and knowledge artifact resources.
052 */
053public abstract class CanonicalResource extends DomainResource {
054
055    private static final long serialVersionUID = 0L;
056
057  /**
058   * Constructor
059   */
060    public CanonicalResource() {
061      super();
062    }
063
064  /**
065   * Constructor
066   */
067    public CanonicalResource(PublicationStatus status) {
068      super();
069      this.setStatus(status);
070    }
071
072    /**
073     * How many allowed for this property by the implementation
074     */
075    public int getUrlMax() { 
076      return 1;
077    }
078    /**
079     * @return {@link #url} (An absolute URI that is used to identify this canonical resource when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this canonical resource is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the canonical resource is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
080     */
081    public abstract UriType getUrlElement(); 
082
083    public abstract boolean hasUrlElement(); 
084    public abstract boolean hasUrl(); 
085
086    /**
087     * @param value {@link #url} (An absolute URI that is used to identify this canonical resource when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this canonical resource is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the canonical resource is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
088     */
089    public abstract CanonicalResource setUrlElement(UriType value); 
090    /**
091     * @return An absolute URI that is used to identify this canonical resource when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this canonical resource is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the canonical resource is stored on different servers.
092     */
093    public abstract String getUrl(); 
094    /**
095     * @param value An absolute URI that is used to identify this canonical resource when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this canonical resource is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the canonical resource is stored on different servers.
096     */
097    public abstract CanonicalResource setUrl(String value); 
098    /**
099     * How many allowed for this property by the implementation
100     */
101    public int getIdentifierMax() { 
102      return Integer.MAX_VALUE;
103    }
104    /**
105     * @return {@link #identifier} (A formal identifier that is used to identify this canonical resource when it is represented in other formats, or referenced in a specification, model, design or an instance.)
106     */
107    public abstract List<Identifier> getIdentifier(); 
108    /**
109     * @return Returns a reference to <code>this</code> for easy method chaining
110     */
111    public abstract CanonicalResource setIdentifier(List<Identifier> theIdentifier); 
112    public abstract boolean hasIdentifier(); 
113
114    public abstract Identifier addIdentifier(); //3
115    public abstract CanonicalResource addIdentifier(Identifier t); //3
116    /**
117     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {1}
118     */
119    public abstract Identifier getIdentifierFirstRep(); 
120    /**
121     * How many allowed for this property by the implementation
122     */
123    public int getVersionMax() { 
124      return 1;
125    }
126    /**
127     * @return {@link #version} (The identifier that is used to identify this version of the canonical resource when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the canonical resource 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 without additional knowledge.  (See the versionAlgorithm element.)). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
128     */
129    public abstract StringType getVersionElement(); 
130
131    public abstract boolean hasVersionElement(); 
132    public abstract boolean hasVersion(); 
133
134    /**
135     * @param value {@link #version} (The identifier that is used to identify this version of the canonical resource when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the canonical resource 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 without additional knowledge.  (See the versionAlgorithm element.)). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
136     */
137    public abstract CanonicalResource setVersionElement(StringType value); 
138    /**
139     * @return The identifier that is used to identify this version of the canonical resource when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the canonical resource 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 without additional knowledge.  (See the versionAlgorithm element.)
140     */
141    public abstract String getVersion(); 
142    /**
143     * @param value The identifier that is used to identify this version of the canonical resource when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the canonical resource 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 without additional knowledge.  (See the versionAlgorithm element.)
144     */
145    public abstract CanonicalResource setVersion(String value); 
146    /**
147     * How many allowed for this property by the implementation
148     */
149    public int getVersionAlgorithmMax() { 
150      return 1;
151    }
152    /**
153     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
154     */
155    public abstract DataType getVersionAlgorithm(); 
156    /**
157     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
158     */
159    public abstract StringType getVersionAlgorithmStringType() throws FHIRException; 
160    public abstract boolean hasVersionAlgorithmStringType(); 
161    /**
162     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
163     */
164    public abstract Coding getVersionAlgorithmCoding() throws FHIRException; 
165    public abstract boolean hasVersionAlgorithmCoding(); 
166    public abstract boolean hasVersionAlgorithm(); 
167    /**
168     * @param value {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
169     */
170    public abstract CanonicalResource setVersionAlgorithm(DataType value); 
171
172    /**
173     * How many allowed for this property by the implementation
174     */
175    public int getNameMax() { 
176      return 1;
177    }
178    /**
179     * @return {@link #name} (A natural language name identifying the canonical resource. This name should be usable as an identifier for the resource 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
180     */
181    public abstract StringType getNameElement(); 
182
183    public abstract boolean hasNameElement(); 
184    public abstract boolean hasName(); 
185
186    /**
187     * @param value {@link #name} (A natural language name identifying the canonical resource. This name should be usable as an identifier for the resource 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
188     */
189    public abstract CanonicalResource setNameElement(StringType value); 
190    /**
191     * @return A natural language name identifying the canonical resource. This name should be usable as an identifier for the resource by machine processing applications such as code generation.
192     */
193    public abstract String getName(); 
194    /**
195     * @param value A natural language name identifying the canonical resource. This name should be usable as an identifier for the resource by machine processing applications such as code generation.
196     */
197    public abstract CanonicalResource setName(String value); 
198    /**
199     * How many allowed for this property by the implementation
200     */
201    public int getTitleMax() { 
202      return 1;
203    }
204    /**
205     * @return {@link #title} (A short, descriptive, user-friendly title for the canonical resource.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
206     */
207    public abstract StringType getTitleElement(); 
208
209    public abstract boolean hasTitleElement(); 
210    public abstract boolean hasTitle(); 
211
212    /**
213     * @param value {@link #title} (A short, descriptive, user-friendly title for the canonical resource.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
214     */
215    public abstract CanonicalResource setTitleElement(StringType value); 
216    /**
217     * @return A short, descriptive, user-friendly title for the canonical resource.
218     */
219    public abstract String getTitle(); 
220    /**
221     * @param value A short, descriptive, user-friendly title for the canonical resource.
222     */
223    public abstract CanonicalResource setTitle(String value); 
224    /**
225     * How many allowed for this property by the implementation
226     */
227    public int getStatusMax() { 
228      return 1;
229    }
230    /**
231     * @return {@link #status} (The current state of this canonical resource. ). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
232     */
233    public abstract Enumeration<PublicationStatus> getStatusElement(); 
234
235    public abstract boolean hasStatusElement(); 
236    public abstract boolean hasStatus(); 
237
238    /**
239     * @param value {@link #status} (The current state of this canonical resource. ). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
240     */
241    public abstract CanonicalResource setStatusElement(Enumeration<PublicationStatus> value); 
242    /**
243     * @return The current state of this canonical resource. 
244     */
245    public abstract PublicationStatus getStatus(); 
246    /**
247     * @param value The current state of this canonical resource. 
248     */
249    public abstract CanonicalResource setStatus(PublicationStatus value); 
250    /**
251     * How many allowed for this property by the implementation
252     */
253    public int getExperimentalMax() { 
254      return 1;
255    }
256    /**
257     * @return {@link #experimental} (A Boolean value to indicate that this canonical resource is authored for testing purposes (or education/evaluation/marketing) and is not intended for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
258     */
259    public abstract BooleanType getExperimentalElement(); 
260
261    public abstract boolean hasExperimentalElement(); 
262    public abstract boolean hasExperimental(); 
263
264    /**
265     * @param value {@link #experimental} (A Boolean value to indicate that this canonical resource is authored for testing purposes (or education/evaluation/marketing) and is not intended for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
266     */
267    public abstract CanonicalResource setExperimentalElement(BooleanType value); 
268    /**
269     * @return A Boolean value to indicate that this canonical resource is authored for testing purposes (or education/evaluation/marketing) and is not intended for genuine usage.
270     */
271    public abstract boolean getExperimental(); 
272    /**
273     * @param value A Boolean value to indicate that this canonical resource is authored for testing purposes (or education/evaluation/marketing) and is not intended for genuine usage.
274     */
275    public abstract CanonicalResource setExperimental(boolean value); 
276    /**
277     * How many allowed for this property by the implementation
278     */
279    public int getDateMax() { 
280      return 1;
281    }
282    /**
283     * @return {@link #date} (The date  (and optionally time) when the canonical resource was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the canonical resource changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
284     */
285    public abstract DateTimeType getDateElement(); 
286
287    public abstract boolean hasDateElement(); 
288    public abstract boolean hasDate(); 
289
290    /**
291     * @param value {@link #date} (The date  (and optionally time) when the canonical resource was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the canonical resource changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
292     */
293    public abstract CanonicalResource setDateElement(DateTimeType value); 
294    /**
295     * @return The date  (and optionally time) when the canonical resource was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the canonical resource changes.
296     */
297    public abstract Date getDate(); 
298    /**
299     * @param value The date  (and optionally time) when the canonical resource was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the canonical resource changes.
300     */
301    public abstract CanonicalResource setDate(Date value); 
302    /**
303     * How many allowed for this property by the implementation
304     */
305    public int getPublisherMax() { 
306      return 1;
307    }
308    /**
309     * @return {@link #publisher} (The name of the organization or individual responsible for the release and ongoing maintenance of the canonical resource.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
310     */
311    public abstract StringType getPublisherElement(); 
312
313    public abstract boolean hasPublisherElement(); 
314    public abstract boolean hasPublisher(); 
315
316    /**
317     * @param value {@link #publisher} (The name of the organization or individual responsible for the release and ongoing maintenance of the canonical resource.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
318     */
319    public abstract CanonicalResource setPublisherElement(StringType value); 
320    /**
321     * @return The name of the organization or individual responsible for the release and ongoing maintenance of the canonical resource.
322     */
323    public abstract String getPublisher(); 
324    /**
325     * @param value The name of the organization or individual responsible for the release and ongoing maintenance of the canonical resource.
326     */
327    public abstract CanonicalResource setPublisher(String value); 
328    /**
329     * How many allowed for this property by the implementation
330     */
331    public int getContactMax() { 
332      return Integer.MAX_VALUE;
333    }
334    /**
335     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
336     */
337    public abstract List<ContactDetail> getContact(); 
338    /**
339     * @return Returns a reference to <code>this</code> for easy method chaining
340     */
341    public abstract CanonicalResource setContact(List<ContactDetail> theContact); 
342    public abstract boolean hasContact(); 
343
344    public abstract ContactDetail addContact(); //3
345    public abstract CanonicalResource addContact(ContactDetail t); //3
346    /**
347     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {1}
348     */
349    public abstract ContactDetail getContactFirstRep(); 
350    /**
351     * How many allowed for this property by the implementation
352     */
353    public int getDescriptionMax() { 
354      return 1;
355    }
356    /**
357     * @return {@link #description} (A free text natural language description of the canonical resource from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
358     */
359    public abstract MarkdownType getDescriptionElement(); 
360
361    public abstract boolean hasDescriptionElement(); 
362    public abstract boolean hasDescription(); 
363
364    /**
365     * @param value {@link #description} (A free text natural language description of the canonical resource from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
366     */
367    public abstract CanonicalResource setDescriptionElement(MarkdownType value); 
368    /**
369     * @return A free text natural language description of the canonical resource from a consumer's perspective.
370     */
371    public abstract String getDescription(); 
372    /**
373     * @param value A free text natural language description of the canonical resource from a consumer's perspective.
374     */
375    public abstract CanonicalResource setDescription(String value); 
376    /**
377     * How many allowed for this property by the implementation
378     */
379    public int getUseContextMax() { 
380      return Integer.MAX_VALUE;
381    }
382    /**
383     * @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 canonical resources.)
384     */
385    public abstract List<UsageContext> getUseContext(); 
386    /**
387     * @return Returns a reference to <code>this</code> for easy method chaining
388     */
389    public abstract CanonicalResource setUseContext(List<UsageContext> theUseContext); 
390    public abstract boolean hasUseContext(); 
391
392    public abstract UsageContext addUseContext(); //3
393    public abstract CanonicalResource addUseContext(UsageContext t); //3
394    /**
395     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {1}
396     */
397    public abstract UsageContext getUseContextFirstRep(); 
398    /**
399     * How many allowed for this property by the implementation
400     */
401    public int getJurisdictionMax() { 
402      return Integer.MAX_VALUE;
403    }
404    /**
405     * @return {@link #jurisdiction} (A legal or geographic region in which the canonical resource is intended to be used.)
406     */
407    public abstract List<CodeableConcept> getJurisdiction(); 
408    /**
409     * @return Returns a reference to <code>this</code> for easy method chaining
410     */
411    public abstract CanonicalResource setJurisdiction(List<CodeableConcept> theJurisdiction); 
412    public abstract boolean hasJurisdiction(); 
413
414    public abstract CodeableConcept addJurisdiction(); //3
415    public abstract CanonicalResource addJurisdiction(CodeableConcept t); //3
416    /**
417     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {1}
418     */
419    public abstract CodeableConcept getJurisdictionFirstRep(); 
420    /**
421     * How many allowed for this property by the implementation
422     */
423    public int getPurposeMax() { 
424      return 1;
425    }
426    /**
427     * @return {@link #purpose} (Explanation of why this canonical resource 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
428     */
429    public abstract MarkdownType getPurposeElement(); 
430
431    public abstract boolean hasPurposeElement(); 
432    public abstract boolean hasPurpose(); 
433
434    /**
435     * @param value {@link #purpose} (Explanation of why this canonical resource 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
436     */
437    public abstract CanonicalResource setPurposeElement(MarkdownType value); 
438    /**
439     * @return Explanation of why this canonical resource is needed and why it has been designed as it has.
440     */
441    public abstract String getPurpose(); 
442    /**
443     * @param value Explanation of why this canonical resource is needed and why it has been designed as it has.
444     */
445    public abstract CanonicalResource setPurpose(String value); 
446    /**
447     * How many allowed for this property by the implementation
448     */
449    public int getCopyrightMax() { 
450      return 1;
451    }
452    /**
453     * @return {@link #copyright} (A copyright statement relating to the canonical resource and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the canonical resource.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
454     */
455    public abstract MarkdownType getCopyrightElement(); 
456
457    public abstract boolean hasCopyrightElement(); 
458    public abstract boolean hasCopyright(); 
459
460    /**
461     * @param value {@link #copyright} (A copyright statement relating to the canonical resource and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the canonical resource.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
462     */
463    public abstract CanonicalResource setCopyrightElement(MarkdownType value); 
464    /**
465     * @return A copyright statement relating to the canonical resource and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the canonical resource.
466     */
467    public abstract String getCopyright(); 
468    /**
469     * @param value A copyright statement relating to the canonical resource and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the canonical resource.
470     */
471    public abstract CanonicalResource setCopyright(String value); 
472    /**
473     * How many allowed for this property by the implementation
474     */
475    public int getCopyrightLabelMax() { 
476      return 1;
477    }
478    /**
479     * @return {@link #copyrightLabel} (A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
480     */
481    public abstract StringType getCopyrightLabelElement(); 
482
483    public abstract boolean hasCopyrightLabelElement(); 
484    public abstract boolean hasCopyrightLabel(); 
485
486    /**
487     * @param value {@link #copyrightLabel} (A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
488     */
489    public abstract CanonicalResource setCopyrightLabelElement(StringType value); 
490    /**
491     * @return A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').
492     */
493    public abstract String getCopyrightLabel(); 
494    /**
495     * @param value A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').
496     */
497    public abstract CanonicalResource setCopyrightLabel(String value); 
498      protected void listChildren(List<Property> children) {
499        super.listChildren(children);
500      }
501
502      @Override
503      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
504        switch (_hash) {
505        default: return super.getNamedProperty(_hash, _name, _checkValid);
506        }
507
508      }
509
510      @Override
511      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
512        switch (hash) {
513        default: return super.getProperty(hash, name, checkValid);
514        }
515
516      }
517
518      @Override
519      public Base setProperty(int hash, String name, Base value) throws FHIRException {
520        switch (hash) {
521        default: return super.setProperty(hash, name, value);
522        }
523
524      }
525
526      @Override
527      public Base setProperty(String name, Base value) throws FHIRException {
528          return super.setProperty(name, value);
529      }
530
531  @Override
532  public void removeChild(String name, Base value) throws FHIRException {
533          super.removeChild(name, value);
534      }
535
536      @Override
537      public Base makeProperty(int hash, String name) throws FHIRException {
538        switch (hash) {
539        default: return super.makeProperty(hash, name);
540        }
541
542      }
543
544      @Override
545      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
546        switch (hash) {
547        default: return super.getTypesForProperty(hash, name);
548        }
549
550      }
551
552      @Override
553      public Base addChild(String name) throws FHIRException {
554          return super.addChild(name);
555      }
556
557  public String fhirType() {
558    return "CanonicalResource";
559
560  }
561
562      public abstract CanonicalResource copy();
563
564      public void copyValues(CanonicalResource dst) {
565        super.copyValues(dst);
566      }
567
568      @Override
569      public boolean equalsDeep(Base other_) {
570        if (!super.equalsDeep(other_))
571          return false;
572        if (!(other_ instanceof CanonicalResource))
573          return false;
574        CanonicalResource o = (CanonicalResource) other_;
575        return true;
576      }
577
578      @Override
579      public boolean equalsShallow(Base other_) {
580        if (!super.equalsShallow(other_))
581          return false;
582        if (!(other_ instanceof CanonicalResource))
583          return false;
584        CanonicalResource o = (CanonicalResource) other_;
585        return true;
586      }
587
588      public boolean isEmpty() {
589        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty();
590      }
591
592// Manual code (from Configuration.txt):
593  @Override
594  public String toString() {
595    return fhirType()+"["+getUrl()+(hasVersion() ? "|"+getVersion(): "")+"]";
596  }
597  
598  public String present() {
599    if (hasUserData("presentation")) {
600      return getUserString("presentation");
601    }
602    if (hasTitle())
603      return getTitle();
604    if (hasName())
605      return getName();
606    return toString();
607  }
608  
609  public String getVUrl() {
610    return getUrl() + (hasVersion() ? "|"+getVersion() : "");
611  }      
612  
613  public boolean supportsCopyright() {
614    return true;
615  }
616  
617  public String getVersionedUrl() {
618    return hasVersion() ? getUrl()+"|"+getVersion() : getUrl();
619  }  
620  
621
622  public String oid() {
623    for (Identifier id : getIdentifier()) {
624      if (id.getValue().startsWith("urn:oid:")) {
625        return id.getValue().substring(8);
626      }
627    }
628    return null;
629  }
630
631  public String getOid() {
632    for (Identifier id : getIdentifier()) {
633      if ("urn:ietf:rfc:3986".equals(id.getSystem()) && id.hasValue() && id.getValue().startsWith("urn:oid:")) {
634        return id.getValue().substring(8);
635      }
636    }
637    return null;
638  }
639
640// end addition
641
642}
643