001package org.hl7.fhir.r4.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Sun, May 6, 2018 17:51-0400 for FHIR v3.4.0
033
034import java.util.*;
035
036import org.hl7.fhir.utilities.Utilities;
037import org.hl7.fhir.r4.model.Enumerations.*;
038import ca.uhn.fhir.model.api.annotation.ResourceDef;
039import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
040import ca.uhn.fhir.model.api.annotation.Child;
041import ca.uhn.fhir.model.api.annotation.ChildOrder;
042import ca.uhn.fhir.model.api.annotation.Description;
043import ca.uhn.fhir.model.api.annotation.Block;
044import org.hl7.fhir.instance.model.api.*;
045import org.hl7.fhir.exceptions.FHIRException;
046/**
047 * A curated namespace that issues unique symbols within that namespace for the identification of concepts, people, devices, etc.  Represents a "System" used within the Identifier and Coding data types.
048 */
049@ResourceDef(name="NamingSystem", profile="http://hl7.org/fhir/Profile/NamingSystem")
050@ChildOrder(names={"name", "status", "kind", "date", "publisher", "contact", "responsible", "type", "description", "useContext", "jurisdiction", "usage", "uniqueId"})
051public class NamingSystem extends MetadataResource {
052
053    public enum NamingSystemType {
054        /**
055         * The naming system is used to define concepts and symbols to represent those concepts; e.g. UCUM, LOINC, NDC code, local lab codes, etc.
056         */
057        CODESYSTEM, 
058        /**
059         * The naming system is used to manage identifiers (e.g. license numbers, order numbers, etc.).
060         */
061        IDENTIFIER, 
062        /**
063         * The naming system is used as the root for other identifiers and naming systems.
064         */
065        ROOT, 
066        /**
067         * added to help the parsers with the generic types
068         */
069        NULL;
070        public static NamingSystemType fromCode(String codeString) throws FHIRException {
071            if (codeString == null || "".equals(codeString))
072                return null;
073        if ("codesystem".equals(codeString))
074          return CODESYSTEM;
075        if ("identifier".equals(codeString))
076          return IDENTIFIER;
077        if ("root".equals(codeString))
078          return ROOT;
079        if (Configuration.isAcceptInvalidEnums())
080          return null;
081        else
082          throw new FHIRException("Unknown NamingSystemType code '"+codeString+"'");
083        }
084        public String toCode() {
085          switch (this) {
086            case CODESYSTEM: return "codesystem";
087            case IDENTIFIER: return "identifier";
088            case ROOT: return "root";
089            default: return "?";
090          }
091        }
092        public String getSystem() {
093          switch (this) {
094            case CODESYSTEM: return "http://hl7.org/fhir/namingsystem-type";
095            case IDENTIFIER: return "http://hl7.org/fhir/namingsystem-type";
096            case ROOT: return "http://hl7.org/fhir/namingsystem-type";
097            default: return "?";
098          }
099        }
100        public String getDefinition() {
101          switch (this) {
102            case CODESYSTEM: return "The naming system is used to define concepts and symbols to represent those concepts; e.g. UCUM, LOINC, NDC code, local lab codes, etc.";
103            case IDENTIFIER: return "The naming system is used to manage identifiers (e.g. license numbers, order numbers, etc.).";
104            case ROOT: return "The naming system is used as the root for other identifiers and naming systems.";
105            default: return "?";
106          }
107        }
108        public String getDisplay() {
109          switch (this) {
110            case CODESYSTEM: return "Code System";
111            case IDENTIFIER: return "Identifier";
112            case ROOT: return "Root";
113            default: return "?";
114          }
115        }
116    }
117
118  public static class NamingSystemTypeEnumFactory implements EnumFactory<NamingSystemType> {
119    public NamingSystemType fromCode(String codeString) throws IllegalArgumentException {
120      if (codeString == null || "".equals(codeString))
121            if (codeString == null || "".equals(codeString))
122                return null;
123        if ("codesystem".equals(codeString))
124          return NamingSystemType.CODESYSTEM;
125        if ("identifier".equals(codeString))
126          return NamingSystemType.IDENTIFIER;
127        if ("root".equals(codeString))
128          return NamingSystemType.ROOT;
129        throw new IllegalArgumentException("Unknown NamingSystemType code '"+codeString+"'");
130        }
131        public Enumeration<NamingSystemType> fromType(Base code) throws FHIRException {
132          if (code == null)
133            return null;
134          if (code.isEmpty())
135            return new Enumeration<NamingSystemType>(this);
136          String codeString = ((PrimitiveType) code).asStringValue();
137          if (codeString == null || "".equals(codeString))
138            return null;
139        if ("codesystem".equals(codeString))
140          return new Enumeration<NamingSystemType>(this, NamingSystemType.CODESYSTEM);
141        if ("identifier".equals(codeString))
142          return new Enumeration<NamingSystemType>(this, NamingSystemType.IDENTIFIER);
143        if ("root".equals(codeString))
144          return new Enumeration<NamingSystemType>(this, NamingSystemType.ROOT);
145        throw new FHIRException("Unknown NamingSystemType code '"+codeString+"'");
146        }
147    public String toCode(NamingSystemType code) {
148      if (code == NamingSystemType.CODESYSTEM)
149        return "codesystem";
150      if (code == NamingSystemType.IDENTIFIER)
151        return "identifier";
152      if (code == NamingSystemType.ROOT)
153        return "root";
154      return "?";
155      }
156    public String toSystem(NamingSystemType code) {
157      return code.getSystem();
158      }
159    }
160
161    public enum NamingSystemIdentifierType {
162        /**
163         * An ISO object identifier; e.g. 1.2.3.4.5.
164         */
165        OID, 
166        /**
167         * A universally unique identifier of the form a5afddf4-e880-459b-876e-e4591b0acc11.
168         */
169        UUID, 
170        /**
171         * A uniform resource identifier (ideally a URL - uniform resource locator); e.g. http://unitsofmeasure.org.
172         */
173        URI, 
174        /**
175         * Some other type of unique identifier; e.g. HL7-assigned reserved string such as LN for LOINC.
176         */
177        OTHER, 
178        /**
179         * added to help the parsers with the generic types
180         */
181        NULL;
182        public static NamingSystemIdentifierType fromCode(String codeString) throws FHIRException {
183            if (codeString == null || "".equals(codeString))
184                return null;
185        if ("oid".equals(codeString))
186          return OID;
187        if ("uuid".equals(codeString))
188          return UUID;
189        if ("uri".equals(codeString))
190          return URI;
191        if ("other".equals(codeString))
192          return OTHER;
193        if (Configuration.isAcceptInvalidEnums())
194          return null;
195        else
196          throw new FHIRException("Unknown NamingSystemIdentifierType code '"+codeString+"'");
197        }
198        public String toCode() {
199          switch (this) {
200            case OID: return "oid";
201            case UUID: return "uuid";
202            case URI: return "uri";
203            case OTHER: return "other";
204            default: return "?";
205          }
206        }
207        public String getSystem() {
208          switch (this) {
209            case OID: return "http://hl7.org/fhir/namingsystem-identifier-type";
210            case UUID: return "http://hl7.org/fhir/namingsystem-identifier-type";
211            case URI: return "http://hl7.org/fhir/namingsystem-identifier-type";
212            case OTHER: return "http://hl7.org/fhir/namingsystem-identifier-type";
213            default: return "?";
214          }
215        }
216        public String getDefinition() {
217          switch (this) {
218            case OID: return "An ISO object identifier; e.g. 1.2.3.4.5.";
219            case UUID: return "A universally unique identifier of the form a5afddf4-e880-459b-876e-e4591b0acc11.";
220            case URI: return "A uniform resource identifier (ideally a URL - uniform resource locator); e.g. http://unitsofmeasure.org.";
221            case OTHER: return "Some other type of unique identifier; e.g. HL7-assigned reserved string such as LN for LOINC.";
222            default: return "?";
223          }
224        }
225        public String getDisplay() {
226          switch (this) {
227            case OID: return "OID";
228            case UUID: return "UUID";
229            case URI: return "URI";
230            case OTHER: return "Other";
231            default: return "?";
232          }
233        }
234    }
235
236  public static class NamingSystemIdentifierTypeEnumFactory implements EnumFactory<NamingSystemIdentifierType> {
237    public NamingSystemIdentifierType fromCode(String codeString) throws IllegalArgumentException {
238      if (codeString == null || "".equals(codeString))
239            if (codeString == null || "".equals(codeString))
240                return null;
241        if ("oid".equals(codeString))
242          return NamingSystemIdentifierType.OID;
243        if ("uuid".equals(codeString))
244          return NamingSystemIdentifierType.UUID;
245        if ("uri".equals(codeString))
246          return NamingSystemIdentifierType.URI;
247        if ("other".equals(codeString))
248          return NamingSystemIdentifierType.OTHER;
249        throw new IllegalArgumentException("Unknown NamingSystemIdentifierType code '"+codeString+"'");
250        }
251        public Enumeration<NamingSystemIdentifierType> fromType(Base code) throws FHIRException {
252          if (code == null)
253            return null;
254          if (code.isEmpty())
255            return new Enumeration<NamingSystemIdentifierType>(this);
256          String codeString = ((PrimitiveType) code).asStringValue();
257          if (codeString == null || "".equals(codeString))
258            return null;
259        if ("oid".equals(codeString))
260          return new Enumeration<NamingSystemIdentifierType>(this, NamingSystemIdentifierType.OID);
261        if ("uuid".equals(codeString))
262          return new Enumeration<NamingSystemIdentifierType>(this, NamingSystemIdentifierType.UUID);
263        if ("uri".equals(codeString))
264          return new Enumeration<NamingSystemIdentifierType>(this, NamingSystemIdentifierType.URI);
265        if ("other".equals(codeString))
266          return new Enumeration<NamingSystemIdentifierType>(this, NamingSystemIdentifierType.OTHER);
267        throw new FHIRException("Unknown NamingSystemIdentifierType code '"+codeString+"'");
268        }
269    public String toCode(NamingSystemIdentifierType code) {
270      if (code == NamingSystemIdentifierType.OID)
271        return "oid";
272      if (code == NamingSystemIdentifierType.UUID)
273        return "uuid";
274      if (code == NamingSystemIdentifierType.URI)
275        return "uri";
276      if (code == NamingSystemIdentifierType.OTHER)
277        return "other";
278      return "?";
279      }
280    public String toSystem(NamingSystemIdentifierType code) {
281      return code.getSystem();
282      }
283    }
284
285    @Block()
286    public static class NamingSystemUniqueIdComponent extends BackboneElement implements IBaseBackboneElement {
287        /**
288         * Identifies the unique identifier scheme used for this particular identifier.
289         */
290        @Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
291        @Description(shortDefinition="oid | uuid | uri | other", formalDefinition="Identifies the unique identifier scheme used for this particular identifier." )
292        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/namingsystem-identifier-type")
293        protected Enumeration<NamingSystemIdentifierType> type;
294
295        /**
296         * The string that should be sent over the wire to identify the code system or identifier system.
297         */
298        @Child(name = "value", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=true)
299        @Description(shortDefinition="The unique identifier", formalDefinition="The string that should be sent over the wire to identify the code system or identifier system." )
300        protected StringType value;
301
302        /**
303         * Indicates whether this identifier is the "preferred" identifier of this type.
304         */
305        @Child(name = "preferred", type = {BooleanType.class}, order=3, min=0, max=1, modifier=false, summary=false)
306        @Description(shortDefinition="Is this the id that should be used for this type", formalDefinition="Indicates whether this identifier is the \"preferred\" identifier of this type." )
307        protected BooleanType preferred;
308
309        /**
310         * Notes about the past or intended usage of this identifier.
311         */
312        @Child(name = "comment", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
313        @Description(shortDefinition="Notes about identifier usage", formalDefinition="Notes about the past or intended usage of this identifier." )
314        protected StringType comment;
315
316        /**
317         * Identifies the period of time over which this identifier is considered appropriate to refer to the naming system.  Outside of this window, the identifier might be non-deterministic.
318         */
319        @Child(name = "period", type = {Period.class}, order=5, min=0, max=1, modifier=false, summary=false)
320        @Description(shortDefinition="When is identifier valid?", formalDefinition="Identifies the period of time over which this identifier is considered appropriate to refer to the naming system.  Outside of this window, the identifier might be non-deterministic." )
321        protected Period period;
322
323        private static final long serialVersionUID = -1458889328L;
324
325    /**
326     * Constructor
327     */
328      public NamingSystemUniqueIdComponent() {
329        super();
330      }
331
332    /**
333     * Constructor
334     */
335      public NamingSystemUniqueIdComponent(Enumeration<NamingSystemIdentifierType> type, StringType value) {
336        super();
337        this.type = type;
338        this.value = value;
339      }
340
341        /**
342         * @return {@link #type} (Identifies the unique identifier scheme used for this particular identifier.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
343         */
344        public Enumeration<NamingSystemIdentifierType> getTypeElement() { 
345          if (this.type == null)
346            if (Configuration.errorOnAutoCreate())
347              throw new Error("Attempt to auto-create NamingSystemUniqueIdComponent.type");
348            else if (Configuration.doAutoCreate())
349              this.type = new Enumeration<NamingSystemIdentifierType>(new NamingSystemIdentifierTypeEnumFactory()); // bb
350          return this.type;
351        }
352
353        public boolean hasTypeElement() { 
354          return this.type != null && !this.type.isEmpty();
355        }
356
357        public boolean hasType() { 
358          return this.type != null && !this.type.isEmpty();
359        }
360
361        /**
362         * @param value {@link #type} (Identifies the unique identifier scheme used for this particular identifier.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
363         */
364        public NamingSystemUniqueIdComponent setTypeElement(Enumeration<NamingSystemIdentifierType> value) { 
365          this.type = value;
366          return this;
367        }
368
369        /**
370         * @return Identifies the unique identifier scheme used for this particular identifier.
371         */
372        public NamingSystemIdentifierType getType() { 
373          return this.type == null ? null : this.type.getValue();
374        }
375
376        /**
377         * @param value Identifies the unique identifier scheme used for this particular identifier.
378         */
379        public NamingSystemUniqueIdComponent setType(NamingSystemIdentifierType value) { 
380            if (this.type == null)
381              this.type = new Enumeration<NamingSystemIdentifierType>(new NamingSystemIdentifierTypeEnumFactory());
382            this.type.setValue(value);
383          return this;
384        }
385
386        /**
387         * @return {@link #value} (The string that should be sent over the wire to identify the code system or identifier system.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
388         */
389        public StringType getValueElement() { 
390          if (this.value == null)
391            if (Configuration.errorOnAutoCreate())
392              throw new Error("Attempt to auto-create NamingSystemUniqueIdComponent.value");
393            else if (Configuration.doAutoCreate())
394              this.value = new StringType(); // bb
395          return this.value;
396        }
397
398        public boolean hasValueElement() { 
399          return this.value != null && !this.value.isEmpty();
400        }
401
402        public boolean hasValue() { 
403          return this.value != null && !this.value.isEmpty();
404        }
405
406        /**
407         * @param value {@link #value} (The string that should be sent over the wire to identify the code system or identifier system.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
408         */
409        public NamingSystemUniqueIdComponent setValueElement(StringType value) { 
410          this.value = value;
411          return this;
412        }
413
414        /**
415         * @return The string that should be sent over the wire to identify the code system or identifier system.
416         */
417        public String getValue() { 
418          return this.value == null ? null : this.value.getValue();
419        }
420
421        /**
422         * @param value The string that should be sent over the wire to identify the code system or identifier system.
423         */
424        public NamingSystemUniqueIdComponent setValue(String value) { 
425            if (this.value == null)
426              this.value = new StringType();
427            this.value.setValue(value);
428          return this;
429        }
430
431        /**
432         * @return {@link #preferred} (Indicates whether this identifier is the "preferred" identifier of this type.). This is the underlying object with id, value and extensions. The accessor "getPreferred" gives direct access to the value
433         */
434        public BooleanType getPreferredElement() { 
435          if (this.preferred == null)
436            if (Configuration.errorOnAutoCreate())
437              throw new Error("Attempt to auto-create NamingSystemUniqueIdComponent.preferred");
438            else if (Configuration.doAutoCreate())
439              this.preferred = new BooleanType(); // bb
440          return this.preferred;
441        }
442
443        public boolean hasPreferredElement() { 
444          return this.preferred != null && !this.preferred.isEmpty();
445        }
446
447        public boolean hasPreferred() { 
448          return this.preferred != null && !this.preferred.isEmpty();
449        }
450
451        /**
452         * @param value {@link #preferred} (Indicates whether this identifier is the "preferred" identifier of this type.). This is the underlying object with id, value and extensions. The accessor "getPreferred" gives direct access to the value
453         */
454        public NamingSystemUniqueIdComponent setPreferredElement(BooleanType value) { 
455          this.preferred = value;
456          return this;
457        }
458
459        /**
460         * @return Indicates whether this identifier is the "preferred" identifier of this type.
461         */
462        public boolean getPreferred() { 
463          return this.preferred == null || this.preferred.isEmpty() ? false : this.preferred.getValue();
464        }
465
466        /**
467         * @param value Indicates whether this identifier is the "preferred" identifier of this type.
468         */
469        public NamingSystemUniqueIdComponent setPreferred(boolean value) { 
470            if (this.preferred == null)
471              this.preferred = new BooleanType();
472            this.preferred.setValue(value);
473          return this;
474        }
475
476        /**
477         * @return {@link #comment} (Notes about the past or intended usage of this identifier.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
478         */
479        public StringType getCommentElement() { 
480          if (this.comment == null)
481            if (Configuration.errorOnAutoCreate())
482              throw new Error("Attempt to auto-create NamingSystemUniqueIdComponent.comment");
483            else if (Configuration.doAutoCreate())
484              this.comment = new StringType(); // bb
485          return this.comment;
486        }
487
488        public boolean hasCommentElement() { 
489          return this.comment != null && !this.comment.isEmpty();
490        }
491
492        public boolean hasComment() { 
493          return this.comment != null && !this.comment.isEmpty();
494        }
495
496        /**
497         * @param value {@link #comment} (Notes about the past or intended usage of this identifier.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
498         */
499        public NamingSystemUniqueIdComponent setCommentElement(StringType value) { 
500          this.comment = value;
501          return this;
502        }
503
504        /**
505         * @return Notes about the past or intended usage of this identifier.
506         */
507        public String getComment() { 
508          return this.comment == null ? null : this.comment.getValue();
509        }
510
511        /**
512         * @param value Notes about the past or intended usage of this identifier.
513         */
514        public NamingSystemUniqueIdComponent setComment(String value) { 
515          if (Utilities.noString(value))
516            this.comment = null;
517          else {
518            if (this.comment == null)
519              this.comment = new StringType();
520            this.comment.setValue(value);
521          }
522          return this;
523        }
524
525        /**
526         * @return {@link #period} (Identifies the period of time over which this identifier is considered appropriate to refer to the naming system.  Outside of this window, the identifier might be non-deterministic.)
527         */
528        public Period getPeriod() { 
529          if (this.period == null)
530            if (Configuration.errorOnAutoCreate())
531              throw new Error("Attempt to auto-create NamingSystemUniqueIdComponent.period");
532            else if (Configuration.doAutoCreate())
533              this.period = new Period(); // cc
534          return this.period;
535        }
536
537        public boolean hasPeriod() { 
538          return this.period != null && !this.period.isEmpty();
539        }
540
541        /**
542         * @param value {@link #period} (Identifies the period of time over which this identifier is considered appropriate to refer to the naming system.  Outside of this window, the identifier might be non-deterministic.)
543         */
544        public NamingSystemUniqueIdComponent setPeriod(Period value) { 
545          this.period = value;
546          return this;
547        }
548
549        protected void listChildren(List<Property> children) {
550          super.listChildren(children);
551          children.add(new Property("type", "code", "Identifies the unique identifier scheme used for this particular identifier.", 0, 1, type));
552          children.add(new Property("value", "string", "The string that should be sent over the wire to identify the code system or identifier system.", 0, 1, value));
553          children.add(new Property("preferred", "boolean", "Indicates whether this identifier is the \"preferred\" identifier of this type.", 0, 1, preferred));
554          children.add(new Property("comment", "string", "Notes about the past or intended usage of this identifier.", 0, 1, comment));
555          children.add(new Property("period", "Period", "Identifies the period of time over which this identifier is considered appropriate to refer to the naming system.  Outside of this window, the identifier might be non-deterministic.", 0, 1, period));
556        }
557
558        @Override
559        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
560          switch (_hash) {
561          case 3575610: /*type*/  return new Property("type", "code", "Identifies the unique identifier scheme used for this particular identifier.", 0, 1, type);
562          case 111972721: /*value*/  return new Property("value", "string", "The string that should be sent over the wire to identify the code system or identifier system.", 0, 1, value);
563          case -1294005119: /*preferred*/  return new Property("preferred", "boolean", "Indicates whether this identifier is the \"preferred\" identifier of this type.", 0, 1, preferred);
564          case 950398559: /*comment*/  return new Property("comment", "string", "Notes about the past or intended usage of this identifier.", 0, 1, comment);
565          case -991726143: /*period*/  return new Property("period", "Period", "Identifies the period of time over which this identifier is considered appropriate to refer to the naming system.  Outside of this window, the identifier might be non-deterministic.", 0, 1, period);
566          default: return super.getNamedProperty(_hash, _name, _checkValid);
567          }
568
569        }
570
571      @Override
572      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
573        switch (hash) {
574        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Enumeration<NamingSystemIdentifierType>
575        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
576        case -1294005119: /*preferred*/ return this.preferred == null ? new Base[0] : new Base[] {this.preferred}; // BooleanType
577        case 950398559: /*comment*/ return this.comment == null ? new Base[0] : new Base[] {this.comment}; // StringType
578        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
579        default: return super.getProperty(hash, name, checkValid);
580        }
581
582      }
583
584      @Override
585      public Base setProperty(int hash, String name, Base value) throws FHIRException {
586        switch (hash) {
587        case 3575610: // type
588          value = new NamingSystemIdentifierTypeEnumFactory().fromType(castToCode(value));
589          this.type = (Enumeration) value; // Enumeration<NamingSystemIdentifierType>
590          return value;
591        case 111972721: // value
592          this.value = castToString(value); // StringType
593          return value;
594        case -1294005119: // preferred
595          this.preferred = castToBoolean(value); // BooleanType
596          return value;
597        case 950398559: // comment
598          this.comment = castToString(value); // StringType
599          return value;
600        case -991726143: // period
601          this.period = castToPeriod(value); // Period
602          return value;
603        default: return super.setProperty(hash, name, value);
604        }
605
606      }
607
608      @Override
609      public Base setProperty(String name, Base value) throws FHIRException {
610        if (name.equals("type")) {
611          value = new NamingSystemIdentifierTypeEnumFactory().fromType(castToCode(value));
612          this.type = (Enumeration) value; // Enumeration<NamingSystemIdentifierType>
613        } else if (name.equals("value")) {
614          this.value = castToString(value); // StringType
615        } else if (name.equals("preferred")) {
616          this.preferred = castToBoolean(value); // BooleanType
617        } else if (name.equals("comment")) {
618          this.comment = castToString(value); // StringType
619        } else if (name.equals("period")) {
620          this.period = castToPeriod(value); // Period
621        } else
622          return super.setProperty(name, value);
623        return value;
624      }
625
626      @Override
627      public Base makeProperty(int hash, String name) throws FHIRException {
628        switch (hash) {
629        case 3575610:  return getTypeElement();
630        case 111972721:  return getValueElement();
631        case -1294005119:  return getPreferredElement();
632        case 950398559:  return getCommentElement();
633        case -991726143:  return getPeriod(); 
634        default: return super.makeProperty(hash, name);
635        }
636
637      }
638
639      @Override
640      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
641        switch (hash) {
642        case 3575610: /*type*/ return new String[] {"code"};
643        case 111972721: /*value*/ return new String[] {"string"};
644        case -1294005119: /*preferred*/ return new String[] {"boolean"};
645        case 950398559: /*comment*/ return new String[] {"string"};
646        case -991726143: /*period*/ return new String[] {"Period"};
647        default: return super.getTypesForProperty(hash, name);
648        }
649
650      }
651
652      @Override
653      public Base addChild(String name) throws FHIRException {
654        if (name.equals("type")) {
655          throw new FHIRException("Cannot call addChild on a primitive type NamingSystem.type");
656        }
657        else if (name.equals("value")) {
658          throw new FHIRException("Cannot call addChild on a primitive type NamingSystem.value");
659        }
660        else if (name.equals("preferred")) {
661          throw new FHIRException("Cannot call addChild on a primitive type NamingSystem.preferred");
662        }
663        else if (name.equals("comment")) {
664          throw new FHIRException("Cannot call addChild on a primitive type NamingSystem.comment");
665        }
666        else if (name.equals("period")) {
667          this.period = new Period();
668          return this.period;
669        }
670        else
671          return super.addChild(name);
672      }
673
674      public NamingSystemUniqueIdComponent copy() {
675        NamingSystemUniqueIdComponent dst = new NamingSystemUniqueIdComponent();
676        copyValues(dst);
677        dst.type = type == null ? null : type.copy();
678        dst.value = value == null ? null : value.copy();
679        dst.preferred = preferred == null ? null : preferred.copy();
680        dst.comment = comment == null ? null : comment.copy();
681        dst.period = period == null ? null : period.copy();
682        return dst;
683      }
684
685      @Override
686      public boolean equalsDeep(Base other_) {
687        if (!super.equalsDeep(other_))
688          return false;
689        if (!(other_ instanceof NamingSystemUniqueIdComponent))
690          return false;
691        NamingSystemUniqueIdComponent o = (NamingSystemUniqueIdComponent) other_;
692        return compareDeep(type, o.type, true) && compareDeep(value, o.value, true) && compareDeep(preferred, o.preferred, true)
693           && compareDeep(comment, o.comment, true) && compareDeep(period, o.period, true);
694      }
695
696      @Override
697      public boolean equalsShallow(Base other_) {
698        if (!super.equalsShallow(other_))
699          return false;
700        if (!(other_ instanceof NamingSystemUniqueIdComponent))
701          return false;
702        NamingSystemUniqueIdComponent o = (NamingSystemUniqueIdComponent) other_;
703        return compareValues(type, o.type, true) && compareValues(value, o.value, true) && compareValues(preferred, o.preferred, true)
704           && compareValues(comment, o.comment, true);
705      }
706
707      public boolean isEmpty() {
708        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, value, preferred, comment
709          , period);
710      }
711
712  public String fhirType() {
713    return "NamingSystem.uniqueId";
714
715  }
716
717  }
718
719    /**
720     * Indicates the purpose for the naming system - what kinds of things does it make unique?
721     */
722    @Child(name = "kind", type = {CodeType.class}, order=0, min=1, max=1, modifier=false, summary=true)
723    @Description(shortDefinition="codesystem | identifier | root", formalDefinition="Indicates the purpose for the naming system - what kinds of things does it make unique?" )
724    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/namingsystem-type")
725    protected Enumeration<NamingSystemType> kind;
726
727    /**
728     * The name of the organization that is responsible for issuing identifiers or codes for this namespace and ensuring their non-collision.
729     */
730    @Child(name = "responsible", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
731    @Description(shortDefinition="Who maintains system namespace?", formalDefinition="The name of the organization that is responsible for issuing identifiers or codes for this namespace and ensuring their non-collision." )
732    protected StringType responsible;
733
734    /**
735     * Categorizes a naming system for easier search by grouping related naming systems.
736     */
737    @Child(name = "type", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
738    @Description(shortDefinition="e.g. driver,  provider,  patient, bank etc.", formalDefinition="Categorizes a naming system for easier search by grouping related naming systems." )
739    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/identifier-type")
740    protected CodeableConcept type;
741
742    /**
743     * Provides guidance on the use of the namespace, including the handling of formatting characters, use of upper vs. lower case, etc.
744     */
745    @Child(name = "usage", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
746    @Description(shortDefinition="How/where is it used", formalDefinition="Provides guidance on the use of the namespace, including the handling of formatting characters, use of upper vs. lower case, etc." )
747    protected StringType usage;
748
749    /**
750     * Indicates how the system may be identified when referenced in electronic exchange.
751     */
752    @Child(name = "uniqueId", type = {}, order=4, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
753    @Description(shortDefinition="Unique identifiers used for system", formalDefinition="Indicates how the system may be identified when referenced in electronic exchange." )
754    protected List<NamingSystemUniqueIdComponent> uniqueId;
755
756    private static final long serialVersionUID = 1686086580L;
757
758  /**
759   * Constructor
760   */
761    public NamingSystem() {
762      super();
763    }
764
765  /**
766   * Constructor
767   */
768    public NamingSystem(StringType name, Enumeration<PublicationStatus> status, Enumeration<NamingSystemType> kind, DateTimeType date) {
769      super();
770      this.name = name;
771      this.status = status;
772      this.kind = kind;
773      this.date = date;
774    }
775
776    /**
777     * @return {@link #name} (A natural language name identifying the naming system. 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
778     */
779    public StringType getNameElement() { 
780      if (this.name == null)
781        if (Configuration.errorOnAutoCreate())
782          throw new Error("Attempt to auto-create NamingSystem.name");
783        else if (Configuration.doAutoCreate())
784          this.name = new StringType(); // bb
785      return this.name;
786    }
787
788    public boolean hasNameElement() { 
789      return this.name != null && !this.name.isEmpty();
790    }
791
792    public boolean hasName() { 
793      return this.name != null && !this.name.isEmpty();
794    }
795
796    /**
797     * @param value {@link #name} (A natural language name identifying the naming system. 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
798     */
799    public NamingSystem setNameElement(StringType value) { 
800      this.name = value;
801      return this;
802    }
803
804    /**
805     * @return A natural language name identifying the naming system. This name should be usable as an identifier for the module by machine processing applications such as code generation.
806     */
807    public String getName() { 
808      return this.name == null ? null : this.name.getValue();
809    }
810
811    /**
812     * @param value A natural language name identifying the naming system. This name should be usable as an identifier for the module by machine processing applications such as code generation.
813     */
814    public NamingSystem setName(String value) { 
815        if (this.name == null)
816          this.name = new StringType();
817        this.name.setValue(value);
818      return this;
819    }
820
821    /**
822     * @return {@link #status} (The status of this naming system. 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
823     */
824    public Enumeration<PublicationStatus> getStatusElement() { 
825      if (this.status == null)
826        if (Configuration.errorOnAutoCreate())
827          throw new Error("Attempt to auto-create NamingSystem.status");
828        else if (Configuration.doAutoCreate())
829          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
830      return this.status;
831    }
832
833    public boolean hasStatusElement() { 
834      return this.status != null && !this.status.isEmpty();
835    }
836
837    public boolean hasStatus() { 
838      return this.status != null && !this.status.isEmpty();
839    }
840
841    /**
842     * @param value {@link #status} (The status of this naming system. 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
843     */
844    public NamingSystem setStatusElement(Enumeration<PublicationStatus> value) { 
845      this.status = value;
846      return this;
847    }
848
849    /**
850     * @return The status of this naming system. Enables tracking the life-cycle of the content.
851     */
852    public PublicationStatus getStatus() { 
853      return this.status == null ? null : this.status.getValue();
854    }
855
856    /**
857     * @param value The status of this naming system. Enables tracking the life-cycle of the content.
858     */
859    public NamingSystem setStatus(PublicationStatus value) { 
860        if (this.status == null)
861          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
862        this.status.setValue(value);
863      return this;
864    }
865
866    /**
867     * @return {@link #kind} (Indicates the purpose for the naming system - what kinds of things does it make unique?). This is the underlying object with id, value and extensions. The accessor "getKind" gives direct access to the value
868     */
869    public Enumeration<NamingSystemType> getKindElement() { 
870      if (this.kind == null)
871        if (Configuration.errorOnAutoCreate())
872          throw new Error("Attempt to auto-create NamingSystem.kind");
873        else if (Configuration.doAutoCreate())
874          this.kind = new Enumeration<NamingSystemType>(new NamingSystemTypeEnumFactory()); // bb
875      return this.kind;
876    }
877
878    public boolean hasKindElement() { 
879      return this.kind != null && !this.kind.isEmpty();
880    }
881
882    public boolean hasKind() { 
883      return this.kind != null && !this.kind.isEmpty();
884    }
885
886    /**
887     * @param value {@link #kind} (Indicates the purpose for the naming system - what kinds of things does it make unique?). This is the underlying object with id, value and extensions. The accessor "getKind" gives direct access to the value
888     */
889    public NamingSystem setKindElement(Enumeration<NamingSystemType> value) { 
890      this.kind = value;
891      return this;
892    }
893
894    /**
895     * @return Indicates the purpose for the naming system - what kinds of things does it make unique?
896     */
897    public NamingSystemType getKind() { 
898      return this.kind == null ? null : this.kind.getValue();
899    }
900
901    /**
902     * @param value Indicates the purpose for the naming system - what kinds of things does it make unique?
903     */
904    public NamingSystem setKind(NamingSystemType value) { 
905        if (this.kind == null)
906          this.kind = new Enumeration<NamingSystemType>(new NamingSystemTypeEnumFactory());
907        this.kind.setValue(value);
908      return this;
909    }
910
911    /**
912     * @return {@link #date} (The date  (and optionally time) when the naming system 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 naming system changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
913     */
914    public DateTimeType getDateElement() { 
915      if (this.date == null)
916        if (Configuration.errorOnAutoCreate())
917          throw new Error("Attempt to auto-create NamingSystem.date");
918        else if (Configuration.doAutoCreate())
919          this.date = new DateTimeType(); // bb
920      return this.date;
921    }
922
923    public boolean hasDateElement() { 
924      return this.date != null && !this.date.isEmpty();
925    }
926
927    public boolean hasDate() { 
928      return this.date != null && !this.date.isEmpty();
929    }
930
931    /**
932     * @param value {@link #date} (The date  (and optionally time) when the naming system 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 naming system changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
933     */
934    public NamingSystem setDateElement(DateTimeType value) { 
935      this.date = value;
936      return this;
937    }
938
939    /**
940     * @return The date  (and optionally time) when the naming system 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 naming system changes.
941     */
942    public Date getDate() { 
943      return this.date == null ? null : this.date.getValue();
944    }
945
946    /**
947     * @param value The date  (and optionally time) when the naming system 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 naming system changes.
948     */
949    public NamingSystem setDate(Date value) { 
950        if (this.date == null)
951          this.date = new DateTimeType();
952        this.date.setValue(value);
953      return this;
954    }
955
956    /**
957     * @return {@link #publisher} (The name of the organization or individual that published the naming system.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
958     */
959    public StringType getPublisherElement() { 
960      if (this.publisher == null)
961        if (Configuration.errorOnAutoCreate())
962          throw new Error("Attempt to auto-create NamingSystem.publisher");
963        else if (Configuration.doAutoCreate())
964          this.publisher = new StringType(); // bb
965      return this.publisher;
966    }
967
968    public boolean hasPublisherElement() { 
969      return this.publisher != null && !this.publisher.isEmpty();
970    }
971
972    public boolean hasPublisher() { 
973      return this.publisher != null && !this.publisher.isEmpty();
974    }
975
976    /**
977     * @param value {@link #publisher} (The name of the organization or individual that published the naming system.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
978     */
979    public NamingSystem setPublisherElement(StringType value) { 
980      this.publisher = value;
981      return this;
982    }
983
984    /**
985     * @return The name of the organization or individual that published the naming system.
986     */
987    public String getPublisher() { 
988      return this.publisher == null ? null : this.publisher.getValue();
989    }
990
991    /**
992     * @param value The name of the organization or individual that published the naming system.
993     */
994    public NamingSystem setPublisher(String value) { 
995      if (Utilities.noString(value))
996        this.publisher = null;
997      else {
998        if (this.publisher == null)
999          this.publisher = new StringType();
1000        this.publisher.setValue(value);
1001      }
1002      return this;
1003    }
1004
1005    /**
1006     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
1007     */
1008    public List<ContactDetail> getContact() { 
1009      if (this.contact == null)
1010        this.contact = new ArrayList<ContactDetail>();
1011      return this.contact;
1012    }
1013
1014    /**
1015     * @return Returns a reference to <code>this</code> for easy method chaining
1016     */
1017    public NamingSystem setContact(List<ContactDetail> theContact) { 
1018      this.contact = theContact;
1019      return this;
1020    }
1021
1022    public boolean hasContact() { 
1023      if (this.contact == null)
1024        return false;
1025      for (ContactDetail item : this.contact)
1026        if (!item.isEmpty())
1027          return true;
1028      return false;
1029    }
1030
1031    public ContactDetail addContact() { //3
1032      ContactDetail t = new ContactDetail();
1033      if (this.contact == null)
1034        this.contact = new ArrayList<ContactDetail>();
1035      this.contact.add(t);
1036      return t;
1037    }
1038
1039    public NamingSystem addContact(ContactDetail t) { //3
1040      if (t == null)
1041        return this;
1042      if (this.contact == null)
1043        this.contact = new ArrayList<ContactDetail>();
1044      this.contact.add(t);
1045      return this;
1046    }
1047
1048    /**
1049     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist
1050     */
1051    public ContactDetail getContactFirstRep() { 
1052      if (getContact().isEmpty()) {
1053        addContact();
1054      }
1055      return getContact().get(0);
1056    }
1057
1058    /**
1059     * @return {@link #responsible} (The name of the organization that is responsible for issuing identifiers or codes for this namespace and ensuring their non-collision.). This is the underlying object with id, value and extensions. The accessor "getResponsible" gives direct access to the value
1060     */
1061    public StringType getResponsibleElement() { 
1062      if (this.responsible == null)
1063        if (Configuration.errorOnAutoCreate())
1064          throw new Error("Attempt to auto-create NamingSystem.responsible");
1065        else if (Configuration.doAutoCreate())
1066          this.responsible = new StringType(); // bb
1067      return this.responsible;
1068    }
1069
1070    public boolean hasResponsibleElement() { 
1071      return this.responsible != null && !this.responsible.isEmpty();
1072    }
1073
1074    public boolean hasResponsible() { 
1075      return this.responsible != null && !this.responsible.isEmpty();
1076    }
1077
1078    /**
1079     * @param value {@link #responsible} (The name of the organization that is responsible for issuing identifiers or codes for this namespace and ensuring their non-collision.). This is the underlying object with id, value and extensions. The accessor "getResponsible" gives direct access to the value
1080     */
1081    public NamingSystem setResponsibleElement(StringType value) { 
1082      this.responsible = value;
1083      return this;
1084    }
1085
1086    /**
1087     * @return The name of the organization that is responsible for issuing identifiers or codes for this namespace and ensuring their non-collision.
1088     */
1089    public String getResponsible() { 
1090      return this.responsible == null ? null : this.responsible.getValue();
1091    }
1092
1093    /**
1094     * @param value The name of the organization that is responsible for issuing identifiers or codes for this namespace and ensuring their non-collision.
1095     */
1096    public NamingSystem setResponsible(String value) { 
1097      if (Utilities.noString(value))
1098        this.responsible = null;
1099      else {
1100        if (this.responsible == null)
1101          this.responsible = new StringType();
1102        this.responsible.setValue(value);
1103      }
1104      return this;
1105    }
1106
1107    /**
1108     * @return {@link #type} (Categorizes a naming system for easier search by grouping related naming systems.)
1109     */
1110    public CodeableConcept getType() { 
1111      if (this.type == null)
1112        if (Configuration.errorOnAutoCreate())
1113          throw new Error("Attempt to auto-create NamingSystem.type");
1114        else if (Configuration.doAutoCreate())
1115          this.type = new CodeableConcept(); // cc
1116      return this.type;
1117    }
1118
1119    public boolean hasType() { 
1120      return this.type != null && !this.type.isEmpty();
1121    }
1122
1123    /**
1124     * @param value {@link #type} (Categorizes a naming system for easier search by grouping related naming systems.)
1125     */
1126    public NamingSystem setType(CodeableConcept value) { 
1127      this.type = value;
1128      return this;
1129    }
1130
1131    /**
1132     * @return {@link #description} (A free text natural language description of the naming system from a consumer's perspective. Details about what the namespace identifies including scope, granularity, version labeling, etc.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1133     */
1134    public MarkdownType getDescriptionElement() { 
1135      if (this.description == null)
1136        if (Configuration.errorOnAutoCreate())
1137          throw new Error("Attempt to auto-create NamingSystem.description");
1138        else if (Configuration.doAutoCreate())
1139          this.description = new MarkdownType(); // bb
1140      return this.description;
1141    }
1142
1143    public boolean hasDescriptionElement() { 
1144      return this.description != null && !this.description.isEmpty();
1145    }
1146
1147    public boolean hasDescription() { 
1148      return this.description != null && !this.description.isEmpty();
1149    }
1150
1151    /**
1152     * @param value {@link #description} (A free text natural language description of the naming system from a consumer's perspective. Details about what the namespace identifies including scope, granularity, version labeling, etc.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1153     */
1154    public NamingSystem setDescriptionElement(MarkdownType value) { 
1155      this.description = value;
1156      return this;
1157    }
1158
1159    /**
1160     * @return A free text natural language description of the naming system from a consumer's perspective. Details about what the namespace identifies including scope, granularity, version labeling, etc.
1161     */
1162    public String getDescription() { 
1163      return this.description == null ? null : this.description.getValue();
1164    }
1165
1166    /**
1167     * @param value A free text natural language description of the naming system from a consumer's perspective. Details about what the namespace identifies including scope, granularity, version labeling, etc.
1168     */
1169    public NamingSystem setDescription(String value) { 
1170      if (value == null)
1171        this.description = null;
1172      else {
1173        if (this.description == null)
1174          this.description = new MarkdownType();
1175        this.description.setValue(value);
1176      }
1177      return this;
1178    }
1179
1180    /**
1181     * @return {@link #useContext} (The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate naming system instances.)
1182     */
1183    public List<UsageContext> getUseContext() { 
1184      if (this.useContext == null)
1185        this.useContext = new ArrayList<UsageContext>();
1186      return this.useContext;
1187    }
1188
1189    /**
1190     * @return Returns a reference to <code>this</code> for easy method chaining
1191     */
1192    public NamingSystem setUseContext(List<UsageContext> theUseContext) { 
1193      this.useContext = theUseContext;
1194      return this;
1195    }
1196
1197    public boolean hasUseContext() { 
1198      if (this.useContext == null)
1199        return false;
1200      for (UsageContext item : this.useContext)
1201        if (!item.isEmpty())
1202          return true;
1203      return false;
1204    }
1205
1206    public UsageContext addUseContext() { //3
1207      UsageContext t = new UsageContext();
1208      if (this.useContext == null)
1209        this.useContext = new ArrayList<UsageContext>();
1210      this.useContext.add(t);
1211      return t;
1212    }
1213
1214    public NamingSystem addUseContext(UsageContext t) { //3
1215      if (t == null)
1216        return this;
1217      if (this.useContext == null)
1218        this.useContext = new ArrayList<UsageContext>();
1219      this.useContext.add(t);
1220      return this;
1221    }
1222
1223    /**
1224     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist
1225     */
1226    public UsageContext getUseContextFirstRep() { 
1227      if (getUseContext().isEmpty()) {
1228        addUseContext();
1229      }
1230      return getUseContext().get(0);
1231    }
1232
1233    /**
1234     * @return {@link #jurisdiction} (A legal or geographic region in which the naming system is intended to be used.)
1235     */
1236    public List<CodeableConcept> getJurisdiction() { 
1237      if (this.jurisdiction == null)
1238        this.jurisdiction = new ArrayList<CodeableConcept>();
1239      return this.jurisdiction;
1240    }
1241
1242    /**
1243     * @return Returns a reference to <code>this</code> for easy method chaining
1244     */
1245    public NamingSystem setJurisdiction(List<CodeableConcept> theJurisdiction) { 
1246      this.jurisdiction = theJurisdiction;
1247      return this;
1248    }
1249
1250    public boolean hasJurisdiction() { 
1251      if (this.jurisdiction == null)
1252        return false;
1253      for (CodeableConcept item : this.jurisdiction)
1254        if (!item.isEmpty())
1255          return true;
1256      return false;
1257    }
1258
1259    public CodeableConcept addJurisdiction() { //3
1260      CodeableConcept t = new CodeableConcept();
1261      if (this.jurisdiction == null)
1262        this.jurisdiction = new ArrayList<CodeableConcept>();
1263      this.jurisdiction.add(t);
1264      return t;
1265    }
1266
1267    public NamingSystem addJurisdiction(CodeableConcept t) { //3
1268      if (t == null)
1269        return this;
1270      if (this.jurisdiction == null)
1271        this.jurisdiction = new ArrayList<CodeableConcept>();
1272      this.jurisdiction.add(t);
1273      return this;
1274    }
1275
1276    /**
1277     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist
1278     */
1279    public CodeableConcept getJurisdictionFirstRep() { 
1280      if (getJurisdiction().isEmpty()) {
1281        addJurisdiction();
1282      }
1283      return getJurisdiction().get(0);
1284    }
1285
1286    /**
1287     * @return {@link #usage} (Provides guidance on the use of the namespace, including the handling of formatting characters, use of upper vs. lower case, etc.). This is the underlying object with id, value and extensions. The accessor "getUsage" gives direct access to the value
1288     */
1289    public StringType getUsageElement() { 
1290      if (this.usage == null)
1291        if (Configuration.errorOnAutoCreate())
1292          throw new Error("Attempt to auto-create NamingSystem.usage");
1293        else if (Configuration.doAutoCreate())
1294          this.usage = new StringType(); // bb
1295      return this.usage;
1296    }
1297
1298    public boolean hasUsageElement() { 
1299      return this.usage != null && !this.usage.isEmpty();
1300    }
1301
1302    public boolean hasUsage() { 
1303      return this.usage != null && !this.usage.isEmpty();
1304    }
1305
1306    /**
1307     * @param value {@link #usage} (Provides guidance on the use of the namespace, including the handling of formatting characters, use of upper vs. lower case, etc.). This is the underlying object with id, value and extensions. The accessor "getUsage" gives direct access to the value
1308     */
1309    public NamingSystem setUsageElement(StringType value) { 
1310      this.usage = value;
1311      return this;
1312    }
1313
1314    /**
1315     * @return Provides guidance on the use of the namespace, including the handling of formatting characters, use of upper vs. lower case, etc.
1316     */
1317    public String getUsage() { 
1318      return this.usage == null ? null : this.usage.getValue();
1319    }
1320
1321    /**
1322     * @param value Provides guidance on the use of the namespace, including the handling of formatting characters, use of upper vs. lower case, etc.
1323     */
1324    public NamingSystem setUsage(String value) { 
1325      if (Utilities.noString(value))
1326        this.usage = null;
1327      else {
1328        if (this.usage == null)
1329          this.usage = new StringType();
1330        this.usage.setValue(value);
1331      }
1332      return this;
1333    }
1334
1335    /**
1336     * @return {@link #uniqueId} (Indicates how the system may be identified when referenced in electronic exchange.)
1337     */
1338    public List<NamingSystemUniqueIdComponent> getUniqueId() { 
1339      if (this.uniqueId == null)
1340        this.uniqueId = new ArrayList<NamingSystemUniqueIdComponent>();
1341      return this.uniqueId;
1342    }
1343
1344    /**
1345     * @return Returns a reference to <code>this</code> for easy method chaining
1346     */
1347    public NamingSystem setUniqueId(List<NamingSystemUniqueIdComponent> theUniqueId) { 
1348      this.uniqueId = theUniqueId;
1349      return this;
1350    }
1351
1352    public boolean hasUniqueId() { 
1353      if (this.uniqueId == null)
1354        return false;
1355      for (NamingSystemUniqueIdComponent item : this.uniqueId)
1356        if (!item.isEmpty())
1357          return true;
1358      return false;
1359    }
1360
1361    public NamingSystemUniqueIdComponent addUniqueId() { //3
1362      NamingSystemUniqueIdComponent t = new NamingSystemUniqueIdComponent();
1363      if (this.uniqueId == null)
1364        this.uniqueId = new ArrayList<NamingSystemUniqueIdComponent>();
1365      this.uniqueId.add(t);
1366      return t;
1367    }
1368
1369    public NamingSystem addUniqueId(NamingSystemUniqueIdComponent t) { //3
1370      if (t == null)
1371        return this;
1372      if (this.uniqueId == null)
1373        this.uniqueId = new ArrayList<NamingSystemUniqueIdComponent>();
1374      this.uniqueId.add(t);
1375      return this;
1376    }
1377
1378    /**
1379     * @return The first repetition of repeating field {@link #uniqueId}, creating it if it does not already exist
1380     */
1381    public NamingSystemUniqueIdComponent getUniqueIdFirstRep() { 
1382      if (getUniqueId().isEmpty()) {
1383        addUniqueId();
1384      }
1385      return getUniqueId().get(0);
1386    }
1387
1388      protected void listChildren(List<Property> children) {
1389        super.listChildren(children);
1390        children.add(new Property("name", "string", "A natural language name identifying the naming system. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
1391        children.add(new Property("status", "code", "The status of this naming system. Enables tracking the life-cycle of the content.", 0, 1, status));
1392        children.add(new Property("kind", "code", "Indicates the purpose for the naming system - what kinds of things does it make unique?", 0, 1, kind));
1393        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the naming system 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 naming system changes.", 0, 1, date));
1394        children.add(new Property("publisher", "string", "The name of the organization or individual that published the naming system.", 0, 1, publisher));
1395        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));
1396        children.add(new Property("responsible", "string", "The name of the organization that is responsible for issuing identifiers or codes for this namespace and ensuring their non-collision.", 0, 1, responsible));
1397        children.add(new Property("type", "CodeableConcept", "Categorizes a naming system for easier search by grouping related naming systems.", 0, 1, type));
1398        children.add(new Property("description", "markdown", "A free text natural language description of the naming system from a consumer's perspective. Details about what the namespace identifies including scope, granularity, version labeling, etc.", 0, 1, description));
1399        children.add(new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate naming system instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
1400        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the naming system is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
1401        children.add(new Property("usage", "string", "Provides guidance on the use of the namespace, including the handling of formatting characters, use of upper vs. lower case, etc.", 0, 1, usage));
1402        children.add(new Property("uniqueId", "", "Indicates how the system may be identified when referenced in electronic exchange.", 0, java.lang.Integer.MAX_VALUE, uniqueId));
1403      }
1404
1405      @Override
1406      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1407        switch (_hash) {
1408        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the naming system. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
1409        case -892481550: /*status*/  return new Property("status", "code", "The status of this naming system. Enables tracking the life-cycle of the content.", 0, 1, status);
1410        case 3292052: /*kind*/  return new Property("kind", "code", "Indicates the purpose for the naming system - what kinds of things does it make unique?", 0, 1, kind);
1411        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the naming system 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 naming system changes.", 0, 1, date);
1412        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the naming system.", 0, 1, publisher);
1413        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);
1414        case 1847674614: /*responsible*/  return new Property("responsible", "string", "The name of the organization that is responsible for issuing identifiers or codes for this namespace and ensuring their non-collision.", 0, 1, responsible);
1415        case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Categorizes a naming system for easier search by grouping related naming systems.", 0, 1, type);
1416        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the naming system from a consumer's perspective. Details about what the namespace identifies including scope, granularity, version labeling, etc.", 0, 1, description);
1417        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 terms may be used to assist with indexing and searching for appropriate naming system instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
1418        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the naming system is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
1419        case 111574433: /*usage*/  return new Property("usage", "string", "Provides guidance on the use of the namespace, including the handling of formatting characters, use of upper vs. lower case, etc.", 0, 1, usage);
1420        case -294460212: /*uniqueId*/  return new Property("uniqueId", "", "Indicates how the system may be identified when referenced in electronic exchange.", 0, java.lang.Integer.MAX_VALUE, uniqueId);
1421        default: return super.getNamedProperty(_hash, _name, _checkValid);
1422        }
1423
1424      }
1425
1426      @Override
1427      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1428        switch (hash) {
1429        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
1430        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
1431        case 3292052: /*kind*/ return this.kind == null ? new Base[0] : new Base[] {this.kind}; // Enumeration<NamingSystemType>
1432        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
1433        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
1434        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
1435        case 1847674614: /*responsible*/ return this.responsible == null ? new Base[0] : new Base[] {this.responsible}; // StringType
1436        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
1437        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
1438        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
1439        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
1440        case 111574433: /*usage*/ return this.usage == null ? new Base[0] : new Base[] {this.usage}; // StringType
1441        case -294460212: /*uniqueId*/ return this.uniqueId == null ? new Base[0] : this.uniqueId.toArray(new Base[this.uniqueId.size()]); // NamingSystemUniqueIdComponent
1442        default: return super.getProperty(hash, name, checkValid);
1443        }
1444
1445      }
1446
1447      @Override
1448      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1449        switch (hash) {
1450        case 3373707: // name
1451          this.name = castToString(value); // StringType
1452          return value;
1453        case -892481550: // status
1454          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
1455          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
1456          return value;
1457        case 3292052: // kind
1458          value = new NamingSystemTypeEnumFactory().fromType(castToCode(value));
1459          this.kind = (Enumeration) value; // Enumeration<NamingSystemType>
1460          return value;
1461        case 3076014: // date
1462          this.date = castToDateTime(value); // DateTimeType
1463          return value;
1464        case 1447404028: // publisher
1465          this.publisher = castToString(value); // StringType
1466          return value;
1467        case 951526432: // contact
1468          this.getContact().add(castToContactDetail(value)); // ContactDetail
1469          return value;
1470        case 1847674614: // responsible
1471          this.responsible = castToString(value); // StringType
1472          return value;
1473        case 3575610: // type
1474          this.type = castToCodeableConcept(value); // CodeableConcept
1475          return value;
1476        case -1724546052: // description
1477          this.description = castToMarkdown(value); // MarkdownType
1478          return value;
1479        case -669707736: // useContext
1480          this.getUseContext().add(castToUsageContext(value)); // UsageContext
1481          return value;
1482        case -507075711: // jurisdiction
1483          this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept
1484          return value;
1485        case 111574433: // usage
1486          this.usage = castToString(value); // StringType
1487          return value;
1488        case -294460212: // uniqueId
1489          this.getUniqueId().add((NamingSystemUniqueIdComponent) value); // NamingSystemUniqueIdComponent
1490          return value;
1491        default: return super.setProperty(hash, name, value);
1492        }
1493
1494      }
1495
1496      @Override
1497      public Base setProperty(String name, Base value) throws FHIRException {
1498        if (name.equals("name")) {
1499          this.name = castToString(value); // StringType
1500        } else if (name.equals("status")) {
1501          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
1502          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
1503        } else if (name.equals("kind")) {
1504          value = new NamingSystemTypeEnumFactory().fromType(castToCode(value));
1505          this.kind = (Enumeration) value; // Enumeration<NamingSystemType>
1506        } else if (name.equals("date")) {
1507          this.date = castToDateTime(value); // DateTimeType
1508        } else if (name.equals("publisher")) {
1509          this.publisher = castToString(value); // StringType
1510        } else if (name.equals("contact")) {
1511          this.getContact().add(castToContactDetail(value));
1512        } else if (name.equals("responsible")) {
1513          this.responsible = castToString(value); // StringType
1514        } else if (name.equals("type")) {
1515          this.type = castToCodeableConcept(value); // CodeableConcept
1516        } else if (name.equals("description")) {
1517          this.description = castToMarkdown(value); // MarkdownType
1518        } else if (name.equals("useContext")) {
1519          this.getUseContext().add(castToUsageContext(value));
1520        } else if (name.equals("jurisdiction")) {
1521          this.getJurisdiction().add(castToCodeableConcept(value));
1522        } else if (name.equals("usage")) {
1523          this.usage = castToString(value); // StringType
1524        } else if (name.equals("uniqueId")) {
1525          this.getUniqueId().add((NamingSystemUniqueIdComponent) value);
1526        } else
1527          return super.setProperty(name, value);
1528        return value;
1529      }
1530
1531      @Override
1532      public Base makeProperty(int hash, String name) throws FHIRException {
1533        switch (hash) {
1534        case 3373707:  return getNameElement();
1535        case -892481550:  return getStatusElement();
1536        case 3292052:  return getKindElement();
1537        case 3076014:  return getDateElement();
1538        case 1447404028:  return getPublisherElement();
1539        case 951526432:  return addContact(); 
1540        case 1847674614:  return getResponsibleElement();
1541        case 3575610:  return getType(); 
1542        case -1724546052:  return getDescriptionElement();
1543        case -669707736:  return addUseContext(); 
1544        case -507075711:  return addJurisdiction(); 
1545        case 111574433:  return getUsageElement();
1546        case -294460212:  return addUniqueId(); 
1547        default: return super.makeProperty(hash, name);
1548        }
1549
1550      }
1551
1552      @Override
1553      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1554        switch (hash) {
1555        case 3373707: /*name*/ return new String[] {"string"};
1556        case -892481550: /*status*/ return new String[] {"code"};
1557        case 3292052: /*kind*/ return new String[] {"code"};
1558        case 3076014: /*date*/ return new String[] {"dateTime"};
1559        case 1447404028: /*publisher*/ return new String[] {"string"};
1560        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
1561        case 1847674614: /*responsible*/ return new String[] {"string"};
1562        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
1563        case -1724546052: /*description*/ return new String[] {"markdown"};
1564        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
1565        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
1566        case 111574433: /*usage*/ return new String[] {"string"};
1567        case -294460212: /*uniqueId*/ return new String[] {};
1568        default: return super.getTypesForProperty(hash, name);
1569        }
1570
1571      }
1572
1573      @Override
1574      public Base addChild(String name) throws FHIRException {
1575        if (name.equals("name")) {
1576          throw new FHIRException("Cannot call addChild on a primitive type NamingSystem.name");
1577        }
1578        else if (name.equals("status")) {
1579          throw new FHIRException("Cannot call addChild on a primitive type NamingSystem.status");
1580        }
1581        else if (name.equals("kind")) {
1582          throw new FHIRException("Cannot call addChild on a primitive type NamingSystem.kind");
1583        }
1584        else if (name.equals("date")) {
1585          throw new FHIRException("Cannot call addChild on a primitive type NamingSystem.date");
1586        }
1587        else if (name.equals("publisher")) {
1588          throw new FHIRException("Cannot call addChild on a primitive type NamingSystem.publisher");
1589        }
1590        else if (name.equals("contact")) {
1591          return addContact();
1592        }
1593        else if (name.equals("responsible")) {
1594          throw new FHIRException("Cannot call addChild on a primitive type NamingSystem.responsible");
1595        }
1596        else if (name.equals("type")) {
1597          this.type = new CodeableConcept();
1598          return this.type;
1599        }
1600        else if (name.equals("description")) {
1601          throw new FHIRException("Cannot call addChild on a primitive type NamingSystem.description");
1602        }
1603        else if (name.equals("useContext")) {
1604          return addUseContext();
1605        }
1606        else if (name.equals("jurisdiction")) {
1607          return addJurisdiction();
1608        }
1609        else if (name.equals("usage")) {
1610          throw new FHIRException("Cannot call addChild on a primitive type NamingSystem.usage");
1611        }
1612        else if (name.equals("uniqueId")) {
1613          return addUniqueId();
1614        }
1615        else
1616          return super.addChild(name);
1617      }
1618
1619  public String fhirType() {
1620    return "NamingSystem";
1621
1622  }
1623
1624      public NamingSystem copy() {
1625        NamingSystem dst = new NamingSystem();
1626        copyValues(dst);
1627        dst.name = name == null ? null : name.copy();
1628        dst.status = status == null ? null : status.copy();
1629        dst.kind = kind == null ? null : kind.copy();
1630        dst.date = date == null ? null : date.copy();
1631        dst.publisher = publisher == null ? null : publisher.copy();
1632        if (contact != null) {
1633          dst.contact = new ArrayList<ContactDetail>();
1634          for (ContactDetail i : contact)
1635            dst.contact.add(i.copy());
1636        };
1637        dst.responsible = responsible == null ? null : responsible.copy();
1638        dst.type = type == null ? null : type.copy();
1639        dst.description = description == null ? null : description.copy();
1640        if (useContext != null) {
1641          dst.useContext = new ArrayList<UsageContext>();
1642          for (UsageContext i : useContext)
1643            dst.useContext.add(i.copy());
1644        };
1645        if (jurisdiction != null) {
1646          dst.jurisdiction = new ArrayList<CodeableConcept>();
1647          for (CodeableConcept i : jurisdiction)
1648            dst.jurisdiction.add(i.copy());
1649        };
1650        dst.usage = usage == null ? null : usage.copy();
1651        if (uniqueId != null) {
1652          dst.uniqueId = new ArrayList<NamingSystemUniqueIdComponent>();
1653          for (NamingSystemUniqueIdComponent i : uniqueId)
1654            dst.uniqueId.add(i.copy());
1655        };
1656        return dst;
1657      }
1658
1659      protected NamingSystem typedCopy() {
1660        return copy();
1661      }
1662
1663      @Override
1664      public boolean equalsDeep(Base other_) {
1665        if (!super.equalsDeep(other_))
1666          return false;
1667        if (!(other_ instanceof NamingSystem))
1668          return false;
1669        NamingSystem o = (NamingSystem) other_;
1670        return compareDeep(kind, o.kind, true) && compareDeep(responsible, o.responsible, true) && compareDeep(type, o.type, true)
1671           && compareDeep(usage, o.usage, true) && compareDeep(uniqueId, o.uniqueId, true);
1672      }
1673
1674      @Override
1675      public boolean equalsShallow(Base other_) {
1676        if (!super.equalsShallow(other_))
1677          return false;
1678        if (!(other_ instanceof NamingSystem))
1679          return false;
1680        NamingSystem o = (NamingSystem) other_;
1681        return compareValues(kind, o.kind, true) && compareValues(responsible, o.responsible, true) && compareValues(usage, o.usage, true)
1682          ;
1683      }
1684
1685      public boolean isEmpty() {
1686        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(kind, responsible, type
1687          , usage, uniqueId);
1688      }
1689
1690  @Override
1691  public ResourceType getResourceType() {
1692    return ResourceType.NamingSystem;
1693   }
1694
1695 /**
1696   * Search parameter: <b>date</b>
1697   * <p>
1698   * Description: <b>The naming system publication date</b><br>
1699   * Type: <b>date</b><br>
1700   * Path: <b>NamingSystem.date</b><br>
1701   * </p>
1702   */
1703  @SearchParamDefinition(name="date", path="NamingSystem.date", description="The naming system publication date", type="date" )
1704  public static final String SP_DATE = "date";
1705 /**
1706   * <b>Fluent Client</b> search parameter constant for <b>date</b>
1707   * <p>
1708   * Description: <b>The naming system publication date</b><br>
1709   * Type: <b>date</b><br>
1710   * Path: <b>NamingSystem.date</b><br>
1711   * </p>
1712   */
1713  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
1714
1715 /**
1716   * Search parameter: <b>period</b>
1717   * <p>
1718   * Description: <b>When is identifier valid?</b><br>
1719   * Type: <b>date</b><br>
1720   * Path: <b>NamingSystem.uniqueId.period</b><br>
1721   * </p>
1722   */
1723  @SearchParamDefinition(name="period", path="NamingSystem.uniqueId.period", description="When is identifier valid?", type="date" )
1724  public static final String SP_PERIOD = "period";
1725 /**
1726   * <b>Fluent Client</b> search parameter constant for <b>period</b>
1727   * <p>
1728   * Description: <b>When is identifier valid?</b><br>
1729   * Type: <b>date</b><br>
1730   * Path: <b>NamingSystem.uniqueId.period</b><br>
1731   * </p>
1732   */
1733  public static final ca.uhn.fhir.rest.gclient.DateClientParam PERIOD = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_PERIOD);
1734
1735 /**
1736   * Search parameter: <b>kind</b>
1737   * <p>
1738   * Description: <b>codesystem | identifier | root</b><br>
1739   * Type: <b>token</b><br>
1740   * Path: <b>NamingSystem.kind</b><br>
1741   * </p>
1742   */
1743  @SearchParamDefinition(name="kind", path="NamingSystem.kind", description="codesystem | identifier | root", type="token" )
1744  public static final String SP_KIND = "kind";
1745 /**
1746   * <b>Fluent Client</b> search parameter constant for <b>kind</b>
1747   * <p>
1748   * Description: <b>codesystem | identifier | root</b><br>
1749   * Type: <b>token</b><br>
1750   * Path: <b>NamingSystem.kind</b><br>
1751   * </p>
1752   */
1753  public static final ca.uhn.fhir.rest.gclient.TokenClientParam KIND = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_KIND);
1754
1755 /**
1756   * Search parameter: <b>jurisdiction</b>
1757   * <p>
1758   * Description: <b>Intended jurisdiction for the naming system</b><br>
1759   * Type: <b>token</b><br>
1760   * Path: <b>NamingSystem.jurisdiction</b><br>
1761   * </p>
1762   */
1763  @SearchParamDefinition(name="jurisdiction", path="NamingSystem.jurisdiction", description="Intended jurisdiction for the naming system", type="token" )
1764  public static final String SP_JURISDICTION = "jurisdiction";
1765 /**
1766   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
1767   * <p>
1768   * Description: <b>Intended jurisdiction for the naming system</b><br>
1769   * Type: <b>token</b><br>
1770   * Path: <b>NamingSystem.jurisdiction</b><br>
1771   * </p>
1772   */
1773  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
1774
1775 /**
1776   * Search parameter: <b>description</b>
1777   * <p>
1778   * Description: <b>The description of the naming system</b><br>
1779   * Type: <b>string</b><br>
1780   * Path: <b>NamingSystem.description</b><br>
1781   * </p>
1782   */
1783  @SearchParamDefinition(name="description", path="NamingSystem.description", description="The description of the naming system", type="string" )
1784  public static final String SP_DESCRIPTION = "description";
1785 /**
1786   * <b>Fluent Client</b> search parameter constant for <b>description</b>
1787   * <p>
1788   * Description: <b>The description of the naming system</b><br>
1789   * Type: <b>string</b><br>
1790   * Path: <b>NamingSystem.description</b><br>
1791   * </p>
1792   */
1793  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
1794
1795 /**
1796   * Search parameter: <b>type</b>
1797   * <p>
1798   * Description: <b>e.g. driver,  provider,  patient, bank etc.</b><br>
1799   * Type: <b>token</b><br>
1800   * Path: <b>NamingSystem.type</b><br>
1801   * </p>
1802   */
1803  @SearchParamDefinition(name="type", path="NamingSystem.type", description="e.g. driver,  provider,  patient, bank etc.", type="token" )
1804  public static final String SP_TYPE = "type";
1805 /**
1806   * <b>Fluent Client</b> search parameter constant for <b>type</b>
1807   * <p>
1808   * Description: <b>e.g. driver,  provider,  patient, bank etc.</b><br>
1809   * Type: <b>token</b><br>
1810   * Path: <b>NamingSystem.type</b><br>
1811   * </p>
1812   */
1813  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TYPE);
1814
1815 /**
1816   * Search parameter: <b>id-type</b>
1817   * <p>
1818   * Description: <b>oid | uuid | uri | other</b><br>
1819   * Type: <b>token</b><br>
1820   * Path: <b>NamingSystem.uniqueId.type</b><br>
1821   * </p>
1822   */
1823  @SearchParamDefinition(name="id-type", path="NamingSystem.uniqueId.type", description="oid | uuid | uri | other", type="token" )
1824  public static final String SP_ID_TYPE = "id-type";
1825 /**
1826   * <b>Fluent Client</b> search parameter constant for <b>id-type</b>
1827   * <p>
1828   * Description: <b>oid | uuid | uri | other</b><br>
1829   * Type: <b>token</b><br>
1830   * Path: <b>NamingSystem.uniqueId.type</b><br>
1831   * </p>
1832   */
1833  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ID_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ID_TYPE);
1834
1835 /**
1836   * Search parameter: <b>responsible</b>
1837   * <p>
1838   * Description: <b>Who maintains system namespace?</b><br>
1839   * Type: <b>string</b><br>
1840   * Path: <b>NamingSystem.responsible</b><br>
1841   * </p>
1842   */
1843  @SearchParamDefinition(name="responsible", path="NamingSystem.responsible", description="Who maintains system namespace?", type="string" )
1844  public static final String SP_RESPONSIBLE = "responsible";
1845 /**
1846   * <b>Fluent Client</b> search parameter constant for <b>responsible</b>
1847   * <p>
1848   * Description: <b>Who maintains system namespace?</b><br>
1849   * Type: <b>string</b><br>
1850   * Path: <b>NamingSystem.responsible</b><br>
1851   * </p>
1852   */
1853  public static final ca.uhn.fhir.rest.gclient.StringClientParam RESPONSIBLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_RESPONSIBLE);
1854
1855 /**
1856   * Search parameter: <b>contact</b>
1857   * <p>
1858   * Description: <b>Name of an individual to contact</b><br>
1859   * Type: <b>string</b><br>
1860   * Path: <b>NamingSystem.contact.name</b><br>
1861   * </p>
1862   */
1863  @SearchParamDefinition(name="contact", path="NamingSystem.contact.name", description="Name of an individual to contact", type="string" )
1864  public static final String SP_CONTACT = "contact";
1865 /**
1866   * <b>Fluent Client</b> search parameter constant for <b>contact</b>
1867   * <p>
1868   * Description: <b>Name of an individual to contact</b><br>
1869   * Type: <b>string</b><br>
1870   * Path: <b>NamingSystem.contact.name</b><br>
1871   * </p>
1872   */
1873  public static final ca.uhn.fhir.rest.gclient.StringClientParam CONTACT = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_CONTACT);
1874
1875 /**
1876   * Search parameter: <b>name</b>
1877   * <p>
1878   * Description: <b>Computationally friendly name of the naming system</b><br>
1879   * Type: <b>string</b><br>
1880   * Path: <b>NamingSystem.name</b><br>
1881   * </p>
1882   */
1883  @SearchParamDefinition(name="name", path="NamingSystem.name", description="Computationally friendly name of the naming system", type="string" )
1884  public static final String SP_NAME = "name";
1885 /**
1886   * <b>Fluent Client</b> search parameter constant for <b>name</b>
1887   * <p>
1888   * Description: <b>Computationally friendly name of the naming system</b><br>
1889   * Type: <b>string</b><br>
1890   * Path: <b>NamingSystem.name</b><br>
1891   * </p>
1892   */
1893  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
1894
1895 /**
1896   * Search parameter: <b>publisher</b>
1897   * <p>
1898   * Description: <b>Name of the publisher of the naming system</b><br>
1899   * Type: <b>string</b><br>
1900   * Path: <b>NamingSystem.publisher</b><br>
1901   * </p>
1902   */
1903  @SearchParamDefinition(name="publisher", path="NamingSystem.publisher", description="Name of the publisher of the naming system", type="string" )
1904  public static final String SP_PUBLISHER = "publisher";
1905 /**
1906   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
1907   * <p>
1908   * Description: <b>Name of the publisher of the naming system</b><br>
1909   * Type: <b>string</b><br>
1910   * Path: <b>NamingSystem.publisher</b><br>
1911   * </p>
1912   */
1913  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
1914
1915 /**
1916   * Search parameter: <b>telecom</b>
1917   * <p>
1918   * Description: <b>Contact details for individual or organization</b><br>
1919   * Type: <b>token</b><br>
1920   * Path: <b>NamingSystem.contact.telecom</b><br>
1921   * </p>
1922   */
1923  @SearchParamDefinition(name="telecom", path="NamingSystem.contact.telecom", description="Contact details for individual or organization", type="token" )
1924  public static final String SP_TELECOM = "telecom";
1925 /**
1926   * <b>Fluent Client</b> search parameter constant for <b>telecom</b>
1927   * <p>
1928   * Description: <b>Contact details for individual or organization</b><br>
1929   * Type: <b>token</b><br>
1930   * Path: <b>NamingSystem.contact.telecom</b><br>
1931   * </p>
1932   */
1933  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TELECOM = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TELECOM);
1934
1935 /**
1936   * Search parameter: <b>value</b>
1937   * <p>
1938   * Description: <b>The unique identifier</b><br>
1939   * Type: <b>string</b><br>
1940   * Path: <b>NamingSystem.uniqueId.value</b><br>
1941   * </p>
1942   */
1943  @SearchParamDefinition(name="value", path="NamingSystem.uniqueId.value", description="The unique identifier", type="string" )
1944  public static final String SP_VALUE = "value";
1945 /**
1946   * <b>Fluent Client</b> search parameter constant for <b>value</b>
1947   * <p>
1948   * Description: <b>The unique identifier</b><br>
1949   * Type: <b>string</b><br>
1950   * Path: <b>NamingSystem.uniqueId.value</b><br>
1951   * </p>
1952   */
1953  public static final ca.uhn.fhir.rest.gclient.StringClientParam VALUE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_VALUE);
1954
1955 /**
1956   * Search parameter: <b>status</b>
1957   * <p>
1958   * Description: <b>The current status of the naming system</b><br>
1959   * Type: <b>token</b><br>
1960   * Path: <b>NamingSystem.status</b><br>
1961   * </p>
1962   */
1963  @SearchParamDefinition(name="status", path="NamingSystem.status", description="The current status of the naming system", type="token" )
1964  public static final String SP_STATUS = "status";
1965 /**
1966   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1967   * <p>
1968   * Description: <b>The current status of the naming system</b><br>
1969   * Type: <b>token</b><br>
1970   * Path: <b>NamingSystem.status</b><br>
1971   * </p>
1972   */
1973  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1974
1975
1976}
1977